@appius-fr/apx 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/APX.dev.mjs CHANGED
@@ -93,6 +93,7 @@ h2.APX-dialog-title{
93
93
 
94
94
  /* Button in the dialog */
95
95
  .APX-dialog-button-container button {
96
+ position: relative;
96
97
  background-color: #2C3E50;
97
98
  color: #ECF0F1;
98
99
  border: none;
@@ -100,11 +101,14 @@ h2.APX-dialog-title{
100
101
  border-radius: 5px;
101
102
  font-size: 16px;
102
103
  cursor: pointer;
103
- transition: background-color 0.3s;
104
+ transition: all 0.3s ease;
105
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
104
106
  }
105
107
 
106
108
  .APX-dialog-button-container button:hover {
107
109
  background-color: #34495E;
110
+ transform: translateY(-1px);
111
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
108
112
  }
109
113
 
110
114
  .APX-dialog-button-container {
@@ -136,7 +140,32 @@ h2.APX-dialog-title{
136
140
  @keyframes APX-dialog-spin {
137
141
  0% { transform: rotate(0deg); }
138
142
  100% { transform: rotate(360deg); }
139
- }`, "",{"version":3,"sources":["webpack://./modules/dialog/css/dialog.css"],"names":[],"mappings":"AAAA,mBAAmB;AACnB;IACI,aAAa;IACb,eAAe;IACf,aAAa;IACb,OAAO;IACP,MAAM;IACN,WAAW;IACX,YAAY;IACZ,cAAc;IACd,oCAAoC;IACpC,0CAA0C;AAC9C;;AAEA;IACI,yBAAyB;IACzB,aAAa;IACb,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,2CAA2C;IAC3C,gDAAgD;AACpD;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,WAAW;IACX,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,uBAAuB;IACvB,mBAAmB;AACvB;;AAEA;;IAEI,WAAW;IACX,gCAAgC;IAChC,eAAe;AACnB;;AAEA,yBAAyB;AACzB;;;;IAII,WAAW;IACX,aAAa;IACb,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,gDAAgD;IAChD,eAAe;IACf,sBAAsB;IACtB,6BAA6B;AACjC;;AAEA;;;;IAII,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;AACjB;;AAEA,yBAAyB;AACzB;IACI,yBAAyB;IACzB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,iCAAiC;AACrC;;AAEA;IACI,yBAAyB;AAC7B;;AAEA;IACI,aAAa;IACb,SAAS;IACT,cAAc;IACd,4BAA4B;AAChC;;AAEA,sBAAsB;AACtB;IACI,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,aAAa;IACb,WAAW;AACf;;AAEA;IACI,WAAW;IACX,WAAW;IACX,YAAY;IACZ,yBAAyB;IACzB,6BAA6B;IAC7B,kBAAkB;IAClB,6CAA6C;AACjD;;AAEA;IACI,KAAK,uBAAuB,EAAE;IAC9B,OAAO,yBAAyB,EAAE;AACtC","sourcesContent":["/* Dialog styling */\r\n.APX-dialog {\r\n display: none;\r\n position: fixed;\r\n z-index: 1002;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgba(0, 0, 0, 0.4);\r\n /* Dimmed background for focus on dialog */\r\n}\r\n\r\n.APX-dialog-content {\r\n background-color: #fefefe;\r\n padding: 40px;\r\n border: none;\r\n width: auto;\r\n min-width: 300px;\r\n max-width: 80%;\r\n margin: auto;\r\n border-radius: 8px;\r\n box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.1);\r\n font-family: 'Helvetica Neue', Arial, sans-serif;\r\n}\r\n\r\nh2.APX-dialog-title{\r\n margin-top:0;\r\n}\r\n\r\n.APX-close-dialog {\r\n color: #aaa;\r\n float: right;\r\n font-size: 24px;\r\n margin-top: -10px;\r\n /* Adjust positioning */\r\n margin-right: -10px;\r\n}\r\n\r\n.APX-close-dialog:hover,\r\n.APX-close-dialog:focus {\r\n color: #333;\r\n /* Darker color on hover/focus */\r\n cursor: pointer;\r\n}\r\n\r\n/* Input fields styling */\r\n.APX-dialog-content input[type=\"text\"],\r\n.APX-dialog-content input[type=\"number\"],\r\n.APX-dialog-content input[type=\"date\"],\r\n.APX-dialog-content input[type=\"datetime-local\"] {\r\n width: 100%;\r\n padding: 10px;\r\n margin-bottom: 20px;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n font-family: 'Helvetica Neue', Arial, sans-serif;\r\n font-size: 16px;\r\n box-sizing: border-box;\r\n transition: border-color 0.3s;\r\n}\r\n\r\n.APX-dialog-content input[type=\"text\"]:focus,\r\n.APX-dialog-content input[type=\"number\"]:focus,\r\n.APX-dialog-content input[type=\"date\"]:focus,\r\n.APX-dialog-content input[type=\"datetime-local\"]:focus {\r\n border-color: #2C3E50;\r\n /* Deep Blue Color */\r\n outline: none;\r\n}\r\n\r\n/* Button in the dialog */\r\n.APX-dialog-button-container button {\r\n background-color: #2C3E50;\r\n color: #ECF0F1;\r\n border: none;\r\n padding: 10px 20px;\r\n border-radius: 5px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n}\r\n\r\n.APX-dialog-button-container button:hover {\r\n background-color: #34495E;\r\n}\r\n\r\n.APX-dialog-button-container {\r\n display: flex;\r\n gap: 10px;\r\n margin-top:1em;\r\n /* spacing between buttons */\r\n}\r\n\r\n/* Loading indicator */\r\n.APX-dialog-loading-indicator {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100px;\r\n width: 100%;\r\n}\r\n\r\n.APX-dialog-loading-indicator::before {\r\n content: '';\r\n width: 40px;\r\n height: 40px;\r\n border: 4px solid #f3f3f3;\r\n border-top: 4px solid #2C3E50;\r\n border-radius: 50%;\r\n animation: APX-dialog-spin 1s linear infinite;\r\n}\r\n\r\n@keyframes APX-dialog-spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}"],"sourceRoot":""}]);
143
+ }
144
+ .APX-dialog-button-disabled {
145
+ opacity: 0.5;
146
+ cursor: not-allowed !important;
147
+ background-color: #95a5a6 !important; /* Grayed out color */
148
+ box-shadow: none !important;
149
+ transition: all 0.2s ease;
150
+ transform: none !important;
151
+ }
152
+
153
+ .APX-dialog-button-disabled:hover {
154
+ background-color: #95a5a6 !important; /* Keep gray on hover */
155
+ transform: none !important;
156
+ }
157
+
158
+ /* Add a subtle strikethrough effect */
159
+ .APX-dialog-button-disabled::after {
160
+ content: '';
161
+ position: absolute;
162
+ top: 50%;
163
+ left: 0;
164
+ width: 100%;
165
+ height: 1px;
166
+ background-color: rgba(0, 0, 0, 0.2);
167
+ transform: rotate(-5deg);
168
+ }`, "",{"version":3,"sources":["webpack://./modules/dialog/css/dialog.css"],"names":[],"mappings":"AAAA,mBAAmB;AACnB;IACI,aAAa;IACb,eAAe;IACf,aAAa;IACb,OAAO;IACP,MAAM;IACN,WAAW;IACX,YAAY;IACZ,cAAc;IACd,oCAAoC;IACpC,0CAA0C;AAC9C;;AAEA;IACI,yBAAyB;IACzB,aAAa;IACb,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,2CAA2C;IAC3C,gDAAgD;AACpD;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,WAAW;IACX,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,uBAAuB;IACvB,mBAAmB;AACvB;;AAEA;;IAEI,WAAW;IACX,gCAAgC;IAChC,eAAe;AACnB;;AAEA,yBAAyB;AACzB;;;;IAII,WAAW;IACX,aAAa;IACb,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,gDAAgD;IAChD,eAAe;IACf,sBAAsB;IACtB,6BAA6B;AACjC;;AAEA;;;;IAII,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;AACjB;;AAEA,yBAAyB;AACzB;IACI,kBAAkB;IAClB,yBAAyB;IACzB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,yBAAyB;IACzB,wCAAwC;AAC5C;;AAEA;IACI,yBAAyB;IACzB,2BAA2B;IAC3B,yCAAyC;AAC7C;;AAEA;IACI,aAAa;IACb,SAAS;IACT,cAAc;IACd,4BAA4B;AAChC;;AAEA,sBAAsB;AACtB;IACI,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,aAAa;IACb,WAAW;AACf;;AAEA;IACI,WAAW;IACX,WAAW;IACX,YAAY;IACZ,yBAAyB;IACzB,6BAA6B;IAC7B,kBAAkB;IAClB,6CAA6C;AACjD;;AAEA;IACI,KAAK,uBAAuB,EAAE;IAC9B,OAAO,yBAAyB,EAAE;AACtC;AACA;IACI,YAAY;IACZ,8BAA8B;IAC9B,oCAAoC,EAAE,qBAAqB;IAC3D,2BAA2B;IAC3B,yBAAyB;IACzB,0BAA0B;AAC9B;;AAEA;IACI,oCAAoC,EAAE,uBAAuB;IAC7D,0BAA0B;AAC9B;;AAEA,sCAAsC;AACtC;IACI,WAAW;IACX,kBAAkB;IAClB,QAAQ;IACR,OAAO;IACP,WAAW;IACX,WAAW;IACX,oCAAoC;IACpC,wBAAwB;AAC5B","sourcesContent":["/* Dialog styling */\r\n.APX-dialog {\r\n display: none;\r\n position: fixed;\r\n z-index: 1002;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgba(0, 0, 0, 0.4);\r\n /* Dimmed background for focus on dialog */\r\n}\r\n\r\n.APX-dialog-content {\r\n background-color: #fefefe;\r\n padding: 40px;\r\n border: none;\r\n width: auto;\r\n min-width: 300px;\r\n max-width: 80%;\r\n margin: auto;\r\n border-radius: 8px;\r\n box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.1);\r\n font-family: 'Helvetica Neue', Arial, sans-serif;\r\n}\r\n\r\nh2.APX-dialog-title{\r\n margin-top:0;\r\n}\r\n\r\n.APX-close-dialog {\r\n color: #aaa;\r\n float: right;\r\n font-size: 24px;\r\n margin-top: -10px;\r\n /* Adjust positioning */\r\n margin-right: -10px;\r\n}\r\n\r\n.APX-close-dialog:hover,\r\n.APX-close-dialog:focus {\r\n color: #333;\r\n /* Darker color on hover/focus */\r\n cursor: pointer;\r\n}\r\n\r\n/* Input fields styling */\r\n.APX-dialog-content input[type=\"text\"],\r\n.APX-dialog-content input[type=\"number\"],\r\n.APX-dialog-content input[type=\"date\"],\r\n.APX-dialog-content input[type=\"datetime-local\"] {\r\n width: 100%;\r\n padding: 10px;\r\n margin-bottom: 20px;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n font-family: 'Helvetica Neue', Arial, sans-serif;\r\n font-size: 16px;\r\n box-sizing: border-box;\r\n transition: border-color 0.3s;\r\n}\r\n\r\n.APX-dialog-content input[type=\"text\"]:focus,\r\n.APX-dialog-content input[type=\"number\"]:focus,\r\n.APX-dialog-content input[type=\"date\"]:focus,\r\n.APX-dialog-content input[type=\"datetime-local\"]:focus {\r\n border-color: #2C3E50;\r\n /* Deep Blue Color */\r\n outline: none;\r\n}\r\n\r\n/* Button in the dialog */\r\n.APX-dialog-button-container button {\r\n position: relative;\r\n background-color: #2C3E50;\r\n color: #ECF0F1;\r\n border: none;\r\n padding: 10px 20px;\r\n border-radius: 5px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n.APX-dialog-button-container button:hover {\r\n background-color: #34495E;\r\n transform: translateY(-1px);\r\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.APX-dialog-button-container {\r\n display: flex;\r\n gap: 10px;\r\n margin-top:1em;\r\n /* spacing between buttons */\r\n}\r\n\r\n/* Loading indicator */\r\n.APX-dialog-loading-indicator {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100px;\r\n width: 100%;\r\n}\r\n\r\n.APX-dialog-loading-indicator::before {\r\n content: '';\r\n width: 40px;\r\n height: 40px;\r\n border: 4px solid #f3f3f3;\r\n border-top: 4px solid #2C3E50;\r\n border-radius: 50%;\r\n animation: APX-dialog-spin 1s linear infinite;\r\n}\r\n\r\n@keyframes APX-dialog-spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}\r\n.APX-dialog-button-disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed !important;\r\n background-color: #95a5a6 !important; /* Grayed out color */\r\n box-shadow: none !important;\r\n transition: all 0.2s ease;\r\n transform: none !important;\r\n}\r\n\r\n.APX-dialog-button-disabled:hover {\r\n background-color: #95a5a6 !important; /* Keep gray on hover */\r\n transform: none !important;\r\n}\r\n\r\n/* Add a subtle strikethrough effect */\r\n.APX-dialog-button-disabled::after {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n height: 1px;\r\n background-color: rgba(0, 0, 0, 0.2);\r\n transform: rotate(-5deg);\r\n}"],"sourceRoot":""}]);
140
169
  // Exports
141
170
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
142
171
 
@@ -859,6 +888,20 @@ const createDialog = (options) => {
859
888
  buttons: {},
860
889
  isClosed: false,
861
890
  lifecycle: lifecycleEvents, // Lifecycle promises directly exposed here
891
+ disableButton: (key) => {
892
+ const button = dialogElement.querySelector(`.APX-dialog-button[data-key="${key}"]`);
893
+ if (button) {
894
+ button.disabled = true;
895
+ button.classList.add('APX-dialog-button-disabled');
896
+ }
897
+ },
898
+ enableButton: (key) => {
899
+ const button = dialogElement.querySelector(`.APX-dialog-button[data-key="${key}"]`);
900
+ if (button) {
901
+ button.disabled = false;
902
+ button.classList.remove('APX-dialog-button-disabled');
903
+ }
904
+ },
862
905
  open: async () => {
863
906
  try {
864
907
  triggerEvent('opening');
@@ -940,8 +983,24 @@ const createDialog = (options) => {
940
983
 
941
984
  buttons.forEach(({ key, label, order = 0, align = 'flex-end', closeOnClick = true }) => {
942
985
  const button = document.createElement('button');
986
+ button.classList.add('APX-dialog-button');
943
987
  button.textContent = label;
944
988
  button.style.order = order;
989
+ button.setAttribute('data-key', key);
990
+
991
+ // Create button context with disable/enable methods
992
+ const buttonContext = {
993
+ disable: () => {
994
+ button.disabled = true;
995
+ button.classList.add('APX-dialog-button-disabled');
996
+ },
997
+ enable: () => {
998
+ button.disabled = false;
999
+ button.classList.remove('APX-dialog-button-disabled');
1000
+ },
1001
+ key,
1002
+ element: button
1003
+ };
945
1004
 
946
1005
  if (closeOnClick) {
947
1006
  // Handle as a one-time Promise
@@ -949,9 +1008,9 @@ const createDialog = (options) => {
949
1008
 
950
1009
  const firstClickPromise = new Promise((resolve) => {
951
1010
  button.onclick = () => {
952
- if (!firstClickResolved) {
1011
+ if (!firstClickResolved && !button.disabled) {
953
1012
  firstClickResolved = true;
954
- resolve(dialog); // Resolve the Promise
1013
+ resolve({ dialog, button: buttonContext }); // Pass both dialog and button context
955
1014
  dialog.close(); // Close the dialog
956
1015
  }
957
1016
  };
@@ -973,7 +1032,9 @@ const createDialog = (options) => {
973
1032
  };
974
1033
 
975
1034
  button.onclick = () => {
976
- handlers.forEach((handler) => handler(dialog)); // Call all registered handlers
1035
+ if (!button.disabled) {
1036
+ handlers.forEach((handler) => handler({ dialog, button: buttonContext })); // Pass both dialog and button context
1037
+ }
977
1038
  };
978
1039
 
979
1040
  dialog.buttons[key] = clickPromise; // Assign the "fake" promise
@@ -1634,4 +1695,4 @@ APX.is_numeric = (n) => {
1634
1695
  var __webpack_exports__default = __webpack_exports__["default"];
1635
1696
  export { __webpack_exports__default as default };
1636
1697
 
1637
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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TTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksc0VBQWlCO0FBQ3JCLElBQUksMEVBQW1CO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQU87QUFDckIsYUFBYSxrRUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLEdBQUcsRSIsInNvdXJjZXMiOlsid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9kaWFsb2cvY3NzL2RpYWxvZy5jc3MiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL3RyaXN0YXRlL2Nzcy90cmlzdGF0ZS5jc3MiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9kaWFsb2cvaHRtbC9kaWFsb2cuaHRtbCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvZGlhbG9nL2Nzcy9kaWFsb2cuY3NzP2E1NjciLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL3RyaXN0YXRlL2Nzcy90cmlzdGF0ZS5jc3M/YTA5NCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9jb21tb24ubWpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9kaWFsb2cvZGlhbG9nLm1qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvbGlzdGVuL2xpc3Rlbi5tanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL3RyaXN0YXRlL3RyaXN0YXRlLm1qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4L3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4L3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL0FQWC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC8qIERpYWxvZyBzdHlsaW5nICovXHJcbi5BUFgtZGlhbG9nIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAxMDAyO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHRvcDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7XHJcbiAgICAvKiBEaW1tZWQgYmFja2dyb3VuZCBmb3IgZm9jdXMgb24gZGlhbG9nICovXHJcbn1cclxuXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcclxuICAgIHBhZGRpbmc6IDQwcHg7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1pbi13aWR0aDogMzAwcHg7XHJcbiAgICBtYXgtd2lkdGg6IDgwJTtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgIGJveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbmgyLkFQWC1kaWFsb2ctdGl0bGV7XHJcbiAgICBtYXJnaW4tdG9wOjA7XHJcbn1cclxuXHJcbi5BUFgtY2xvc2UtZGlhbG9nIHtcclxuICAgIGNvbG9yOiAjYWFhO1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAvKiBBZGp1c3QgcG9zaXRpb25pbmcgKi9cclxuICAgIG1hcmdpbi1yaWdodDogLTEwcHg7XHJcbn1cclxuXHJcbi5BUFgtY2xvc2UtZGlhbG9nOmhvdmVyLFxyXG4uQVBYLWNsb3NlLWRpYWxvZzpmb2N1cyB7XHJcbiAgICBjb2xvcjogIzMzMztcclxuICAgIC8qIERhcmtlciBjb2xvciBvbiBob3Zlci9mb2N1cyAqL1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4vKiBJbnB1dCBmaWVsZHMgc3R5bGluZyAqL1xyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGVcIl0sXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJudW1iZXJcIl06Zm9jdXMsXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGVcIl06Zm9jdXMsXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogIzJDM0U1MDtcclxuICAgIC8qIERlZXAgQmx1ZSBDb2xvciAqL1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuLyogQnV0dG9uIGluIHRoZSBkaWFsb2cgKi9cclxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBidXR0b24ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJDM0U1MDtcclxuICAgIGNvbG9yOiAjRUNGMEYxO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIGJ1dHRvbjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ0OTVFO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBnYXA6IDEwcHg7XHJcbiAgICBtYXJnaW4tdG9wOjFlbTtcclxuICAgIC8qIHNwYWNpbmcgYmV0d2VlbiBidXR0b25zICovXHJcbn1cclxuXHJcbi8qIExvYWRpbmcgaW5kaWNhdG9yICovXHJcbi5BUFgtZGlhbG9nLWxvYWRpbmctaW5kaWNhdG9yIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDEwMHB4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5BUFgtZGlhbG9nLWxvYWRpbmctaW5kaWNhdG9yOjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB3aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGJvcmRlcjogNHB4IHNvbGlkICNmM2YzZjM7XHJcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzJDM0U1MDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGFuaW1hdGlvbjogQVBYLWRpYWxvZy1zcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuQGtleWZyYW1lcyBBUFgtZGlhbG9nLXNwaW4ge1xyXG4gICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxyXG4gICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cclxufWAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbW9kdWxlcy9kaWFsb2cvY3NzL2RpYWxvZy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsbUJBQW1CO0FBQ25CO0lBQ0ksYUFBYTtJQUNiLGVBQWU7SUFDZixhQUFhO0lBQ2IsT0FBTztJQUNQLE1BQU07SUFDTixXQUFXO0lBQ1gsWUFBWTtJQUNaLGNBQWM7SUFDZCxvQ0FBb0M7SUFDcEMsMENBQTBDO0FBQzlDOztBQUVBO0lBQ0kseUJBQXlCO0lBQ3pCLGFBQWE7SUFDYixZQUFZO0lBQ1osV0FBVztJQUNYLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsWUFBWTtJQUNaLGtCQUFrQjtJQUNsQiwyQ0FBMkM7SUFDM0MsZ0RBQWdEO0FBQ3BEOztBQUVBO0lBQ0ksWUFBWTtBQUNoQjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1osZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsbUJBQW1CO0FBQ3ZCOztBQUVBOztJQUVJLFdBQVc7SUFDWCxnQ0FBZ0M7SUFDaEMsZUFBZTtBQUNuQjs7QUFFQSx5QkFBeUI7QUFDekI7Ozs7SUFJSSxXQUFXO0lBQ1gsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLGdEQUFnRDtJQUNoRCxlQUFlO0lBQ2Ysc0JBQXNCO0lBQ3RCLDZCQUE2QjtBQUNqQzs7QUFFQTs7OztJQUlJLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsYUFBYTtBQUNqQjs7QUFFQSx5QkFBeUI7QUFDekI7SUFDSSx5QkFBeUI7SUFDekIsY0FBYztJQUNkLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixlQUFlO0lBQ2YsaUNBQWlDO0FBQ3JDOztBQUVBO0lBQ0kseUJBQXlCO0FBQzdCOztBQUVBO0lBQ0ksYUFBYTtJQUNiLFNBQVM7SUFDVCxjQUFjO0lBQ2QsNEJBQTRCO0FBQ2hDOztBQUVBLHNCQUFzQjtBQUN0QjtJQUNJLGFBQWE7SUFDYix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixXQUFXO0FBQ2Y7O0FBRUE7SUFDSSxXQUFXO0lBQ1gsV0FBVztJQUNYLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsNkJBQTZCO0lBQzdCLGtCQUFrQjtJQUNsQiw2Q0FBNkM7QUFDakQ7O0FBRUE7SUFDSSxLQUFLLHVCQUF1QixFQUFFO0lBQzlCLE9BQU8seUJBQXlCLEVBQUU7QUFDdENcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLyogRGlhbG9nIHN0eWxpbmcgKi9cXHJcXG4uQVBYLWRpYWxvZyB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxyXFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgei1pbmRleDogMTAwMjtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICBvdmVyZmxvdzogYXV0bztcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xcclxcbiAgICAvKiBEaW1tZWQgYmFja2dyb3VuZCBmb3IgZm9jdXMgb24gZGlhbG9nICovXFxyXFxufVxcclxcblxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xcclxcbiAgICBwYWRkaW5nOiA0MHB4O1xcclxcbiAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgIHdpZHRoOiBhdXRvO1xcclxcbiAgICBtaW4td2lkdGg6IDMwMHB4O1xcclxcbiAgICBtYXgtd2lkdGg6IDgwJTtcXHJcXG4gICAgbWFyZ2luOiBhdXRvO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XFxyXFxuICAgIGJveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxyXFxuICAgIGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG59XFxyXFxuXFxyXFxuaDIuQVBYLWRpYWxvZy10aXRsZXtcXHJcXG4gICAgbWFyZ2luLXRvcDowO1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWNsb3NlLWRpYWxvZyB7XFxyXFxuICAgIGNvbG9yOiAjYWFhO1xcclxcbiAgICBmbG9hdDogcmlnaHQ7XFxyXFxuICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XFxyXFxuICAgIC8qIEFkanVzdCBwb3NpdGlvbmluZyAqL1xcclxcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4O1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWNsb3NlLWRpYWxvZzpob3ZlcixcXHJcXG4uQVBYLWNsb3NlLWRpYWxvZzpmb2N1cyB7XFxyXFxuICAgIGNvbG9yOiAjMzMzO1xcclxcbiAgICAvKiBEYXJrZXIgY29sb3Igb24gaG92ZXIvZm9jdXMgKi9cXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBJbnB1dCBmaWVsZHMgc3R5bGluZyAqL1xcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxyXFxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0sXFxyXFxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdIHtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIHBhZGRpbmc6IDEwcHg7XFxyXFxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXHJcXG4gICAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xcclxcbiAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzO1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTpmb2N1cyxcXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmZvY3VzLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOmZvY3VzLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTpmb2N1cyB7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogIzJDM0U1MDtcXHJcXG4gICAgLyogRGVlcCBCbHVlIENvbG9yICovXFxyXFxuICAgIG91dGxpbmU6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbi8qIEJ1dHRvbiBpbiB0aGUgZGlhbG9nICovXFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBidXR0b24ge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwO1xcclxcbiAgICBjb2xvcjogI0VDRjBGMTtcXHJcXG4gICAgYm9yZGVyOiBub25lO1xcclxcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXHJcXG4gICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBidXR0b246aG92ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ0OTVFO1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIHtcXHJcXG4gICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgZ2FwOiAxMHB4O1xcclxcbiAgICBtYXJnaW4tdG9wOjFlbTtcXHJcXG4gICAgLyogc3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgKi9cXHJcXG59XFxyXFxuXFxyXFxuLyogTG9hZGluZyBpbmRpY2F0b3IgKi9cXHJcXG4uQVBYLWRpYWxvZy1sb2FkaW5nLWluZGljYXRvciB7XFxyXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICBoZWlnaHQ6IDEwMHB4O1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1kaWFsb2ctbG9hZGluZy1pbmRpY2F0b3I6OmJlZm9yZSB7XFxyXFxuICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICB3aWR0aDogNDBweDtcXHJcXG4gICAgaGVpZ2h0OiA0MHB4O1xcclxcbiAgICBib3JkZXI6IDRweCBzb2xpZCAjZjNmM2YzO1xcclxcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzJDM0U1MDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgICBhbmltYXRpb246IEFQWC1kaWFsb2ctc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgQVBYLWRpYWxvZy1zcGluIHtcXHJcXG4gICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcclxcbiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxcclxcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyN2h0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjclMjB3aWR0aCUzRCUyNzMyJTI3JTIwaGVpZ2h0JTNEJTI3MzIlMjclM0UlM0NwYXRoJTIwJTIwZmlsbCUzRCUyMiUyM2NjY2NjYyUyMiUyMGQlM0QlMjJNMjUuMTA3JTIwMzIuMDMwaC0xOC4yMTRjLTMuNDU2JTIwMC02LjI2OC0yLjgxLTYuMjY4LTYuMjY0di0xOS41MjljMC0zLjQ1NiUyMDIuODEyLTYuMjY4JTIwNi4yNjgtNi4yNjhoMTguMjE0YzMuNDU2JTIwMCUyMDYuMjY4JTIwMi44MTIlMjA2LjI2OCUyMDYuMjY4djE5LjUyOWMwJTIwMy40NTItMi44MTIlMjA2LjI2NC02LjI2OCUyMDYuMjY0ek02Ljg5MyUyMDEuODVjLTIuNDE5JTIwMC00LjM4NiUyMDEuOTY3LTQuMzg2JTIwNC4zODZ2MTkuNTI5YzAlMjAyLjQxNyUyMDEuOTY3JTIwNC4zODIlMjA0LjM4NiUyMDQuMzgyaDE4LjIxNGMyLjQxOSUyMDAlMjA0LjM4Ni0xLjk2NSUyMDQuMzg2LTQuMzgydi0xOS41MjljMC0yLjQxOS0xLjk2Ny00LjM4Ni00LjM4Ni00LjM4NmgtMTguMjE0eiUyMiUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyN2h0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjclMjB3aWR0aCUzRCUyNzMyJTI3JTIwaGVpZ2h0JTNEJTI3MzIlMjclM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzA2NTRiYSUyMiUyMGQlM0QlMjJNMC41NDMlMjA1LjY0N2MwLTMuMTE5JTIwMi41MzEtNS42NDclMjA1LjY1LTUuNjQ3aDE5LjMwOWMzLjEyJTIwMCUyMDUuNjUlMjAyLjUxMSUyMDUuNjUlMjA1LjY0N3YyMC43MDVjMCUyMDMuMTE5LTIuNTMxJTIwNS42NDctNS42NSUyMDUuNjQ3aC0xOS4zMDljLTMuMTIlMjAwLTUuNjUtMi41MTEtNS42NS01LjY0N3YtMjAuNzA1ek01LjMxMyUyMDE3LjU4N2w3LjAzOSUyMDYuODM5JTIwMTMuODMxLTEzLjQzOS0yLjYzNi0yLjU2MS0xMC45MjklMjAxMC42Mi00LjQ0Mi00LjMxNy0yLjg2MiUyMDIuODU4eiUyMiUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUzRiUzRSUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDMyJTIwMzIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIybTAuNTQzJTIwNS42NDdjMC0zLjExOSUyMDIuNTMxLTUuNjQ3JTIwNS42NS01LjY0N2gxOS4zMDljMy4xMiUyMDAlMjA1LjY1JTIwMi41MTElMjA1LjY1JTIwNS42NDd2MjAuNzA1YzAlMjAzLjExOS0yLjUzMSUyMDUuNjQ3LTUuNjUlMjA1LjY0N2gtMTkuMzA5Yy0zLjEyJTIwMC01LjY1LTIuNTExLTUuNjUtNS42NDd2LTIwLjcwNXolMjIlMjBmaWxsJTNEJTIyJTIzZjAwJTIyJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJtOCUyMDglMjAxNiUyMDE2JTIyJTIwc3Ryb2tlJTNEJTIyJTIzZmZmJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTI0JTIwOEw4JTIwMjQlMjIlMjBzdHJva2UlM0QlMjIlMjNmZmYlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIyJTIyJTJGJTNFJTNDJTJGc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5hcHgtdHJpc3RhdGUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1pbi13aWR0aDoxM3B4O1xyXG4gICAgbWluLWhlaWdodDoxM3B4O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBib3JkZXItcmFkaXVzOjNweDtcclxufVxyXG4uYXB4LXRyaXN0YXRlLnVuY2hlY2tlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHtfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19ffSk7XHJcbn1cclxuLmFweC10cmlzdGF0ZS5jaGVja2VkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgke19fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX199KTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbn1cclxuLmFweC10cmlzdGF0ZS5jcm9zc2VkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgke19fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzJfX199KTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbn1gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL21vZHVsZXMvdHJpc3RhdGUvY3NzL3RyaXN0YXRlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtJQUNJLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsY0FBYztJQUNkLGVBQWU7SUFDZix3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtBQUNyQjtBQUNBO0lBQ0kseURBQXlsQjtBQUM3bEI7QUFDQTtJQUNJLHlEQUE2ZTtJQUM3ZSw0QkFBNEI7SUFDNUIsMkJBQTJCO0FBQy9CO0FBQ0E7SUFDSSx5REFBc25CO0lBQ3RuQiw0QkFBNEI7SUFDNUIsMkJBQTJCO0FBQy9CXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5hcHgtdHJpc3RhdGUge1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIG1pbi13aWR0aDoxM3B4O1xcclxcbiAgICBtaW4taGVpZ2h0OjEzcHg7XFxyXFxuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6M3B4O1xcclxcbn1cXHJcXG4uYXB4LXRyaXN0YXRlLnVuY2hlY2tlZCB7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MzIlMjclMjBoZWlnaHQlM0QlMjczMiUyNyUzRSUzQ3BhdGglMjAlMjBmaWxsJTNEJTIyJTIzY2NjY2NjJTIyJTIwZCUzRCUyMk0yNS4xMDclMjAzMi4wMzBoLTE4LjIxNGMtMy40NTYlMjAwLTYuMjY4LTIuODEtNi4yNjgtNi4yNjR2LTE5LjUyOWMwLTMuNDU2JTIwMi44MTItNi4yNjglMjA2LjI2OC02LjI2OGgxOC4yMTRjMy40NTYlMjAwJTIwNi4yNjglMjAyLjgxMiUyMDYuMjY4JTIwNi4yNjh2MTkuNTI5YzAlMjAzLjQ1Mi0yLjgxMiUyMDYuMjY0LTYuMjY4JTIwNi4yNjR6TTYuODkzJTIwMS44NWMtMi40MTklMjAwLTQuMzg2JTIwMS45NjctNC4zODYlMjA0LjM4NnYxOS41MjljMCUyMDIuNDE3JTIwMS45NjclMjA0LjM4MiUyMDQuMzg2JTIwNC4zODJoMTguMjE0YzIuNDE5JTIwMCUyMDQuMzg2LTEuOTY1JTIwNC4zODYtNC4zODJ2LTE5LjUyOWMwLTIuNDE5LTEuOTY3LTQuMzg2LTQuMzg2LTQuMzg2aC0xOC4yMTR6JTIyJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFJyk7XFxyXFxufVxcclxcbi5hcHgtdHJpc3RhdGUuY2hlY2tlZCB7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MzIlMjclMjBoZWlnaHQlM0QlMjczMiUyNyUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDY1NGJhJTIyJTIwZCUzRCUyMk0wLjU0MyUyMDUuNjQ3YzAtMy4xMTklMjAyLjUzMS01LjY0NyUyMDUuNjUtNS42NDdoMTkuMzA5YzMuMTIlMjAwJTIwNS42NSUyMDIuNTExJTIwNS42NSUyMDUuNjQ3djIwLjcwNWMwJTIwMy4xMTktMi41MzElMjA1LjY0Ny01LjY1JTIwNS42NDdoLTE5LjMwOWMtMy4xMiUyMDAtNS42NS0yLjUxMS01LjY1LTUuNjQ3di0yMC43MDV6TTUuMzEzJTIwMTcuNTg3bDcuMDM5JTIwNi44MzklMjAxMy44MzEtMTMuNDM5LTIuNjM2LTIuNTYxLTEwLjkyOSUyMDEwLjYyLTQuNDQyLTQuMzE3LTIuODYyJTIwMi44NTh6JTIyJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFJyk7XFxyXFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxyXFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXHJcXG59XFxyXFxuLmFweC10cmlzdGF0ZS5jcm9zc2VkIHtcXHJcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIyVVRGLTglMjIlM0YlM0UlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAzMiUyMDMyJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMm0wLjU0MyUyMDUuNjQ3YzAtMy4xMTklMjAyLjUzMS01LjY0NyUyMDUuNjUtNS42NDdoMTkuMzA5YzMuMTIlMjAwJTIwNS42NSUyMDIuNTExJTIwNS42NSUyMDUuNjQ3djIwLjcwNWMwJTIwMy4xMTktMi41MzElMjA1LjY0Ny01LjY1JTIwNS42NDdoLTE5LjMwOWMtMy4xMiUyMDAtNS42NS0yLjUxMS01LjY1LTUuNjQ3di0yMC43MDV6JTIyJTIwZmlsbCUzRCUyMiUyM2YwMCUyMiUyRiUzRSUzQ3BhdGglMjBkJTNEJTIybTglMjA4JTIwMTYlMjAxNiUyMiUyMHN0cm9rZSUzRCUyMiUyM2ZmZiUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjIlMjIlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk0yNCUyMDhMOCUyMDI0JTIyJTIwc3Ryb2tlJTNEJTIyJTIzZmZmJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyRiUzRSUzQyUyRnN2ZyUzRScpO1xcclxcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcclxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxyXFxufVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7XG5cbiAgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgIHVybCArPSBvcHRpb25zLmhhc2g7XG4gIH1cblxuICAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8vIE1vZHVsZVxudmFyIGNvZGUgPSBcIjxkaXYgY2xhc3M9XFxcIkFQWC1kaWFsb2dcXFwiPlxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWNvbnRlbnRcXFwiPlxcclxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcIkFQWC1jbG9zZS1kaWFsb2dcXFwiPiZ0aW1lczs8L3NwYW4+XFxyXFxuICAgICAgICA8aDIgY2xhc3M9XFxcIkFQWC1kaWFsb2ctdGl0bGVcXFwiPjwvaDI+XFxyXFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWR5bmFtaWMtY29udGVudFxcXCI+PC9kaXY+XFxyXFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXJcXFwiPjwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG48L2Rpdj5cIjtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gY29kZTsiLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZGlhbG9nLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZGlhbG9nLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi90cmlzdGF0ZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RyaXN0YXRlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gRnVuY3Rpb24gdG8gbG9hZCB0aGUgQ1NTIGZyb20gYSBnaXZlbiBVUkxcclxuZnVuY3Rpb24gbG9hZENzcyh1cmwpIHtcclxuICAgIHJldHVybiBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UudGV4dCgpKVxyXG4gICAgICAgIC50aGVuKGNzcyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlU2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgICAgIHN0eWxlU2hlZXQudHlwZSA9IFwidGV4dC9jc3NcIjtcclxuICAgICAgICAgICAgc3R5bGVTaGVldC50ZXh0Q29udGVudCA9IGNzczsgIC8vIFVzZSB0ZXh0Q29udGVudCBpbnN0ZWFkIG9mIGlubmVyVGV4dFxyXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIENTUzpcIiwgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gICAgbG9hZENzc1xyXG59IiwiLy8gSW1wb3J0aW5nIHRoZSBDU1MgYW5kIEhUTUwgdGVtcGxhdGVzXHJcbmltcG9ydCAnLi9jc3MvZGlhbG9nLmNzcyc7XHJcbmltcG9ydCBkaWFsb2dUZW1wbGF0ZSBmcm9tICcuL2h0bWwvZGlhbG9nLmh0bWw/cmF3JztcclxuXHJcbmNvbnN0IGNyZWF0ZURpYWxvZyA9IChvcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dEZWZhdWx0cyA9IHtcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgY29udGVudDogJycsXHJcbiAgICAgICAgY29udGVudFVSSTogJycsXHJcbiAgICAgICAgYnV0dG9uczogW10sXHJcbiAgICAgICAgc2l6ZTogJ21lZGl1bScsXHJcbiAgICAgICAgc2hvd0xvYWRpbmdJbmRpY2F0b3I6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHsgdGl0bGUsIGNvbnRlbnQsIGNvbnRlbnRVUkksIGJ1dHRvbnMsIHNpemUsIHNob3dMb2FkaW5nSW5kaWNhdG9yIH0gPSB7IC4uLmRpYWxvZ0RlZmF1bHRzLCAuLi5vcHRpb25zIH07XHJcblxyXG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgd3JhcHBlci5pbm5lckhUTUwgPSBkaWFsb2dUZW1wbGF0ZS50cmltKCk7XHJcbiAgICBjb25zdCBkaWFsb2dFbGVtZW50ID0gd3JhcHBlci5maXJzdENoaWxkO1xyXG5cclxuICAgIC8vIExpZmVjeWNsZSBldmVudCBtYW5hZ2VtZW50XHJcbiAgICBjb25zdCBsaWZlY3ljbGVSZXNvbHZlcnMgPSB7fTtcclxuICAgIGNvbnN0IGxpZmVjeWNsZUV2ZW50cyA9IHt9O1xyXG5cclxuICAgIC8vIERlZmluZSBsaWZlY3ljbGUgcHJvbWlzZXMgYXMgcHJvcGVydGllc1xyXG4gICAgWydvcGVuaW5nJywgJ29wZW5lZCcsICdjbG9zaW5nJywgJ2Nsb3NlZCcsICdjb250ZW50TG9hZGluZycsICdjb250ZW50TG9hZGVkJ10uZm9yRWFjaCgoZXZlbnQpID0+IHtcclxuICAgICAgICBsaWZlY3ljbGVFdmVudHNbZXZlbnRdID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgbGlmZWN5Y2xlUmVzb2x2ZXJzW2V2ZW50XSA9IHJlc29sdmU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyRXZlbnQgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAobGlmZWN5Y2xlUmVzb2x2ZXJzW2V2ZW50XSkge1xyXG4gICAgICAgICAgICBsaWZlY3ljbGVSZXNvbHZlcnNbZXZlbnRdKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBObyByZXNvbHZlciBmb3VuZCBmb3IgbGlmZWN5Y2xlIGV2ZW50OiAke2V2ZW50fWApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGlhbG9nID0ge1xyXG4gICAgICAgIGVsZW1lbnQ6IGRpYWxvZ0VsZW1lbnQsXHJcbiAgICAgICAgYnV0dG9uczoge30sXHJcbiAgICAgICAgaXNDbG9zZWQ6IGZhbHNlLFxyXG4gICAgICAgIGxpZmVjeWNsZTogbGlmZWN5Y2xlRXZlbnRzLCAvLyBMaWZlY3ljbGUgcHJvbWlzZXMgZGlyZWN0bHkgZXhwb3NlZCBoZXJlXHJcbiAgICAgICAgb3BlbjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCdvcGVuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBkaWFsb2cubGlmZWN5Y2xlLm9wZW5pbmc7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbG9hZGluZyBpbmRpY2F0b3IgaXMgZW5hYmxlZCBhbmQgd2UncmUgZmV0Y2hpbmcgY29udGVudCwgc2hvdyBkaWFsb2cgZmlyc3RcclxuICAgICAgICAgICAgICAgIGlmIChzaG93TG9hZGluZ0luZGljYXRvciAmJiBjb250ZW50VVJJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIGRpYWxvZyB0byB0aGUgRE9NIGFuZCBkaXNwbGF5IGl0IGZpcnN0XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaWFsb2dFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBkaWFsb2dFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgaW5kaWNhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLkFQWC1kaWFsb2ctZHluYW1pYy1jb250ZW50XCIpLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiQVBYLWRpYWxvZy1sb2FkaW5nLWluZGljYXRvclwiPjwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBjb250ZW50IGFmdGVyIGRpYWxvZyBpcyB2aXNpYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2hBbmRJbnNlcnRDb250ZW50KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgYmVoYXZpb3I6IGxvYWQgY29udGVudCBmaXJzdCwgdGhlbiBzaG93IGRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZldGNoQW5kSW5zZXJ0Q29udGVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCBkaWFsb2cgdG8gdGhlIERPTSBhbmQgZGlzcGxheSBpdFxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGlhbG9nRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCdvcGVuZWQnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUub3BlbmVkO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBkaWFsb2c6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBkaWFsb2c7IC8vIFJldHVybiBmb3IgZGFpc3ktY2hhaW5pbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2Nsb3NpbmcnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUuY2xvc2luZztcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDbGVhbnVwIGFuZCByZW1vdmUgZGlhbG9nXHJcbiAgICAgICAgICAgICAgICBjbG9zZURpYWxvZ0FuZENsZWFudXAoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2Nsb3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZGlhbG9nLmxpZmVjeWNsZS5jbG9zZWQ7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgZGlhbG9nIGNsb3Npbmc6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBkaWFsb2c7IC8vIFJldHVybiBmb3IgZGFpc3ktY2hhaW5pbmdcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNsb3NlRGlhbG9nQW5kQ2xlYW51cCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoZGlhbG9nLmlzQ2xvc2VkKSByZXR1cm47XHJcblxyXG4gICAgICAgIGRpYWxvZy5pc0Nsb3NlZCA9IHRydWU7XHJcbiAgICAgICAgZGlhbG9nRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY29udGFpbnMoZGlhbG9nRWxlbWVudCkpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaWFsb2dFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNldERpYWxvZ1NpemUgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29udGVudCA9IGRpYWxvZ0VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5BUFgtZGlhbG9nLWNvbnRlbnRcIik7XHJcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSB7XHJcbiAgICAgICAgICAgIHNtYWxsOiB7IHdpZHRoOiAnMzAwcHgnLCBoZWlnaHQ6ICcyMDBweCcgfSxcclxuICAgICAgICAgICAgbWVkaXVtOiB7IHdpZHRoOiAnNTAwcHgnLCBoZWlnaHQ6ICc0MDBweCcgfSxcclxuICAgICAgICAgICAgbGFyZ2U6IHsgd2lkdGg6ICc4MDBweCcsIGhlaWdodDogJzYwMHB4JyB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHNpemUgPT09ICdhdXRvJykgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RlZFNpemUgPSBzaXplc1tzaXplXSB8fCAodHlwZW9mIHNpemUgPT09ICdvYmplY3QnICYmIHNpemUpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZFNpemUpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29udGVudC5zdHlsZS5taW5XaWR0aCA9IHNlbGVjdGVkU2l6ZS53aWR0aCB8fCAnNTAwcHgnO1xyXG4gICAgICAgICAgICBkaWFsb2dDb250ZW50LnN0eWxlLm1pbkhlaWdodCA9IHNlbGVjdGVkU2l6ZS5oZWlnaHQgfHwgJzQwMHB4JztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGFkZEJ1dHRvbnMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uQ29udGFpbmVyID0gZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lclwiKTtcclxuXHJcbiAgICAgICAgYnV0dG9ucy5mb3JFYWNoKCh7IGtleSwgbGFiZWwsIG9yZGVyID0gMCwgYWxpZ24gPSAnZmxleC1lbmQnLCBjbG9zZU9uQ2xpY2sgPSB0cnVlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IGxhYmVsO1xyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUub3JkZXIgPSBvcmRlcjtcclxuXHJcbiAgICAgICAgICAgIGlmIChjbG9zZU9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhcyBhIG9uZS10aW1lIFByb21pc2VcclxuICAgICAgICAgICAgICAgIGxldCBmaXJzdENsaWNrUmVzb2x2ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENsaWNrUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RDbGlja1Jlc29sdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENsaWNrUmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkaWFsb2cpOyAvLyBSZXNvbHZlIHRoZSBQcm9taXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTsgLy8gQ2xvc2UgdGhlIGRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB0aGUgcHJvbWlzZSBmb3IgY2hhaW5pbmcgd2l0aCBgLnRoZW5gXHJcbiAgICAgICAgICAgICAgICBkaWFsb2cuYnV0dG9uc1trZXldID0gZmlyc3RDbGlja1Byb21pc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYXMgYSByZXBlYXRlZCBldmVudCBoYW5kbGVyXHJcbiAgICAgICAgICAgICAgICBsZXQgaGFuZGxlcnMgPSBbXTsgLy8gU3RvcmUgaGFuZGxlcnMgZm9yIGAudGhlbigpYFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsaWNrUHJvbWlzZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGVuOiAoY2FsbGJhY2spID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaChjYWxsYmFjayk7IC8vIEFkZCB0byBoYW5kbGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGlja1Byb21pc2U7IC8vIEFsbG93IGNoYWluaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgYnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaGFuZGxlcikgPT4gaGFuZGxlcihkaWFsb2cpKTsgLy8gQ2FsbCBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVyc1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBkaWFsb2cuYnV0dG9uc1trZXldID0gY2xpY2tQcm9taXNlOyAvLyBBc3NpZ24gdGhlIFwiZmFrZVwiIHByb21pc2VcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgICAgIGJ1dHRvbkNvbnRhaW5lci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IGFsaWduO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBmZXRjaEFuZEluc2VydENvbnRlbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDdXJzb3IgPSBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcjtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd3YWl0JztcclxuICAgICAgICBjb25zdCBkeW5hbWljQ29udGVudCA9IGRpYWxvZ0VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5BUFgtZGlhbG9nLWR5bmFtaWMtY29udGVudFwiKTtcclxuICAgICAgICBcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2NvbnRlbnRMb2FkaW5nJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUuY29udGVudExvYWRpbmc7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50SHRtbCA9IGNvbnRlbnRVUklcclxuICAgICAgICAgICAgICAgID8gYXdhaXQgZmV0Y2hDb250ZW50KGNvbnRlbnRVUkkpXHJcbiAgICAgICAgICAgICAgICA6IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgICAgICBkeW5hbWljQ29udGVudC5pbm5lckhUTUwgPSBjb250ZW50SHRtbDtcclxuXHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCgnY29udGVudExvYWRlZCcpO1xyXG4gICAgICAgICAgICBhd2FpdCBkaWFsb2cubGlmZWN5Y2xlLmNvbnRlbnRMb2FkZWQ7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjb250ZW50OicsIGVycm9yKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IG9yaWdpbmFsQ3Vyc29yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZmV0Y2hDb250ZW50ID0gYXN5bmMgKHVyaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJpKTtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBjb250ZW50OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2dcclxuICAgIHNldERpYWxvZ1NpemUoKTtcclxuICAgIGFkZEJ1dHRvbnMoKTtcclxuXHJcbiAgICAvLyBTZXQgdGl0bGUgYW5kIGNsb3NlIGJ1dHRvbiBoYW5kbGVyXHJcbiAgICBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuQVBYLWRpYWxvZy10aXRsZVwiKS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG4gICAgZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuQVBYLWNsb3NlLWRpYWxvZycpLm9uY2xpY2sgPSBkaWFsb2cuY2xvc2U7XHJcblxyXG4gICAgcmV0dXJuIGRpYWxvZztcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZURpYWxvZztcclxuIiwibGV0IGNvdW50ZXIgPSAwO1xyXG5jb25zdCBkb0NhbGxiYWNrcyA9IHt9O1xyXG5jb25zdCB0aW1lb3V0cyA9IHt9O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBldmVudCBsaXN0ZW5lciB0byB0aGUgZWxlbWVudHMgYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBkbyBtZXRob2QgdG8gYWRkIGNhbGxiYWNrIGZ1bmN0aW9ucy5cclxuICogQHBhcmFtIHtPYmplY3R9IGFweCAtIFRoZSBhcHggb2JqZWN0IHRvIGF1Z21lbnQgd2l0aCB0aGUgbGlzdGVuIGZ1bmN0aW9uLlxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSAtIFRoZSBhdWdtZW50ZWQgYXB4IG9iamVjdC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChhcHgpIHtcclxuICAgIGxldCBlbGVtZW50cyA9IGFweC5lbGVtZW50cztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGVsZW1lbnRzIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgZG8gbWV0aG9kIHRvIGFkZCBjYWxsYmFjayBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIGZvciAoZS5nLiAnY2xpY2snLCAna2V5ZG93bicsIGV0Yy4pLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcl0gLSBUaGUgQ1NTIHNlbGVjdG9yIHRvIHVzZSBmb3IgZXZlbnQgZGVsZWdhdGlvbiAob3B0aW9uYWwpLlxyXG4gICAgICogQHJldHVybnMge09iamVjdH0gLSBBbiBvYmplY3Qgd2l0aCBhIGRvIG1ldGhvZCB0byBhZGQgY2FsbGJhY2sgZnVuY3Rpb25zLlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIGFweC5saXN0ZW4oJ2NsaWNrJywgJy5teS1idXR0b24nKS5kbygoZXZlbnQpID0+IHtcclxuICAgICAqICAgY29uc29sZS5sb2coJ0J1dHRvbiBjbGlja2VkIScsIGV2ZW50LnRhcmdldCk7XHJcbiAgICAgKiB9KTtcclxuICAgICAqL1xyXG4gICAgYXB4Lmxpc3RlbiA9IGZ1bmN0aW9uIChldmVudFR5cGVzLCBzZWNvbmRBcmd1bWVudCwgdGhpcmRBcmd1bWVudCkge1xyXG4gICAgICAgIGxldCBzZWxlY3RvcjtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgc2VsZWN0b3Igb3Igb3B0aW9uc1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc2Vjb25kQXJndW1lbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdG9yID0gc2Vjb25kQXJndW1lbnQ7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlyZEFyZ3VtZW50IHx8IHt9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSBzZWNvbmRBcmd1bWVudCB8fCB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVvdXREdXJhdGlvbiA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShldmVudFR5cGVzKSkge1xyXG4gICAgICAgICAgICBldmVudFR5cGVzID0gW2V2ZW50VHlwZXNdOyAvLyBFbnN1cmUgZXZlbnRUeXBlcyBpcyBhbiBhcnJheVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBldmVudFR5cGVzLmZvckVhY2goKGV2ZW50VHlwZSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBleGVjdXRlQ2FsbGJhY2tzKGV2ZW50LCB1bmlxdWVJZCwgdGltZW91dER1cmF0aW9uLCBzZWxlY3RvciwgZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBBZGRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlIGRvQ2FsbGJhY2tzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbGlzdGVuZXIuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGRvQ2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IC0gUmV0dXJucyB0aGUgY3VycmVudCBvYmplY3QgdG8gYWxsb3cgZm9yIGNoYWluZWQgY2FsbHMuXHJcbiAgICAgICAgICAgICAqIEBleGFtcGxlXHJcbiAgICAgICAgICAgICAqIGFweC5saXN0ZW4oJ2NsaWNrJywgJy5teS1idXR0b24nKS5kbygoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICogICBjb25zb2xlLmxvZygnQnV0dG9uIGNsaWNrZWQhJywgZXZlbnQudGFyZ2V0KTtcclxuICAgICAgICAgICAgICogfSkuZG8oKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAqICAgY29uc29sZS5sb2coJ0Fub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24hJyk7XHJcbiAgICAgICAgICAgICAqIH0pO1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZG86IGZ1bmN0aW9uIChkb0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvQ2FsbGJhY2tzW3VuaXF1ZUlkXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZG9DYWxsYmFja3NbdW5pcXVlSWRdLnB1c2goZG9DYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsgLy8gUmV0dXJuIHRoZSBvYmplY3QgdG8gYWxsb3cgZm9yIGNoYWluZWQgY2FsbHNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnVhbGx5IHRyaWdnZXJzIHRoZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBmb3IgYSBnaXZlbiBldmVudCB0eXBlIG9uIGFsbCBlbGVtZW50cyBvciBjcmVhdGVzIGEgbmV3IGV2ZW50IGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd8RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIHRyaWdnZXIuIFRoaXMgY2FuIGJlIGFuIGV2ZW50IHR5cGUgc3RyaW5nIChsaWtlICdjbGljaycpIG9yIGFuIGFjdHVhbCBFdmVudCBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFweC50cmlnZ2VyID0gZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgbGV0IGV2ZW50VHlwZTtcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBldmVudFR5cGUgPSBldmVudDtcclxuICAgICAgICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoZXZlbnQsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpIHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnQudHlwZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGV2ZW50IHR5cGUgcHJvdmlkZWQgdG8gYXB4LnRyaWdnZXIuIEl0IG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIEV2ZW50IG9iamVjdC4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXB4LmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsgIC8vIFRoaXMgd2lsbCBhbGxvdyB0aGUgZXZlbnQgdG8gYnViYmxlIHVwIG5hdHVyYWxseS5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gSGFuZGxlIGV2ZW50IGRlbGVnYXRpb24gbWFudWFsbHkgYnkgZXhlY3V0aW5nIGNhbGxiYWNrcyBpZiB0aGUgdGFyZ2V0IG1hdGNoZXMgdGhlIHNlbGVjdG9yXHJcbiAgICAgICAgT2JqZWN0LmtleXMoZG9DYWxsYmFja3MpLmZvckVhY2goKHVuaXF1ZUlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrRGV0YWlscyA9IGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXTtcclxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrRGV0YWlscyAmJiBjYWxsYmFja0RldGFpbHMuZXZlbnRUeXBlID09PSBldmVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgdXNlZCBkdXJpbmcgbGlzdGVuZXIgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdG9yIH0gPSBjYWxsYmFja0RldGFpbHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IGV2ZW50LnRhcmdldC5tYXRjaGVzKHNlbGVjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVDYWxsYmFja3MoZXZlbnQsIHVuaXF1ZUlkLCAwLCBzZWxlY3RvciwgZXZlbnQudGFyZ2V0KTsgIC8vIEltbWVkaWF0ZSBleGVjdXRpb24sIG5vIHRpbWVvdXRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgcmV0dXJuIGFweDtcclxufTtcclxuXHJcblxyXG5mdW5jdGlvbiBleGVjdXRlQ2FsbGJhY2tzKGV2ZW50LCB1bmlxdWVJZCwgdGltZW91dER1cmF0aW9uLCBzZWxlY3RvciA9ICcnLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBtYXRjaGVkRWxlbWVudCA9IHNlbGVjdG9yID8gY2xvc2VzdChldmVudC50YXJnZXQsIHNlbGVjdG9yKSA6IGVsZW1lbnQ7XHJcbiAgICBpZiAoIW1hdGNoZWRFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsZWFyIGFueSBwcmV2aW91cyB0aW1lb3V0IGZvciB0aGlzIHVuaXF1ZUlkIHRvIHByZXZlbnQgdW5pbnRlbmRlZCBiZWhhdmlvclxyXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRzW3VuaXF1ZUlkXSk7XHJcblxyXG4gICAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBleGVjdXRpb24gb2YgY2FsbGJhY2tzXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVDYWxsYmFja0V4ZWN1dGlvbigpIHtcclxuICAgICAgICBpZiAoZG9DYWxsYmFja3NbdW5pcXVlSWRdKSB7XHJcbiAgICAgICAgICAgIGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXS5yZWR1Y2UoKHByZXZQcm9taXNlLCBkb0NhbGxiYWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldlByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvQ2FsbGJhY2suYmluZChtYXRjaGVkRWxlbWVudCkoZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGNhbGxiYWNrIGNoYWluOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRpbWVvdXREdXJhdGlvbiBpcyB6ZXJvIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRlbGF5IHRoZSBjYWxsYmFjayBleGVjdXRpb24gb3Igbm90XHJcbiAgICBpZiAodGltZW91dER1cmF0aW9uID09PSAwKSB7XHJcbiAgICAgICAgaGFuZGxlQ2FsbGJhY2tFeGVjdXRpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGltZW91dHNbdW5pcXVlSWRdID0gc2V0VGltZW91dChoYW5kbGVDYWxsYmFja0V4ZWN1dGlvbiwgdGltZW91dER1cmF0aW9uKTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXRlVW5pcXVlSWQoKSB7XHJcbiAgICBjb25zdCByYW5kb21QYXJ0ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpOyAvLyBNb3JlIHJhbmRvbW5lc3NcclxuICAgIGNvbnN0IHVuaXF1ZUlkID0gYCR7RGF0ZS5ub3coKX1fJHtyYW5kb21QYXJ0fV8ke2NvdW50ZXJ9YDtcclxuICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMTAwMDsgLy8gUmVzZXQgY291bnRlciB0byBhdm9pZCBvdmVyZmxvd1xyXG5cclxuICAgIHJldHVybiB1bmlxdWVJZDtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcikge1xyXG4gICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIiwiaW1wb3J0ICcuL2Nzcy90cmlzdGF0ZS5jc3MnO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSB0cmktc3RhdGUgY2hlY2tib3ggZm9yIGVhY2ggY2hlY2tib3ggZWxlbWVudCBpbiB0aGUgYXB4LmVsZW1lbnRzIGFycmF5LlxyXG4gKiBAcGFyYW0ge0FycmF5PEhUTUxFbGVtZW50Pn0gYXB4IC0gQW4gYXJyYXkgb2YgSFRNTEVsZW1lbnRzIHdoaWNoIGlzIHJldHVybmVkIGJ5IEFQWCgpXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIENhbGwgdGhlIHRyaXN0YXRlIGZ1bmN0aW9uIG9uIGFuIGFycmF5IG9mIGNoZWNrYm94IGVsZW1lbnRzXHJcbiAqIGFweC50cmlzdGF0ZSgpO1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGFweCkge1xyXG4gICAgYXB4LnRyaXN0YXRlID0gZnVuY3Rpb24gKG9wdGlvbnMgPSB7fSl7XHJcbiAgICAgICAgYXB4LmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW29yaWdpbmFsQ2hlY2tib3gsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dF0gPSBjcmVhdGVUcmlTdGF0ZUNoZWNrYm94KGVsZW1lbnQsb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGEgXCJvcHRpb25zLmNhbGxiYWNrcy5hZnRlclwiIGNhbGxiYWNrIGluIG9wdGlvbnMgY2FsbCBpdFxyXG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5jYWxsYmFja3MgJiYgb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXIgJiYgdHlwZW9mIG9wdGlvbnMuY2FsbGJhY2tzLmFmdGVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXIob3JpZ2luYWxDaGVja2JveCwgdHJpc3RhdGVEb20sIGhpZGRlbklucHV0KTtcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b2dnbGVUcmlTdGF0ZUNoZWNrYm94U3RhdGUoY3VzdG9tQ2hlY2tib3gsIGFjdHVhbENoZWNrYm94LCBoaWRkZW5JbnB1dCkge1xyXG4gICAgaWYgKGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5jb250YWlucygnY2hlY2tlZCcpKSB7XHJcbiAgICAgICAgY3VzdG9tQ2hlY2tib3guY2xhc3NMaXN0LnJlbW92ZSgnY2hlY2tlZCcpO1xyXG4gICAgICAgIGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5hZGQoJ2Nyb3NzZWQnKTtcclxuICAgICAgICBhY3R1YWxDaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAnZmFsc2UnO1xyXG4gICAgfSBlbHNlIGlmIChjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuY29udGFpbnMoJ2Nyb3NzZWQnKSkge1xyXG4gICAgICAgIGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5yZW1vdmUoJ2Nyb3NzZWQnKTtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgICAgIGhpZGRlbklucHV0LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QucmVtb3ZlKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuYWRkKCdjaGVja2VkJyk7XHJcbiAgICAgICAgYWN0dWFsQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAndHJ1ZSc7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgYWN0dWFsQ2hlY2tib3guZGF0YXNldC5uYW1lKTsgLy8gUmVzdG9yZSB0aGUgbmFtZSBmb3IgcG9zdGluZ1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUcmlTdGF0ZUNoZWNrYm94KGNoZWNrYm94RWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgXHJcbiAgICAvL2dldCB0aGUgY2hlY2tib3ggbWFyZ2lucyBpbmNsdWRpbmcgYnJvd3NlciBkZWZhdWx0XHJcbiAgICBjb25zdCBjaGVja2JveFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY2hlY2tib3hFbGVtZW50KTtcclxuICAgIC8vIEhpZGUgdGhlIG9yaWdpbmFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIGN1c3RvbSBjaGVja2JveCBkaXYgYW5kIHNldCBpdHMgaW5pdGlhbCBzdGF0ZVxyXG4gICAgY29uc3QgdHJpc3RhdGVEb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoJ2FweC10cmlzdGF0ZScpO1xyXG4gICAgaWYgKG9wdGlvbnMuc2l6ZSkge1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNpemUud2lkdGgpIHtcclxuICAgICAgICAgICAgdHJpc3RhdGVEb20uc3R5bGUud2lkdGggPSBvcHRpb25zLnNpemUud2lkdGggKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zaXplLmhlaWdodCkge1xyXG4gICAgICAgICAgICB0cmlzdGF0ZURvbS5zdHlsZS5oZWlnaHQgPSBvcHRpb25zLnNpemUuaGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihvcHRpb25zLmNsYXNzZXMpIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoLi4uY29tcHV0ZUNsYXNzZXMob3B0aW9ucy5jbGFzc2VzKSk7XHJcblxyXG4gICAgdHJpc3RhdGVEb20uc3R5bGUubWFyZ2luID0gY2hlY2tib3hTdHlsZS5tYXJnaW47XHJcblxyXG4gICAgaWYgKGNoZWNrYm94RWxlbWVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgdHJpc3RhdGVEb20uY2xhc3NMaXN0LmFkZCgnY2hlY2tlZCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIGhpZGRlbiBpbnB1dCBmaWVsZFxyXG4gICAgY29uc3QgaGlkZGVuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgaGlkZGVuSW5wdXQudHlwZSA9ICdoaWRkZW4nO1xyXG4gICAgaGlkZGVuSW5wdXQubmFtZSA9IGNoZWNrYm94RWxlbWVudC5uYW1lOyAvLyBDb3B5IHRoZSBuYW1lIGZyb20gdGhlIG9yaWdpbmFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQuZGF0YXNldC5uYW1lID0gY2hlY2tib3hFbGVtZW50Lm5hbWU7IC8vIFN0b3JlIHRoZSBuYW1lIGluIGEgZGF0YSBhdHRyaWJ1dGUgZm9yIGxhdGVyIHVzZVxyXG4gICAgY2hlY2tib3hFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmFtZScpOyAvLyBSZW1vdmUgdGhlIG5hbWUgZnJvbSB0aGUgb3JpZ2luYWwgY2hlY2tib3ggdG8gYXZvaWQgZG91YmxlIHBvc3RpbmdcclxuXHJcbiAgICBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUpIHNldERlZmF1bHRTdGF0ZShvcHRpb25zLCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQpO1xyXG4gICAgZWxzZXtcclxuICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBoaWRkZW4gaW5wdXQgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGVcclxuICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpIHtcclxuICAgICAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAndHJ1ZSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaGlkZGVuSW5wdXQubmFtZSA9ICcnOyAvLyBFbnN1cmUgdGhlIGhpZGRlbiBpbnB1dCBkb2Vzbid0IHBvc3QgYW55IHZhbHVlXHJcbiAgICAgICAgICAgIGhpZGRlbklucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vaGFuZGxlIGFjY2Vzc2liaWxpdHksIHNldCB0aGUgdGFiaW5kZXggdG8gdGhlIHNhbWUgYXMgdGhlIGNoZWNrYm94XHJcbiAgICB0cmlzdGF0ZURvbS50YWJJbmRleCA9IGNoZWNrYm94RWxlbWVudC50YWJJbmRleDtcclxuXHJcbiAgICAvLyBJbnNlcnQgdGhlIGhpZGRlbiBpbnB1dCBpbnNpZGUgdGhlIGN1c3RvbSBjaGVja2JveCBkaXZcclxuICAgIHRyaXN0YXRlRG9tLmFwcGVuZENoaWxkKGhpZGRlbklucHV0KTtcclxuXHJcbiAgICAvLyBJbnNlcnQgaXQgbmV4dCB0byB0aGUgYWN0dWFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJpc3RhdGVEb20sIGNoZWNrYm94RWxlbWVudC5uZXh0U2libGluZyk7XHJcblxyXG4gICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyXHJcbiAgICB0cmlzdGF0ZURvbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdG9nZ2xlVHJpU3RhdGVDaGVja2JveFN0YXRlKHRyaXN0YXRlRG9tLCBjaGVja2JveEVsZW1lbnQsIGhpZGRlbklucHV0KTtcclxuICAgICAgICBidWJibGVFdmVudHNUb09yaWdpbmFsQ2hlY2tib3gob3B0aW9ucywgY2hlY2tib3hFbGVtZW50LCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQsIGUpO1xyXG4gICAgfSk7XHJcbiAgICB0cmlzdGF0ZURvbS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIG9ua2V5dXAuYmluZChudWxsLCBjaGVja2JveEVsZW1lbnQpKTtcclxuXHJcbiAgICByZXR1cm4gW2NoZWNrYm94RWxlbWVudCwgdHJpc3RhdGVEb20sIGhpZGRlbklucHV0XTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RGVmYXVsdFN0YXRlKG9wdGlvbnMsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dCkge1xyXG4gICAgLy9mb3IgYWxsIHZhbHVlcyBwb3NzaWJsZSBmb3IgZGVmYXVsdFN0YXRlLCBzZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNoZWNrYm94XHJcbiAgICBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUgPT09ICdjaGVja2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ3VuY2hlY2tlZCcpO1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoJ2NoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC52YWx1ZSA9ICd0cnVlJztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG9wdGlvbnMuZGVmYXVsdFN0YXRlID09PSAndW5jaGVja2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgICAgIGhpZGRlbklucHV0LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUgPT09ICdjcm9zc2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCdjcm9zc2VkJyk7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAnZmFsc2UnO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjb21wdXRlQ2xhc3NlcyhjbGFzc2VzKSB7XHJcbiAgICBsZXQgY29tcHV0ZWRDbGFzc2VzID0gW107XHJcbiAgICBpZih0eXBlb2YgY2xhc3NlcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAvL3JlcGxhY2UgbXVsdGlwbGUgd2hpdGUgc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcclxuICAgICAgICBjbGFzc2VzID0gY2xhc3Nlcy5yZXBsYWNlKC9cXHNcXHMrL2csICcgJyk7XHJcbiAgICAgICAgaWYoY2xhc3Nlcy5pbmRleE9mKCcgJykgPiAtMSlcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3Nlcy5zcGxpdCgnICcpO1xyXG4gICAgICAgIGVsc2UgaWYoY2xhc3Nlcy5pbmRleE9mKCcsJykgPiAtMSlcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3Nlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gW2NsYXNzZXNdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihBcnJheS5pc0FycmF5KGNsYXNzZXMpKSB7XHJcbiAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3NlcztcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wdXRlZENsYXNzZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJ1YmJsZUV2ZW50c1RvT3JpZ2luYWxDaGVja2JveChvcHRpb25zLCBjaGVja2JveEVsZW1lbnQsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dCwgZXZlbnQpIHtcclxuICAgIC8vaWYgb3B0aW9ucy5jYWxsYmFja3MuY2hhbmdlIGlzIHNldCwgY2FsbCBpdFxyXG4gICAgaWYob3B0aW9ucy5jYWxsYmFja3MgJiYgb3B0aW9ucy5jYWxsYmFja3MuY2hhbmdlICYmIHR5cGVvZiBvcHRpb25zLmNhbGxiYWNrcy5jaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBvcHRpb25zLmNhbGxiYWNrcy5jaGFuZ2UoY2hlY2tib3hFbGVtZW50LCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCFvcHRpb25zLmJ1YmJsZUV2ZW50cykgcmV0dXJuO1xyXG5cclxuICAgIGlmKGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcclxuICAgICAgICBjaGVja2JveEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihldmVudC50eXBlID09PSAna2V5dXAnKSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgeyBrZXk6ICcgJywgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGV2ZW50LnR5cGUgPT09ICdjaGFuZ2UnKSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvbmtleXVwKGNoZWNrYm94RWxlbWVudCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzMikge1xyXG4gICAgICAgIGJ1YmJsZUV2ZW50c1RvT3JpZ2luYWxDaGVja2JveChjaGVja2JveEVsZW1lbnQsIGV2ZW50KTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC5jbGljaygpO1xyXG4gICAgfVxyXG59IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcIm1haW5cIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiaW1wb3J0IGF1Z21lbnRXaXRoTGlzdGVuIGZyb20gJy4vbW9kdWxlcy9saXN0ZW4vbGlzdGVuLm1qcyc7XHJcbmltcG9ydCBhdWdtZW50V2l0aFRyaXN0YXRlIGZyb20gJy4vbW9kdWxlcy90cmlzdGF0ZS90cmlzdGF0ZS5tanMnO1xyXG5pbXBvcnQgZGlhbG9nIGZyb20gJy4vbW9kdWxlcy9kaWFsb2cvZGlhbG9nLm1qcyc7XHJcbmltcG9ydCB7IGxvYWRDc3MgfSBmcm9tICcuL21vZHVsZXMvY29tbW9uLm1qcyc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBBUFggb2JqZWN0IHRoYXQgd3JhcHMgb25lIG9yIG1vcmUgSFRNTCBlbGVtZW50cy5cclxuICogQHBhcmFtIHtzdHJpbmd8SFRNTEVsZW1lbnR8Tm9kZUxpc3R8SFRNTENvbGxlY3Rpb258QXJyYXk8SFRNTEVsZW1lbnQ+fGpRdWVyeXxGdW5jdGlvbn0gaW5wdXQgLSBUaGUgaW5wdXQgdG8gY3JlYXRlIHRoZSBBUFggb2JqZWN0IGZyb20uXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBBUFggb2JqZWN0LlxyXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGlucHV0IHR5cGUgaXMgaW52YWxpZC5cclxuICogQGV4YW1wbGVcclxuICogLy8gWFBhdGhcclxuICogY29uc3QgYXB4MSA9IEFQWCgnLy9kaXZbQGNsYXNzPVwiZXhhbXBsZVwiXScpO1xyXG4gKlxyXG4gKiAvLyBDU1Mgc2VsZWN0b3JcclxuICogY29uc3QgYXB4MiA9IEFQWCgnLmV4YW1wbGUnKTtcclxuICpcclxuICogLy8gU2luZ2xlIGVsZW1lbnRcclxuICogY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGFtcGxlJyk7XHJcbiAqIGNvbnN0IGFweDMgPSBBUFgoZWxlbWVudCk7XHJcbiAqXHJcbiAqIC8vIE5vZGVMaXN0IG9yIEhUTUxDb2xsZWN0aW9uXHJcbiAqIGNvbnN0IG5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV4YW1wbGUnKTtcclxuICogY29uc3QgYXB4NCA9IEFQWChub2RlTGlzdCk7XHJcbiAqXHJcbiAqIC8vIEFycmF5IG9mIGVsZW1lbnRzXHJcbiAqIGNvbnN0IGVsZW1lbnRzID0gW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGFtcGxlMScpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXhhbXBsZTInKV07XHJcbiAqIGNvbnN0IGFweDUgPSBBUFgoZWxlbWVudHMpO1xyXG4gKlxyXG4gKiAvLyBqUXVlcnkgb2JqZWN0XHJcbiAqIGNvbnN0ICRleGFtcGxlID0gJCgnLmV4YW1wbGUnKTtcclxuICogY29uc3QgYXB4NiA9IEFQWCgkZXhhbXBsZSk7XHJcbiAqXHJcbiAqIC8vIEZ1bmN0aW9uIHJldHVybmluZyBhbiBBUFggb2JqZWN0XHJcbiAqIGNvbnN0IGFweDcgPSBBUFgoKCkgPT4gQVBYKCcuZXhhbXBsZScpKTtcclxuICovXHJcbmNvbnN0IEFQWCA9IGZ1bmN0aW9uIChpbnB1dCwgY29udGV4dCA9IGRvY3VtZW50KSB7XHJcbiAgICBsZXQgZWxlbWVudHM7XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgY29udGV4dFxyXG4gICAgaWYgKHR5cGVvZiBjb250ZXh0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoQVBYLmlzQVBYT2JqZWN0KGNvbnRleHQpKSB7XHJcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQuZmlyc3QoKTtcclxuICAgIH0gZWxzZSBpZiAoIShjb250ZXh0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29udGV4dCBpbnN0YW5jZW9mIERvY3VtZW50KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb250ZXh0IGZvciBBUFgnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiBpbnB1dC5zdGFydHNXaXRoKCcvLycpKSB7XHJcbiAgICAgICAgLy8gWFBhdGggd2l0aCBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBkb2N1bWVudC5ldmFsdWF0ZShpbnB1dCwgY29udGV4dCwgbnVsbCwgWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpO1xyXG4gICAgICAgIGxldCBub2RlcyA9IFtdO1xyXG4gICAgICAgIGxldCBub2RlID0gZWxlbWVudHMuaXRlcmF0ZU5leHQoKTtcclxuICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlID0gZWxlbWVudHMuaXRlcmF0ZU5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHMgPSBub2RlcztcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIC8vIENTUyBzZWxlY3RvciB3aXRoIGNvbnRleHRcclxuICAgICAgICBlbGVtZW50cyA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbChpbnB1dCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICAvLyBTaW5nbGUgZWxlbWVudCB3aXRoaW4gY29udGV4dFxyXG4gICAgICAgIGVsZW1lbnRzID0gY29udGV4dC5jb250YWlucyhpbnB1dCkgPyBbaW5wdXRdIDogW107XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgaW5wdXQgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikge1xyXG4gICAgICAgIC8vIE5vZGVMaXN0IG9yIEhUTUxDb2xsZWN0aW9uIHdpdGhpbiBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBBcnJheS5mcm9tKGlucHV0KS5maWx0ZXIoZWwgPT4gY29udGV4dC5jb250YWlucyhlbCkpO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSAmJiBpbnB1dC5ldmVyeShlbCA9PiBlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xyXG4gICAgICAgIC8vIEFycmF5IG9mIGVsZW1lbnRzIHdpdGhpbiBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBpbnB1dC5maWx0ZXIoZWwgPT4gY29udGV4dC5jb250YWlucyhlbCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgalF1ZXJ5KSB7XHJcbiAgICAgICAgLy8galF1ZXJ5IG9iamVjdCB3aXRoaW4gY29udGV4dFxyXG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuZnJvbShpbnB1dC5nZXQoKSkuZmlsdGVyKGVsID0+IGNvbnRleHQuY29udGFpbnMoZWwpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gRnVuY3Rpb24gcmV0dXJuaW5nIGFuIEFQWCBvYmplY3Qgd2l0aCBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBBUFgoaW5wdXQoKSwgY29udGV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCB0eXBlIGZvciBBUFgnKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYXB4ID0ge1xyXG4gICAgICAgIGVsZW1lbnRzOiBlbGVtZW50cyxcclxuICAgICAgICBfaXNBUFhPYmplY3Q6IHRydWVcclxuICAgIH07XHJcbiAgICBhcHgubGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xyXG4gICAgYXB4LmVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAodGhpcy5lbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5KSB0aGlzLmVsZW1lbnRzLmZvckVhY2goY2FsbGJhY2spO1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIEFycmF5LmZyb20odGhpcy5lbGVtZW50cykuZm9yRWFjaChjYWxsYmFjayk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgYXB4LmdldCA9IGZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzW2luZGV4XTtcclxuICAgIH07XHJcbiAgICBhcHguYWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiB0aGlzLmVsZW1lbnRzO1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIGFweC5maXJzdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCk7XHJcbiAgICB9O1xyXG4gICAgYXVnbWVudFdpdGhMaXN0ZW4oYXB4KTtcclxuICAgIGF1Z21lbnRXaXRoVHJpc3RhdGUoYXB4KTtcclxuICAgIHJldHVybiBhcHg7XHJcbn07XHJcblxyXG5BUFgubG9hZENzcyA9IGxvYWRDc3M7XHJcbkFQWC5kaWFsb2cgPSBkaWFsb2c7XHJcbkFQWC5pc0FQWE9iamVjdCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgIHJldHVybiBvYmogJiYgb2JqLl9pc0FQWE9iamVjdCA9PT0gdHJ1ZTtcclxufVxyXG5BUFguaXNfbnVtZXJpYyA9IChuKSA9PiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG4gLSBwYXJzZUZsb2F0KG4pKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQVBYOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
1698
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFJLHNFQUFpQjtBQUNyQixJQUFJLDBFQUFtQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFPO0FBQ3JCLGFBQWEsa0VBQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxHQUFHLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvZGlhbG9nL2Nzcy9kaWFsb2cuY3NzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy90cmlzdGF0ZS9jc3MvdHJpc3RhdGUuY3NzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvZGlhbG9nL2h0bWwvZGlhbG9nLmh0bWwiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL2RpYWxvZy9jc3MvZGlhbG9nLmNzcz9hNTY3Iiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy90cmlzdGF0ZS9jc3MvdHJpc3RhdGUuY3NzP2EwOTQiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvY29tbW9uLm1qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvZGlhbG9nL2RpYWxvZy5tanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL2xpc3Rlbi9saXN0ZW4ubWpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy90cmlzdGF0ZS90cmlzdGF0ZS5tanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9BUFgubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAvKiBEaWFsb2cgc3R5bGluZyAqL1xyXG4uQVBYLWRpYWxvZyB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgei1pbmRleDogMTAwMjtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xyXG4gICAgLyogRGltbWVkIGJhY2tncm91bmQgZm9yIGZvY3VzIG9uIGRpYWxvZyAqL1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1jb250ZW50IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XHJcbiAgICBwYWRkaW5nOiA0MHB4O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBtaW4td2lkdGg6IDMwMHB4O1xyXG4gICAgbWF4LXdpZHRoOiA4MCU7XHJcbiAgICBtYXJnaW46IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICBib3gtc2hhZG93OiAwcHggNnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG5oMi5BUFgtZGlhbG9nLXRpdGxle1xyXG4gICAgbWFyZ2luLXRvcDowO1xyXG59XHJcblxyXG4uQVBYLWNsb3NlLWRpYWxvZyB7XHJcbiAgICBjb2xvcjogI2FhYTtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgIG1hcmdpbi10b3A6IC0xMHB4O1xyXG4gICAgLyogQWRqdXN0IHBvc2l0aW9uaW5nICovXHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4O1xyXG59XHJcblxyXG4uQVBYLWNsb3NlLWRpYWxvZzpob3ZlcixcclxuLkFQWC1jbG9zZS1kaWFsb2c6Zm9jdXMge1xyXG4gICAgY29sb3I6ICMzMzM7XHJcbiAgICAvKiBEYXJrZXIgY29sb3Igb24gaG92ZXIvZm9jdXMgKi9cclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLyogSW5wdXQgZmllbGRzIHN0eWxpbmcgKi9cclxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJkYXRlXCJdLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcztcclxufVxyXG5cclxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVwidGV4dFwiXTpmb2N1cyxcclxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmZvY3VzLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpmb2N1cyB7XHJcbiAgICBib3JkZXItY29sb3I6ICMyQzNFNTA7XHJcbiAgICAvKiBEZWVwIEJsdWUgQ29sb3IgKi9cclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8qIEJ1dHRvbiBpbiB0aGUgZGlhbG9nICovXHJcbi5BUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXIgYnV0dG9uIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMyQzNFNTA7XHJcbiAgICBjb2xvcjogI0VDRjBGMTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XHJcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIGJ1dHRvbjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ0OTVFO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbn1cclxuXHJcbi5BUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGdhcDogMTBweDtcclxuICAgIG1hcmdpbi10b3A6MWVtO1xyXG4gICAgLyogc3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgKi9cclxufVxyXG5cclxuLyogTG9hZGluZyBpbmRpY2F0b3IgKi9cclxuLkFQWC1kaWFsb2ctbG9hZGluZy1pbmRpY2F0b3Ige1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLkFQWC1kaWFsb2ctbG9hZGluZy1pbmRpY2F0b3I6OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgYm9yZGVyOiA0cHggc29saWQgI2YzZjNmMztcclxuICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCAjMkMzRTUwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYW5pbWF0aW9uOiBBUFgtZGlhbG9nLXNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIEFQWC1kaWFsb2ctc3BpbiB7XHJcbiAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XHJcbiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxyXG59XHJcbi5BUFgtZGlhbG9nLWJ1dHRvbi1kaXNhYmxlZCB7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2ICFpbXBvcnRhbnQ7IC8qIEdyYXllZCBvdXQgY29sb3IgKi9cclxuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLkFQWC1kaWFsb2ctYnV0dG9uLWRpc2FibGVkOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM5NWE1YTYgIWltcG9ydGFudDsgLyogS2VlcCBncmF5IG9uIGhvdmVyICovXHJcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogQWRkIGEgc3VidGxlIHN0cmlrZXRocm91Z2ggZWZmZWN0ICovXHJcbi5BUFgtZGlhbG9nLWJ1dHRvbi1kaXNhYmxlZDo6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMXB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpO1xyXG59YCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9tb2R1bGVzL2RpYWxvZy9jc3MvZGlhbG9nLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxtQkFBbUI7QUFDbkI7SUFDSSxhQUFhO0lBQ2IsZUFBZTtJQUNmLGFBQWE7SUFDYixPQUFPO0lBQ1AsTUFBTTtJQUNOLFdBQVc7SUFDWCxZQUFZO0lBQ1osY0FBYztJQUNkLG9DQUFvQztJQUNwQywwQ0FBMEM7QUFDOUM7O0FBRUE7SUFDSSx5QkFBeUI7SUFDekIsYUFBYTtJQUNiLFlBQVk7SUFDWixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLDJDQUEyQztJQUMzQyxnREFBZ0Q7QUFDcEQ7O0FBRUE7SUFDSSxZQUFZO0FBQ2hCOztBQUVBO0lBQ0ksV0FBVztJQUNYLFlBQVk7SUFDWixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixtQkFBbUI7QUFDdkI7O0FBRUE7O0lBRUksV0FBVztJQUNYLGdDQUFnQztJQUNoQyxlQUFlO0FBQ25COztBQUVBLHlCQUF5QjtBQUN6Qjs7OztJQUlJLFdBQVc7SUFDWCxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDbEIsZ0RBQWdEO0lBQ2hELGVBQWU7SUFDZixzQkFBc0I7SUFDdEIsNkJBQTZCO0FBQ2pDOztBQUVBOzs7O0lBSUkscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixhQUFhO0FBQ2pCOztBQUVBLHlCQUF5QjtBQUN6QjtJQUNJLGtCQUFrQjtJQUNsQix5QkFBeUI7SUFDekIsY0FBYztJQUNkLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixlQUFlO0lBQ2YseUJBQXlCO0lBQ3pCLHdDQUF3QztBQUM1Qzs7QUFFQTtJQUNJLHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IseUNBQXlDO0FBQzdDOztBQUVBO0lBQ0ksYUFBYTtJQUNiLFNBQVM7SUFDVCxjQUFjO0lBQ2QsNEJBQTRCO0FBQ2hDOztBQUVBLHNCQUFzQjtBQUN0QjtJQUNJLGFBQWE7SUFDYix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixXQUFXO0FBQ2Y7O0FBRUE7SUFDSSxXQUFXO0lBQ1gsV0FBVztJQUNYLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsNkJBQTZCO0lBQzdCLGtCQUFrQjtJQUNsQiw2Q0FBNkM7QUFDakQ7O0FBRUE7SUFDSSxLQUFLLHVCQUF1QixFQUFFO0lBQzlCLE9BQU8seUJBQXlCLEVBQUU7QUFDdEM7QUFDQTtJQUNJLFlBQVk7SUFDWiw4QkFBOEI7SUFDOUIsb0NBQW9DLEVBQUUscUJBQXFCO0lBQzNELDJCQUEyQjtJQUMzQix5QkFBeUI7SUFDekIsMEJBQTBCO0FBQzlCOztBQUVBO0lBQ0ksb0NBQW9DLEVBQUUsdUJBQXVCO0lBQzdELDBCQUEwQjtBQUM5Qjs7QUFFQSxzQ0FBc0M7QUFDdEM7SUFDSSxXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixPQUFPO0lBQ1AsV0FBVztJQUNYLFdBQVc7SUFDWCxvQ0FBb0M7SUFDcEMsd0JBQXdCO0FBQzVCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi8qIERpYWxvZyBzdHlsaW5nICovXFxyXFxuLkFQWC1kaWFsb2cge1xcclxcbiAgICBkaXNwbGF5OiBub25lO1xcclxcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxyXFxuICAgIHotaW5kZXg6IDEwMDI7XFxyXFxuICAgIGxlZnQ6IDA7XFxyXFxuICAgIHRvcDogMDtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIGhlaWdodDogMTAwJTtcXHJcXG4gICAgb3ZlcmZsb3c6IGF1dG87XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcXHJcXG4gICAgLyogRGltbWVkIGJhY2tncm91bmQgZm9yIGZvY3VzIG9uIGRpYWxvZyAqL1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcXHJcXG4gICAgcGFkZGluZzogNDBweDtcXHJcXG4gICAgYm9yZGVyOiBub25lO1xcclxcbiAgICB3aWR0aDogYXV0bztcXHJcXG4gICAgbWluLXdpZHRoOiAzMDBweDtcXHJcXG4gICAgbWF4LXdpZHRoOiA4MCU7XFxyXFxuICAgIG1hcmdpbjogYXV0bztcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcclxcbiAgICBib3gtc2hhZG93OiAwcHggNnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcclxcbiAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxufVxcclxcblxcclxcbmgyLkFQWC1kaWFsb2ctdGl0bGV7XFxyXFxuICAgIG1hcmdpbi10b3A6MDtcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1jbG9zZS1kaWFsb2cge1xcclxcbiAgICBjb2xvcjogI2FhYTtcXHJcXG4gICAgZmxvYXQ6IHJpZ2h0O1xcclxcbiAgICBmb250LXNpemU6IDI0cHg7XFxyXFxuICAgIG1hcmdpbi10b3A6IC0xMHB4O1xcclxcbiAgICAvKiBBZGp1c3QgcG9zaXRpb25pbmcgKi9cXHJcXG4gICAgbWFyZ2luLXJpZ2h0OiAtMTBweDtcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1jbG9zZS1kaWFsb2c6aG92ZXIsXFxyXFxuLkFQWC1jbG9zZS1kaWFsb2c6Zm9jdXMge1xcclxcbiAgICBjb2xvcjogIzMzMztcXHJcXG4gICAgLyogRGFya2VyIGNvbG9yIG9uIGhvdmVyL2ZvY3VzICovXFxyXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXHJcXG59XFxyXFxuXFxyXFxuLyogSW5wdXQgZmllbGRzIHN0eWxpbmcgKi9cXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcInRleHRcXFwiXSxcXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXSB7XFxyXFxuICAgIHdpZHRoOiAxMDAlO1xcclxcbiAgICBwYWRkaW5nOiAxMHB4O1xcclxcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xcclxcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxyXFxuICAgIGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG4gICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcclxcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcztcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVxcXCJ0ZXh0XFxcIl06Zm9jdXMsXFxyXFxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVxcXCJudW1iZXJcXFwiXTpmb2N1cyxcXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcImRhdGVcXFwiXTpmb2N1cyxcXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl06Zm9jdXMge1xcclxcbiAgICBib3JkZXItY29sb3I6ICMyQzNFNTA7XFxyXFxuICAgIC8qIERlZXAgQmx1ZSBDb2xvciAqL1xcclxcbiAgICBvdXRsaW5lOiBub25lO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBCdXR0b24gaW4gdGhlIGRpYWxvZyAqL1xcclxcbi5BUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXIgYnV0dG9uIHtcXHJcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwO1xcclxcbiAgICBjb2xvcjogI0VDRjBGMTtcXHJcXG4gICAgYm9yZGVyOiBub25lO1xcclxcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXHJcXG4gICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XFxyXFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxyXFxufVxcclxcblxcclxcbi5BUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXIgYnV0dG9uOmhvdmVyIHtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzM0NDk1RTtcXHJcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xcclxcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciB7XFxyXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgIGdhcDogMTBweDtcXHJcXG4gICAgbWFyZ2luLXRvcDoxZW07XFxyXFxuICAgIC8qIHNwYWNpbmcgYmV0d2VlbiBidXR0b25zICovXFxyXFxufVxcclxcblxcclxcbi8qIExvYWRpbmcgaW5kaWNhdG9yICovXFxyXFxuLkFQWC1kaWFsb2ctbG9hZGluZy1pbmRpY2F0b3Ige1xcclxcbiAgICBkaXNwbGF5OiBmbGV4O1xcclxcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXHJcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXHJcXG4gICAgaGVpZ2h0OiAxMDBweDtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxufVxcclxcblxcclxcbi5BUFgtZGlhbG9nLWxvYWRpbmctaW5kaWNhdG9yOjpiZWZvcmUge1xcclxcbiAgICBjb250ZW50OiAnJztcXHJcXG4gICAgd2lkdGg6IDQwcHg7XFxyXFxuICAgIGhlaWdodDogNDBweDtcXHJcXG4gICAgYm9yZGVyOiA0cHggc29saWQgI2YzZjNmMztcXHJcXG4gICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICMyQzNFNTA7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXHJcXG4gICAgYW5pbWF0aW9uOiBBUFgtZGlhbG9nLXNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xcclxcbn1cXHJcXG5cXHJcXG5Aa2V5ZnJhbWVzIEFQWC1kaWFsb2ctc3BpbiB7XFxyXFxuICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXHJcXG4gICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cXHJcXG59XFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWRpc2FibGVkIHtcXHJcXG4gICAgb3BhY2l0eTogMC41O1xcclxcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICM5NWE1YTYgIWltcG9ydGFudDsgLyogR3JheWVkIG91dCBjb2xvciAqL1xcclxcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XFxyXFxuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XFxyXFxuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWRpYWxvZy1idXR0b24tZGlzYWJsZWQ6aG92ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2ICFpbXBvcnRhbnQ7IC8qIEtlZXAgZ3JheSBvbiBob3ZlciAqL1xcclxcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcXHJcXG59XFxyXFxuXFxyXFxuLyogQWRkIGEgc3VidGxlIHN0cmlrZXRocm91Z2ggZWZmZWN0ICovXFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWRpc2FibGVkOjphZnRlciB7XFxyXFxuICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxyXFxuICAgIHRvcDogNTAlO1xcclxcbiAgICBsZWZ0OiAwO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgaGVpZ2h0OiAxcHg7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcXHJcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpO1xcclxcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyN2h0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjclMjB3aWR0aCUzRCUyNzMyJTI3JTIwaGVpZ2h0JTNEJTI3MzIlMjclM0UlM0NwYXRoJTIwJTIwZmlsbCUzRCUyMiUyM2NjY2NjYyUyMiUyMGQlM0QlMjJNMjUuMTA3JTIwMzIuMDMwaC0xOC4yMTRjLTMuNDU2JTIwMC02LjI2OC0yLjgxLTYuMjY4LTYuMjY0di0xOS41MjljMC0zLjQ1NiUyMDIuODEyLTYuMjY4JTIwNi4yNjgtNi4yNjhoMTguMjE0YzMuNDU2JTIwMCUyMDYuMjY4JTIwMi44MTIlMjA2LjI2OCUyMDYuMjY4djE5LjUyOWMwJTIwMy40NTItMi44MTIlMjA2LjI2NC02LjI2OCUyMDYuMjY0ek02Ljg5MyUyMDEuODVjLTIuNDE5JTIwMC00LjM4NiUyMDEuOTY3LTQuMzg2JTIwNC4zODZ2MTkuNTI5YzAlMjAyLjQxNyUyMDEuOTY3JTIwNC4zODIlMjA0LjM4NiUyMDQuMzgyaDE4LjIxNGMyLjQxOSUyMDAlMjA0LjM4Ni0xLjk2NSUyMDQuMzg2LTQuMzgydi0xOS41MjljMC0yLjQxOS0xLjk2Ny00LjM4Ni00LjM4Ni00LjM4NmgtMTguMjE0eiUyMiUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyN2h0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjclMjB3aWR0aCUzRCUyNzMyJTI3JTIwaGVpZ2h0JTNEJTI3MzIlMjclM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzA2NTRiYSUyMiUyMGQlM0QlMjJNMC41NDMlMjA1LjY0N2MwLTMuMTE5JTIwMi41MzEtNS42NDclMjA1LjY1LTUuNjQ3aDE5LjMwOWMzLjEyJTIwMCUyMDUuNjUlMjAyLjUxMSUyMDUuNjUlMjA1LjY0N3YyMC43MDVjMCUyMDMuMTE5LTIuNTMxJTIwNS42NDctNS42NSUyMDUuNjQ3aC0xOS4zMDljLTMuMTIlMjAwLTUuNjUtMi41MTEtNS42NS01LjY0N3YtMjAuNzA1ek01LjMxMyUyMDE3LjU4N2w3LjAzOSUyMDYuODM5JTIwMTMuODMxLTEzLjQzOS0yLjYzNi0yLjU2MS0xMC45MjklMjAxMC42Mi00LjQ0Mi00LjMxNy0yLjg2MiUyMDIuODU4eiUyMiUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUzRiUzRSUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDMyJTIwMzIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIybTAuNTQzJTIwNS42NDdjMC0zLjExOSUyMDIuNTMxLTUuNjQ3JTIwNS42NS01LjY0N2gxOS4zMDljMy4xMiUyMDAlMjA1LjY1JTIwMi41MTElMjA1LjY1JTIwNS42NDd2MjAuNzA1YzAlMjAzLjExOS0yLjUzMSUyMDUuNjQ3LTUuNjUlMjA1LjY0N2gtMTkuMzA5Yy0zLjEyJTIwMC01LjY1LTIuNTExLTUuNjUtNS42NDd2LTIwLjcwNXolMjIlMjBmaWxsJTNEJTIyJTIzZjAwJTIyJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJtOCUyMDglMjAxNiUyMDE2JTIyJTIwc3Ryb2tlJTNEJTIyJTIzZmZmJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTI0JTIwOEw4JTIwMjQlMjIlMjBzdHJva2UlM0QlMjIlMjNmZmYlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIyJTIyJTJGJTNFJTNDJTJGc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5hcHgtdHJpc3RhdGUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1pbi13aWR0aDoxM3B4O1xyXG4gICAgbWluLWhlaWdodDoxM3B4O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBib3JkZXItcmFkaXVzOjNweDtcclxufVxyXG4uYXB4LXRyaXN0YXRlLnVuY2hlY2tlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHtfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19ffSk7XHJcbn1cclxuLmFweC10cmlzdGF0ZS5jaGVja2VkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgke19fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX199KTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbn1cclxuLmFweC10cmlzdGF0ZS5jcm9zc2VkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgke19fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzJfX199KTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbn1gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL21vZHVsZXMvdHJpc3RhdGUvY3NzL3RyaXN0YXRlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtJQUNJLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsY0FBYztJQUNkLGVBQWU7SUFDZix3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtBQUNyQjtBQUNBO0lBQ0kseURBQXlsQjtBQUM3bEI7QUFDQTtJQUNJLHlEQUE2ZTtJQUM3ZSw0QkFBNEI7SUFDNUIsMkJBQTJCO0FBQy9CO0FBQ0E7SUFDSSx5REFBc25CO0lBQ3RuQiw0QkFBNEI7SUFDNUIsMkJBQTJCO0FBQy9CXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5hcHgtdHJpc3RhdGUge1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIG1pbi13aWR0aDoxM3B4O1xcclxcbiAgICBtaW4taGVpZ2h0OjEzcHg7XFxyXFxuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6M3B4O1xcclxcbn1cXHJcXG4uYXB4LXRyaXN0YXRlLnVuY2hlY2tlZCB7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MzIlMjclMjBoZWlnaHQlM0QlMjczMiUyNyUzRSUzQ3BhdGglMjAlMjBmaWxsJTNEJTIyJTIzY2NjY2NjJTIyJTIwZCUzRCUyMk0yNS4xMDclMjAzMi4wMzBoLTE4LjIxNGMtMy40NTYlMjAwLTYuMjY4LTIuODEtNi4yNjgtNi4yNjR2LTE5LjUyOWMwLTMuNDU2JTIwMi44MTItNi4yNjglMjA2LjI2OC02LjI2OGgxOC4yMTRjMy40NTYlMjAwJTIwNi4yNjglMjAyLjgxMiUyMDYuMjY4JTIwNi4yNjh2MTkuNTI5YzAlMjAzLjQ1Mi0yLjgxMiUyMDYuMjY0LTYuMjY4JTIwNi4yNjR6TTYuODkzJTIwMS44NWMtMi40MTklMjAwLTQuMzg2JTIwMS45NjctNC4zODYlMjA0LjM4NnYxOS41MjljMCUyMDIuNDE3JTIwMS45NjclMjA0LjM4MiUyMDQuMzg2JTIwNC4zODJoMTguMjE0YzIuNDE5JTIwMCUyMDQuMzg2LTEuOTY1JTIwNC4zODYtNC4zODJ2LTE5LjUyOWMwLTIuNDE5LTEuOTY3LTQuMzg2LTQuMzg2LTQuMzg2aC0xOC4yMTR6JTIyJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFJyk7XFxyXFxufVxcclxcbi5hcHgtdHJpc3RhdGUuY2hlY2tlZCB7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MzIlMjclMjBoZWlnaHQlM0QlMjczMiUyNyUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDY1NGJhJTIyJTIwZCUzRCUyMk0wLjU0MyUyMDUuNjQ3YzAtMy4xMTklMjAyLjUzMS01LjY0NyUyMDUuNjUtNS42NDdoMTkuMzA5YzMuMTIlMjAwJTIwNS42NSUyMDIuNTExJTIwNS42NSUyMDUuNjQ3djIwLjcwNWMwJTIwMy4xMTktMi41MzElMjA1LjY0Ny01LjY1JTIwNS42NDdoLTE5LjMwOWMtMy4xMiUyMDAtNS42NS0yLjUxMS01LjY1LTUuNjQ3di0yMC43MDV6TTUuMzEzJTIwMTcuNTg3bDcuMDM5JTIwNi44MzklMjAxMy44MzEtMTMuNDM5LTIuNjM2LTIuNTYxLTEwLjkyOSUyMDEwLjYyLTQuNDQyLTQuMzE3LTIuODYyJTIwMi44NTh6JTIyJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFJyk7XFxyXFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxyXFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXHJcXG59XFxyXFxuLmFweC10cmlzdGF0ZS5jcm9zc2VkIHtcXHJcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIyVVRGLTglMjIlM0YlM0UlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAzMiUyMDMyJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMm0wLjU0MyUyMDUuNjQ3YzAtMy4xMTklMjAyLjUzMS01LjY0NyUyMDUuNjUtNS42NDdoMTkuMzA5YzMuMTIlMjAwJTIwNS42NSUyMDIuNTExJTIwNS42NSUyMDUuNjQ3djIwLjcwNWMwJTIwMy4xMTktMi41MzElMjA1LjY0Ny01LjY1JTIwNS42NDdoLTE5LjMwOWMtMy4xMiUyMDAtNS42NS0yLjUxMS01LjY1LTUuNjQ3di0yMC43MDV6JTIyJTIwZmlsbCUzRCUyMiUyM2YwMCUyMiUyRiUzRSUzQ3BhdGglMjBkJTNEJTIybTglMjA4JTIwMTYlMjAxNiUyMiUyMHN0cm9rZSUzRCUyMiUyM2ZmZiUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjIlMjIlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk0yNCUyMDhMOCUyMDI0JTIyJTIwc3Ryb2tlJTNEJTIyJTIzZmZmJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyRiUzRSUzQyUyRnN2ZyUzRScpO1xcclxcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcclxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxyXFxufVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7XG5cbiAgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgIHVybCArPSBvcHRpb25zLmhhc2g7XG4gIH1cblxuICAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8vIE1vZHVsZVxudmFyIGNvZGUgPSBcIjxkaXYgY2xhc3M9XFxcIkFQWC1kaWFsb2dcXFwiPlxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWNvbnRlbnRcXFwiPlxcclxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcIkFQWC1jbG9zZS1kaWFsb2dcXFwiPiZ0aW1lczs8L3NwYW4+XFxyXFxuICAgICAgICA8aDIgY2xhc3M9XFxcIkFQWC1kaWFsb2ctdGl0bGVcXFwiPjwvaDI+XFxyXFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWR5bmFtaWMtY29udGVudFxcXCI+PC9kaXY+XFxyXFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXJcXFwiPjwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG48L2Rpdj5cIjtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gY29kZTsiLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZGlhbG9nLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZGlhbG9nLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi90cmlzdGF0ZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RyaXN0YXRlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gRnVuY3Rpb24gdG8gbG9hZCB0aGUgQ1NTIGZyb20gYSBnaXZlbiBVUkxcclxuZnVuY3Rpb24gbG9hZENzcyh1cmwpIHtcclxuICAgIHJldHVybiBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UudGV4dCgpKVxyXG4gICAgICAgIC50aGVuKGNzcyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlU2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgICAgIHN0eWxlU2hlZXQudHlwZSA9IFwidGV4dC9jc3NcIjtcclxuICAgICAgICAgICAgc3R5bGVTaGVldC50ZXh0Q29udGVudCA9IGNzczsgIC8vIFVzZSB0ZXh0Q29udGVudCBpbnN0ZWFkIG9mIGlubmVyVGV4dFxyXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIENTUzpcIiwgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gICAgbG9hZENzc1xyXG59IiwiLy8gSW1wb3J0aW5nIHRoZSBDU1MgYW5kIEhUTUwgdGVtcGxhdGVzXHJcbmltcG9ydCAnLi9jc3MvZGlhbG9nLmNzcyc7XHJcbmltcG9ydCBkaWFsb2dUZW1wbGF0ZSBmcm9tICcuL2h0bWwvZGlhbG9nLmh0bWw/cmF3JztcclxuXHJcbmNvbnN0IGNyZWF0ZURpYWxvZyA9IChvcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dEZWZhdWx0cyA9IHtcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgY29udGVudDogJycsXHJcbiAgICAgICAgY29udGVudFVSSTogJycsXHJcbiAgICAgICAgYnV0dG9uczogW10sXHJcbiAgICAgICAgc2l6ZTogJ21lZGl1bScsXHJcbiAgICAgICAgc2hvd0xvYWRpbmdJbmRpY2F0b3I6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHsgdGl0bGUsIGNvbnRlbnQsIGNvbnRlbnRVUkksIGJ1dHRvbnMsIHNpemUsIHNob3dMb2FkaW5nSW5kaWNhdG9yIH0gPSB7IC4uLmRpYWxvZ0RlZmF1bHRzLCAuLi5vcHRpb25zIH07XHJcblxyXG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgd3JhcHBlci5pbm5lckhUTUwgPSBkaWFsb2dUZW1wbGF0ZS50cmltKCk7XHJcbiAgICBjb25zdCBkaWFsb2dFbGVtZW50ID0gd3JhcHBlci5maXJzdENoaWxkO1xyXG5cclxuICAgIC8vIExpZmVjeWNsZSBldmVudCBtYW5hZ2VtZW50XHJcbiAgICBjb25zdCBsaWZlY3ljbGVSZXNvbHZlcnMgPSB7fTtcclxuICAgIGNvbnN0IGxpZmVjeWNsZUV2ZW50cyA9IHt9O1xyXG5cclxuICAgIC8vIERlZmluZSBsaWZlY3ljbGUgcHJvbWlzZXMgYXMgcHJvcGVydGllc1xyXG4gICAgWydvcGVuaW5nJywgJ29wZW5lZCcsICdjbG9zaW5nJywgJ2Nsb3NlZCcsICdjb250ZW50TG9hZGluZycsICdjb250ZW50TG9hZGVkJ10uZm9yRWFjaCgoZXZlbnQpID0+IHtcclxuICAgICAgICBsaWZlY3ljbGVFdmVudHNbZXZlbnRdID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgbGlmZWN5Y2xlUmVzb2x2ZXJzW2V2ZW50XSA9IHJlc29sdmU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyRXZlbnQgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAobGlmZWN5Y2xlUmVzb2x2ZXJzW2V2ZW50XSkge1xyXG4gICAgICAgICAgICBsaWZlY3ljbGVSZXNvbHZlcnNbZXZlbnRdKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBObyByZXNvbHZlciBmb3VuZCBmb3IgbGlmZWN5Y2xlIGV2ZW50OiAke2V2ZW50fWApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGlhbG9nID0ge1xyXG4gICAgICAgIGVsZW1lbnQ6IGRpYWxvZ0VsZW1lbnQsXHJcbiAgICAgICAgYnV0dG9uczoge30sXHJcbiAgICAgICAgaXNDbG9zZWQ6IGZhbHNlLFxyXG4gICAgICAgIGxpZmVjeWNsZTogbGlmZWN5Y2xlRXZlbnRzLCAvLyBMaWZlY3ljbGUgcHJvbWlzZXMgZGlyZWN0bHkgZXhwb3NlZCBoZXJlXHJcbiAgICAgICAgZGlzYWJsZUJ1dHRvbjogKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b24gPSBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC5BUFgtZGlhbG9nLWJ1dHRvbltkYXRhLWtleT1cIiR7a2V5fVwiXWApO1xyXG4gICAgICAgICAgICBpZiAoYnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ0FQWC1kaWFsb2ctYnV0dG9uLWRpc2FibGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVuYWJsZUJ1dHRvbjogKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b24gPSBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC5BUFgtZGlhbG9nLWJ1dHRvbltkYXRhLWtleT1cIiR7a2V5fVwiXWApO1xyXG4gICAgICAgICAgICBpZiAoYnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdBUFgtZGlhbG9nLWJ1dHRvbi1kaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcGVuOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ29wZW5pbmcnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUub3BlbmluZztcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBsb2FkaW5nIGluZGljYXRvciBpcyBlbmFibGVkIGFuZCB3ZSdyZSBmZXRjaGluZyBjb250ZW50LCBzaG93IGRpYWxvZyBmaXJzdFxyXG4gICAgICAgICAgICAgICAgaWYgKHNob3dMb2FkaW5nSW5kaWNhdG9yICYmIGNvbnRlbnRVUkkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgZGlhbG9nIHRvIHRoZSBET00gYW5kIGRpc3BsYXkgaXQgZmlyc3RcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpYWxvZ0VsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ0VsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNob3cgbG9hZGluZyBpbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgICAgICBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuQVBYLWRpYWxvZy1keW5hbWljLWNvbnRlbnRcIikuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJBUFgtZGlhbG9nLWxvYWRpbmctaW5kaWNhdG9yXCI+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBMb2FkIGNvbnRlbnQgYWZ0ZXIgZGlhbG9nIGlzIHZpc2libGVcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZXRjaEFuZEluc2VydENvbnRlbnQoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvcjogbG9hZCBjb250ZW50IGZpcnN0LCB0aGVuIHNob3cgZGlhbG9nXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2hBbmRJbnNlcnRDb250ZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIGRpYWxvZyB0byB0aGUgRE9NIGFuZCBkaXNwbGF5IGl0XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaWFsb2dFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBkaWFsb2dFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ29wZW5lZCcpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZGlhbG9nLmxpZmVjeWNsZS5vcGVuZWQ7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvcGVuaW5nIGRpYWxvZzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGRpYWxvZzsgLy8gUmV0dXJuIGZvciBkYWlzeS1jaGFpbmluZ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xvc2U6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudCgnY2xvc2luZycpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZGlhbG9nLmxpZmVjeWNsZS5jbG9zaW5nO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENsZWFudXAgYW5kIHJlbW92ZSBkaWFsb2dcclxuICAgICAgICAgICAgICAgIGNsb3NlRGlhbG9nQW5kQ2xlYW51cCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudCgnY2xvc2VkJyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBkaWFsb2cubGlmZWN5Y2xlLmNsb3NlZDtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBkaWFsb2cgY2xvc2luZzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGRpYWxvZzsgLy8gUmV0dXJuIGZvciBkYWlzeS1jaGFpbmluZ1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2xvc2VEaWFsb2dBbmRDbGVhbnVwID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChkaWFsb2cuaXNDbG9zZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgZGlhbG9nLmlzQ2xvc2VkID0gdHJ1ZTtcclxuICAgICAgICBkaWFsb2dFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250YWlucyhkaWFsb2dFbGVtZW50KSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpYWxvZ0VsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2V0RGlhbG9nU2l6ZSA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBkaWFsb2dDb250ZW50ID0gZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLkFQWC1kaWFsb2ctY29udGVudFwiKTtcclxuICAgICAgICBjb25zdCBzaXplcyA9IHtcclxuICAgICAgICAgICAgc21hbGw6IHsgd2lkdGg6ICczMDBweCcsIGhlaWdodDogJzIwMHB4JyB9LFxyXG4gICAgICAgICAgICBtZWRpdW06IHsgd2lkdGg6ICc1MDBweCcsIGhlaWdodDogJzQwMHB4JyB9LFxyXG4gICAgICAgICAgICBsYXJnZTogeyB3aWR0aDogJzgwMHB4JywgaGVpZ2h0OiAnNjAwcHgnIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoc2l6ZSA9PT0gJ2F1dG8nKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU2l6ZSA9IHNpemVzW3NpemVdIHx8ICh0eXBlb2Ygc2l6ZSA9PT0gJ29iamVjdCcgJiYgc2l6ZSk7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkU2l6ZSkge1xyXG4gICAgICAgICAgICBkaWFsb2dDb250ZW50LnN0eWxlLm1pbldpZHRoID0gc2VsZWN0ZWRTaXplLndpZHRoIHx8ICc1MDBweCc7XHJcbiAgICAgICAgICAgIGRpYWxvZ0NvbnRlbnQuc3R5bGUubWluSGVpZ2h0ID0gc2VsZWN0ZWRTaXplLmhlaWdodCB8fCAnNDAwcHgnO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYWRkQnV0dG9ucyA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBidXR0b25Db250YWluZXIgPSBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyXCIpO1xyXG5cclxuICAgICAgICBidXR0b25zLmZvckVhY2goKHsga2V5LCBsYWJlbCwgb3JkZXIgPSAwLCBhbGlnbiA9ICdmbGV4LWVuZCcsIGNsb3NlT25DbGljayA9IHRydWUgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ0FQWC1kaWFsb2ctYnV0dG9uJyk7XHJcbiAgICAgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IGxhYmVsO1xyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUub3JkZXIgPSBvcmRlcjtcclxuICAgICAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnZGF0YS1rZXknLCBrZXkpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGJ1dHRvbiBjb250ZXh0IHdpdGggZGlzYWJsZS9lbmFibGUgbWV0aG9kc1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b25Db250ZXh0ID0ge1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ0FQWC1kaWFsb2ctYnV0dG9uLWRpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZW5hYmxlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ0FQWC1kaWFsb2ctYnV0dG9uLWRpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogYnV0dG9uXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAoY2xvc2VPbkNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYXMgYSBvbmUtdGltZSBQcm9taXNlXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlyc3RDbGlja1Jlc29sdmVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDbGlja1Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0Q2xpY2tSZXNvbHZlZCAmJiAhYnV0dG9uLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENsaWNrUmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IGRpYWxvZywgYnV0dG9uOiBidXR0b25Db250ZXh0IH0pOyAvLyBQYXNzIGJvdGggZGlhbG9nIGFuZCBidXR0b24gY29udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7IC8vIENsb3NlIHRoZSBkaWFsb2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIHByb21pc2UgZm9yIGNoYWluaW5nIHdpdGggYC50aGVuYFxyXG4gICAgICAgICAgICAgICAgZGlhbG9nLmJ1dHRvbnNba2V5XSA9IGZpcnN0Q2xpY2tQcm9taXNlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIGFzIGEgcmVwZWF0ZWQgZXZlbnQgaGFuZGxlclxyXG4gICAgICAgICAgICAgICAgbGV0IGhhbmRsZXJzID0gW107IC8vIFN0b3JlIGhhbmRsZXJzIGZvciBgLnRoZW4oKWBcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbGlja1Byb21pc2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlbjogKGNhbGxiYWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnB1c2goY2FsbGJhY2spOyAvLyBBZGQgdG8gaGFuZGxlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xpY2tQcm9taXNlOyAvLyBBbGxvdyBjaGFpbmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYnV0dG9uLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIpID0+IGhhbmRsZXIoeyBkaWFsb2csIGJ1dHRvbjogYnV0dG9uQ29udGV4dCB9KSk7IC8vIFBhc3MgYm90aCBkaWFsb2cgYW5kIGJ1dHRvbiBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBkaWFsb2cuYnV0dG9uc1trZXldID0gY2xpY2tQcm9taXNlOyAvLyBBc3NpZ24gdGhlIFwiZmFrZVwiIHByb21pc2VcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgICAgIGJ1dHRvbkNvbnRhaW5lci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IGFsaWduO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBmZXRjaEFuZEluc2VydENvbnRlbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDdXJzb3IgPSBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcjtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd3YWl0JztcclxuICAgICAgICBjb25zdCBkeW5hbWljQ29udGVudCA9IGRpYWxvZ0VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5BUFgtZGlhbG9nLWR5bmFtaWMtY29udGVudFwiKTtcclxuICAgICAgICBcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2NvbnRlbnRMb2FkaW5nJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUuY29udGVudExvYWRpbmc7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50SHRtbCA9IGNvbnRlbnRVUklcclxuICAgICAgICAgICAgICAgID8gYXdhaXQgZmV0Y2hDb250ZW50KGNvbnRlbnRVUkkpXHJcbiAgICAgICAgICAgICAgICA6IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgICAgICBkeW5hbWljQ29udGVudC5pbm5lckhUTUwgPSBjb250ZW50SHRtbDtcclxuXHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCgnY29udGVudExvYWRlZCcpO1xyXG4gICAgICAgICAgICBhd2FpdCBkaWFsb2cubGlmZWN5Y2xlLmNvbnRlbnRMb2FkZWQ7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjb250ZW50OicsIGVycm9yKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IG9yaWdpbmFsQ3Vyc29yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZmV0Y2hDb250ZW50ID0gYXN5bmMgKHVyaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJpKTtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBjb250ZW50OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2dcclxuICAgIHNldERpYWxvZ1NpemUoKTtcclxuICAgIGFkZEJ1dHRvbnMoKTtcclxuXHJcbiAgICAvLyBTZXQgdGl0bGUgYW5kIGNsb3NlIGJ1dHRvbiBoYW5kbGVyXHJcbiAgICBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuQVBYLWRpYWxvZy10aXRsZVwiKS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG4gICAgZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuQVBYLWNsb3NlLWRpYWxvZycpLm9uY2xpY2sgPSBkaWFsb2cuY2xvc2U7XHJcblxyXG4gICAgcmV0dXJuIGRpYWxvZztcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZURpYWxvZztcclxuIiwibGV0IGNvdW50ZXIgPSAwO1xyXG5jb25zdCBkb0NhbGxiYWNrcyA9IHt9O1xyXG5jb25zdCB0aW1lb3V0cyA9IHt9O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBldmVudCBsaXN0ZW5lciB0byB0aGUgZWxlbWVudHMgYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBkbyBtZXRob2QgdG8gYWRkIGNhbGxiYWNrIGZ1bmN0aW9ucy5cclxuICogQHBhcmFtIHtPYmplY3R9IGFweCAtIFRoZSBhcHggb2JqZWN0IHRvIGF1Z21lbnQgd2l0aCB0aGUgbGlzdGVuIGZ1bmN0aW9uLlxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSAtIFRoZSBhdWdtZW50ZWQgYXB4IG9iamVjdC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChhcHgpIHtcclxuICAgIGxldCBlbGVtZW50cyA9IGFweC5lbGVtZW50cztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGVsZW1lbnRzIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgZG8gbWV0aG9kIHRvIGFkZCBjYWxsYmFjayBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIGZvciAoZS5nLiAnY2xpY2snLCAna2V5ZG93bicsIGV0Yy4pLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcl0gLSBUaGUgQ1NTIHNlbGVjdG9yIHRvIHVzZSBmb3IgZXZlbnQgZGVsZWdhdGlvbiAob3B0aW9uYWwpLlxyXG4gICAgICogQHJldHVybnMge09iamVjdH0gLSBBbiBvYmplY3Qgd2l0aCBhIGRvIG1ldGhvZCB0byBhZGQgY2FsbGJhY2sgZnVuY3Rpb25zLlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIGFweC5saXN0ZW4oJ2NsaWNrJywgJy5teS1idXR0b24nKS5kbygoZXZlbnQpID0+IHtcclxuICAgICAqICAgY29uc29sZS5sb2coJ0J1dHRvbiBjbGlja2VkIScsIGV2ZW50LnRhcmdldCk7XHJcbiAgICAgKiB9KTtcclxuICAgICAqL1xyXG4gICAgYXB4Lmxpc3RlbiA9IGZ1bmN0aW9uIChldmVudFR5cGVzLCBzZWNvbmRBcmd1bWVudCwgdGhpcmRBcmd1bWVudCkge1xyXG4gICAgICAgIGxldCBzZWxlY3RvcjtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgc2VsZWN0b3Igb3Igb3B0aW9uc1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc2Vjb25kQXJndW1lbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdG9yID0gc2Vjb25kQXJndW1lbnQ7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlyZEFyZ3VtZW50IHx8IHt9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSBzZWNvbmRBcmd1bWVudCB8fCB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVvdXREdXJhdGlvbiA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShldmVudFR5cGVzKSkge1xyXG4gICAgICAgICAgICBldmVudFR5cGVzID0gW2V2ZW50VHlwZXNdOyAvLyBFbnN1cmUgZXZlbnRUeXBlcyBpcyBhbiBhcnJheVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBldmVudFR5cGVzLmZvckVhY2goKGV2ZW50VHlwZSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBleGVjdXRlQ2FsbGJhY2tzKGV2ZW50LCB1bmlxdWVJZCwgdGltZW91dER1cmF0aW9uLCBzZWxlY3RvciwgZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBBZGRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlIGRvQ2FsbGJhY2tzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbGlzdGVuZXIuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGRvQ2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IC0gUmV0dXJucyB0aGUgY3VycmVudCBvYmplY3QgdG8gYWxsb3cgZm9yIGNoYWluZWQgY2FsbHMuXHJcbiAgICAgICAgICAgICAqIEBleGFtcGxlXHJcbiAgICAgICAgICAgICAqIGFweC5saXN0ZW4oJ2NsaWNrJywgJy5teS1idXR0b24nKS5kbygoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICogICBjb25zb2xlLmxvZygnQnV0dG9uIGNsaWNrZWQhJywgZXZlbnQudGFyZ2V0KTtcclxuICAgICAgICAgICAgICogfSkuZG8oKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAqICAgY29uc29sZS5sb2coJ0Fub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24hJyk7XHJcbiAgICAgICAgICAgICAqIH0pO1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZG86IGZ1bmN0aW9uIChkb0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvQ2FsbGJhY2tzW3VuaXF1ZUlkXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZG9DYWxsYmFja3NbdW5pcXVlSWRdLnB1c2goZG9DYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsgLy8gUmV0dXJuIHRoZSBvYmplY3QgdG8gYWxsb3cgZm9yIGNoYWluZWQgY2FsbHNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnVhbGx5IHRyaWdnZXJzIHRoZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBmb3IgYSBnaXZlbiBldmVudCB0eXBlIG9uIGFsbCBlbGVtZW50cyBvciBjcmVhdGVzIGEgbmV3IGV2ZW50IGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd8RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIHRyaWdnZXIuIFRoaXMgY2FuIGJlIGFuIGV2ZW50IHR5cGUgc3RyaW5nIChsaWtlICdjbGljaycpIG9yIGFuIGFjdHVhbCBFdmVudCBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFweC50cmlnZ2VyID0gZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgbGV0IGV2ZW50VHlwZTtcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBldmVudFR5cGUgPSBldmVudDtcclxuICAgICAgICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoZXZlbnQsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpIHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnQudHlwZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGV2ZW50IHR5cGUgcHJvdmlkZWQgdG8gYXB4LnRyaWdnZXIuIEl0IG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIEV2ZW50IG9iamVjdC4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXB4LmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsgIC8vIFRoaXMgd2lsbCBhbGxvdyB0aGUgZXZlbnQgdG8gYnViYmxlIHVwIG5hdHVyYWxseS5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gSGFuZGxlIGV2ZW50IGRlbGVnYXRpb24gbWFudWFsbHkgYnkgZXhlY3V0aW5nIGNhbGxiYWNrcyBpZiB0aGUgdGFyZ2V0IG1hdGNoZXMgdGhlIHNlbGVjdG9yXHJcbiAgICAgICAgT2JqZWN0LmtleXMoZG9DYWxsYmFja3MpLmZvckVhY2goKHVuaXF1ZUlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrRGV0YWlscyA9IGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXTtcclxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrRGV0YWlscyAmJiBjYWxsYmFja0RldGFpbHMuZXZlbnRUeXBlID09PSBldmVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgdXNlZCBkdXJpbmcgbGlzdGVuZXIgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdG9yIH0gPSBjYWxsYmFja0RldGFpbHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IGV2ZW50LnRhcmdldC5tYXRjaGVzKHNlbGVjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVDYWxsYmFja3MoZXZlbnQsIHVuaXF1ZUlkLCAwLCBzZWxlY3RvciwgZXZlbnQudGFyZ2V0KTsgIC8vIEltbWVkaWF0ZSBleGVjdXRpb24sIG5vIHRpbWVvdXRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgcmV0dXJuIGFweDtcclxufTtcclxuXHJcblxyXG5mdW5jdGlvbiBleGVjdXRlQ2FsbGJhY2tzKGV2ZW50LCB1bmlxdWVJZCwgdGltZW91dER1cmF0aW9uLCBzZWxlY3RvciA9ICcnLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBtYXRjaGVkRWxlbWVudCA9IHNlbGVjdG9yID8gY2xvc2VzdChldmVudC50YXJnZXQsIHNlbGVjdG9yKSA6IGVsZW1lbnQ7XHJcbiAgICBpZiAoIW1hdGNoZWRFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsZWFyIGFueSBwcmV2aW91cyB0aW1lb3V0IGZvciB0aGlzIHVuaXF1ZUlkIHRvIHByZXZlbnQgdW5pbnRlbmRlZCBiZWhhdmlvclxyXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRzW3VuaXF1ZUlkXSk7XHJcblxyXG4gICAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBleGVjdXRpb24gb2YgY2FsbGJhY2tzXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVDYWxsYmFja0V4ZWN1dGlvbigpIHtcclxuICAgICAgICBpZiAoZG9DYWxsYmFja3NbdW5pcXVlSWRdKSB7XHJcbiAgICAgICAgICAgIGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXS5yZWR1Y2UoKHByZXZQcm9taXNlLCBkb0NhbGxiYWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldlByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvQ2FsbGJhY2suYmluZChtYXRjaGVkRWxlbWVudCkoZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGNhbGxiYWNrIGNoYWluOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRpbWVvdXREdXJhdGlvbiBpcyB6ZXJvIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRlbGF5IHRoZSBjYWxsYmFjayBleGVjdXRpb24gb3Igbm90XHJcbiAgICBpZiAodGltZW91dER1cmF0aW9uID09PSAwKSB7XHJcbiAgICAgICAgaGFuZGxlQ2FsbGJhY2tFeGVjdXRpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGltZW91dHNbdW5pcXVlSWRdID0gc2V0VGltZW91dChoYW5kbGVDYWxsYmFja0V4ZWN1dGlvbiwgdGltZW91dER1cmF0aW9uKTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXRlVW5pcXVlSWQoKSB7XHJcbiAgICBjb25zdCByYW5kb21QYXJ0ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpOyAvLyBNb3JlIHJhbmRvbW5lc3NcclxuICAgIGNvbnN0IHVuaXF1ZUlkID0gYCR7RGF0ZS5ub3coKX1fJHtyYW5kb21QYXJ0fV8ke2NvdW50ZXJ9YDtcclxuICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMTAwMDsgLy8gUmVzZXQgY291bnRlciB0byBhdm9pZCBvdmVyZmxvd1xyXG5cclxuICAgIHJldHVybiB1bmlxdWVJZDtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcikge1xyXG4gICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIiwiaW1wb3J0ICcuL2Nzcy90cmlzdGF0ZS5jc3MnO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSB0cmktc3RhdGUgY2hlY2tib3ggZm9yIGVhY2ggY2hlY2tib3ggZWxlbWVudCBpbiB0aGUgYXB4LmVsZW1lbnRzIGFycmF5LlxyXG4gKiBAcGFyYW0ge0FycmF5PEhUTUxFbGVtZW50Pn0gYXB4IC0gQW4gYXJyYXkgb2YgSFRNTEVsZW1lbnRzIHdoaWNoIGlzIHJldHVybmVkIGJ5IEFQWCgpXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIENhbGwgdGhlIHRyaXN0YXRlIGZ1bmN0aW9uIG9uIGFuIGFycmF5IG9mIGNoZWNrYm94IGVsZW1lbnRzXHJcbiAqIGFweC50cmlzdGF0ZSgpO1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGFweCkge1xyXG4gICAgYXB4LnRyaXN0YXRlID0gZnVuY3Rpb24gKG9wdGlvbnMgPSB7fSl7XHJcbiAgICAgICAgYXB4LmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW29yaWdpbmFsQ2hlY2tib3gsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dF0gPSBjcmVhdGVUcmlTdGF0ZUNoZWNrYm94KGVsZW1lbnQsb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGEgXCJvcHRpb25zLmNhbGxiYWNrcy5hZnRlclwiIGNhbGxiYWNrIGluIG9wdGlvbnMgY2FsbCBpdFxyXG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5jYWxsYmFja3MgJiYgb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXIgJiYgdHlwZW9mIG9wdGlvbnMuY2FsbGJhY2tzLmFmdGVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXIob3JpZ2luYWxDaGVja2JveCwgdHJpc3RhdGVEb20sIGhpZGRlbklucHV0KTtcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b2dnbGVUcmlTdGF0ZUNoZWNrYm94U3RhdGUoY3VzdG9tQ2hlY2tib3gsIGFjdHVhbENoZWNrYm94LCBoaWRkZW5JbnB1dCkge1xyXG4gICAgaWYgKGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5jb250YWlucygnY2hlY2tlZCcpKSB7XHJcbiAgICAgICAgY3VzdG9tQ2hlY2tib3guY2xhc3NMaXN0LnJlbW92ZSgnY2hlY2tlZCcpO1xyXG4gICAgICAgIGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5hZGQoJ2Nyb3NzZWQnKTtcclxuICAgICAgICBhY3R1YWxDaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAnZmFsc2UnO1xyXG4gICAgfSBlbHNlIGlmIChjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuY29udGFpbnMoJ2Nyb3NzZWQnKSkge1xyXG4gICAgICAgIGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5yZW1vdmUoJ2Nyb3NzZWQnKTtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgICAgIGhpZGRlbklucHV0LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QucmVtb3ZlKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuYWRkKCdjaGVja2VkJyk7XHJcbiAgICAgICAgYWN0dWFsQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAndHJ1ZSc7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgYWN0dWFsQ2hlY2tib3guZGF0YXNldC5uYW1lKTsgLy8gUmVzdG9yZSB0aGUgbmFtZSBmb3IgcG9zdGluZ1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUcmlTdGF0ZUNoZWNrYm94KGNoZWNrYm94RWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgXHJcbiAgICAvL2dldCB0aGUgY2hlY2tib3ggbWFyZ2lucyBpbmNsdWRpbmcgYnJvd3NlciBkZWZhdWx0XHJcbiAgICBjb25zdCBjaGVja2JveFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY2hlY2tib3hFbGVtZW50KTtcclxuICAgIC8vIEhpZGUgdGhlIG9yaWdpbmFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIGN1c3RvbSBjaGVja2JveCBkaXYgYW5kIHNldCBpdHMgaW5pdGlhbCBzdGF0ZVxyXG4gICAgY29uc3QgdHJpc3RhdGVEb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoJ2FweC10cmlzdGF0ZScpO1xyXG4gICAgaWYgKG9wdGlvbnMuc2l6ZSkge1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNpemUud2lkdGgpIHtcclxuICAgICAgICAgICAgdHJpc3RhdGVEb20uc3R5bGUud2lkdGggPSBvcHRpb25zLnNpemUud2lkdGggKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zaXplLmhlaWdodCkge1xyXG4gICAgICAgICAgICB0cmlzdGF0ZURvbS5zdHlsZS5oZWlnaHQgPSBvcHRpb25zLnNpemUuaGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihvcHRpb25zLmNsYXNzZXMpIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoLi4uY29tcHV0ZUNsYXNzZXMob3B0aW9ucy5jbGFzc2VzKSk7XHJcblxyXG4gICAgdHJpc3RhdGVEb20uc3R5bGUubWFyZ2luID0gY2hlY2tib3hTdHlsZS5tYXJnaW47XHJcblxyXG4gICAgaWYgKGNoZWNrYm94RWxlbWVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgdHJpc3RhdGVEb20uY2xhc3NMaXN0LmFkZCgnY2hlY2tlZCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIGhpZGRlbiBpbnB1dCBmaWVsZFxyXG4gICAgY29uc3QgaGlkZGVuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgaGlkZGVuSW5wdXQudHlwZSA9ICdoaWRkZW4nO1xyXG4gICAgaGlkZGVuSW5wdXQubmFtZSA9IGNoZWNrYm94RWxlbWVudC5uYW1lOyAvLyBDb3B5IHRoZSBuYW1lIGZyb20gdGhlIG9yaWdpbmFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQuZGF0YXNldC5uYW1lID0gY2hlY2tib3hFbGVtZW50Lm5hbWU7IC8vIFN0b3JlIHRoZSBuYW1lIGluIGEgZGF0YSBhdHRyaWJ1dGUgZm9yIGxhdGVyIHVzZVxyXG4gICAgY2hlY2tib3hFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmFtZScpOyAvLyBSZW1vdmUgdGhlIG5hbWUgZnJvbSB0aGUgb3JpZ2luYWwgY2hlY2tib3ggdG8gYXZvaWQgZG91YmxlIHBvc3RpbmdcclxuXHJcbiAgICBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUpIHNldERlZmF1bHRTdGF0ZShvcHRpb25zLCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQpO1xyXG4gICAgZWxzZXtcclxuICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBoaWRkZW4gaW5wdXQgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGVcclxuICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpIHtcclxuICAgICAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAndHJ1ZSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaGlkZGVuSW5wdXQubmFtZSA9ICcnOyAvLyBFbnN1cmUgdGhlIGhpZGRlbiBpbnB1dCBkb2Vzbid0IHBvc3QgYW55IHZhbHVlXHJcbiAgICAgICAgICAgIGhpZGRlbklucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vaGFuZGxlIGFjY2Vzc2liaWxpdHksIHNldCB0aGUgdGFiaW5kZXggdG8gdGhlIHNhbWUgYXMgdGhlIGNoZWNrYm94XHJcbiAgICB0cmlzdGF0ZURvbS50YWJJbmRleCA9IGNoZWNrYm94RWxlbWVudC50YWJJbmRleDtcclxuXHJcbiAgICAvLyBJbnNlcnQgdGhlIGhpZGRlbiBpbnB1dCBpbnNpZGUgdGhlIGN1c3RvbSBjaGVja2JveCBkaXZcclxuICAgIHRyaXN0YXRlRG9tLmFwcGVuZENoaWxkKGhpZGRlbklucHV0KTtcclxuXHJcbiAgICAvLyBJbnNlcnQgaXQgbmV4dCB0byB0aGUgYWN0dWFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJpc3RhdGVEb20sIGNoZWNrYm94RWxlbWVudC5uZXh0U2libGluZyk7XHJcblxyXG4gICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyXHJcbiAgICB0cmlzdGF0ZURvbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdG9nZ2xlVHJpU3RhdGVDaGVja2JveFN0YXRlKHRyaXN0YXRlRG9tLCBjaGVja2JveEVsZW1lbnQsIGhpZGRlbklucHV0KTtcclxuICAgICAgICBidWJibGVFdmVudHNUb09yaWdpbmFsQ2hlY2tib3gob3B0aW9ucywgY2hlY2tib3hFbGVtZW50LCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQsIGUpO1xyXG4gICAgfSk7XHJcbiAgICB0cmlzdGF0ZURvbS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIG9ua2V5dXAuYmluZChudWxsLCBjaGVja2JveEVsZW1lbnQpKTtcclxuXHJcbiAgICByZXR1cm4gW2NoZWNrYm94RWxlbWVudCwgdHJpc3RhdGVEb20sIGhpZGRlbklucHV0XTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RGVmYXVsdFN0YXRlKG9wdGlvbnMsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dCkge1xyXG4gICAgLy9mb3IgYWxsIHZhbHVlcyBwb3NzaWJsZSBmb3IgZGVmYXVsdFN0YXRlLCBzZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNoZWNrYm94XHJcbiAgICBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUgPT09ICdjaGVja2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ3VuY2hlY2tlZCcpO1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoJ2NoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC52YWx1ZSA9ICd0cnVlJztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG9wdGlvbnMuZGVmYXVsdFN0YXRlID09PSAndW5jaGVja2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgICAgIGhpZGRlbklucHV0LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUgPT09ICdjcm9zc2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCdjcm9zc2VkJyk7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAnZmFsc2UnO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjb21wdXRlQ2xhc3NlcyhjbGFzc2VzKSB7XHJcbiAgICBsZXQgY29tcHV0ZWRDbGFzc2VzID0gW107XHJcbiAgICBpZih0eXBlb2YgY2xhc3NlcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAvL3JlcGxhY2UgbXVsdGlwbGUgd2hpdGUgc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcclxuICAgICAgICBjbGFzc2VzID0gY2xhc3Nlcy5yZXBsYWNlKC9cXHNcXHMrL2csICcgJyk7XHJcbiAgICAgICAgaWYoY2xhc3Nlcy5pbmRleE9mKCcgJykgPiAtMSlcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3Nlcy5zcGxpdCgnICcpO1xyXG4gICAgICAgIGVsc2UgaWYoY2xhc3Nlcy5pbmRleE9mKCcsJykgPiAtMSlcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3Nlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gW2NsYXNzZXNdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihBcnJheS5pc0FycmF5KGNsYXNzZXMpKSB7XHJcbiAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3NlcztcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wdXRlZENsYXNzZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJ1YmJsZUV2ZW50c1RvT3JpZ2luYWxDaGVja2JveChvcHRpb25zLCBjaGVja2JveEVsZW1lbnQsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dCwgZXZlbnQpIHtcclxuICAgIC8vaWYgb3B0aW9ucy5jYWxsYmFja3MuY2hhbmdlIGlzIHNldCwgY2FsbCBpdFxyXG4gICAgaWYob3B0aW9ucy5jYWxsYmFja3MgJiYgb3B0aW9ucy5jYWxsYmFja3MuY2hhbmdlICYmIHR5cGVvZiBvcHRpb25zLmNhbGxiYWNrcy5jaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBvcHRpb25zLmNhbGxiYWNrcy5jaGFuZ2UoY2hlY2tib3hFbGVtZW50LCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCFvcHRpb25zLmJ1YmJsZUV2ZW50cykgcmV0dXJuO1xyXG5cclxuICAgIGlmKGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcclxuICAgICAgICBjaGVja2JveEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihldmVudC50eXBlID09PSAna2V5dXAnKSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgeyBrZXk6ICcgJywgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGV2ZW50LnR5cGUgPT09ICdjaGFuZ2UnKSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvbmtleXVwKGNoZWNrYm94RWxlbWVudCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzMikge1xyXG4gICAgICAgIGJ1YmJsZUV2ZW50c1RvT3JpZ2luYWxDaGVja2JveChjaGVja2JveEVsZW1lbnQsIGV2ZW50KTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC5jbGljaygpO1xyXG4gICAgfVxyXG59IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcIm1haW5cIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiaW1wb3J0IGF1Z21lbnRXaXRoTGlzdGVuIGZyb20gJy4vbW9kdWxlcy9saXN0ZW4vbGlzdGVuLm1qcyc7XHJcbmltcG9ydCBhdWdtZW50V2l0aFRyaXN0YXRlIGZyb20gJy4vbW9kdWxlcy90cmlzdGF0ZS90cmlzdGF0ZS5tanMnO1xyXG5pbXBvcnQgZGlhbG9nIGZyb20gJy4vbW9kdWxlcy9kaWFsb2cvZGlhbG9nLm1qcyc7XHJcbmltcG9ydCB7IGxvYWRDc3MgfSBmcm9tICcuL21vZHVsZXMvY29tbW9uLm1qcyc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBBUFggb2JqZWN0IHRoYXQgd3JhcHMgb25lIG9yIG1vcmUgSFRNTCBlbGVtZW50cy5cclxuICogQHBhcmFtIHtzdHJpbmd8SFRNTEVsZW1lbnR8Tm9kZUxpc3R8SFRNTENvbGxlY3Rpb258QXJyYXk8SFRNTEVsZW1lbnQ+fGpRdWVyeXxGdW5jdGlvbn0gaW5wdXQgLSBUaGUgaW5wdXQgdG8gY3JlYXRlIHRoZSBBUFggb2JqZWN0IGZyb20uXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBBUFggb2JqZWN0LlxyXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGlucHV0IHR5cGUgaXMgaW52YWxpZC5cclxuICogQGV4YW1wbGVcclxuICogLy8gWFBhdGhcclxuICogY29uc3QgYXB4MSA9IEFQWCgnLy9kaXZbQGNsYXNzPVwiZXhhbXBsZVwiXScpO1xyXG4gKlxyXG4gKiAvLyBDU1Mgc2VsZWN0b3JcclxuICogY29uc3QgYXB4MiA9IEFQWCgnLmV4YW1wbGUnKTtcclxuICpcclxuICogLy8gU2luZ2xlIGVsZW1lbnRcclxuICogY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGFtcGxlJyk7XHJcbiAqIGNvbnN0IGFweDMgPSBBUFgoZWxlbWVudCk7XHJcbiAqXHJcbiAqIC8vIE5vZGVMaXN0IG9yIEhUTUxDb2xsZWN0aW9uXHJcbiAqIGNvbnN0IG5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV4YW1wbGUnKTtcclxuICogY29uc3QgYXB4NCA9IEFQWChub2RlTGlzdCk7XHJcbiAqXHJcbiAqIC8vIEFycmF5IG9mIGVsZW1lbnRzXHJcbiAqIGNvbnN0IGVsZW1lbnRzID0gW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGFtcGxlMScpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXhhbXBsZTInKV07XHJcbiAqIGNvbnN0IGFweDUgPSBBUFgoZWxlbWVudHMpO1xyXG4gKlxyXG4gKiAvLyBqUXVlcnkgb2JqZWN0XHJcbiAqIGNvbnN0ICRleGFtcGxlID0gJCgnLmV4YW1wbGUnKTtcclxuICogY29uc3QgYXB4NiA9IEFQWCgkZXhhbXBsZSk7XHJcbiAqXHJcbiAqIC8vIEZ1bmN0aW9uIHJldHVybmluZyBhbiBBUFggb2JqZWN0XHJcbiAqIGNvbnN0IGFweDcgPSBBUFgoKCkgPT4gQVBYKCcuZXhhbXBsZScpKTtcclxuICovXHJcbmNvbnN0IEFQWCA9IGZ1bmN0aW9uIChpbnB1dCwgY29udGV4dCA9IGRvY3VtZW50KSB7XHJcbiAgICBsZXQgZWxlbWVudHM7XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgY29udGV4dFxyXG4gICAgaWYgKHR5cGVvZiBjb250ZXh0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoQVBYLmlzQVBYT2JqZWN0KGNvbnRleHQpKSB7XHJcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQuZmlyc3QoKTtcclxuICAgIH0gZWxzZSBpZiAoIShjb250ZXh0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29udGV4dCBpbnN0YW5jZW9mIERvY3VtZW50KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb250ZXh0IGZvciBBUFgnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiBpbnB1dC5zdGFydHNXaXRoKCcvLycpKSB7XHJcbiAgICAgICAgLy8gWFBhdGggd2l0aCBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBkb2N1bWVudC5ldmFsdWF0ZShpbnB1dCwgY29udGV4dCwgbnVsbCwgWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpO1xyXG4gICAgICAgIGxldCBub2RlcyA9IFtdO1xyXG4gICAgICAgIGxldCBub2RlID0gZWxlbWVudHMuaXRlcmF0ZU5leHQoKTtcclxuICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlID0gZWxlbWVudHMuaXRlcmF0ZU5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHMgPSBub2RlcztcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIC8vIENTUyBzZWxlY3RvciB3aXRoIGNvbnRleHRcclxuICAgICAgICBlbGVtZW50cyA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbChpbnB1dCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICAvLyBTaW5nbGUgZWxlbWVudCB3aXRoaW4gY29udGV4dFxyXG4gICAgICAgIGVsZW1lbnRzID0gY29udGV4dC5jb250YWlucyhpbnB1dCkgPyBbaW5wdXRdIDogW107XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgaW5wdXQgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikge1xyXG4gICAgICAgIC8vIE5vZGVMaXN0IG9yIEhUTUxDb2xsZWN0aW9uIHdpdGhpbiBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBBcnJheS5mcm9tKGlucHV0KS5maWx0ZXIoZWwgPT4gY29udGV4dC5jb250YWlucyhlbCkpO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSAmJiBpbnB1dC5ldmVyeShlbCA9PiBlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xyXG4gICAgICAgIC8vIEFycmF5IG9mIGVsZW1lbnRzIHdpdGhpbiBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBpbnB1dC5maWx0ZXIoZWwgPT4gY29udGV4dC5jb250YWlucyhlbCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgalF1ZXJ5KSB7XHJcbiAgICAgICAgLy8galF1ZXJ5IG9iamVjdCB3aXRoaW4gY29udGV4dFxyXG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuZnJvbShpbnB1dC5nZXQoKSkuZmlsdGVyKGVsID0+IGNvbnRleHQuY29udGFpbnMoZWwpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gRnVuY3Rpb24gcmV0dXJuaW5nIGFuIEFQWCBvYmplY3Qgd2l0aCBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBBUFgoaW5wdXQoKSwgY29udGV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCB0eXBlIGZvciBBUFgnKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYXB4ID0ge1xyXG4gICAgICAgIGVsZW1lbnRzOiBlbGVtZW50cyxcclxuICAgICAgICBfaXNBUFhPYmplY3Q6IHRydWVcclxuICAgIH07XHJcbiAgICBhcHgubGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xyXG4gICAgYXB4LmVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAodGhpcy5lbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5KSB0aGlzLmVsZW1lbnRzLmZvckVhY2goY2FsbGJhY2spO1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIEFycmF5LmZyb20odGhpcy5lbGVtZW50cykuZm9yRWFjaChjYWxsYmFjayk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgYXB4LmdldCA9IGZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzW2luZGV4XTtcclxuICAgIH07XHJcbiAgICBhcHguYWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiB0aGlzLmVsZW1lbnRzO1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIGFweC5maXJzdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCk7XHJcbiAgICB9O1xyXG4gICAgYXVnbWVudFdpdGhMaXN0ZW4oYXB4KTtcclxuICAgIGF1Z21lbnRXaXRoVHJpc3RhdGUoYXB4KTtcclxuICAgIHJldHVybiBhcHg7XHJcbn07XHJcblxyXG5BUFgubG9hZENzcyA9IGxvYWRDc3M7XHJcbkFQWC5kaWFsb2cgPSBkaWFsb2c7XHJcbkFQWC5pc0FQWE9iamVjdCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgIHJldHVybiBvYmogJiYgb2JqLl9pc0FQWE9iamVjdCA9PT0gdHJ1ZTtcclxufVxyXG5BUFguaXNfbnVtZXJpYyA9IChuKSA9PiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG4gLSBwYXJzZUZsb2F0KG4pKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQVBYOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
package/dist/APX.mjs CHANGED
@@ -1 +1 @@
1
- function a0_0x13e5(_0x15d863,_0x1032ea){var _0x3ec403=a0_0x3ec4();return a0_0x13e5=function(_0x13e5f5,_0x39a2c7){_0x13e5f5=_0x13e5f5-0x10c;var _0x397516=_0x3ec403[_0x13e5f5];return _0x397516;},a0_0x13e5(_0x15d863,_0x1032ea);}var a0_0x2e29c7=a0_0x13e5;(function(_0x2fc493,_0x29f610){var _0x332e5d=a0_0x13e5,_0x56d92b=_0x2fc493();while(!![]){try{var _0x38e865=parseInt(_0x332e5d(0x117))/0x1*(-parseInt(_0x332e5d(0x1c5))/0x2)+-parseInt(_0x332e5d(0x16e))/0x3*(parseInt(_0x332e5d(0x163))/0x4)+-parseInt(_0x332e5d(0x143))/0x5*(parseInt(_0x332e5d(0x180))/0x6)+-parseInt(_0x332e5d(0x119))/0x7*(-parseInt(_0x332e5d(0x127))/0x8)+-parseInt(_0x332e5d(0x16a))/0x9+-parseInt(_0x332e5d(0x14d))/0xa*(-parseInt(_0x332e5d(0x1c7))/0xb)+parseInt(_0x332e5d(0x135))/0xc*(parseInt(_0x332e5d(0x1d0))/0xd);if(_0x38e865===_0x29f610)break;else _0x56d92b['push'](_0x56d92b['shift']());}catch(_0x4d72e9){_0x56d92b['push'](_0x56d92b['shift']());}}}(a0_0x3ec4,0xb2cf9));var e={0x265:(_0x291473,_0x65fafb,_0x44f9fb)=>{_0x44f9fb['d'](_0x65fafb,{'Z':()=>_0x384fc7});var _0x42239d=_0x44f9fb(0x51),_0x56cf81=_0x44f9fb['n'](_0x42239d),_0x4c9ac5=_0x44f9fb(0x285),_0x44bb3f=_0x44f9fb['n'](_0x4c9ac5)()(_0x56cf81());_0x44bb3f['push']([_0x291473['id'],'/*\x20Dialog\x20styling\x20*/\x0a.APX-dialog\x20{\x0a\x20\x20\x20\x20display:\x20none;\x0a\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20z-index:\x201002;\x0a\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20background-color:\x20rgba(0,\x200,\x200,\x200.4);\x0a\x20\x20\x20\x20/*\x20Dimmed\x20background\x20for\x20focus\x20on\x20dialog\x20*/\x0a}\x0a\x0a.APX-dialog-content\x20{\x0a\x20\x20\x20\x20background-color:\x20#fefefe;\x0a\x20\x20\x20\x20padding:\x2040px;\x0a\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20width:\x20auto;\x0a\x20\x20\x20\x20min-width:\x20300px;\x0a\x20\x20\x20\x20max-width:\x2080%;\x0a\x20\x20\x20\x20margin:\x20auto;\x0a\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20box-shadow:\x200px\x206px\x2020px\x20rgba(0,\x200,\x200,\x200.1);\x0a\x20\x20\x20\x20font-family:\x20\x27Helvetica\x20Neue\x27,\x20Arial,\x20sans-serif;\x0a}\x0a\x0ah2.APX-dialog-title{\x0a\x20\x20\x20\x20margin-top:0;\x0a}\x0a\x0a.APX-close-dialog\x20{\x0a\x20\x20\x20\x20color:\x20#aaa;\x0a\x20\x20\x20\x20float:\x20right;\x0a\x20\x20\x20\x20font-size:\x2024px;\x0a\x20\x20\x20\x20margin-top:\x20-10px;\x0a\x20\x20\x20\x20/*\x20Adjust\x20positioning\x20*/\x0a\x20\x20\x20\x20margin-right:\x20-10px;\x0a}\x0a\x0a.APX-close-dialog:hover,\x0a.APX-close-dialog:focus\x20{\x0a\x20\x20\x20\x20color:\x20#333;\x0a\x20\x20\x20\x20/*\x20Darker\x20color\x20on\x20hover/focus\x20*/\x0a\x20\x20\x20\x20cursor:\x20pointer;\x0a}\x0a\x0a/*\x20Input\x20fields\x20styling\x20*/\x0a.APX-dialog-content\x20input[type=\x22text\x22],\x0a.APX-dialog-content\x20input[type=\x22number\x22],\x0a.APX-dialog-content\x20input[type=\x22date\x22],\x0a.APX-dialog-content\x20input[type=\x22datetime-local\x22]\x20{\x0a\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20margin-bottom:\x2020px;\x0a\x20\x20\x20\x20border:\x201px\x20solid\x20#ccc;\x0a\x20\x20\x20\x20border-radius:\x204px;\x0a\x20\x20\x20\x20font-family:\x20\x27Helvetica\x20Neue\x27,\x20Arial,\x20sans-serif;\x0a\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20box-sizing:\x20border-box;\x0a\x20\x20\x20\x20transition:\x20border-color\x200.3s;\x0a}\x0a\x0a.APX-dialog-content\x20input[type=\x22text\x22]:focus,\x0a.APX-dialog-content\x20input[type=\x22number\x22]:focus,\x0a.APX-dialog-content\x20input[type=\x22date\x22]:focus,\x0a.APX-dialog-content\x20input[type=\x22datetime-local\x22]:focus\x20{\x0a\x20\x20\x20\x20border-color:\x20#2C3E50;\x0a\x20\x20\x20\x20/*\x20Deep\x20Blue\x20Color\x20*/\x0a\x20\x20\x20\x20outline:\x20none;\x0a}\x0a\x0a/*\x20Button\x20in\x20the\x20dialog\x20*/\x0a.APX-dialog-button-container\x20button\x20{\x0a\x20\x20\x20\x20background-color:\x20#2C3E50;\x0a\x20\x20\x20\x20color:\x20#ECF0F1;\x0a\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20padding:\x2010px\x2020px;\x0a\x20\x20\x20\x20border-radius:\x205px;\x0a\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20transition:\x20background-color\x200.3s;\x0a}\x0a\x0a.APX-dialog-button-container\x20button:hover\x20{\x0a\x20\x20\x20\x20background-color:\x20#34495E;\x0a}\x0a\x0a.APX-dialog-button-container\x20{\x0a\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20margin-top:1em;\x0a\x20\x20\x20\x20/*\x20spacing\x20between\x20buttons\x20*/\x0a}\x0a\x0a/*\x20Loading\x20indicator\x20*/\x0a.APX-dialog-loading-indicator\x20{\x0a\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20height:\x20100px;\x0a\x20\x20\x20\x20width:\x20100%;\x0a}\x0a\x0a.APX-dialog-loading-indicator::before\x20{\x0a\x20\x20\x20\x20content:\x20\x27\x27;\x0a\x20\x20\x20\x20width:\x2040px;\x0a\x20\x20\x20\x20height:\x2040px;\x0a\x20\x20\x20\x20border:\x204px\x20solid\x20#f3f3f3;\x0a\x20\x20\x20\x20border-top:\x204px\x20solid\x20#2C3E50;\x0a\x20\x20\x20\x20border-radius:\x2050%;\x0a\x20\x20\x20\x20animation:\x20APX-dialog-spin\x201s\x20linear\x20infinite;\x0a}\x0a\x0a@keyframes\x20APX-dialog-spin\x20{\x0a\x20\x20\x20\x200%\x20{\x20transform:\x20rotate(0deg);\x20}\x0a\x20\x20\x20\x20100%\x20{\x20transform:\x20rotate(360deg);\x20}\x0a}','']);const _0x384fc7=_0x44bb3f;},0x23a:(_0x5761d9,_0x49a2ae,_0x4ccfcd)=>{var _0x9ce221=a0_0x13e5;_0x4ccfcd['d'](_0x49a2ae,{'Z':()=>_0x528202});var _0x7ed387=_0x4ccfcd(0x51),_0x507a58=_0x4ccfcd['n'](_0x7ed387),_0x38dff0=_0x4ccfcd(0x285),_0x396e38=_0x4ccfcd['n'](_0x38dff0),_0x45dd1c=_0x4ccfcd(0x29b),_0xfa4cb4=_0x4ccfcd['n'](_0x45dd1c),_0x3647e8=new URL(_0x4ccfcd(0x1d),_0x4ccfcd['b']),_0x2d2bdf=new URL(_0x4ccfcd(0x391),_0x4ccfcd['b']),_0x239cec=new URL(_0x4ccfcd(0x104),_0x4ccfcd['b']),_0x50a6c8=_0x396e38()(_0x507a58()),_0x2cc140=_0xfa4cb4()(_0x3647e8),_0x3aa658=_0xfa4cb4()(_0x2d2bdf),_0x5e7883=_0xfa4cb4()(_0x239cec);_0x50a6c8[_0x9ce221(0x111)]([_0x5761d9['id'],_0x9ce221(0x191)+_0x2cc140+');\x0a}\x0a.apx-tristate.checked\x20{\x0a\x20\x20\x20\x20background-image:\x20url('+_0x3aa658+_0x9ce221(0x125)+_0x5e7883+_0x9ce221(0x1a4),'']);const _0x528202=_0x50a6c8;},0x285:_0x228227=>{var _0x1a0810=a0_0x13e5;_0x228227[_0x1a0810(0x1b9)]=function(_0x5d6708){var _0x554576=_0x1a0810,_0x868bcd=[];return _0x868bcd[_0x554576(0x12a)]=function(){var _0x13bc13=_0x554576;return this[_0x13bc13(0x18b)](function(_0x1c85c4){var _0x5656c3=_0x13bc13,_0x40a3ca='',_0x1638e3=void 0x0!==_0x1c85c4[0x5];return _0x1c85c4[0x4]&&(_0x40a3ca+=_0x5656c3(0x18a)['concat'](_0x1c85c4[0x4],_0x5656c3(0x185))),_0x1c85c4[0x2]&&(_0x40a3ca+=_0x5656c3(0x1b1)[_0x5656c3(0x183)](_0x1c85c4[0x2],'\x20{')),_0x1638e3&&(_0x40a3ca+=_0x5656c3(0x188)[_0x5656c3(0x183)](_0x1c85c4[0x5]['length']>0x0?'\x20'[_0x5656c3(0x183)](_0x1c85c4[0x5]):'','\x20{')),_0x40a3ca+=_0x5d6708(_0x1c85c4),_0x1638e3&&(_0x40a3ca+='}'),_0x1c85c4[0x2]&&(_0x40a3ca+='}'),_0x1c85c4[0x4]&&(_0x40a3ca+='}'),_0x40a3ca;})[_0x13bc13(0x110)]('');},_0x868bcd['i']=function(_0x41ddcd,_0x51ce32,_0x32e434,_0x3ac6ed,_0x4d564e){var _0x1ccf1f=_0x554576;'string'==typeof _0x41ddcd&&(_0x41ddcd=[[null,_0x41ddcd,void 0x0]]);var _0x3329a0={};if(_0x32e434)for(var _0x48ef95=0x0;_0x48ef95<this[_0x1ccf1f(0x189)];_0x48ef95++){var _0x30d312=this[_0x48ef95][0x0];null!=_0x30d312&&(_0x3329a0[_0x30d312]=!0x0);}for(var _0x3666b3=0x0;_0x3666b3<_0x41ddcd[_0x1ccf1f(0x189)];_0x3666b3++){var _0xe801ac=[][_0x1ccf1f(0x183)](_0x41ddcd[_0x3666b3]);_0x32e434&&_0x3329a0[_0xe801ac[0x0]]||(void 0x0!==_0x4d564e&&(void 0x0===_0xe801ac[0x5]||(_0xe801ac[0x1]=_0x1ccf1f(0x188)[_0x1ccf1f(0x183)](_0xe801ac[0x5]['length']>0x0?'\x20'[_0x1ccf1f(0x183)](_0xe801ac[0x5]):'','\x20{')[_0x1ccf1f(0x183)](_0xe801ac[0x1],'}')),_0xe801ac[0x5]=_0x4d564e),_0x51ce32&&(_0xe801ac[0x2]?(_0xe801ac[0x1]=_0x1ccf1f(0x1b1)[_0x1ccf1f(0x183)](_0xe801ac[0x2],'\x20{')['concat'](_0xe801ac[0x1],'}'),_0xe801ac[0x2]=_0x51ce32):_0xe801ac[0x2]=_0x51ce32),_0x3ac6ed&&(_0xe801ac[0x4]?(_0xe801ac[0x1]='@supports\x20('[_0x1ccf1f(0x183)](_0xe801ac[0x4],_0x1ccf1f(0x185))[_0x1ccf1f(0x183)](_0xe801ac[0x1],'}'),_0xe801ac[0x4]=_0x3ac6ed):_0xe801ac[0x4]=''[_0x1ccf1f(0x183)](_0x3ac6ed)),_0x868bcd['push'](_0xe801ac));}},_0x868bcd;};},0x29b:_0x42b7a9=>{var _0x1891dd=a0_0x13e5;_0x42b7a9[_0x1891dd(0x1b9)]=function(_0x1ada2d,_0x59d98e){var _0x44c19c=_0x1891dd;return _0x59d98e||(_0x59d98e={}),_0x1ada2d?(_0x1ada2d=String(_0x1ada2d[_0x44c19c(0x14b)]?_0x1ada2d[_0x44c19c(0x178)]:_0x1ada2d),/^['"].*['"]$/[_0x44c19c(0x139)](_0x1ada2d)&&(_0x1ada2d=_0x1ada2d[_0x44c19c(0x1a6)](0x1,-0x1)),_0x59d98e[_0x44c19c(0x121)]&&(_0x1ada2d+=_0x59d98e[_0x44c19c(0x121)]),/["'() \t\n]|(%20)/['test'](_0x1ada2d)||_0x59d98e['needQuotes']?'\x22'[_0x44c19c(0x183)](_0x1ada2d['replace'](/"/g,'\x5c\x22')['replace'](/\n/g,'\x5cn'),'\x22'):_0x1ada2d):_0x1ada2d;};},0x51:_0x3a0247=>{var _0x254f55=a0_0x13e5;_0x3a0247[_0x254f55(0x1b9)]=function(_0x3837f7){return _0x3837f7[0x1];};},0x17b:_0x5a929e=>{var _0x54dce1=a0_0x13e5,_0x4722a7=[];function _0x2a7ce5(_0xb0fa9b){var _0x34c1d1=a0_0x13e5;for(var _0x152b84=-0x1,_0x825407=0x0;_0x825407<_0x4722a7[_0x34c1d1(0x189)];_0x825407++)if(_0x4722a7[_0x825407][_0x34c1d1(0x113)]===_0xb0fa9b){_0x152b84=_0x825407;break;}return _0x152b84;}function _0x585e62(_0x11206e,_0x2fb678){var _0x2403c1=a0_0x13e5;for(var _0x4a6aae={},_0x491722=[],_0x40a313=0x0;_0x40a313<_0x11206e[_0x2403c1(0x189)];_0x40a313++){var _0xbec5=_0x11206e[_0x40a313],_0x361276=_0x2fb678['base']?_0xbec5[0x0]+_0x2fb678[_0x2403c1(0x13e)]:_0xbec5[0x0],_0xf16888=_0x4a6aae[_0x361276]||0x0,_0x517c9f=''['concat'](_0x361276,'\x20')[_0x2403c1(0x183)](_0xf16888);_0x4a6aae[_0x361276]=_0xf16888+0x1;var _0xf9b07d=_0x2a7ce5(_0x517c9f),_0x50b8ae={'css':_0xbec5[0x1],'media':_0xbec5[0x2],'sourceMap':_0xbec5[0x3],'supports':_0xbec5[0x4],'layer':_0xbec5[0x5]};if(-0x1!==_0xf9b07d)_0x4722a7[_0xf9b07d][_0x2403c1(0x16b)]++,_0x4722a7[_0xf9b07d][_0x2403c1(0x147)](_0x50b8ae);else{var _0x907e7f=_0x2fe1a8(_0x50b8ae,_0x2fb678);_0x2fb678[_0x2403c1(0x1cd)]=_0x40a313,_0x4722a7[_0x2403c1(0x158)](_0x40a313,0x0,{'identifier':_0x517c9f,'updater':_0x907e7f,'references':0x1});}_0x491722['push'](_0x517c9f);}return _0x491722;}function _0x2fe1a8(_0x2f63c5,_0x3893ad){var _0x4c695c=a0_0x13e5,_0x58b6c7=_0x3893ad['domAPI'](_0x3893ad);return _0x58b6c7[_0x4c695c(0x1b6)](_0x2f63c5),function(_0x5a0fe5){var _0x564883=_0x4c695c;if(_0x5a0fe5){if(_0x5a0fe5[_0x564883(0x1a9)]===_0x2f63c5[_0x564883(0x1a9)]&&_0x5a0fe5[_0x564883(0x19e)]===_0x2f63c5[_0x564883(0x19e)]&&_0x5a0fe5[_0x564883(0x15c)]===_0x2f63c5[_0x564883(0x15c)]&&_0x5a0fe5[_0x564883(0x1be)]===_0x2f63c5[_0x564883(0x1be)]&&_0x5a0fe5[_0x564883(0x138)]===_0x2f63c5['layer'])return;_0x58b6c7[_0x564883(0x1b6)](_0x2f63c5=_0x5a0fe5);}else _0x58b6c7[_0x564883(0x130)]();};}_0x5a929e[_0x54dce1(0x1b9)]=function(_0x221bb4,_0x3e6f2a){var _0x2dd8e2=_0x585e62(_0x221bb4=_0x221bb4||[],_0x3e6f2a=_0x3e6f2a||{});return function(_0x22b3e6){var _0x344e17=a0_0x13e5;_0x22b3e6=_0x22b3e6||[];for(var _0x457f92=0x0;_0x457f92<_0x2dd8e2[_0x344e17(0x189)];_0x457f92++){var _0x2fb36d=_0x2a7ce5(_0x2dd8e2[_0x457f92]);_0x4722a7[_0x2fb36d][_0x344e17(0x16b)]--;}for(var _0xde7ba8=_0x585e62(_0x22b3e6,_0x3e6f2a),_0x434535=0x0;_0x434535<_0x2dd8e2[_0x344e17(0x189)];_0x434535++){var _0x3eeb79=_0x2a7ce5(_0x2dd8e2[_0x434535]);0x0===_0x4722a7[_0x3eeb79]['references']&&(_0x4722a7[_0x3eeb79][_0x344e17(0x147)](),_0x4722a7[_0x344e17(0x158)](_0x3eeb79,0x1));}_0x2dd8e2=_0xde7ba8;};};},0x239:_0x44ce89=>{var _0x2b7a55=a0_0x13e5,_0x2f101f={};_0x44ce89[_0x2b7a55(0x1b9)]=function(_0x4f55af,_0x34fd8b){var _0x43854c=_0x2b7a55,_0x5c4471=function(_0xc125da){var _0x5d6b14=a0_0x13e5;if(void 0x0===_0x2f101f[_0xc125da]){var _0x2c1d5f=document['querySelector'](_0xc125da);if(window[_0x5d6b14(0x11a)]&&_0x2c1d5f instanceof window[_0x5d6b14(0x11a)])try{_0x2c1d5f=_0x2c1d5f[_0x5d6b14(0x141)][_0x5d6b14(0x18d)];}catch(_0x240f17){_0x2c1d5f=null;}_0x2f101f[_0xc125da]=_0x2c1d5f;}return _0x2f101f[_0xc125da];}(_0x4f55af);if(!_0x5c4471)throw new Error(_0x43854c(0x1ad));_0x5c4471['appendChild'](_0x34fd8b);};},0xd8:_0x1b671e=>{_0x1b671e['exports']=function(_0x930b5){var _0x2c555d=a0_0x13e5,_0x3148d5=document[_0x2c555d(0x1c2)](_0x2c555d(0x18c));return _0x930b5['setAttributes'](_0x3148d5,_0x930b5[_0x2c555d(0x128)]),_0x930b5[_0x2c555d(0x1bf)](_0x3148d5,_0x930b5[_0x2c555d(0x112)]),_0x3148d5;};},0x235:(_0x2252c4,_0x4d4a11,_0x22239d)=>{var _0x306be6=a0_0x13e5;_0x2252c4[_0x306be6(0x1b9)]=function(_0x597090){var _0x533960=_0x306be6,_0x42f315=_0x22239d['nc'];_0x42f315&&_0x597090[_0x533960(0x187)]('nonce',_0x42f315);};},0x31b:_0x5eb0a8=>{var _0x42bf61=a0_0x13e5;_0x5eb0a8[_0x42bf61(0x1b9)]=function(_0x21a5fe){var _0x502c81=_0x42bf61;if(_0x502c81(0x15a)==typeof document)return{'update':function(){},'remove':function(){}};var _0x6e5a45=_0x21a5fe[_0x502c81(0x1c0)](_0x21a5fe);return{'update':function(_0x430d11){!function(_0x4e7cb3,_0x3082b9,_0x368f43){var _0x58e652=a0_0x13e5,_0x5cfd05='';_0x368f43[_0x58e652(0x1be)]&&(_0x5cfd05+=_0x58e652(0x18a)[_0x58e652(0x183)](_0x368f43[_0x58e652(0x1be)],')\x20{')),_0x368f43[_0x58e652(0x19e)]&&(_0x5cfd05+=_0x58e652(0x1b1)[_0x58e652(0x183)](_0x368f43[_0x58e652(0x19e)],'\x20{'));var _0x2caa99=void 0x0!==_0x368f43[_0x58e652(0x138)];_0x2caa99&&(_0x5cfd05+='@layer'[_0x58e652(0x183)](_0x368f43['layer'][_0x58e652(0x189)]>0x0?'\x20'[_0x58e652(0x183)](_0x368f43[_0x58e652(0x138)]):'','\x20{')),_0x5cfd05+=_0x368f43['css'],_0x2caa99&&(_0x5cfd05+='}'),_0x368f43[_0x58e652(0x19e)]&&(_0x5cfd05+='}'),_0x368f43[_0x58e652(0x1be)]&&(_0x5cfd05+='}');var _0x14815c=_0x368f43[_0x58e652(0x15c)];_0x14815c&&_0x58e652(0x15a)!=typeof btoa&&(_0x5cfd05+=_0x58e652(0x149)[_0x58e652(0x183)](btoa(unescape(encodeURIComponent(JSON['stringify'](_0x14815c)))),_0x58e652(0x17e))),_0x3082b9[_0x58e652(0x10e)](_0x5cfd05,_0x4e7cb3,_0x3082b9[_0x58e652(0x112)]);}(_0x6e5a45,_0x21a5fe,_0x430d11);},'remove':function(){!function(_0x549251){var _0x2731af=a0_0x13e5;if(null===_0x549251[_0x2731af(0x160)])return!0x1;_0x549251[_0x2731af(0x160)]['removeChild'](_0x549251);}(_0x6e5a45);}};};},0x24d:_0x1c9bbd=>{_0x1c9bbd['exports']=function(_0x2994d0,_0x4c69ec){var _0x32ec6e=a0_0x13e5;if(_0x4c69ec['styleSheet'])_0x4c69ec[_0x32ec6e(0x12e)][_0x32ec6e(0x13a)]=_0x2994d0;else{for(;_0x4c69ec[_0x32ec6e(0x197)];)_0x4c69ec[_0x32ec6e(0x12c)](_0x4c69ec['firstChild']);_0x4c69ec[_0x32ec6e(0x181)](document[_0x32ec6e(0x13f)](_0x2994d0));}};},0x104:_0x1a1fc1=>{var _0x503123=a0_0x13e5;_0x1a1fc1[_0x503123(0x1b9)]=_0x503123(0x122);},0x1d:_0x3e91b4=>{var _0x345a73=a0_0x13e5;_0x3e91b4[_0x345a73(0x1b9)]='data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E';},0x391:_0x3c2f75=>{var _0x4e2e62=a0_0x13e5;_0x3c2f75['exports']=_0x4e2e62(0x1b0);}},t={};function n(_0x26d9b4){var _0x57ba24=a0_0x13e5,_0x58a11b=t[_0x26d9b4];if(void 0x0!==_0x58a11b)return _0x58a11b[_0x57ba24(0x1b9)];var _0x558c4b=t[_0x26d9b4]={'id':_0x26d9b4,'exports':{}};return e[_0x26d9b4](_0x558c4b,_0x558c4b[_0x57ba24(0x1b9)],n),_0x558c4b[_0x57ba24(0x1b9)];}n['m']=e,n['n']=_0x4e933a=>{var _0xbdd607=a0_0x13e5,_0x307458=_0x4e933a&&_0x4e933a['__esModule']?()=>_0x4e933a[_0xbdd607(0x178)]:()=>_0x4e933a;return n['d'](_0x307458,{'a':_0x307458}),_0x307458;},n['d']=(_0xd03516,_0xaa89fa)=>{var _0x643326=a0_0x13e5;for(var _0x32a4c5 in _0xaa89fa)n['o'](_0xaa89fa,_0x32a4c5)&&!n['o'](_0xd03516,_0x32a4c5)&&Object[_0x643326(0x144)](_0xd03516,_0x32a4c5,{'enumerable':!0x0,'get':_0xaa89fa[_0x32a4c5]});},n['o']=(_0x4f70bd,_0x25ac49)=>Object[a0_0x2e29c7(0x1ba)]['hasOwnProperty'][a0_0x2e29c7(0x1a1)](_0x4f70bd,_0x25ac49),n['b']=document[a0_0x2e29c7(0x14f)]||self['location'][a0_0x2e29c7(0x16d)],n['nc']=void 0x0;var o={};((()=>{var _0x885bbf=a0_0x2e29c7;n['d'](o,{'Z':()=>_0x491048});let _0xdfa90=0x0;const _0x53a71a={},_0x5b97a5={};function _0x1caafc(_0x5e3e61,_0x20716a,_0x29d250,_0x44063d='',_0x28e0c4){var _0x542f58=a0_0x13e5;const _0x58baf0=_0x44063d?function(_0x2c426e,_0x1c436d){var _0x189aa5=a0_0x13e5;for(;_0x2c426e&&0x1===_0x2c426e[_0x189aa5(0x146)];){if(_0x2c426e[_0x189aa5(0x168)](_0x1c436d))return _0x2c426e;_0x2c426e=_0x2c426e['parentNode'];}return null;}(_0x5e3e61[_0x542f58(0x118)],_0x44063d):_0x28e0c4;function _0x100404(){var _0x12ff79=_0x542f58;_0x53a71a[_0x20716a]&&_0x53a71a[_0x20716a][_0x12ff79(0x19b)]((_0x6b8468,_0x32a85f)=>_0x6b8468['then'](()=>new Promise((_0x4997fc,_0x3f92f3)=>{var _0x2c4846=_0x12ff79;try{const _0x40ded7=_0x32a85f[_0x2c4846(0x137)](_0x58baf0)(_0x5e3e61);_0x40ded7 instanceof Promise?_0x40ded7[_0x2c4846(0x142)](_0x4997fc)[_0x2c4846(0x176)](_0x3f92f3):_0x4997fc(_0x40ded7);}catch(_0x70858c){_0x3f92f3(_0x70858c);}})),Promise[_0x12ff79(0x193)]())[_0x12ff79(0x176)](_0x1b06bc=>{var _0x17e791=_0x12ff79;console['error'](_0x17e791(0x153),_0x1b06bc);});}_0x58baf0&&(clearTimeout(_0x5b97a5[_0x20716a]),0x0===_0x29d250?_0x100404():_0x5b97a5[_0x20716a]=setTimeout(_0x100404,_0x29d250));}var _0x3c6ab0=n(0x17b),_0x2abb60=n['n'](_0x3c6ab0),_0x264c2d=n(0x31b),_0x4a286e=n['n'](_0x264c2d),_0x3e4760=n(0x239),_0x59e3be=n['n'](_0x3e4760),_0x5d96f7=n(0x235),_0xa037c3=n['n'](_0x5d96f7),_0x307543=n(0xd8),_0x528648=n['n'](_0x307543),_0x5e30b0=n(0x24d),_0x4d8d53=n['n'](_0x5e30b0),_0xd13a27=n(0x23a),_0x393809={};function _0x5c12d2(_0x10f033){var _0x43ecce=a0_0x13e5;_0x10f033[_0x43ecce(0x1a5)]=function(_0x1a1aa3={}){var _0x5497d8=_0x43ecce;_0x10f033[_0x5497d8(0x156)][_0x5497d8(0x1cc)](_0x178852=>{var _0x38a00b=_0x5497d8;if(_0x38a00b(0x13d)===_0x178852[_0x38a00b(0x1ce)]){const [_0x387851,_0x44a51d,_0x2e21e9]=function(_0x15077d,_0x44f30c){var _0x21e9f2=_0x38a00b;const _0x3fc0d8=window[_0x21e9f2(0x167)](_0x15077d);_0x15077d[_0x21e9f2(0x18c)][_0x21e9f2(0x165)]=_0x21e9f2(0x175);const _0x8fd8d2=document['createElement']('div');_0x8fd8d2['classList'][_0x21e9f2(0x19a)](_0x21e9f2(0x199)),_0x44f30c[_0x21e9f2(0x1b3)]&&(_0x44f30c[_0x21e9f2(0x1b3)][_0x21e9f2(0x1b8)]&&(_0x8fd8d2[_0x21e9f2(0x18c)]['width']=_0x44f30c[_0x21e9f2(0x1b3)]['width']+'px'),_0x44f30c[_0x21e9f2(0x1b3)][_0x21e9f2(0x150)]&&(_0x8fd8d2['style'][_0x21e9f2(0x150)]=_0x44f30c[_0x21e9f2(0x1b3)][_0x21e9f2(0x150)]+'px')),_0x44f30c[_0x21e9f2(0x1ae)]&&_0x8fd8d2[_0x21e9f2(0x129)][_0x21e9f2(0x19a)](...function(_0x1211b2){var _0x503105=_0x21e9f2;let _0x4dd760=[];return _0x503105(0x172)==typeof _0x1211b2?_0x4dd760=(_0x1211b2=_0x1211b2[_0x503105(0x13c)](/\s\s+/g,'\x20'))[_0x503105(0x174)]('\x20')>-0x1?_0x1211b2[_0x503105(0x177)]('\x20'):_0x1211b2[_0x503105(0x174)](',')>-0x1?_0x1211b2[_0x503105(0x177)](','):[_0x1211b2]:Array[_0x503105(0x1c4)](_0x1211b2)&&(_0x4dd760=_0x1211b2),_0x4dd760;}(_0x44f30c[_0x21e9f2(0x1ae)])),_0x8fd8d2[_0x21e9f2(0x18c)][_0x21e9f2(0x1a2)]=_0x3fc0d8[_0x21e9f2(0x1a2)],_0x15077d[_0x21e9f2(0x145)]?_0x8fd8d2['classList'][_0x21e9f2(0x19a)](_0x21e9f2(0x145)):_0x8fd8d2['classList']['add'](_0x21e9f2(0x166));const _0x486cac=document[_0x21e9f2(0x1c2)]('input');return _0x486cac[_0x21e9f2(0x1ce)]=_0x21e9f2(0x10f),_0x486cac[_0x21e9f2(0x10d)]=_0x15077d[_0x21e9f2(0x10d)],_0x15077d[_0x21e9f2(0x1bd)][_0x21e9f2(0x10d)]=_0x15077d['name'],_0x15077d[_0x21e9f2(0x134)](_0x21e9f2(0x10d)),_0x44f30c[_0x21e9f2(0x194)]?function(_0x481ee7,_0x29f1e5,_0x459039){var _0x2fc298=_0x21e9f2;'checked'===_0x481ee7[_0x2fc298(0x194)]?(_0x29f1e5[_0x2fc298(0x129)]['remove'](_0x2fc298(0x166)),_0x29f1e5[_0x2fc298(0x129)][_0x2fc298(0x19a)](_0x2fc298(0x145)),_0x459039['value']=_0x2fc298(0x1cb)):_0x2fc298(0x166)===_0x481ee7['defaultState']?(_0x29f1e5[_0x2fc298(0x129)]['remove']('checked'),_0x29f1e5['classList'][_0x2fc298(0x19a)]('unchecked'),_0x459039[_0x2fc298(0x134)](_0x2fc298(0x10d)),_0x459039[_0x2fc298(0x134)]('value')):_0x2fc298(0x190)===_0x481ee7[_0x2fc298(0x194)]&&(_0x29f1e5[_0x2fc298(0x129)][_0x2fc298(0x130)](_0x2fc298(0x145)),_0x29f1e5[_0x2fc298(0x129)][_0x2fc298(0x19a)]('crossed'),_0x459039[_0x2fc298(0x15e)]=_0x2fc298(0x1d1));}(_0x44f30c,_0x8fd8d2,_0x486cac):_0x15077d[_0x21e9f2(0x145)]?_0x486cac[_0x21e9f2(0x15e)]='true':(_0x486cac[_0x21e9f2(0x10d)]='',_0x486cac['value']=''),_0x8fd8d2[_0x21e9f2(0x19f)]=_0x15077d[_0x21e9f2(0x19f)],_0x8fd8d2['appendChild'](_0x486cac),_0x15077d[_0x21e9f2(0x160)][_0x21e9f2(0x11f)](_0x8fd8d2,_0x15077d[_0x21e9f2(0x1cf)]),_0x8fd8d2['addEventListener'](_0x21e9f2(0x173),function(_0x29912d){!function(_0x140830,_0x434af6,_0x281d25){var _0x1a7dc1=a0_0x13e5;_0x140830['classList']['contains']('checked')?(_0x140830['classList'][_0x1a7dc1(0x130)]('checked'),_0x140830[_0x1a7dc1(0x129)][_0x1a7dc1(0x19a)](_0x1a7dc1(0x190)),_0x434af6[_0x1a7dc1(0x145)]=!0x1,_0x281d25[_0x1a7dc1(0x15e)]='false'):_0x140830['classList'][_0x1a7dc1(0x161)]('crossed')?(_0x140830[_0x1a7dc1(0x129)][_0x1a7dc1(0x130)]('crossed'),_0x140830[_0x1a7dc1(0x129)][_0x1a7dc1(0x19a)](_0x1a7dc1(0x166)),_0x281d25['removeAttribute'](_0x1a7dc1(0x10d)),_0x281d25[_0x1a7dc1(0x134)](_0x1a7dc1(0x15e))):(_0x140830[_0x1a7dc1(0x129)]['remove'](_0x1a7dc1(0x166)),_0x140830['classList'][_0x1a7dc1(0x19a)](_0x1a7dc1(0x145)),_0x434af6[_0x1a7dc1(0x145)]=!0x0,_0x281d25[_0x1a7dc1(0x15e)]=_0x1a7dc1(0x1cb),_0x281d25[_0x1a7dc1(0x187)](_0x1a7dc1(0x10d),_0x434af6[_0x1a7dc1(0x1bd)][_0x1a7dc1(0x10d)]));}(_0x8fd8d2,_0x15077d,_0x486cac),_0x2fed46(_0x44f30c,_0x15077d,_0x8fd8d2,_0x486cac,_0x29912d);}),_0x8fd8d2[_0x21e9f2(0x1ab)](_0x21e9f2(0x16c),_0x5888c5[_0x21e9f2(0x137)](null,_0x15077d)),[_0x15077d,_0x8fd8d2,_0x486cac];}(_0x178852,_0x1a1aa3);_0x1a1aa3[_0x38a00b(0x152)]&&_0x1a1aa3['callbacks'][_0x38a00b(0x11d)]&&_0x38a00b(0x16f)==typeof _0x1a1aa3[_0x38a00b(0x152)][_0x38a00b(0x11d)]&&_0x1a1aa3[_0x38a00b(0x152)][_0x38a00b(0x11d)](_0x387851,_0x44a51d,_0x2e21e9);}});};}function _0x2fed46(_0x2f323c,_0x4460f8,_0x158448,_0x1601c4,_0x637a9a){var _0x6a22ad=a0_0x13e5;_0x2f323c['callbacks']&&_0x2f323c[_0x6a22ad(0x152)][_0x6a22ad(0x132)]&&_0x6a22ad(0x16f)==typeof _0x2f323c[_0x6a22ad(0x152)][_0x6a22ad(0x132)]&&_0x2f323c['callbacks'][_0x6a22ad(0x132)](_0x4460f8,_0x158448,_0x1601c4),_0x2f323c[_0x6a22ad(0x136)]&&(_0x6a22ad(0x173)===_0x637a9a[_0x6a22ad(0x1ce)]?_0x4460f8[_0x6a22ad(0x12b)](new MouseEvent(_0x6a22ad(0x173),{'bubbles':!0x0,'cancelable':!0x0})):'keyup'===_0x637a9a[_0x6a22ad(0x1ce)]?_0x4460f8[_0x6a22ad(0x12b)](new KeyboardEvent(_0x6a22ad(0x16c),{'key':'\x20','bubbles':!0x0,'cancelable':!0x0})):_0x6a22ad(0x132)===_0x637a9a['type']&&_0x4460f8['dispatchEvent'](new Event(_0x6a22ad(0x132),{'bubbles':!0x0,'cancelable':!0x0})));}function _0x5888c5(_0x8cc244,_0x5bb385){var _0x12ece3=a0_0x13e5;0x20===_0x5bb385['keyCode']&&(_0x2fed46(_0x8cc244,_0x5bb385),_0x5bb385[_0x12ece3(0x195)](),_0x5bb385[_0x12ece3(0x118)][_0x12ece3(0x173)]());}_0x393809[_0x885bbf(0x10e)]=_0x4d8d53(),_0x393809['setAttributes']=_0xa037c3(),_0x393809[_0x885bbf(0x1bf)]=_0x59e3be()[_0x885bbf(0x137)](null,_0x885bbf(0x18d)),_0x393809[_0x885bbf(0x17a)]=_0x4a286e(),_0x393809[_0x885bbf(0x1c0)]=_0x528648(),_0x2abb60()(_0xd13a27['Z'],_0x393809),_0xd13a27['Z']&&_0xd13a27['Z']['locals']&&_0xd13a27['Z'][_0x885bbf(0x10c)];var _0x22d659=n(0x265),_0x2a4873={};_0x2a4873[_0x885bbf(0x10e)]=_0x4d8d53(),_0x2a4873[_0x885bbf(0x123)]=_0xa037c3(),_0x2a4873[_0x885bbf(0x1bf)]=_0x59e3be()['bind'](null,_0x885bbf(0x18d)),_0x2a4873[_0x885bbf(0x17a)]=_0x4a286e(),_0x2a4873['insertStyleElement']=_0x528648(),_0x2abb60()(_0x22d659['Z'],_0x2a4873),_0x22d659['Z']&&_0x22d659['Z']['locals']&&_0x22d659['Z']['locals'];const _0x1df11a=function(_0x580f91,_0x1b47fd=document){var _0x1fbb7e=_0x885bbf;let _0x53a47c;if('string'==typeof _0x1b47fd)_0x1b47fd=document[_0x1fbb7e(0x1c8)](_0x1b47fd);else{if(_0x1df11a['isAPXObject'](_0x1b47fd))_0x1b47fd=_0x1b47fd['first']();else{if(!(_0x1b47fd instanceof HTMLElement||_0x1b47fd instanceof Document))throw new Error(_0x1fbb7e(0x157));}}if(_0x1fbb7e(0x172)==typeof _0x580f91&&_0x580f91[_0x1fbb7e(0x12f)]('//')){_0x53a47c=document[_0x1fbb7e(0x18e)](_0x580f91,_0x1b47fd,null,XPathResult[_0x1fbb7e(0x1b2)],null);let _0x3d5897=[],_0xbc11e7=_0x53a47c[_0x1fbb7e(0x155)]();for(;_0xbc11e7;)_0x3d5897[_0x1fbb7e(0x111)](_0xbc11e7),_0xbc11e7=_0x53a47c[_0x1fbb7e(0x155)]();_0x53a47c=_0x3d5897;}else{if(_0x1fbb7e(0x172)==typeof _0x580f91)_0x53a47c=_0x1b47fd['querySelectorAll'](_0x580f91);else{if(_0x580f91 instanceof HTMLElement)_0x53a47c=_0x1b47fd[_0x1fbb7e(0x161)](_0x580f91)?[_0x580f91]:[];else{if(_0x580f91 instanceof NodeList||_0x580f91 instanceof HTMLCollection)_0x53a47c=Array[_0x1fbb7e(0x11c)](_0x580f91)[_0x1fbb7e(0x18f)](_0x8146e=>_0x1b47fd['contains'](_0x8146e));else{if(Array['isArray'](_0x580f91)&&_0x580f91[_0x1fbb7e(0x1a3)](_0xcda23=>_0xcda23 instanceof HTMLElement))_0x53a47c=_0x580f91['filter'](_0x5746db=>_0x1b47fd[_0x1fbb7e(0x161)](_0x5746db));else{if(_0x1fbb7e(0x15a)!=typeof jQuery&&_0x580f91 instanceof jQuery)_0x53a47c=Array[_0x1fbb7e(0x11c)](_0x580f91[_0x1fbb7e(0x198)]())[_0x1fbb7e(0x18f)](_0xc597df=>_0x1b47fd[_0x1fbb7e(0x161)](_0xc597df));else{if(_0x1fbb7e(0x16f)!=typeof _0x580f91)throw new Error(_0x1fbb7e(0x120));_0x53a47c=_0x1df11a(_0x580f91(),_0x1b47fd);}}}}}}var _0x1dd593={'elements':_0x53a47c,'_isAPXObject':!0x0};return _0x1dd593[_0x1fbb7e(0x189)]=_0x53a47c[_0x1fbb7e(0x189)],_0x1dd593[_0x1fbb7e(0x19c)]=function(_0x1e738f){var _0x55328c=_0x1fbb7e;return this[_0x55328c(0x156)]instanceof Array&&this[_0x55328c(0x156)][_0x55328c(0x1cc)](_0x1e738f),this[_0x55328c(0x156)]instanceof NodeList&&Array[_0x55328c(0x11c)](this['elements'])[_0x55328c(0x1cc)](_0x1e738f),this;},_0x1dd593['get']=function(_0xe0b648){return this['elements'][_0xe0b648];},_0x1dd593[_0x1fbb7e(0x1bb)]=function(){var _0x296dad=_0x1fbb7e;return this[_0x296dad(0x156)]instanceof Array?this[_0x296dad(0x156)]:this[_0x296dad(0x156)]instanceof NodeList?Array[_0x296dad(0x11c)](this[_0x296dad(0x156)]):this;},_0x1dd593[_0x1fbb7e(0x15f)]=function(){var _0x392aef=_0x1fbb7e;return this[_0x392aef(0x198)](0x0);},function(_0x33abec){var _0x5bb912=_0x1fbb7e;let _0x33d845=_0x33abec[_0x5bb912(0x156)];_0x33abec[_0x5bb912(0x17c)]=function(_0x5f5ae5,_0x1ff2c8,_0x53b322){var _0xfd5f63=_0x5bb912;let _0x1aaca3,_0x4f46ea={};'string'==typeof _0x1ff2c8?(_0x1aaca3=_0x1ff2c8,_0x4f46ea=_0x53b322||{}):_0x4f46ea=_0x1ff2c8||{};const _0x463e74=(function(){var _0x10b387=a0_0x13e5;const _0x287782=Math[_0x10b387(0x186)]()['toString'](0x24)[_0x10b387(0x126)](0x2,0x9),_0x6b6978=Date[_0x10b387(0x164)]()+'_'+_0x287782+'_'+_0xdfa90;return _0xdfa90=(_0xdfa90+0x1)%0x3e8,_0x6b6978;}()),_0x16f4ed=_0x4f46ea[_0xfd5f63(0x1af)]||0x0;return Array['isArray'](_0x5f5ae5)||(_0x5f5ae5=[_0x5f5ae5]),_0x5f5ae5[_0xfd5f63(0x1cc)](_0x20535d=>{_0x33d845['forEach'](_0x42bcbc=>{_0x42bcbc['addEventListener'](_0x20535d,_0x1f0075=>{_0x1caafc(_0x1f0075,_0x463e74,_0x16f4ed,_0x1aaca3,_0x42bcbc);});});}),{'do':function(_0xfe1eb6){var _0x12001d=_0xfd5f63;return _0x53a71a[_0x463e74]||(_0x53a71a[_0x463e74]=[]),_0x53a71a[_0x463e74][_0x12001d(0x111)](_0xfe1eb6),this;}};},_0x33abec[_0x5bb912(0x17b)]=function(_0x2f8e4f){var _0x26c14d=_0x5bb912;let _0x4d87e3;if('string'==typeof _0x2f8e4f)_0x4d87e3=_0x2f8e4f,_0x2f8e4f=new Event(_0x2f8e4f,{'bubbles':!0x0,'cancelable':!0x0});else{if(!(_0x2f8e4f instanceof Event))return void console[_0x26c14d(0x170)]('Invalid\x20event\x20type\x20provided\x20to\x20apx.trigger.\x20It\x20must\x20be\x20either\x20a\x20string\x20or\x20Event\x20object.');_0x4d87e3=_0x2f8e4f[_0x26c14d(0x1ce)];}_0x33abec[_0x26c14d(0x156)][_0x26c14d(0x1cc)](_0x43b8fd=>{var _0x134ae0=_0x26c14d;_0x43b8fd[_0x134ae0(0x12b)](_0x2f8e4f);}),Object['keys'](_0x53a71a)[_0x26c14d(0x1cc)](_0x361c08=>{var _0x20bb33=_0x26c14d;const _0x3cf247=_0x53a71a[_0x361c08];if(_0x3cf247&&_0x3cf247[_0x20bb33(0x1c1)]===_0x4d87e3){const {selector:_0x43ba5a}=_0x3cf247;_0x43ba5a&&!_0x2f8e4f['target']['matches'](_0x43ba5a)||_0x1caafc(_0x2f8e4f,_0x361c08,0x0,_0x43ba5a,_0x2f8e4f['target']);}});};}(_0x1dd593),_0x5c12d2(_0x1dd593),_0x1dd593;};_0x1df11a['loadCss']=function(_0x7f03e9){var _0x58c819=_0x885bbf;return fetch(_0x7f03e9)[_0x58c819(0x142)](_0x734985=>_0x734985[_0x58c819(0x11b)]())[_0x58c819(0x142)](_0x3d2296=>{var _0x3210ed=_0x58c819;const _0x41e6b1=document[_0x3210ed(0x1c2)]('style');_0x41e6b1[_0x3210ed(0x1ce)]='text/css',_0x41e6b1[_0x3210ed(0x1c3)]=_0x3d2296,document['head']['appendChild'](_0x41e6b1);})[_0x58c819(0x176)](_0x283248=>{var _0x4c9073=_0x58c819;console[_0x4c9073(0x170)](_0x4c9073(0x115),_0x283248);});},_0x1df11a[_0x885bbf(0x14a)]=_0x50a9af=>{var _0x1d9f47=_0x885bbf;const {title:_0x28c556,content:_0x1bff61,contentURI:_0x35bc1e,buttons:_0x2bbe94,size:_0x1845c8,showLoadingIndicator:_0x6f53e2}={'title':'','content':'','contentURI':'','buttons':[],'size':_0x1d9f47(0x162),'showLoadingIndicator':!0x1,..._0x50a9af},_0x5704de=document[_0x1d9f47(0x1c2)](_0x1d9f47(0x114));_0x5704de[_0x1d9f47(0x11e)]=_0x1d9f47(0x171)[_0x1d9f47(0x1aa)]();const _0x2a2b8a=_0x5704de[_0x1d9f47(0x197)],_0xad76d8={},_0x4f92b7={};[_0x1d9f47(0x17d),'opened',_0x1d9f47(0x14e),_0x1d9f47(0x148),_0x1d9f47(0x15b),_0x1d9f47(0x15d)][_0x1d9f47(0x1cc)](_0x5ace7c=>{_0x4f92b7[_0x5ace7c]=new Promise(_0x164c0f=>{_0xad76d8[_0x5ace7c]=_0x164c0f;});});const _0x58372c=_0x24c4eb=>{var _0x556203=_0x1d9f47;_0xad76d8[_0x24c4eb]?_0xad76d8[_0x24c4eb]():console[_0x556203(0x1c9)](_0x556203(0x184)+_0x24c4eb);},_0x3232fa={'element':_0x2a2b8a,'buttons':{},'isClosed':!0x1,'lifecycle':_0x4f92b7,'open':async()=>{var _0x154c97=_0x1d9f47;try{_0x58372c('opening'),await _0x3232fa[_0x154c97(0x169)][_0x154c97(0x17d)],_0x6f53e2&&_0x35bc1e?(document[_0x154c97(0x151)][_0x154c97(0x181)](_0x2a2b8a),_0x2a2b8a['style']['display']=_0x154c97(0x12d),_0x2a2b8a[_0x154c97(0x1c8)](_0x154c97(0x1b7))[_0x154c97(0x11e)]=_0x154c97(0x1c6),await _0x205822()):(await _0x205822(),document[_0x154c97(0x151)][_0x154c97(0x181)](_0x2a2b8a),_0x2a2b8a[_0x154c97(0x18c)][_0x154c97(0x165)]='flex'),_0x58372c(_0x154c97(0x196)),await _0x3232fa['lifecycle'][_0x154c97(0x196)];}catch(_0x58067a){console['error'](_0x154c97(0x1a7),_0x58067a);}return _0x3232fa;},'close':async()=>{var _0x51ad58=_0x1d9f47;try{_0x58372c(_0x51ad58(0x14e)),await _0x3232fa[_0x51ad58(0x169)][_0x51ad58(0x14e)],_0xd15aa0(),_0x58372c(_0x51ad58(0x148)),await _0x3232fa['lifecycle'][_0x51ad58(0x148)];}catch(_0x3ae0d8){console[_0x51ad58(0x170)]('Error\x20during\x20dialog\x20closing:',_0x3ae0d8);}return _0x3232fa;}},_0xd15aa0=()=>{var _0x4093bd=_0x1d9f47;_0x3232fa[_0x4093bd(0x116)]||(_0x3232fa[_0x4093bd(0x116)]=!0x0,_0x2a2b8a['style']['display']=_0x4093bd(0x175),document['body']['contains'](_0x2a2b8a)&&document[_0x4093bd(0x151)][_0x4093bd(0x12c)](_0x2a2b8a));},_0x205822=async()=>{var _0x4e76ce=_0x1d9f47;const _0x388151=document['body'][_0x4e76ce(0x18c)]['cursor'];document[_0x4e76ce(0x151)]['style'][_0x4e76ce(0x1ac)]='wait';const _0xc6ab67=_0x2a2b8a[_0x4e76ce(0x1c8)](_0x4e76ce(0x1b7));try{_0x58372c(_0x4e76ce(0x15b)),await _0x3232fa[_0x4e76ce(0x169)]['contentLoading'];const _0x1ec1d1=_0x35bc1e?await _0x435ea8(_0x35bc1e):_0x1bff61;_0xc6ab67[_0x4e76ce(0x11e)]=_0x1ec1d1,_0x58372c(_0x4e76ce(0x15d)),await _0x3232fa['lifecycle'][_0x4e76ce(0x15d)];}catch(_0x2bf088){console[_0x4e76ce(0x170)]('Error\x20loading\x20content:',_0x2bf088);}finally{document[_0x4e76ce(0x151)]['style'][_0x4e76ce(0x1ac)]=_0x388151;}},_0x435ea8=async _0x32aa80=>{var _0x103b61=_0x1d9f47;const _0x35eba0=await fetch(_0x32aa80);if(!_0x35eba0['ok'])throw new Error(_0x103b61(0x124)+_0x35eba0['statusText']);return _0x35eba0[_0x103b61(0x11b)]();};return((()=>{var _0x242d1a=_0x1d9f47;const _0x595f0e=_0x2a2b8a['querySelector'](_0x242d1a(0x1a0));if('auto'===_0x1845c8)return;const _0xb0bd64={'small':{'width':_0x242d1a(0x192),'height':'200px'},'medium':{'width':_0x242d1a(0x17f),'height':_0x242d1a(0x154)},'large':{'width':'800px','height':_0x242d1a(0x140)}}[_0x1845c8]||_0x242d1a(0x133)==typeof _0x1845c8&&_0x1845c8;_0xb0bd64&&(_0x595f0e[_0x242d1a(0x18c)][_0x242d1a(0x159)]=_0xb0bd64[_0x242d1a(0x1b8)]||_0x242d1a(0x17f),_0x595f0e[_0x242d1a(0x18c)]['minHeight']=_0xb0bd64[_0x242d1a(0x150)]||_0x242d1a(0x154));})()),((()=>{var _0x2dea11=_0x1d9f47;const _0x33ea35=_0x2a2b8a['querySelector'](_0x2dea11(0x14c));_0x2bbe94[_0x2dea11(0x1cc)](({key:_0x59dcbf,label:_0x3e7fd1,order:_0x43433d=0x0,align:_0x33a30e='flex-end',closeOnClick:_0x16d6b2=!0x0})=>{var _0x25694a=_0x2dea11;const _0x5bf19d=document[_0x25694a(0x1c2)](_0x25694a(0x1b5));if(_0x5bf19d['textContent']=_0x3e7fd1,_0x5bf19d['style'][_0x25694a(0x182)]=_0x43433d,_0x16d6b2){let _0x403d38=!0x1;const _0x2a6dd7=new Promise(_0x4b5040=>{var _0x209857=_0x25694a;_0x5bf19d[_0x209857(0x1ca)]=()=>{_0x403d38||(_0x403d38=!0x0,_0x4b5040(_0x3232fa),_0x3232fa['close']());};});_0x3232fa[_0x25694a(0x1bc)][_0x59dcbf]=_0x2a6dd7;}else{let _0x2e6971=[];const _0xeb4752={'then':_0x2fcaf6=>(_0x25694a(0x16f)==typeof _0x2fcaf6&&_0x2e6971['push'](_0x2fcaf6),_0xeb4752)};_0x5bf19d[_0x25694a(0x1ca)]=()=>{var _0x23dd94=_0x25694a;_0x2e6971[_0x23dd94(0x1cc)](_0x445546=>_0x445546(_0x3232fa));},_0x3232fa[_0x25694a(0x1bc)][_0x59dcbf]=_0xeb4752;}_0x33ea35[_0x25694a(0x181)](_0x5bf19d),_0x33ea35[_0x25694a(0x18c)][_0x25694a(0x131)]=_0x33a30e;});})()),_0x2a2b8a[_0x1d9f47(0x1c8)]('.APX-dialog-title')[_0x1d9f47(0x1c3)]=_0x28c556,_0x2a2b8a[_0x1d9f47(0x1c8)](_0x1d9f47(0x13b))['onclick']=_0x3232fa[_0x1d9f47(0x1a8)],_0x3232fa;},_0x1df11a[_0x885bbf(0x179)]=function(_0x4ec36e){var _0x39409f=_0x885bbf;return _0x4ec36e&&!0x0===_0x4ec36e[_0x39409f(0x1b4)];},_0x1df11a[_0x885bbf(0x19d)]=_0x67352f=>!isNaN(_0x67352f-parseFloat(_0x67352f));const _0x491048=_0x1df11a;})());var i=o['Z'];export{i as default};function a0_0x3ec4(){var _0x115a0c=['isClosed','1CtTQkF','target','28nZlIqB','HTMLIFrameElement','text','from','after','innerHTML','insertBefore','Invalid\x20input\x20type\x20for\x20APX','hash','data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E','setAttributes','Failed\x20to\x20fetch\x20content:\x20',');\x0a\x20\x20\x20\x20background-repeat:\x20no-repeat;\x0a\x20\x20\x20\x20background-position:\x20center;\x0a}\x0a.apx-tristate.crossed\x20{\x0a\x20\x20\x20\x20background-image:\x20url(','substr','2594816LKCTbD','attributes','classList','toString','dispatchEvent','removeChild','flex','styleSheet','startsWith','remove','justifyContent','change','object','removeAttribute','25581924iUXRlv','bubbleEvents','bind','layer','test','cssText','.APX-close-dialog','replace','checkbox','base','createTextNode','600px','contentDocument','then','5GSIcay','defineProperty','checked','nodeType','updater','closed','\x0a/*#\x20sourceMappingURL=data:application/json;base64,','dialog','__esModule','.APX-dialog-button-container','530EbcwnE','closing','baseURI','height','body','callbacks','Error\x20in\x20callback\x20chain:','400px','iterateNext','elements','Invalid\x20context\x20for\x20APX','splice','minWidth','undefined','contentLoading','sourceMap','contentLoaded','value','first','parentNode','contains','medium','426004oWSxXE','now','display','unchecked','getComputedStyle','matches','lifecycle','13140306walYcu','references','keyup','href','21xIdOMJ','function','error','<div\x20class=\x22APX-dialog\x22>\x20<div\x20class=\x22APX-dialog-content\x22>\x20<span\x20class=\x22APX-close-dialog\x22>&times;</span>\x20<h2\x20class=\x22APX-dialog-title\x22></h2>\x20<div\x20class=\x22APX-dialog-dynamic-content\x22></div>\x20<div\x20class=\x22APX-dialog-button-container\x22></div>\x20</div>\x20</div>','string','click','indexOf','none','catch','split','default','isAPXObject','domAPI','trigger','listen','opening','\x20*/','500px','2498874UjIkWO','appendChild','order','concat','No\x20resolver\x20found\x20for\x20lifecycle\x20event:\x20',')\x20{','random','setAttribute','@layer','length','@supports\x20(','map','style','head','evaluate','filter','crossed','.apx-tristate\x20{\x0a\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20vertical-align:\x20middle;\x0a\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20min-width:13px;\x0a\x20\x20\x20\x20min-height:13px;\x0a\x20\x20\x20\x20background-size:\x20contain;\x0a\x20\x20\x20\x20background-color:\x20white;\x0a\x20\x20\x20\x20border-radius:3px;\x0a}\x0a.apx-tristate.unchecked\x20{\x0a\x20\x20\x20\x20background-image:\x20url(','300px','resolve','defaultState','preventDefault','opened','firstChild','get','apx-tristate','add','reduce','each','is_numeric','media','tabIndex','.APX-dialog-content','call','margin','every',');\x0a\x20\x20\x20\x20background-repeat:\x20no-repeat;\x0a\x20\x20\x20\x20background-position:\x20center;\x0a}','tristate','slice','Error\x20opening\x20dialog:','close','css','trim','addEventListener','cursor','Couldn\x27t\x20find\x20a\x20style\x20target.\x20This\x20probably\x20means\x20that\x20the\x20value\x20for\x20the\x20\x27insert\x27\x20parameter\x20is\x20invalid.','classes','timeout','data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E','@media\x20','ANY_TYPE','size','_isAPXObject','button','update','.APX-dialog-dynamic-content','width','exports','prototype','all','buttons','dataset','supports','insert','insertStyleElement','eventType','createElement','textContent','isArray','868822lgSRFX','<div\x20class=\x22APX-dialog-loading-indicator\x22></div>','74635NTZGHz','querySelector','warn','onclick','true','forEach','byIndex','type','nextSibling','13nVeiMZ','false','locals','name','styleTagTransform','hidden','join','push','options','identifier','div','Failed\x20to\x20load\x20CSS:'];a0_0x3ec4=function(){return _0x115a0c;};return a0_0x3ec4();}
1
+ var a0_0x4a5634=a0_0x54a1;function a0_0x54a1(_0xaec520,_0x1e0393){var _0x5b1f1e=a0_0x5b1f();return a0_0x54a1=function(_0x54a1e3,_0x5d630c){_0x54a1e3=_0x54a1e3-0xd6;var _0x20e4df=_0x5b1f1e[_0x54a1e3];return _0x20e4df;},a0_0x54a1(_0xaec520,_0x1e0393);}(function(_0x37a399,_0x55f281){var _0x4894d7=a0_0x54a1,_0x20e773=_0x37a399();while(!![]){try{var _0x1fa2ee=parseInt(_0x4894d7(0x140))/0x1*(-parseInt(_0x4894d7(0xdd))/0x2)+parseInt(_0x4894d7(0xfe))/0x3*(-parseInt(_0x4894d7(0x16e))/0x4)+parseInt(_0x4894d7(0x11d))/0x5+-parseInt(_0x4894d7(0xeb))/0x6*(-parseInt(_0x4894d7(0x144))/0x7)+-parseInt(_0x4894d7(0xf6))/0x8*(-parseInt(_0x4894d7(0x184))/0x9)+parseInt(_0x4894d7(0x17b))/0xa*(parseInt(_0x4894d7(0xf7))/0xb)+-parseInt(_0x4894d7(0x162))/0xc;if(_0x1fa2ee===_0x55f281)break;else _0x20e773['push'](_0x20e773['shift']());}catch(_0x18ff72){_0x20e773['push'](_0x20e773['shift']());}}}(a0_0x5b1f,0x8580a));var e={0x265:(_0x95e0f3,_0x4adeb9,_0x2bdc1d)=>{var _0x49a73e=a0_0x54a1;_0x2bdc1d['d'](_0x4adeb9,{'Z':()=>_0x1da14a});var _0x5bf7eb=_0x2bdc1d(0x51),_0x27e5d3=_0x2bdc1d['n'](_0x5bf7eb),_0x1913e4=_0x2bdc1d(0x285),_0x4b4af4=_0x2bdc1d['n'](_0x1913e4)()(_0x27e5d3());_0x4b4af4[_0x49a73e(0x10e)]([_0x95e0f3['id'],'/*\x20Dialog\x20styling\x20*/\x0a.APX-dialog\x20{\x0a\x20\x20\x20\x20display:\x20none;\x0a\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20z-index:\x201002;\x0a\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20background-color:\x20rgba(0,\x200,\x200,\x200.4);\x0a\x20\x20\x20\x20/*\x20Dimmed\x20background\x20for\x20focus\x20on\x20dialog\x20*/\x0a}\x0a\x0a.APX-dialog-content\x20{\x0a\x20\x20\x20\x20background-color:\x20#fefefe;\x0a\x20\x20\x20\x20padding:\x2040px;\x0a\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20width:\x20auto;\x0a\x20\x20\x20\x20min-width:\x20300px;\x0a\x20\x20\x20\x20max-width:\x2080%;\x0a\x20\x20\x20\x20margin:\x20auto;\x0a\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20box-shadow:\x200px\x206px\x2020px\x20rgba(0,\x200,\x200,\x200.1);\x0a\x20\x20\x20\x20font-family:\x20\x27Helvetica\x20Neue\x27,\x20Arial,\x20sans-serif;\x0a}\x0a\x0ah2.APX-dialog-title{\x0a\x20\x20\x20\x20margin-top:0;\x0a}\x0a\x0a.APX-close-dialog\x20{\x0a\x20\x20\x20\x20color:\x20#aaa;\x0a\x20\x20\x20\x20float:\x20right;\x0a\x20\x20\x20\x20font-size:\x2024px;\x0a\x20\x20\x20\x20margin-top:\x20-10px;\x0a\x20\x20\x20\x20/*\x20Adjust\x20positioning\x20*/\x0a\x20\x20\x20\x20margin-right:\x20-10px;\x0a}\x0a\x0a.APX-close-dialog:hover,\x0a.APX-close-dialog:focus\x20{\x0a\x20\x20\x20\x20color:\x20#333;\x0a\x20\x20\x20\x20/*\x20Darker\x20color\x20on\x20hover/focus\x20*/\x0a\x20\x20\x20\x20cursor:\x20pointer;\x0a}\x0a\x0a/*\x20Input\x20fields\x20styling\x20*/\x0a.APX-dialog-content\x20input[type=\x22text\x22],\x0a.APX-dialog-content\x20input[type=\x22number\x22],\x0a.APX-dialog-content\x20input[type=\x22date\x22],\x0a.APX-dialog-content\x20input[type=\x22datetime-local\x22]\x20{\x0a\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20margin-bottom:\x2020px;\x0a\x20\x20\x20\x20border:\x201px\x20solid\x20#ccc;\x0a\x20\x20\x20\x20border-radius:\x204px;\x0a\x20\x20\x20\x20font-family:\x20\x27Helvetica\x20Neue\x27,\x20Arial,\x20sans-serif;\x0a\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20box-sizing:\x20border-box;\x0a\x20\x20\x20\x20transition:\x20border-color\x200.3s;\x0a}\x0a\x0a.APX-dialog-content\x20input[type=\x22text\x22]:focus,\x0a.APX-dialog-content\x20input[type=\x22number\x22]:focus,\x0a.APX-dialog-content\x20input[type=\x22date\x22]:focus,\x0a.APX-dialog-content\x20input[type=\x22datetime-local\x22]:focus\x20{\x0a\x20\x20\x20\x20border-color:\x20#2C3E50;\x0a\x20\x20\x20\x20/*\x20Deep\x20Blue\x20Color\x20*/\x0a\x20\x20\x20\x20outline:\x20none;\x0a}\x0a\x0a/*\x20Button\x20in\x20the\x20dialog\x20*/\x0a.APX-dialog-button-container\x20button\x20{\x0a\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20background-color:\x20#2C3E50;\x0a\x20\x20\x20\x20color:\x20#ECF0F1;\x0a\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20padding:\x2010px\x2020px;\x0a\x20\x20\x20\x20border-radius:\x205px;\x0a\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20transition:\x20all\x200.3s\x20ease;\x0a\x20\x20\x20\x20box-shadow:\x200\x202px\x204px\x20rgba(0,\x200,\x200,\x200.1);\x0a}\x0a\x0a.APX-dialog-button-container\x20button:hover\x20{\x0a\x20\x20\x20\x20background-color:\x20#34495E;\x0a\x20\x20\x20\x20transform:\x20translateY(-1px);\x0a\x20\x20\x20\x20box-shadow:\x200\x204px\x208px\x20rgba(0,\x200,\x200,\x200.15);\x0a}\x0a\x0a.APX-dialog-button-container\x20{\x0a\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20margin-top:1em;\x0a\x20\x20\x20\x20/*\x20spacing\x20between\x20buttons\x20*/\x0a}\x0a\x0a/*\x20Loading\x20indicator\x20*/\x0a.APX-dialog-loading-indicator\x20{\x0a\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20height:\x20100px;\x0a\x20\x20\x20\x20width:\x20100%;\x0a}\x0a\x0a.APX-dialog-loading-indicator::before\x20{\x0a\x20\x20\x20\x20content:\x20\x27\x27;\x0a\x20\x20\x20\x20width:\x2040px;\x0a\x20\x20\x20\x20height:\x2040px;\x0a\x20\x20\x20\x20border:\x204px\x20solid\x20#f3f3f3;\x0a\x20\x20\x20\x20border-top:\x204px\x20solid\x20#2C3E50;\x0a\x20\x20\x20\x20border-radius:\x2050%;\x0a\x20\x20\x20\x20animation:\x20APX-dialog-spin\x201s\x20linear\x20infinite;\x0a}\x0a\x0a@keyframes\x20APX-dialog-spin\x20{\x0a\x20\x20\x20\x200%\x20{\x20transform:\x20rotate(0deg);\x20}\x0a\x20\x20\x20\x20100%\x20{\x20transform:\x20rotate(360deg);\x20}\x0a}\x0a.APX-dialog-button-disabled\x20{\x0a\x20\x20\x20\x20opacity:\x200.5;\x0a\x20\x20\x20\x20cursor:\x20not-allowed\x20!important;\x0a\x20\x20\x20\x20background-color:\x20#95a5a6\x20!important;\x20/*\x20Grayed\x20out\x20color\x20*/\x0a\x20\x20\x20\x20box-shadow:\x20none\x20!important;\x0a\x20\x20\x20\x20transition:\x20all\x200.2s\x20ease;\x0a\x20\x20\x20\x20transform:\x20none\x20!important;\x0a}\x0a\x0a.APX-dialog-button-disabled:hover\x20{\x0a\x20\x20\x20\x20background-color:\x20#95a5a6\x20!important;\x20/*\x20Keep\x20gray\x20on\x20hover\x20*/\x0a\x20\x20\x20\x20transform:\x20none\x20!important;\x0a}\x0a\x0a/*\x20Add\x20a\x20subtle\x20strikethrough\x20effect\x20*/\x0a.APX-dialog-button-disabled::after\x20{\x0a\x20\x20\x20\x20content:\x20\x27\x27;\x0a\x20\x20\x20\x20position:\x20absolute;\x0a\x20\x20\x20\x20top:\x2050%;\x0a\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20height:\x201px;\x0a\x20\x20\x20\x20background-color:\x20rgba(0,\x200,\x200,\x200.2);\x0a\x20\x20\x20\x20transform:\x20rotate(-5deg);\x0a}','']);const _0x1da14a=_0x4b4af4;},0x23a:(_0x333cc0,_0xe30202,_0x1735ae)=>{var _0x134eac=a0_0x54a1;_0x1735ae['d'](_0xe30202,{'Z':()=>_0x3b2723});var _0x9b222d=_0x1735ae(0x51),_0x5e4186=_0x1735ae['n'](_0x9b222d),_0x3f700b=_0x1735ae(0x285),_0xf55ffc=_0x1735ae['n'](_0x3f700b),_0x34a23a=_0x1735ae(0x29b),_0x587176=_0x1735ae['n'](_0x34a23a),_0x106624=new URL(_0x1735ae(0x1d),_0x1735ae['b']),_0x38038d=new URL(_0x1735ae(0x391),_0x1735ae['b']),_0x54e444=new URL(_0x1735ae(0x104),_0x1735ae['b']),_0x24bc02=_0xf55ffc()(_0x5e4186()),_0x529ccc=_0x587176()(_0x106624),_0x1f8a42=_0x587176()(_0x38038d),_0x3394b7=_0x587176()(_0x54e444);_0x24bc02['push']([_0x333cc0['id'],'.apx-tristate\x20{\x0a\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20vertical-align:\x20middle;\x0a\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20min-width:13px;\x0a\x20\x20\x20\x20min-height:13px;\x0a\x20\x20\x20\x20background-size:\x20contain;\x0a\x20\x20\x20\x20background-color:\x20white;\x0a\x20\x20\x20\x20border-radius:3px;\x0a}\x0a.apx-tristate.unchecked\x20{\x0a\x20\x20\x20\x20background-image:\x20url('+_0x529ccc+_0x134eac(0xe5)+_0x1f8a42+_0x134eac(0x11a)+_0x3394b7+');\x0a\x20\x20\x20\x20background-repeat:\x20no-repeat;\x0a\x20\x20\x20\x20background-position:\x20center;\x0a}','']);const _0x3b2723=_0x24bc02;},0x285:_0x19aead=>{var _0x2c2b26=a0_0x54a1;_0x19aead[_0x2c2b26(0x112)]=function(_0x2aa725){var _0x5df151=_0x2c2b26,_0xe1a8f3=[];return _0xe1a8f3[_0x5df151(0x123)]=function(){return this['map'](function(_0x1941e3){var _0x567e92=a0_0x54a1,_0x1c398='',_0x38a87c=void 0x0!==_0x1941e3[0x5];return _0x1941e3[0x4]&&(_0x1c398+=_0x567e92(0x137)['concat'](_0x1941e3[0x4],_0x567e92(0x148))),_0x1941e3[0x2]&&(_0x1c398+=_0x567e92(0x18c)['concat'](_0x1941e3[0x2],'\x20{')),_0x38a87c&&(_0x1c398+=_0x567e92(0x159)[_0x567e92(0x136)](_0x1941e3[0x5][_0x567e92(0x157)]>0x0?'\x20'[_0x567e92(0x136)](_0x1941e3[0x5]):'','\x20{')),_0x1c398+=_0x2aa725(_0x1941e3),_0x38a87c&&(_0x1c398+='}'),_0x1941e3[0x2]&&(_0x1c398+='}'),_0x1941e3[0x4]&&(_0x1c398+='}'),_0x1c398;})['join']('');},_0xe1a8f3['i']=function(_0x1d97e2,_0x222844,_0xc9f6a0,_0x32b624,_0x11b7d7){var _0x5900e4=_0x5df151;_0x5900e4(0x10c)==typeof _0x1d97e2&&(_0x1d97e2=[[null,_0x1d97e2,void 0x0]]);var _0xf24bbb={};if(_0xc9f6a0)for(var _0x25fc98=0x0;_0x25fc98<this[_0x5900e4(0x157)];_0x25fc98++){var _0xad9c6a=this[_0x25fc98][0x0];null!=_0xad9c6a&&(_0xf24bbb[_0xad9c6a]=!0x0);}for(var _0x3abbc5=0x0;_0x3abbc5<_0x1d97e2[_0x5900e4(0x157)];_0x3abbc5++){var _0x2a79c5=[][_0x5900e4(0x136)](_0x1d97e2[_0x3abbc5]);_0xc9f6a0&&_0xf24bbb[_0x2a79c5[0x0]]||(void 0x0!==_0x11b7d7&&(void 0x0===_0x2a79c5[0x5]||(_0x2a79c5[0x1]=_0x5900e4(0x159)[_0x5900e4(0x136)](_0x2a79c5[0x5]['length']>0x0?'\x20'[_0x5900e4(0x136)](_0x2a79c5[0x5]):'','\x20{')[_0x5900e4(0x136)](_0x2a79c5[0x1],'}')),_0x2a79c5[0x5]=_0x11b7d7),_0x222844&&(_0x2a79c5[0x2]?(_0x2a79c5[0x1]=_0x5900e4(0x18c)[_0x5900e4(0x136)](_0x2a79c5[0x2],'\x20{')['concat'](_0x2a79c5[0x1],'}'),_0x2a79c5[0x2]=_0x222844):_0x2a79c5[0x2]=_0x222844),_0x32b624&&(_0x2a79c5[0x4]?(_0x2a79c5[0x1]=_0x5900e4(0x137)[_0x5900e4(0x136)](_0x2a79c5[0x4],')\x20{')[_0x5900e4(0x136)](_0x2a79c5[0x1],'}'),_0x2a79c5[0x4]=_0x32b624):_0x2a79c5[0x4]=''['concat'](_0x32b624)),_0xe1a8f3[_0x5900e4(0x10e)](_0x2a79c5));}},_0xe1a8f3;};},0x29b:_0x109a85=>{var _0x568924=a0_0x54a1;_0x109a85[_0x568924(0x112)]=function(_0x3d6583,_0x3cf04e){var _0x411aed=_0x568924;return _0x3cf04e||(_0x3cf04e={}),_0x3d6583?(_0x3d6583=String(_0x3d6583[_0x411aed(0x105)]?_0x3d6583[_0x411aed(0x100)]:_0x3d6583),/^['"].*['"]$/[_0x411aed(0x18e)](_0x3d6583)&&(_0x3d6583=_0x3d6583[_0x411aed(0x110)](0x1,-0x1)),_0x3cf04e[_0x411aed(0x182)]&&(_0x3d6583+=_0x3cf04e[_0x411aed(0x182)]),/["'() \t\n]|(%20)/['test'](_0x3d6583)||_0x3cf04e['needQuotes']?'\x22'[_0x411aed(0x136)](_0x3d6583[_0x411aed(0x183)](/"/g,'\x5c\x22')[_0x411aed(0x183)](/\n/g,'\x5cn'),'\x22'):_0x3d6583):_0x3d6583;};},0x51:_0x562a43=>{var _0x41ade7=a0_0x54a1;_0x562a43[_0x41ade7(0x112)]=function(_0x3833a1){return _0x3833a1[0x1];};},0x17b:_0x581092=>{var _0x49f41f=a0_0x54a1,_0x84826a=[];function _0xf25ce4(_0x24c174){var _0x3cbdf0=a0_0x54a1;for(var _0x14c4a9=-0x1,_0x11c7c3=0x0;_0x11c7c3<_0x84826a['length'];_0x11c7c3++)if(_0x84826a[_0x11c7c3][_0x3cbdf0(0x13a)]===_0x24c174){_0x14c4a9=_0x11c7c3;break;}return _0x14c4a9;}function _0x3d329a(_0x5355b3,_0x2bfb02){var _0x31aa18=a0_0x54a1;for(var _0x48af9d={},_0x2ded91=[],_0x5c019d=0x0;_0x5c019d<_0x5355b3[_0x31aa18(0x157)];_0x5c019d++){var _0x3f66dc=_0x5355b3[_0x5c019d],_0x17824e=_0x2bfb02[_0x31aa18(0x153)]?_0x3f66dc[0x0]+_0x2bfb02[_0x31aa18(0x153)]:_0x3f66dc[0x0],_0x1c9871=_0x48af9d[_0x17824e]||0x0,_0xddb100=''['concat'](_0x17824e,'\x20')['concat'](_0x1c9871);_0x48af9d[_0x17824e]=_0x1c9871+0x1;var _0x29363f=_0xf25ce4(_0xddb100),_0x2ba9a7={'css':_0x3f66dc[0x1],'media':_0x3f66dc[0x2],'sourceMap':_0x3f66dc[0x3],'supports':_0x3f66dc[0x4],'layer':_0x3f66dc[0x5]};if(-0x1!==_0x29363f)_0x84826a[_0x29363f]['references']++,_0x84826a[_0x29363f][_0x31aa18(0xd6)](_0x2ba9a7);else{var _0x19c585=_0x3cda58(_0x2ba9a7,_0x2bfb02);_0x2bfb02[_0x31aa18(0xe3)]=_0x5c019d,_0x84826a['splice'](_0x5c019d,0x0,{'identifier':_0xddb100,'updater':_0x19c585,'references':0x1});}_0x2ded91[_0x31aa18(0x10e)](_0xddb100);}return _0x2ded91;}function _0x3cda58(_0x4d42cf,_0x29ea65){var _0xf5090=a0_0x54a1,_0x4631df=_0x29ea65[_0xf5090(0xef)](_0x29ea65);return _0x4631df['update'](_0x4d42cf),function(_0x2e1c2e){var _0xe1343d=_0xf5090;if(_0x2e1c2e){if(_0x2e1c2e[_0xe1343d(0xfc)]===_0x4d42cf[_0xe1343d(0xfc)]&&_0x2e1c2e[_0xe1343d(0x107)]===_0x4d42cf[_0xe1343d(0x107)]&&_0x2e1c2e[_0xe1343d(0x111)]===_0x4d42cf['sourceMap']&&_0x2e1c2e[_0xe1343d(0xea)]===_0x4d42cf[_0xe1343d(0xea)]&&_0x2e1c2e[_0xe1343d(0x172)]===_0x4d42cf['layer'])return;_0x4631df[_0xe1343d(0xdc)](_0x4d42cf=_0x2e1c2e);}else _0x4631df['remove']();};}_0x581092[_0x49f41f(0x112)]=function(_0xaf2cbd,_0x56377e){var _0x5752d2=_0x3d329a(_0xaf2cbd=_0xaf2cbd||[],_0x56377e=_0x56377e||{});return function(_0x51f39a){var _0x2c08fc=a0_0x54a1;_0x51f39a=_0x51f39a||[];for(var _0x28b449=0x0;_0x28b449<_0x5752d2[_0x2c08fc(0x157)];_0x28b449++){var _0x318061=_0xf25ce4(_0x5752d2[_0x28b449]);_0x84826a[_0x318061][_0x2c08fc(0x155)]--;}for(var _0xd006ea=_0x3d329a(_0x51f39a,_0x56377e),_0xda25ee=0x0;_0xda25ee<_0x5752d2[_0x2c08fc(0x157)];_0xda25ee++){var _0x3d653a=_0xf25ce4(_0x5752d2[_0xda25ee]);0x0===_0x84826a[_0x3d653a][_0x2c08fc(0x155)]&&(_0x84826a[_0x3d653a]['updater'](),_0x84826a['splice'](_0x3d653a,0x1));}_0x5752d2=_0xd006ea;};};},0x239:_0x938756=>{var _0x1f3513={};_0x938756['exports']=function(_0x46dc45,_0x36222c){var _0x1cb973=a0_0x54a1,_0x526522=function(_0x5f468a){var _0x37d1f0=a0_0x54a1;if(void 0x0===_0x1f3513[_0x5f468a]){var _0x12b1df=document[_0x37d1f0(0x104)](_0x5f468a);if(window[_0x37d1f0(0x160)]&&_0x12b1df instanceof window[_0x37d1f0(0x160)])try{_0x12b1df=_0x12b1df[_0x37d1f0(0x103)][_0x37d1f0(0x12d)];}catch(_0x437294){_0x12b1df=null;}_0x1f3513[_0x5f468a]=_0x12b1df;}return _0x1f3513[_0x5f468a];}(_0x46dc45);if(!_0x526522)throw new Error('Couldn\x27t\x20find\x20a\x20style\x20target.\x20This\x20probably\x20means\x20that\x20the\x20value\x20for\x20the\x20\x27insert\x27\x20parameter\x20is\x20invalid.');_0x526522[_0x1cb973(0x18b)](_0x36222c);};},0xd8:_0x75b9ce=>{var _0x45ed0a=a0_0x54a1;_0x75b9ce[_0x45ed0a(0x112)]=function(_0x3e2a79){var _0x5e95d8=_0x45ed0a,_0x225c8b=document[_0x5e95d8(0xf2)](_0x5e95d8(0x145));return _0x3e2a79[_0x5e95d8(0x14a)](_0x225c8b,_0x3e2a79['attributes']),_0x3e2a79['insert'](_0x225c8b,_0x3e2a79[_0x5e95d8(0x18f)]),_0x225c8b;};},0x235:(_0x2645dc,_0x5690ab,_0x1f7052)=>{_0x2645dc['exports']=function(_0x2f81e3){var _0x40fb94=a0_0x54a1,_0x31472e=_0x1f7052['nc'];_0x31472e&&_0x2f81e3[_0x40fb94(0x14b)]('nonce',_0x31472e);};},0x31b:_0x57eaf4=>{var _0x5975ab=a0_0x54a1;_0x57eaf4[_0x5975ab(0x112)]=function(_0x25ac46){var _0x5e663a=_0x5975ab;if(_0x5e663a(0x171)==typeof document)return{'update':function(){},'remove':function(){}};var _0x38c4d4=_0x25ac46['insertStyleElement'](_0x25ac46);return{'update':function(_0x7a6106){!function(_0xa218f1,_0x5c70cb,_0x43f55b){var _0x453490=a0_0x54a1,_0x506402='';_0x43f55b[_0x453490(0xea)]&&(_0x506402+=_0x453490(0x137)[_0x453490(0x136)](_0x43f55b[_0x453490(0xea)],_0x453490(0x148))),_0x43f55b[_0x453490(0x107)]&&(_0x506402+=_0x453490(0x18c)[_0x453490(0x136)](_0x43f55b[_0x453490(0x107)],'\x20{'));var _0x4ddd53=void 0x0!==_0x43f55b['layer'];_0x4ddd53&&(_0x506402+=_0x453490(0x159)['concat'](_0x43f55b[_0x453490(0x172)][_0x453490(0x157)]>0x0?'\x20'[_0x453490(0x136)](_0x43f55b['layer']):'','\x20{')),_0x506402+=_0x43f55b[_0x453490(0xfc)],_0x4ddd53&&(_0x506402+='}'),_0x43f55b['media']&&(_0x506402+='}'),_0x43f55b[_0x453490(0xea)]&&(_0x506402+='}');var _0xdfef69=_0x43f55b[_0x453490(0x111)];_0xdfef69&&_0x453490(0x171)!=typeof btoa&&(_0x506402+='\x0a/*#\x20sourceMappingURL=data:application/json;base64,'[_0x453490(0x136)](btoa(unescape(encodeURIComponent(JSON[_0x453490(0x102)](_0xdfef69)))),_0x453490(0x185))),_0x5c70cb[_0x453490(0xf4)](_0x506402,_0xa218f1,_0x5c70cb[_0x453490(0x18f)]);}(_0x38c4d4,_0x25ac46,_0x7a6106);},'remove':function(){!function(_0x264dfe){var _0x1d7e1c=a0_0x54a1;if(null===_0x264dfe[_0x1d7e1c(0xd7)])return!0x1;_0x264dfe[_0x1d7e1c(0xd7)][_0x1d7e1c(0x108)](_0x264dfe);}(_0x38c4d4);}};};},0x24d:_0x487905=>{_0x487905['exports']=function(_0x1814f9,_0x46c4c6){var _0x3556f3=a0_0x54a1;if(_0x46c4c6['styleSheet'])_0x46c4c6[_0x3556f3(0x165)]['cssText']=_0x1814f9;else{for(;_0x46c4c6[_0x3556f3(0x13d)];)_0x46c4c6['removeChild'](_0x46c4c6[_0x3556f3(0x13d)]);_0x46c4c6[_0x3556f3(0x18b)](document[_0x3556f3(0x13f)](_0x1814f9));}};},0x104:_0x3716cf=>{var _0x45ed30=a0_0x54a1;_0x3716cf[_0x45ed30(0x112)]=_0x45ed30(0x176);},0x1d:_0x32322c=>{var _0x1e6f06=a0_0x54a1;_0x32322c['exports']=_0x1e6f06(0x109);},0x391:_0x189b7f=>{var _0x1ff9ac=a0_0x54a1;_0x189b7f['exports']=_0x1ff9ac(0xee);}},t={};function a0_0x5b1f(){var _0x497f72=['from','string','300px','push','keyCode','slice','sourceMap','exports','lifecycle','iterateNext','medium','size','querySelectorAll','defaultState','hasOwnProperty',');\x0a\x20\x20\x20\x20background-repeat:\x20no-repeat;\x0a\x20\x20\x20\x20background-position:\x20center;\x0a}\x0a.apx-tristate.crossed\x20{\x0a\x20\x20\x20\x20background-image:\x20url(','eventType','error','1088110sQZbak','bubbleEvents','change','add','insertStyleElement','buttons','toString','dispatchEvent','removeAttribute','statusText','tristate','No\x20resolver\x20found\x20for\x20lifecycle\x20event:\x20','contains','.APX-dialog-title','.APX-close-dialog','500px','head','catch','flex','evaluate','contentLoading','textContent','APX-dialog-button','order','value','concat','@supports\x20(','dataset','.APX-dialog-button-container','identifier','onclick','first','firstChild','split','createTextNode','2WBHKam','cursor','height','opened','49CNMPlj','style','get','apx-tristate',')\x20{','800px','setAttributes','setAttribute','after','remove','body','startsWith','elements','type','.APX-dialog-content','base','loadCss','references','unchecked','length','trigger','@layer','input','isAPXObject','object','crossed','flex-end','click','HTMLIFrameElement','tabIndex','18895296IknuGE','checkbox','each','styleSheet','true','location','width','classes','bind','Error\x20during\x20dialog\x20closing:','call','opening','4hLkgrp','function','none','undefined','layer','classList','close','.APX-dialog-button[data-key=\x22','data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E','then','insert','contentLoaded','APX-dialog-button-disabled','480mSmadP','filter','.APX-dialog-dynamic-content','indexOf','name','wait','checked','hash','replace','63MYuaaB','\x20*/','button','innerHTML','warn','<div\x20class=\x22APX-dialog-loading-indicator\x22></div>','Invalid\x20input\x20type\x20for\x20APX','appendChild','@media\x20','locals','test','options','<div\x20class=\x22APX-dialog\x22>\x20<div\x20class=\x22APX-dialog-content\x22>\x20<span\x20class=\x22APX-close-dialog\x22>&times;</span>\x20<h2\x20class=\x22APX-dialog-title\x22></h2>\x20<div\x20class=\x22APX-dialog-dynamic-content\x22></div>\x20<div\x20class=\x22APX-dialog-button-container\x22></div>\x20</div>\x20</div>','keyup','forEach','matches','target','Failed\x20to\x20load\x20CSS:','updater','parentNode','400px','hidden','preventDefault','200px','update','20612IEkTRA','callbacks','closing','nodeType','all','display','byIndex','closed',');\x0a}\x0a.apx-tristate.checked\x20{\x0a\x20\x20\x20\x20background-image:\x20url(','Error\x20in\x20callback\x20chain:','href','listen','every','supports','785364esUgjT','text','disabled','data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E','domAPI','prototype','addEventListener','createElement','data-key','styleTagTransform','Error\x20loading\x20content:','748680VYhUIc','209407OnFuIW','getComputedStyle','div','isArray','substr','css','defineProperty','1682115Ikybeq','random','default','false','stringify','contentDocument','querySelector','__esModule','resolve','media','removeChild','data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E','isClosed'];a0_0x5b1f=function(){return _0x497f72;};return a0_0x5b1f();}function n(_0x393a54){var _0x2a4715=a0_0x54a1,_0x46700e=t[_0x393a54];if(void 0x0!==_0x46700e)return _0x46700e[_0x2a4715(0x112)];var _0x2d8b7b=t[_0x393a54]={'id':_0x393a54,'exports':{}};return e[_0x393a54](_0x2d8b7b,_0x2d8b7b[_0x2a4715(0x112)],n),_0x2d8b7b[_0x2a4715(0x112)];}n['m']=e,n['n']=_0x50ca6d=>{var _0x5107b2=a0_0x54a1,_0x3e1be1=_0x50ca6d&&_0x50ca6d[_0x5107b2(0x105)]?()=>_0x50ca6d[_0x5107b2(0x100)]:()=>_0x50ca6d;return n['d'](_0x3e1be1,{'a':_0x3e1be1}),_0x3e1be1;},n['d']=(_0xaa68d9,_0xb9551c)=>{var _0x3a4251=a0_0x54a1;for(var _0x58bc7e in _0xb9551c)n['o'](_0xb9551c,_0x58bc7e)&&!n['o'](_0xaa68d9,_0x58bc7e)&&Object[_0x3a4251(0xfd)](_0xaa68d9,_0x58bc7e,{'enumerable':!0x0,'get':_0xb9551c[_0x58bc7e]});},n['o']=(_0x38361a,_0x44d2bf)=>Object[a0_0x4a5634(0xf0)][a0_0x4a5634(0x119)][a0_0x4a5634(0x16c)](_0x38361a,_0x44d2bf),n['b']=document['baseURI']||self[a0_0x4a5634(0x167)][a0_0x4a5634(0xe7)],n['nc']=void 0x0;var o={};((()=>{var _0x55ff66=a0_0x4a5634;n['d'](o,{'Z':()=>_0x1d6755});let _0x2ad27e=0x0;const _0x3e14ef={},_0x1d9118={};function _0x3107ae(_0x1d4e66,_0x3d90e4,_0x25e8b2,_0x43d8c5='',_0x2c5531){var _0x31b898=a0_0x54a1;const _0xd8cd9a=_0x43d8c5?function(_0xb191e2,_0x19aa4f){var _0x4f235c=a0_0x54a1;for(;_0xb191e2&&0x1===_0xb191e2[_0x4f235c(0xe0)];){if(_0xb191e2[_0x4f235c(0x193)](_0x19aa4f))return _0xb191e2;_0xb191e2=_0xb191e2[_0x4f235c(0xd7)];}return null;}(_0x1d4e66[_0x31b898(0x194)],_0x43d8c5):_0x2c5531;function _0x80a288(){var _0x292c77=_0x31b898;_0x3e14ef[_0x3d90e4]&&_0x3e14ef[_0x3d90e4]['reduce']((_0xdbdaf9,_0x3676ae)=>_0xdbdaf9[_0x292c77(0x177)](()=>new Promise((_0x379784,_0x37f296)=>{var _0x14559e=_0x292c77;try{const _0x5a3355=_0x3676ae[_0x14559e(0x16a)](_0xd8cd9a)(_0x1d4e66);_0x5a3355 instanceof Promise?_0x5a3355[_0x14559e(0x177)](_0x379784)[_0x14559e(0x12e)](_0x37f296):_0x379784(_0x5a3355);}catch(_0x2b07d0){_0x37f296(_0x2b07d0);}})),Promise[_0x292c77(0x106)]())['catch'](_0x31af2c=>{var _0x571183=_0x292c77;console['error'](_0x571183(0xe6),_0x31af2c);});}_0xd8cd9a&&(clearTimeout(_0x1d9118[_0x3d90e4]),0x0===_0x25e8b2?_0x80a288():_0x1d9118[_0x3d90e4]=setTimeout(_0x80a288,_0x25e8b2));}var _0x21e2d7=n(0x17b),_0x3d1319=n['n'](_0x21e2d7),_0x300c8a=n(0x31b),_0x57e370=n['n'](_0x300c8a),_0x3d3dac=n(0x239),_0x2af62b=n['n'](_0x3d3dac),_0x175aad=n(0x235),_0x96291e=n['n'](_0x175aad),_0x307b6a=n(0xd8),_0x4ddc69=n['n'](_0x307b6a),_0x2e7dd8=n(0x24d),_0x4ed43d=n['n'](_0x2e7dd8),_0x41d3fa=n(0x23a),_0x406acb={};function _0x391239(_0x3d0345){var _0x5a8c63=a0_0x54a1;_0x3d0345[_0x5a8c63(0x127)]=function(_0x15cea3={}){var _0x6beeb4=_0x5a8c63;_0x3d0345[_0x6beeb4(0x150)]['forEach'](_0x3f2b69=>{var _0x52575e=_0x6beeb4;if(_0x52575e(0x163)===_0x3f2b69[_0x52575e(0x151)]){const [_0x53ad91,_0x24156e,_0x49ae26]=function(_0x1a2cc6,_0x206e7b){var _0x290af2=_0x52575e;const _0x13cbca=window[_0x290af2(0xf8)](_0x1a2cc6);_0x1a2cc6['style'][_0x290af2(0xe2)]='none';const _0x1142ac=document[_0x290af2(0xf2)](_0x290af2(0xf9));_0x1142ac[_0x290af2(0x173)][_0x290af2(0x120)](_0x290af2(0x147)),_0x206e7b[_0x290af2(0x116)]&&(_0x206e7b[_0x290af2(0x116)][_0x290af2(0x168)]&&(_0x1142ac['style'][_0x290af2(0x168)]=_0x206e7b['size']['width']+'px'),_0x206e7b[_0x290af2(0x116)]['height']&&(_0x1142ac[_0x290af2(0x145)][_0x290af2(0x142)]=_0x206e7b[_0x290af2(0x116)][_0x290af2(0x142)]+'px')),_0x206e7b[_0x290af2(0x169)]&&_0x1142ac[_0x290af2(0x173)][_0x290af2(0x120)](...function(_0x3590bc){var _0x678d9f=_0x290af2;let _0xb3554=[];return _0x678d9f(0x10c)==typeof _0x3590bc?_0xb3554=(_0x3590bc=_0x3590bc[_0x678d9f(0x183)](/\s\s+/g,'\x20'))[_0x678d9f(0x17e)]('\x20')>-0x1?_0x3590bc['split']('\x20'):_0x3590bc[_0x678d9f(0x17e)](',')>-0x1?_0x3590bc[_0x678d9f(0x13e)](','):[_0x3590bc]:Array[_0x678d9f(0xfa)](_0x3590bc)&&(_0xb3554=_0x3590bc),_0xb3554;}(_0x206e7b[_0x290af2(0x169)])),_0x1142ac['style']['margin']=_0x13cbca['margin'],_0x1a2cc6[_0x290af2(0x181)]?_0x1142ac['classList']['add'](_0x290af2(0x181)):_0x1142ac['classList'][_0x290af2(0x120)](_0x290af2(0x156));const _0x32356d=document[_0x290af2(0xf2)](_0x290af2(0x15a));return _0x32356d[_0x290af2(0x151)]=_0x290af2(0xd9),_0x32356d[_0x290af2(0x17f)]=_0x1a2cc6[_0x290af2(0x17f)],_0x1a2cc6[_0x290af2(0x138)]['name']=_0x1a2cc6[_0x290af2(0x17f)],_0x1a2cc6[_0x290af2(0x125)]('name'),_0x206e7b[_0x290af2(0x118)]?function(_0x1959c8,_0x239866,_0x1058bd){var _0x2143a6=_0x290af2;_0x2143a6(0x181)===_0x1959c8[_0x2143a6(0x118)]?(_0x239866[_0x2143a6(0x173)][_0x2143a6(0x14d)](_0x2143a6(0x156)),_0x239866[_0x2143a6(0x173)][_0x2143a6(0x120)](_0x2143a6(0x181)),_0x1058bd[_0x2143a6(0x135)]='true'):_0x2143a6(0x156)===_0x1959c8['defaultState']?(_0x239866[_0x2143a6(0x173)][_0x2143a6(0x14d)]('checked'),_0x239866[_0x2143a6(0x173)][_0x2143a6(0x120)]('unchecked'),_0x1058bd['removeAttribute'](_0x2143a6(0x17f)),_0x1058bd['removeAttribute']('value')):_0x2143a6(0x15d)===_0x1959c8[_0x2143a6(0x118)]&&(_0x239866[_0x2143a6(0x173)][_0x2143a6(0x14d)](_0x2143a6(0x181)),_0x239866[_0x2143a6(0x173)]['add'](_0x2143a6(0x15d)),_0x1058bd[_0x2143a6(0x135)]='false');}(_0x206e7b,_0x1142ac,_0x32356d):_0x1a2cc6[_0x290af2(0x181)]?_0x32356d[_0x290af2(0x135)]='true':(_0x32356d[_0x290af2(0x17f)]='',_0x32356d[_0x290af2(0x135)]=''),_0x1142ac['tabIndex']=_0x1a2cc6[_0x290af2(0x161)],_0x1142ac['appendChild'](_0x32356d),_0x1a2cc6['parentNode']['insertBefore'](_0x1142ac,_0x1a2cc6['nextSibling']),_0x1142ac['addEventListener']('click',function(_0x540091){!function(_0x55c4ec,_0x4eeb81,_0x3a36b3){var _0x1411fc=a0_0x54a1;_0x55c4ec[_0x1411fc(0x173)][_0x1411fc(0x129)](_0x1411fc(0x181))?(_0x55c4ec[_0x1411fc(0x173)][_0x1411fc(0x14d)](_0x1411fc(0x181)),_0x55c4ec[_0x1411fc(0x173)][_0x1411fc(0x120)](_0x1411fc(0x15d)),_0x4eeb81[_0x1411fc(0x181)]=!0x1,_0x3a36b3[_0x1411fc(0x135)]=_0x1411fc(0x101)):_0x55c4ec[_0x1411fc(0x173)]['contains']('crossed')?(_0x55c4ec[_0x1411fc(0x173)][_0x1411fc(0x14d)](_0x1411fc(0x15d)),_0x55c4ec[_0x1411fc(0x173)]['add'](_0x1411fc(0x156)),_0x3a36b3[_0x1411fc(0x125)](_0x1411fc(0x17f)),_0x3a36b3[_0x1411fc(0x125)](_0x1411fc(0x135))):(_0x55c4ec['classList'][_0x1411fc(0x14d)](_0x1411fc(0x156)),_0x55c4ec[_0x1411fc(0x173)]['add'](_0x1411fc(0x181)),_0x4eeb81[_0x1411fc(0x181)]=!0x0,_0x3a36b3[_0x1411fc(0x135)]=_0x1411fc(0x166),_0x3a36b3[_0x1411fc(0x14b)](_0x1411fc(0x17f),_0x4eeb81['dataset'][_0x1411fc(0x17f)]));}(_0x1142ac,_0x1a2cc6,_0x32356d),_0x1b008a(_0x206e7b,_0x1a2cc6,_0x1142ac,_0x32356d,_0x540091);}),_0x1142ac[_0x290af2(0xf1)](_0x290af2(0x191),_0x1bb99d[_0x290af2(0x16a)](null,_0x1a2cc6)),[_0x1a2cc6,_0x1142ac,_0x32356d];}(_0x3f2b69,_0x15cea3);_0x15cea3[_0x52575e(0xde)]&&_0x15cea3[_0x52575e(0xde)][_0x52575e(0x14c)]&&_0x52575e(0x16f)==typeof _0x15cea3[_0x52575e(0xde)][_0x52575e(0x14c)]&&_0x15cea3[_0x52575e(0xde)][_0x52575e(0x14c)](_0x53ad91,_0x24156e,_0x49ae26);}});};}function _0x1b008a(_0x1bc37d,_0xefe6f2,_0x50d6b9,_0x4d7aa6,_0x40f467){var _0x28fc9c=a0_0x54a1;_0x1bc37d[_0x28fc9c(0xde)]&&_0x1bc37d['callbacks']['change']&&_0x28fc9c(0x16f)==typeof _0x1bc37d[_0x28fc9c(0xde)][_0x28fc9c(0x11f)]&&_0x1bc37d['callbacks']['change'](_0xefe6f2,_0x50d6b9,_0x4d7aa6),_0x1bc37d[_0x28fc9c(0x11e)]&&(_0x28fc9c(0x15f)===_0x40f467[_0x28fc9c(0x151)]?_0xefe6f2['dispatchEvent'](new MouseEvent(_0x28fc9c(0x15f),{'bubbles':!0x0,'cancelable':!0x0})):'keyup'===_0x40f467[_0x28fc9c(0x151)]?_0xefe6f2[_0x28fc9c(0x124)](new KeyboardEvent(_0x28fc9c(0x191),{'key':'\x20','bubbles':!0x0,'cancelable':!0x0})):_0x28fc9c(0x11f)===_0x40f467['type']&&_0xefe6f2[_0x28fc9c(0x124)](new Event(_0x28fc9c(0x11f),{'bubbles':!0x0,'cancelable':!0x0})));}function _0x1bb99d(_0x478ee4,_0x2e5666){var _0x494aeb=a0_0x54a1;0x20===_0x2e5666[_0x494aeb(0x10f)]&&(_0x1b008a(_0x478ee4,_0x2e5666),_0x2e5666[_0x494aeb(0xda)](),_0x2e5666[_0x494aeb(0x194)][_0x494aeb(0x15f)]());}_0x406acb[_0x55ff66(0xf4)]=_0x4ed43d(),_0x406acb[_0x55ff66(0x14a)]=_0x96291e(),_0x406acb[_0x55ff66(0x178)]=_0x2af62b()[_0x55ff66(0x16a)](null,_0x55ff66(0x12d)),_0x406acb[_0x55ff66(0xef)]=_0x57e370(),_0x406acb[_0x55ff66(0x121)]=_0x4ddc69(),_0x3d1319()(_0x41d3fa['Z'],_0x406acb),_0x41d3fa['Z']&&_0x41d3fa['Z'][_0x55ff66(0x18d)]&&_0x41d3fa['Z'][_0x55ff66(0x18d)];var _0x1ab2a2=n(0x265),_0xdcf27a={};_0xdcf27a[_0x55ff66(0xf4)]=_0x4ed43d(),_0xdcf27a[_0x55ff66(0x14a)]=_0x96291e(),_0xdcf27a['insert']=_0x2af62b()[_0x55ff66(0x16a)](null,_0x55ff66(0x12d)),_0xdcf27a['domAPI']=_0x57e370(),_0xdcf27a[_0x55ff66(0x121)]=_0x4ddc69(),_0x3d1319()(_0x1ab2a2['Z'],_0xdcf27a),_0x1ab2a2['Z']&&_0x1ab2a2['Z'][_0x55ff66(0x18d)]&&_0x1ab2a2['Z']['locals'];const _0x530ab4=function(_0x4eed47,_0x220150=document){var _0x534588=_0x55ff66;let _0xabf14f;if(_0x534588(0x10c)==typeof _0x220150)_0x220150=document['querySelector'](_0x220150);else{if(_0x530ab4[_0x534588(0x15b)](_0x220150))_0x220150=_0x220150[_0x534588(0x13c)]();else{if(!(_0x220150 instanceof HTMLElement||_0x220150 instanceof Document))throw new Error('Invalid\x20context\x20for\x20APX');}}if('string'==typeof _0x4eed47&&_0x4eed47[_0x534588(0x14f)]('//')){_0xabf14f=document[_0x534588(0x130)](_0x4eed47,_0x220150,null,XPathResult['ANY_TYPE'],null);let _0x45d37c=[],_0x5b67e1=_0xabf14f[_0x534588(0x114)]();for(;_0x5b67e1;)_0x45d37c[_0x534588(0x10e)](_0x5b67e1),_0x5b67e1=_0xabf14f[_0x534588(0x114)]();_0xabf14f=_0x45d37c;}else{if('string'==typeof _0x4eed47)_0xabf14f=_0x220150[_0x534588(0x117)](_0x4eed47);else{if(_0x4eed47 instanceof HTMLElement)_0xabf14f=_0x220150[_0x534588(0x129)](_0x4eed47)?[_0x4eed47]:[];else{if(_0x4eed47 instanceof NodeList||_0x4eed47 instanceof HTMLCollection)_0xabf14f=Array[_0x534588(0x10b)](_0x4eed47)[_0x534588(0x17c)](_0x32fc4c=>_0x220150[_0x534588(0x129)](_0x32fc4c));else{if(Array[_0x534588(0xfa)](_0x4eed47)&&_0x4eed47[_0x534588(0xe9)](_0x45a3ef=>_0x45a3ef instanceof HTMLElement))_0xabf14f=_0x4eed47['filter'](_0x24b073=>_0x220150[_0x534588(0x129)](_0x24b073));else{if('undefined'!=typeof jQuery&&_0x4eed47 instanceof jQuery)_0xabf14f=Array[_0x534588(0x10b)](_0x4eed47[_0x534588(0x146)]())[_0x534588(0x17c)](_0x407ceb=>_0x220150[_0x534588(0x129)](_0x407ceb));else{if(_0x534588(0x16f)!=typeof _0x4eed47)throw new Error(_0x534588(0x18a));_0xabf14f=_0x530ab4(_0x4eed47(),_0x220150);}}}}}}var _0x588b9d={'elements':_0xabf14f,'_isAPXObject':!0x0};return _0x588b9d[_0x534588(0x157)]=_0xabf14f[_0x534588(0x157)],_0x588b9d[_0x534588(0x164)]=function(_0x588d2c){var _0x485753=_0x534588;return this[_0x485753(0x150)]instanceof Array&&this['elements']['forEach'](_0x588d2c),this[_0x485753(0x150)]instanceof NodeList&&Array['from'](this[_0x485753(0x150)])[_0x485753(0x192)](_0x588d2c),this;},_0x588b9d['get']=function(_0x2904ea){var _0x33a4e4=_0x534588;return this[_0x33a4e4(0x150)][_0x2904ea];},_0x588b9d[_0x534588(0xe1)]=function(){var _0x1b3676=_0x534588;return this[_0x1b3676(0x150)]instanceof Array?this[_0x1b3676(0x150)]:this[_0x1b3676(0x150)]instanceof NodeList?Array['from'](this[_0x1b3676(0x150)]):this;},_0x588b9d[_0x534588(0x13c)]=function(){var _0x26422f=_0x534588;return this[_0x26422f(0x146)](0x0);},function(_0x1543c8){var _0x11b686=_0x534588;let _0x4c050e=_0x1543c8[_0x11b686(0x150)];_0x1543c8[_0x11b686(0xe8)]=function(_0x1cf71c,_0x41cff8,_0x5b3e9a){var _0x2513ed=_0x11b686;let _0x82f04c,_0x13d725={};_0x2513ed(0x10c)==typeof _0x41cff8?(_0x82f04c=_0x41cff8,_0x13d725=_0x5b3e9a||{}):_0x13d725=_0x41cff8||{};const _0x1d5706=(function(){var _0x46afbd=_0x2513ed;const _0x3f3ce8=Math[_0x46afbd(0xff)]()[_0x46afbd(0x123)](0x24)[_0x46afbd(0xfb)](0x2,0x9),_0x2561ab=Date['now']()+'_'+_0x3f3ce8+'_'+_0x2ad27e;return _0x2ad27e=(_0x2ad27e+0x1)%0x3e8,_0x2561ab;}()),_0x1f7647=_0x13d725['timeout']||0x0;return Array[_0x2513ed(0xfa)](_0x1cf71c)||(_0x1cf71c=[_0x1cf71c]),_0x1cf71c[_0x2513ed(0x192)](_0x50d3e7=>{var _0x5e3b71=_0x2513ed;_0x4c050e[_0x5e3b71(0x192)](_0x1bdb6d=>{var _0x315e36=_0x5e3b71;_0x1bdb6d[_0x315e36(0xf1)](_0x50d3e7,_0x4d34d6=>{_0x3107ae(_0x4d34d6,_0x1d5706,_0x1f7647,_0x82f04c,_0x1bdb6d);});});}),{'do':function(_0x29f2a3){var _0xfa3a01=_0x2513ed;return _0x3e14ef[_0x1d5706]||(_0x3e14ef[_0x1d5706]=[]),_0x3e14ef[_0x1d5706][_0xfa3a01(0x10e)](_0x29f2a3),this;}};},_0x1543c8[_0x11b686(0x158)]=function(_0xd3818d){var _0x21295d=_0x11b686;let _0x51de6a;if(_0x21295d(0x10c)==typeof _0xd3818d)_0x51de6a=_0xd3818d,_0xd3818d=new Event(_0xd3818d,{'bubbles':!0x0,'cancelable':!0x0});else{if(!(_0xd3818d instanceof Event))return void console[_0x21295d(0x11c)]('Invalid\x20event\x20type\x20provided\x20to\x20apx.trigger.\x20It\x20must\x20be\x20either\x20a\x20string\x20or\x20Event\x20object.');_0x51de6a=_0xd3818d[_0x21295d(0x151)];}_0x1543c8[_0x21295d(0x150)][_0x21295d(0x192)](_0x37267d=>{var _0x8846d7=_0x21295d;_0x37267d[_0x8846d7(0x124)](_0xd3818d);}),Object['keys'](_0x3e14ef)[_0x21295d(0x192)](_0x4e2774=>{var _0x2375cd=_0x21295d;const _0x3c4bae=_0x3e14ef[_0x4e2774];if(_0x3c4bae&&_0x3c4bae[_0x2375cd(0x11b)]===_0x51de6a){const {selector:_0x2ccb90}=_0x3c4bae;_0x2ccb90&&!_0xd3818d[_0x2375cd(0x194)]['matches'](_0x2ccb90)||_0x3107ae(_0xd3818d,_0x4e2774,0x0,_0x2ccb90,_0xd3818d['target']);}});};}(_0x588b9d),_0x391239(_0x588b9d),_0x588b9d;};_0x530ab4[_0x55ff66(0x154)]=function(_0x2c7a51){var _0x4f92b3=_0x55ff66;return fetch(_0x2c7a51)[_0x4f92b3(0x177)](_0x308857=>_0x308857[_0x4f92b3(0xec)]())['then'](_0x56dd7e=>{var _0x53c7d3=_0x4f92b3;const _0x188b0a=document['createElement']('style');_0x188b0a[_0x53c7d3(0x151)]='text/css',_0x188b0a[_0x53c7d3(0x132)]=_0x56dd7e,document[_0x53c7d3(0x12d)][_0x53c7d3(0x18b)](_0x188b0a);})[_0x4f92b3(0x12e)](_0x32d846=>{var _0x4a75a7=_0x4f92b3;console[_0x4a75a7(0x11c)](_0x4a75a7(0x195),_0x32d846);});},_0x530ab4['dialog']=_0x552c0b=>{var _0x140c09=_0x55ff66;const {title:_0x591a75,content:_0xd0c766,contentURI:_0x415df0,buttons:_0x3d7e05,size:_0x419f01,showLoadingIndicator:_0x38eb0d}={'title':'','content':'','contentURI':'','buttons':[],'size':_0x140c09(0x115),'showLoadingIndicator':!0x1,..._0x552c0b},_0x258daf=document['createElement'](_0x140c09(0xf9));_0x258daf[_0x140c09(0x187)]=_0x140c09(0x190)['trim']();const _0x53c9e1=_0x258daf['firstChild'],_0x469e29={},_0x18bce2={};[_0x140c09(0x16d),_0x140c09(0x143),_0x140c09(0xdf),_0x140c09(0xe4),_0x140c09(0x131),_0x140c09(0x179)][_0x140c09(0x192)](_0x29f956=>{_0x18bce2[_0x29f956]=new Promise(_0x488268=>{_0x469e29[_0x29f956]=_0x488268;});});const _0x4203e7=_0x4dba54=>{var _0x227292=_0x140c09;_0x469e29[_0x4dba54]?_0x469e29[_0x4dba54]():console[_0x227292(0x188)](_0x227292(0x128)+_0x4dba54);},_0x4ce578={'element':_0x53c9e1,'buttons':{},'isClosed':!0x1,'lifecycle':_0x18bce2,'disableButton':_0x8deef6=>{var _0xa3db8b=_0x140c09;const _0x21daff=_0x53c9e1[_0xa3db8b(0x104)](_0xa3db8b(0x175)+_0x8deef6+'\x22]');_0x21daff&&(_0x21daff[_0xa3db8b(0xed)]=!0x0,_0x21daff[_0xa3db8b(0x173)][_0xa3db8b(0x120)](_0xa3db8b(0x17a)));},'enableButton':_0x4c6e28=>{var _0x268144=_0x140c09;const _0x443223=_0x53c9e1[_0x268144(0x104)](_0x268144(0x175)+_0x4c6e28+'\x22]');_0x443223&&(_0x443223[_0x268144(0xed)]=!0x1,_0x443223[_0x268144(0x173)][_0x268144(0x14d)]('APX-dialog-button-disabled'));},'open':async()=>{var _0x2dc611=_0x140c09;try{_0x4203e7('opening'),await _0x4ce578[_0x2dc611(0x113)][_0x2dc611(0x16d)],_0x38eb0d&&_0x415df0?(document['body'][_0x2dc611(0x18b)](_0x53c9e1),_0x53c9e1[_0x2dc611(0x145)][_0x2dc611(0xe2)]=_0x2dc611(0x12f),_0x53c9e1[_0x2dc611(0x104)](_0x2dc611(0x17d))[_0x2dc611(0x187)]=_0x2dc611(0x189),await _0x2f3d59()):(await _0x2f3d59(),document[_0x2dc611(0x14e)]['appendChild'](_0x53c9e1),_0x53c9e1[_0x2dc611(0x145)][_0x2dc611(0xe2)]=_0x2dc611(0x12f)),_0x4203e7(_0x2dc611(0x143)),await _0x4ce578[_0x2dc611(0x113)][_0x2dc611(0x143)];}catch(_0x4c1c28){console[_0x2dc611(0x11c)]('Error\x20opening\x20dialog:',_0x4c1c28);}return _0x4ce578;},'close':async()=>{var _0x5a4dac=_0x140c09;try{_0x4203e7('closing'),await _0x4ce578[_0x5a4dac(0x113)]['closing'],_0x5a864b(),_0x4203e7(_0x5a4dac(0xe4)),await _0x4ce578[_0x5a4dac(0x113)]['closed'];}catch(_0x43f204){console['error'](_0x5a4dac(0x16b),_0x43f204);}return _0x4ce578;}},_0x5a864b=()=>{var _0x46a353=_0x140c09;_0x4ce578[_0x46a353(0x10a)]||(_0x4ce578[_0x46a353(0x10a)]=!0x0,_0x53c9e1['style'][_0x46a353(0xe2)]=_0x46a353(0x170),document[_0x46a353(0x14e)][_0x46a353(0x129)](_0x53c9e1)&&document[_0x46a353(0x14e)][_0x46a353(0x108)](_0x53c9e1));},_0x2f3d59=async()=>{var _0x9f247f=_0x140c09;const _0x5b0ff6=document[_0x9f247f(0x14e)][_0x9f247f(0x145)][_0x9f247f(0x141)];document[_0x9f247f(0x14e)][_0x9f247f(0x145)][_0x9f247f(0x141)]=_0x9f247f(0x180);const _0x5d952c=_0x53c9e1[_0x9f247f(0x104)]('.APX-dialog-dynamic-content');try{_0x4203e7(_0x9f247f(0x131)),await _0x4ce578[_0x9f247f(0x113)]['contentLoading'];const _0x4a2068=_0x415df0?await _0x12f679(_0x415df0):_0xd0c766;_0x5d952c[_0x9f247f(0x187)]=_0x4a2068,_0x4203e7('contentLoaded'),await _0x4ce578[_0x9f247f(0x113)][_0x9f247f(0x179)];}catch(_0x404a20){console['error'](_0x9f247f(0xf5),_0x404a20);}finally{document[_0x9f247f(0x14e)][_0x9f247f(0x145)][_0x9f247f(0x141)]=_0x5b0ff6;}},_0x12f679=async _0x3ce55d=>{var _0x429a3f=_0x140c09;const _0x685323=await fetch(_0x3ce55d);if(!_0x685323['ok'])throw new Error('Failed\x20to\x20fetch\x20content:\x20'+_0x685323[_0x429a3f(0x126)]);return _0x685323[_0x429a3f(0xec)]();};return((()=>{var _0x124016=_0x140c09;const _0x36af72=_0x53c9e1['querySelector'](_0x124016(0x152));if('auto'===_0x419f01)return;const _0x278c40={'small':{'width':_0x124016(0x10d),'height':_0x124016(0xdb)},'medium':{'width':_0x124016(0x12c),'height':_0x124016(0xd8)},'large':{'width':_0x124016(0x149),'height':'600px'}}[_0x419f01]||_0x124016(0x15c)==typeof _0x419f01&&_0x419f01;_0x278c40&&(_0x36af72[_0x124016(0x145)]['minWidth']=_0x278c40['width']||_0x124016(0x12c),_0x36af72[_0x124016(0x145)]['minHeight']=_0x278c40[_0x124016(0x142)]||_0x124016(0xd8));})()),((()=>{var _0x478e7b=_0x140c09;const _0x23acaf=_0x53c9e1[_0x478e7b(0x104)](_0x478e7b(0x139));_0x3d7e05[_0x478e7b(0x192)](({key:_0x3a00c8,label:_0x25c781,order:_0x22f006=0x0,align:_0x1588e6=_0x478e7b(0x15e),closeOnClick:_0x3a40b7=!0x0})=>{var _0x37475b=_0x478e7b;const _0x38a28a=document['createElement'](_0x37475b(0x186));_0x38a28a['classList']['add'](_0x37475b(0x133)),_0x38a28a[_0x37475b(0x132)]=_0x25c781,_0x38a28a['style'][_0x37475b(0x134)]=_0x22f006,_0x38a28a[_0x37475b(0x14b)](_0x37475b(0xf3),_0x3a00c8);const _0x27bffa={'disable':()=>{var _0x2e5a47=_0x37475b;_0x38a28a[_0x2e5a47(0xed)]=!0x0,_0x38a28a['classList']['add'](_0x2e5a47(0x17a));},'enable':()=>{var _0x151d77=_0x37475b;_0x38a28a[_0x151d77(0xed)]=!0x1,_0x38a28a[_0x151d77(0x173)][_0x151d77(0x14d)](_0x151d77(0x17a));},'key':_0x3a00c8,'element':_0x38a28a};if(_0x3a40b7){let _0x2fd30a=!0x1;const _0x42bc81=new Promise(_0x50f192=>{var _0x4946af=_0x37475b;_0x38a28a[_0x4946af(0x13b)]=()=>{var _0x2a4720=_0x4946af;_0x2fd30a||_0x38a28a[_0x2a4720(0xed)]||(_0x2fd30a=!0x0,_0x50f192({'dialog':_0x4ce578,'button':_0x27bffa}),_0x4ce578[_0x2a4720(0x174)]());};});_0x4ce578[_0x37475b(0x122)][_0x3a00c8]=_0x42bc81;}else{let _0x4cadd8=[];const _0x55a12b={'then':_0x3bff06=>(_0x37475b(0x16f)==typeof _0x3bff06&&_0x4cadd8[_0x37475b(0x10e)](_0x3bff06),_0x55a12b)};_0x38a28a[_0x37475b(0x13b)]=()=>{var _0x30bf61=_0x37475b;_0x38a28a[_0x30bf61(0xed)]||_0x4cadd8[_0x30bf61(0x192)](_0x100748=>_0x100748({'dialog':_0x4ce578,'button':_0x27bffa}));},_0x4ce578[_0x37475b(0x122)][_0x3a00c8]=_0x55a12b;}_0x23acaf[_0x37475b(0x18b)](_0x38a28a),_0x23acaf[_0x37475b(0x145)]['justifyContent']=_0x1588e6;});})()),_0x53c9e1[_0x140c09(0x104)](_0x140c09(0x12a))[_0x140c09(0x132)]=_0x591a75,_0x53c9e1[_0x140c09(0x104)](_0x140c09(0x12b))['onclick']=_0x4ce578[_0x140c09(0x174)],_0x4ce578;},_0x530ab4[_0x55ff66(0x15b)]=function(_0x4a6769){return _0x4a6769&&!0x0===_0x4a6769['_isAPXObject'];},_0x530ab4['is_numeric']=_0x4341f8=>!isNaN(_0x4341f8-parseFloat(_0x4341f8));const _0x1d6755=_0x530ab4;})());var a=o['Z'];export{a as default};
package/dist/APX.prod.mjs CHANGED
@@ -1 +1 @@
1
- var e={613:(e,t,n)=>{n.d(t,{Z:()=>c});var o=n(81),i=n.n(o),r=n(645),a=n.n(r)()(i());a.push([e.id,'/* Dialog styling */\n.APX-dialog {\n display: none;\n position: fixed;\n z-index: 1002;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgba(0, 0, 0, 0.4);\n /* Dimmed background for focus on dialog */\n}\n\n.APX-dialog-content {\n background-color: #fefefe;\n padding: 40px;\n border: none;\n width: auto;\n min-width: 300px;\n max-width: 80%;\n margin: auto;\n border-radius: 8px;\n box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.1);\n font-family: \'Helvetica Neue\', Arial, sans-serif;\n}\n\nh2.APX-dialog-title{\n margin-top:0;\n}\n\n.APX-close-dialog {\n color: #aaa;\n float: right;\n font-size: 24px;\n margin-top: -10px;\n /* Adjust positioning */\n margin-right: -10px;\n}\n\n.APX-close-dialog:hover,\n.APX-close-dialog:focus {\n color: #333;\n /* Darker color on hover/focus */\n cursor: pointer;\n}\n\n/* Input fields styling */\n.APX-dialog-content input[type="text"],\n.APX-dialog-content input[type="number"],\n.APX-dialog-content input[type="date"],\n.APX-dialog-content input[type="datetime-local"] {\n width: 100%;\n padding: 10px;\n margin-bottom: 20px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-family: \'Helvetica Neue\', Arial, sans-serif;\n font-size: 16px;\n box-sizing: border-box;\n transition: border-color 0.3s;\n}\n\n.APX-dialog-content input[type="text"]:focus,\n.APX-dialog-content input[type="number"]:focus,\n.APX-dialog-content input[type="date"]:focus,\n.APX-dialog-content input[type="datetime-local"]:focus {\n border-color: #2C3E50;\n /* Deep Blue Color */\n outline: none;\n}\n\n/* Button in the dialog */\n.APX-dialog-button-container button {\n background-color: #2C3E50;\n color: #ECF0F1;\n border: none;\n padding: 10px 20px;\n border-radius: 5px;\n font-size: 16px;\n cursor: pointer;\n transition: background-color 0.3s;\n}\n\n.APX-dialog-button-container button:hover {\n background-color: #34495E;\n}\n\n.APX-dialog-button-container {\n display: flex;\n gap: 10px;\n margin-top:1em;\n /* spacing between buttons */\n}\n\n/* Loading indicator */\n.APX-dialog-loading-indicator {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100px;\n width: 100%;\n}\n\n.APX-dialog-loading-indicator::before {\n content: \'\';\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2C3E50;\n border-radius: 50%;\n animation: APX-dialog-spin 1s linear infinite;\n}\n\n@keyframes APX-dialog-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}',""]);const c=a},570:(e,t,n)=>{n.d(t,{Z:()=>m});var o=n(81),i=n.n(o),r=n(645),a=n.n(r),c=n(667),s=n.n(c),l=new URL(n(29),n.b),d=new URL(n(913),n.b),u=new URL(n(260),n.b),p=a()(i()),f=s()(l),h=s()(d),g=s()(u);p.push([e.id,`.apx-tristate {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n position: relative;\n min-width:13px;\n min-height:13px;\n background-size: contain;\n background-color: white;\n border-radius:3px;\n}\n.apx-tristate.unchecked {\n background-image: url(${f});\n}\n.apx-tristate.checked {\n background-image: url(${h});\n background-repeat: no-repeat;\n background-position: center;\n}\n.apx-tristate.crossed {\n background-image: url(${g});\n background-repeat: no-repeat;\n background-position: center;\n}`,""]);const m=p},645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,i,r){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(o)for(var c=0;c<this.length;c++){var s=this[c][0];null!=s&&(a[s]=!0)}for(var l=0;l<e.length;l++){var d=[].concat(e[l]);o&&a[d[0]]||(void 0!==r&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=r),n&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=n):d[2]=n),i&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=i):d[4]="".concat(i)),t.push(d))}},t}},667:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},81:e=>{e.exports=function(e){return e[1]}},379:e=>{var t=[];function n(e){for(var n=-1,o=0;o<t.length;o++)if(t[o].identifier===e){n=o;break}return n}function o(e,o){for(var r={},a=[],c=0;c<e.length;c++){var s=e[c],l=o.base?s[0]+o.base:s[0],d=r[l]||0,u="".concat(l," ").concat(d);r[l]=d+1;var p=n(u),f={css:s[1],media:s[2],sourceMap:s[3],supports:s[4],layer:s[5]};if(-1!==p)t[p].references++,t[p].updater(f);else{var h=i(f,o);o.byIndex=c,t.splice(c,0,{identifier:u,updater:h,references:1})}a.push(u)}return a}function i(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,i){var r=o(e=e||[],i=i||{});return function(e){e=e||[];for(var a=0;a<r.length;a++){var c=n(r[a]);t[c].references--}for(var s=o(e,i),l=0;l<r.length;l++){var d=n(r[l]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}r=s}}},569:e=>{var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,i&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},260:e=>{e.exports="data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E"},29:e=>{e.exports="data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E"},913:e=>{e.exports="data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E"}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.m=e,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.b=document.baseURI||self.location.href,n.nc=void 0;var o={};(()=>{n.d(o,{Z:()=>C});let e=0;const t={},i={};function r(e,n,o,r="",a){const c=r?function(e,t){for(;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null}(e.target,r):a;function s(){t[n]&&t[n].reduce(((t,n)=>t.then((()=>new Promise(((t,o)=>{try{const i=n.bind(c)(e);i instanceof Promise?i.then(t).catch(o):t(i)}catch(e){o(e)}}))))),Promise.resolve()).catch((e=>{console.error("Error in callback chain:",e)}))}c&&(clearTimeout(i[n]),0===o?s():i[n]=setTimeout(s,o))}var a=n(379),c=n.n(a),s=n(795),l=n.n(s),d=n(569),u=n.n(d),p=n(565),f=n.n(p),h=n(216),g=n.n(h),m=n(589),y=n.n(m),v=n(570),b={};function x(e){e.tristate=function(t={}){e.elements.forEach((e=>{if("checkbox"===e.type){const[n,o,i]=function(e,t){const n=window.getComputedStyle(e);e.style.display="none";const o=document.createElement("div");o.classList.add("apx-tristate"),t.size&&(t.size.width&&(o.style.width=t.size.width+"px"),t.size.height&&(o.style.height=t.size.height+"px")),t.classes&&o.classList.add(...function(e){let t=[];return"string"==typeof e?t=(e=e.replace(/\s\s+/g," ")).indexOf(" ")>-1?e.split(" "):e.indexOf(",")>-1?e.split(","):[e]:Array.isArray(e)&&(t=e),t}(t.classes)),o.style.margin=n.margin,e.checked?o.classList.add("checked"):o.classList.add("unchecked");const i=document.createElement("input");return i.type="hidden",i.name=e.name,e.dataset.name=e.name,e.removeAttribute("name"),t.defaultState?function(e,t,n){"checked"===e.defaultState?(t.classList.remove("unchecked"),t.classList.add("checked"),n.value="true"):"unchecked"===e.defaultState?(t.classList.remove("checked"),t.classList.add("unchecked"),n.removeAttribute("name"),n.removeAttribute("value")):"crossed"===e.defaultState&&(t.classList.remove("checked"),t.classList.add("crossed"),n.value="false")}(t,o,i):e.checked?i.value="true":(i.name="",i.value=""),o.tabIndex=e.tabIndex,o.appendChild(i),e.parentNode.insertBefore(o,e.nextSibling),o.addEventListener("click",(function(n){!function(e,t,n){e.classList.contains("checked")?(e.classList.remove("checked"),e.classList.add("crossed"),t.checked=!1,n.value="false"):e.classList.contains("crossed")?(e.classList.remove("crossed"),e.classList.add("unchecked"),n.removeAttribute("name"),n.removeAttribute("value")):(e.classList.remove("unchecked"),e.classList.add("checked"),t.checked=!0,n.value="true",n.setAttribute("name",t.dataset.name))}(o,e,i),w(t,e,o,i,n)})),o.addEventListener("keyup",A.bind(null,e)),[e,o,i]}(e,t);t.callbacks&&t.callbacks.after&&"function"==typeof t.callbacks.after&&t.callbacks.after(n,o,i)}}))}}function w(e,t,n,o,i){e.callbacks&&e.callbacks.change&&"function"==typeof e.callbacks.change&&e.callbacks.change(t,n,o),e.bubbleEvents&&("click"===i.type?t.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0})):"keyup"===i.type?t.dispatchEvent(new KeyboardEvent("keyup",{key:" ",bubbles:!0,cancelable:!0})):"change"===i.type&&t.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}function A(e,t){32===t.keyCode&&(w(e,t),t.preventDefault(),t.target.click())}b.styleTagTransform=y(),b.setAttributes=f(),b.insert=u().bind(null,"head"),b.domAPI=l(),b.insertStyleElement=g(),c()(v.Z,b),v.Z&&v.Z.locals&&v.Z.locals;var k=n(613),E={};E.styleTagTransform=y(),E.setAttributes=f(),E.insert=u().bind(null,"head"),E.domAPI=l(),E.insertStyleElement=g(),c()(k.Z,E),k.Z&&k.Z.locals&&k.Z.locals;const P=function(n,o=document){let i;if("string"==typeof o)o=document.querySelector(o);else if(P.isAPXObject(o))o=o.first();else if(!(o instanceof HTMLElement||o instanceof Document))throw new Error("Invalid context for APX");if("string"==typeof n&&n.startsWith("//")){i=document.evaluate(n,o,null,XPathResult.ANY_TYPE,null);let e=[],t=i.iterateNext();for(;t;)e.push(t),t=i.iterateNext();i=e}else if("string"==typeof n)i=o.querySelectorAll(n);else if(n instanceof HTMLElement)i=o.contains(n)?[n]:[];else if(n instanceof NodeList||n instanceof HTMLCollection)i=Array.from(n).filter((e=>o.contains(e)));else if(Array.isArray(n)&&n.every((e=>e instanceof HTMLElement)))i=n.filter((e=>o.contains(e)));else if("undefined"!=typeof jQuery&&n instanceof jQuery)i=Array.from(n.get()).filter((e=>o.contains(e)));else{if("function"!=typeof n)throw new Error("Invalid input type for APX");i=P(n(),o)}var a={elements:i,_isAPXObject:!0};return a.length=i.length,a.each=function(e){return this.elements instanceof Array&&this.elements.forEach(e),this.elements instanceof NodeList&&Array.from(this.elements).forEach(e),this},a.get=function(e){return this.elements[e]},a.all=function(){return this.elements instanceof Array?this.elements:this.elements instanceof NodeList?Array.from(this.elements):this},a.first=function(){return this.get(0)},function(n){let o=n.elements;n.listen=function(n,i,a){let c,s={};"string"==typeof i?(c=i,s=a||{}):s=i||{};const l=function(){const t=Math.random().toString(36).substr(2,9),n=`${Date.now()}_${t}_${e}`;return e=(e+1)%1e3,n}(),d=s.timeout||0;return Array.isArray(n)||(n=[n]),n.forEach((e=>{o.forEach((t=>{t.addEventListener(e,(e=>{r(e,l,d,c,t)}))}))})),{do:function(e){return t[l]||(t[l]=[]),t[l].push(e),this}}},n.trigger=function(e){let o;if("string"==typeof e)o=e,e=new Event(e,{bubbles:!0,cancelable:!0});else{if(!(e instanceof Event))return void console.error("Invalid event type provided to apx.trigger. It must be either a string or Event object.");o=e.type}n.elements.forEach((t=>{t.dispatchEvent(e)})),Object.keys(t).forEach((n=>{const i=t[n];if(i&&i.eventType===o){const{selector:t}=i;t&&!e.target.matches(t)||r(e,n,0,t,e.target)}}))}}(a),x(a),a};P.loadCss=function(e){return fetch(e).then((e=>e.text())).then((e=>{const t=document.createElement("style");t.type="text/css",t.textContent=e,document.head.appendChild(t)})).catch((e=>{console.error("Failed to load CSS:",e)}))},P.dialog=e=>{const{title:t,content:n,contentURI:o,buttons:i,size:r,showLoadingIndicator:a}={title:"",content:"",contentURI:"",buttons:[],size:"medium",showLoadingIndicator:!1,...e},c=document.createElement("div");c.innerHTML='<div class="APX-dialog"> <div class="APX-dialog-content"> <span class="APX-close-dialog">&times;</span> <h2 class="APX-dialog-title"></h2> <div class="APX-dialog-dynamic-content"></div> <div class="APX-dialog-button-container"></div> </div> </div>'.trim();const s=c.firstChild,l={},d={};["opening","opened","closing","closed","contentLoading","contentLoaded"].forEach((e=>{d[e]=new Promise((t=>{l[e]=t}))}));const u=e=>{l[e]?l[e]():console.warn(`No resolver found for lifecycle event: ${e}`)},p={element:s,buttons:{},isClosed:!1,lifecycle:d,open:async()=>{try{u("opening"),await p.lifecycle.opening,a&&o?(document.body.appendChild(s),s.style.display="flex",s.querySelector(".APX-dialog-dynamic-content").innerHTML='<div class="APX-dialog-loading-indicator"></div>',await h()):(await h(),document.body.appendChild(s),s.style.display="flex"),u("opened"),await p.lifecycle.opened}catch(e){console.error("Error opening dialog:",e)}return p},close:async()=>{try{u("closing"),await p.lifecycle.closing,f(),u("closed"),await p.lifecycle.closed}catch(e){console.error("Error during dialog closing:",e)}return p}},f=()=>{p.isClosed||(p.isClosed=!0,s.style.display="none",document.body.contains(s)&&document.body.removeChild(s))},h=async()=>{const e=document.body.style.cursor;document.body.style.cursor="wait";const t=s.querySelector(".APX-dialog-dynamic-content");try{u("contentLoading"),await p.lifecycle.contentLoading;const e=o?await g(o):n;t.innerHTML=e,u("contentLoaded"),await p.lifecycle.contentLoaded}catch(e){console.error("Error loading content:",e)}finally{document.body.style.cursor=e}},g=async e=>{const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch content: ${t.statusText}`);return t.text()};return(()=>{const e=s.querySelector(".APX-dialog-content");if("auto"===r)return;const t={small:{width:"300px",height:"200px"},medium:{width:"500px",height:"400px"},large:{width:"800px",height:"600px"}}[r]||"object"==typeof r&&r;t&&(e.style.minWidth=t.width||"500px",e.style.minHeight=t.height||"400px")})(),(()=>{const e=s.querySelector(".APX-dialog-button-container");i.forEach((({key:t,label:n,order:o=0,align:i="flex-end",closeOnClick:r=!0})=>{const a=document.createElement("button");if(a.textContent=n,a.style.order=o,r){let e=!1;const n=new Promise((t=>{a.onclick=()=>{e||(e=!0,t(p),p.close())}}));p.buttons[t]=n}else{let e=[];const n={then:t=>("function"==typeof t&&e.push(t),n)};a.onclick=()=>{e.forEach((e=>e(p)))},p.buttons[t]=n}e.appendChild(a),e.style.justifyContent=i}))})(),s.querySelector(".APX-dialog-title").textContent=t,s.querySelector(".APX-close-dialog").onclick=p.close,p},P.isAPXObject=function(e){return e&&!0===e._isAPXObject},P.is_numeric=e=>!isNaN(e-parseFloat(e));const C=P})();var i=o.Z;export{i as default};
1
+ var e={613:(e,t,n)=>{n.d(t,{Z:()=>s});var o=n(81),a=n.n(o),i=n(645),r=n.n(i)()(a());r.push([e.id,'/* Dialog styling */\n.APX-dialog {\n display: none;\n position: fixed;\n z-index: 1002;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgba(0, 0, 0, 0.4);\n /* Dimmed background for focus on dialog */\n}\n\n.APX-dialog-content {\n background-color: #fefefe;\n padding: 40px;\n border: none;\n width: auto;\n min-width: 300px;\n max-width: 80%;\n margin: auto;\n border-radius: 8px;\n box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.1);\n font-family: \'Helvetica Neue\', Arial, sans-serif;\n}\n\nh2.APX-dialog-title{\n margin-top:0;\n}\n\n.APX-close-dialog {\n color: #aaa;\n float: right;\n font-size: 24px;\n margin-top: -10px;\n /* Adjust positioning */\n margin-right: -10px;\n}\n\n.APX-close-dialog:hover,\n.APX-close-dialog:focus {\n color: #333;\n /* Darker color on hover/focus */\n cursor: pointer;\n}\n\n/* Input fields styling */\n.APX-dialog-content input[type="text"],\n.APX-dialog-content input[type="number"],\n.APX-dialog-content input[type="date"],\n.APX-dialog-content input[type="datetime-local"] {\n width: 100%;\n padding: 10px;\n margin-bottom: 20px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-family: \'Helvetica Neue\', Arial, sans-serif;\n font-size: 16px;\n box-sizing: border-box;\n transition: border-color 0.3s;\n}\n\n.APX-dialog-content input[type="text"]:focus,\n.APX-dialog-content input[type="number"]:focus,\n.APX-dialog-content input[type="date"]:focus,\n.APX-dialog-content input[type="datetime-local"]:focus {\n border-color: #2C3E50;\n /* Deep Blue Color */\n outline: none;\n}\n\n/* Button in the dialog */\n.APX-dialog-button-container button {\n position: relative;\n background-color: #2C3E50;\n color: #ECF0F1;\n border: none;\n padding: 10px 20px;\n border-radius: 5px;\n font-size: 16px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.APX-dialog-button-container button:hover {\n background-color: #34495E;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n}\n\n.APX-dialog-button-container {\n display: flex;\n gap: 10px;\n margin-top:1em;\n /* spacing between buttons */\n}\n\n/* Loading indicator */\n.APX-dialog-loading-indicator {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100px;\n width: 100%;\n}\n\n.APX-dialog-loading-indicator::before {\n content: \'\';\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #2C3E50;\n border-radius: 50%;\n animation: APX-dialog-spin 1s linear infinite;\n}\n\n@keyframes APX-dialog-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n.APX-dialog-button-disabled {\n opacity: 0.5;\n cursor: not-allowed !important;\n background-color: #95a5a6 !important; /* Grayed out color */\n box-shadow: none !important;\n transition: all 0.2s ease;\n transform: none !important;\n}\n\n.APX-dialog-button-disabled:hover {\n background-color: #95a5a6 !important; /* Keep gray on hover */\n transform: none !important;\n}\n\n/* Add a subtle strikethrough effect */\n.APX-dialog-button-disabled::after {\n content: \'\';\n position: absolute;\n top: 50%;\n left: 0;\n width: 100%;\n height: 1px;\n background-color: rgba(0, 0, 0, 0.2);\n transform: rotate(-5deg);\n}',""]);const s=r},570:(e,t,n)=>{n.d(t,{Z:()=>m});var o=n(81),a=n.n(o),i=n(645),r=n.n(i),s=n(667),c=n.n(s),l=new URL(n(29),n.b),d=new URL(n(913),n.b),u=new URL(n(260),n.b),p=r()(a()),f=c()(l),h=c()(d),g=c()(u);p.push([e.id,`.apx-tristate {\n display: inline-block;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n position: relative;\n min-width:13px;\n min-height:13px;\n background-size: contain;\n background-color: white;\n border-radius:3px;\n}\n.apx-tristate.unchecked {\n background-image: url(${f});\n}\n.apx-tristate.checked {\n background-image: url(${h});\n background-repeat: no-repeat;\n background-position: center;\n}\n.apx-tristate.crossed {\n background-image: url(${g});\n background-repeat: no-repeat;\n background-position: center;\n}`,""]);const m=p},645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,a,i){"string"==typeof e&&(e=[[null,e,void 0]]);var r={};if(o)for(var s=0;s<this.length;s++){var c=this[s][0];null!=c&&(r[c]=!0)}for(var l=0;l<e.length;l++){var d=[].concat(e[l]);o&&r[d[0]]||(void 0!==i&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=i),n&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=n):d[2]=n),a&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=a):d[4]="".concat(a)),t.push(d))}},t}},667:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},81:e=>{e.exports=function(e){return e[1]}},379:e=>{var t=[];function n(e){for(var n=-1,o=0;o<t.length;o++)if(t[o].identifier===e){n=o;break}return n}function o(e,o){for(var i={},r=[],s=0;s<e.length;s++){var c=e[s],l=o.base?c[0]+o.base:c[0],d=i[l]||0,u="".concat(l," ").concat(d);i[l]=d+1;var p=n(u),f={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==p)t[p].references++,t[p].updater(f);else{var h=a(f,o);o.byIndex=s,t.splice(s,0,{identifier:u,updater:h,references:1})}r.push(u)}return r}function a(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,a){var i=o(e=e||[],a=a||{});return function(e){e=e||[];for(var r=0;r<i.length;r++){var s=n(i[r]);t[s].references--}for(var c=o(e,a),l=0;l<i.length;l++){var d=n(i[l]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}i=c}}},569:e=>{var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},216:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var a=void 0!==n.layer;a&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,a&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},260:e=>{e.exports="data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E"},29:e=>{e.exports="data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E"},913:e=>{e.exports="data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E"}},t={};function n(o){var a=t[o];if(void 0!==a)return a.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,n),i.exports}n.m=e,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.b=document.baseURI||self.location.href,n.nc=void 0;var o={};(()=>{n.d(o,{Z:()=>L});let e=0;const t={},a={};function i(e,n,o,i="",r){const s=i?function(e,t){for(;e&&1===e.nodeType;){if(e.matches(t))return e;e=e.parentNode}return null}(e.target,i):r;function c(){t[n]&&t[n].reduce(((t,n)=>t.then((()=>new Promise(((t,o)=>{try{const a=n.bind(s)(e);a instanceof Promise?a.then(t).catch(o):t(a)}catch(e){o(e)}}))))),Promise.resolve()).catch((e=>{console.error("Error in callback chain:",e)}))}s&&(clearTimeout(a[n]),0===o?c():a[n]=setTimeout(c,o))}var r=n(379),s=n.n(r),c=n(795),l=n.n(c),d=n(569),u=n.n(d),p=n(565),f=n.n(p),h=n(216),g=n.n(h),m=n(589),b=n.n(m),y=n(570),v={};function x(e){e.tristate=function(t={}){e.elements.forEach((e=>{if("checkbox"===e.type){const[n,o,a]=function(e,t){const n=window.getComputedStyle(e);e.style.display="none";const o=document.createElement("div");o.classList.add("apx-tristate"),t.size&&(t.size.width&&(o.style.width=t.size.width+"px"),t.size.height&&(o.style.height=t.size.height+"px")),t.classes&&o.classList.add(...function(e){let t=[];return"string"==typeof e?t=(e=e.replace(/\s\s+/g," ")).indexOf(" ")>-1?e.split(" "):e.indexOf(",")>-1?e.split(","):[e]:Array.isArray(e)&&(t=e),t}(t.classes)),o.style.margin=n.margin,e.checked?o.classList.add("checked"):o.classList.add("unchecked");const a=document.createElement("input");return a.type="hidden",a.name=e.name,e.dataset.name=e.name,e.removeAttribute("name"),t.defaultState?function(e,t,n){"checked"===e.defaultState?(t.classList.remove("unchecked"),t.classList.add("checked"),n.value="true"):"unchecked"===e.defaultState?(t.classList.remove("checked"),t.classList.add("unchecked"),n.removeAttribute("name"),n.removeAttribute("value")):"crossed"===e.defaultState&&(t.classList.remove("checked"),t.classList.add("crossed"),n.value="false")}(t,o,a):e.checked?a.value="true":(a.name="",a.value=""),o.tabIndex=e.tabIndex,o.appendChild(a),e.parentNode.insertBefore(o,e.nextSibling),o.addEventListener("click",(function(n){!function(e,t,n){e.classList.contains("checked")?(e.classList.remove("checked"),e.classList.add("crossed"),t.checked=!1,n.value="false"):e.classList.contains("crossed")?(e.classList.remove("crossed"),e.classList.add("unchecked"),n.removeAttribute("name"),n.removeAttribute("value")):(e.classList.remove("unchecked"),e.classList.add("checked"),t.checked=!0,n.value="true",n.setAttribute("name",t.dataset.name))}(o,e,a),A(t,e,o,a,n)})),o.addEventListener("keyup",w.bind(null,e)),[e,o,a]}(e,t);t.callbacks&&t.callbacks.after&&"function"==typeof t.callbacks.after&&t.callbacks.after(n,o,a)}}))}}function A(e,t,n,o,a){e.callbacks&&e.callbacks.change&&"function"==typeof e.callbacks.change&&e.callbacks.change(t,n,o),e.bubbleEvents&&("click"===a.type?t.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0})):"keyup"===a.type?t.dispatchEvent(new KeyboardEvent("keyup",{key:" ",bubbles:!0,cancelable:!0})):"change"===a.type&&t.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0})))}function w(e,t){32===t.keyCode&&(A(e,t),t.preventDefault(),t.target.click())}v.styleTagTransform=b(),v.setAttributes=f(),v.insert=u().bind(null,"head"),v.domAPI=l(),v.insertStyleElement=g(),s()(y.Z,v),y.Z&&y.Z.locals&&y.Z.locals;var k=n(613),E={};E.styleTagTransform=b(),E.setAttributes=f(),E.insert=u().bind(null,"head"),E.domAPI=l(),E.insertStyleElement=g(),s()(k.Z,E),k.Z&&k.Z.locals&&k.Z.locals;const P=function(n,o=document){let a;if("string"==typeof o)o=document.querySelector(o);else if(P.isAPXObject(o))o=o.first();else if(!(o instanceof HTMLElement||o instanceof Document))throw new Error("Invalid context for APX");if("string"==typeof n&&n.startsWith("//")){a=document.evaluate(n,o,null,XPathResult.ANY_TYPE,null);let e=[],t=a.iterateNext();for(;t;)e.push(t),t=a.iterateNext();a=e}else if("string"==typeof n)a=o.querySelectorAll(n);else if(n instanceof HTMLElement)a=o.contains(n)?[n]:[];else if(n instanceof NodeList||n instanceof HTMLCollection)a=Array.from(n).filter((e=>o.contains(e)));else if(Array.isArray(n)&&n.every((e=>e instanceof HTMLElement)))a=n.filter((e=>o.contains(e)));else if("undefined"!=typeof jQuery&&n instanceof jQuery)a=Array.from(n.get()).filter((e=>o.contains(e)));else{if("function"!=typeof n)throw new Error("Invalid input type for APX");a=P(n(),o)}var r={elements:a,_isAPXObject:!0};return r.length=a.length,r.each=function(e){return this.elements instanceof Array&&this.elements.forEach(e),this.elements instanceof NodeList&&Array.from(this.elements).forEach(e),this},r.get=function(e){return this.elements[e]},r.all=function(){return this.elements instanceof Array?this.elements:this.elements instanceof NodeList?Array.from(this.elements):this},r.first=function(){return this.get(0)},function(n){let o=n.elements;n.listen=function(n,a,r){let s,c={};"string"==typeof a?(s=a,c=r||{}):c=a||{};const l=function(){const t=Math.random().toString(36).substr(2,9),n=`${Date.now()}_${t}_${e}`;return e=(e+1)%1e3,n}(),d=c.timeout||0;return Array.isArray(n)||(n=[n]),n.forEach((e=>{o.forEach((t=>{t.addEventListener(e,(e=>{i(e,l,d,s,t)}))}))})),{do:function(e){return t[l]||(t[l]=[]),t[l].push(e),this}}},n.trigger=function(e){let o;if("string"==typeof e)o=e,e=new Event(e,{bubbles:!0,cancelable:!0});else{if(!(e instanceof Event))return void console.error("Invalid event type provided to apx.trigger. It must be either a string or Event object.");o=e.type}n.elements.forEach((t=>{t.dispatchEvent(e)})),Object.keys(t).forEach((n=>{const a=t[n];if(a&&a.eventType===o){const{selector:t}=a;t&&!e.target.matches(t)||i(e,n,0,t,e.target)}}))}}(r),x(r),r};P.loadCss=function(e){return fetch(e).then((e=>e.text())).then((e=>{const t=document.createElement("style");t.type="text/css",t.textContent=e,document.head.appendChild(t)})).catch((e=>{console.error("Failed to load CSS:",e)}))},P.dialog=e=>{const{title:t,content:n,contentURI:o,buttons:a,size:i,showLoadingIndicator:r}={title:"",content:"",contentURI:"",buttons:[],size:"medium",showLoadingIndicator:!1,...e},s=document.createElement("div");s.innerHTML='<div class="APX-dialog"> <div class="APX-dialog-content"> <span class="APX-close-dialog">&times;</span> <h2 class="APX-dialog-title"></h2> <div class="APX-dialog-dynamic-content"></div> <div class="APX-dialog-button-container"></div> </div> </div>'.trim();const c=s.firstChild,l={},d={};["opening","opened","closing","closed","contentLoading","contentLoaded"].forEach((e=>{d[e]=new Promise((t=>{l[e]=t}))}));const u=e=>{l[e]?l[e]():console.warn(`No resolver found for lifecycle event: ${e}`)},p={element:c,buttons:{},isClosed:!1,lifecycle:d,disableButton:e=>{const t=c.querySelector(`.APX-dialog-button[data-key="${e}"]`);t&&(t.disabled=!0,t.classList.add("APX-dialog-button-disabled"))},enableButton:e=>{const t=c.querySelector(`.APX-dialog-button[data-key="${e}"]`);t&&(t.disabled=!1,t.classList.remove("APX-dialog-button-disabled"))},open:async()=>{try{u("opening"),await p.lifecycle.opening,r&&o?(document.body.appendChild(c),c.style.display="flex",c.querySelector(".APX-dialog-dynamic-content").innerHTML='<div class="APX-dialog-loading-indicator"></div>',await h()):(await h(),document.body.appendChild(c),c.style.display="flex"),u("opened"),await p.lifecycle.opened}catch(e){console.error("Error opening dialog:",e)}return p},close:async()=>{try{u("closing"),await p.lifecycle.closing,f(),u("closed"),await p.lifecycle.closed}catch(e){console.error("Error during dialog closing:",e)}return p}},f=()=>{p.isClosed||(p.isClosed=!0,c.style.display="none",document.body.contains(c)&&document.body.removeChild(c))},h=async()=>{const e=document.body.style.cursor;document.body.style.cursor="wait";const t=c.querySelector(".APX-dialog-dynamic-content");try{u("contentLoading"),await p.lifecycle.contentLoading;const e=o?await g(o):n;t.innerHTML=e,u("contentLoaded"),await p.lifecycle.contentLoaded}catch(e){console.error("Error loading content:",e)}finally{document.body.style.cursor=e}},g=async e=>{const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch content: ${t.statusText}`);return t.text()};return(()=>{const e=c.querySelector(".APX-dialog-content");if("auto"===i)return;const t={small:{width:"300px",height:"200px"},medium:{width:"500px",height:"400px"},large:{width:"800px",height:"600px"}}[i]||"object"==typeof i&&i;t&&(e.style.minWidth=t.width||"500px",e.style.minHeight=t.height||"400px")})(),(()=>{const e=c.querySelector(".APX-dialog-button-container");a.forEach((({key:t,label:n,order:o=0,align:a="flex-end",closeOnClick:i=!0})=>{const r=document.createElement("button");r.classList.add("APX-dialog-button"),r.textContent=n,r.style.order=o,r.setAttribute("data-key",t);const s={disable:()=>{r.disabled=!0,r.classList.add("APX-dialog-button-disabled")},enable:()=>{r.disabled=!1,r.classList.remove("APX-dialog-button-disabled")},key:t,element:r};if(i){let e=!1;const n=new Promise((t=>{r.onclick=()=>{e||r.disabled||(e=!0,t({dialog:p,button:s}),p.close())}}));p.buttons[t]=n}else{let e=[];const n={then:t=>("function"==typeof t&&e.push(t),n)};r.onclick=()=>{r.disabled||e.forEach((e=>e({dialog:p,button:s})))},p.buttons[t]=n}e.appendChild(r),e.style.justifyContent=a}))})(),c.querySelector(".APX-dialog-title").textContent=t,c.querySelector(".APX-close-dialog").onclick=p.close,p},P.isAPXObject=function(e){return e&&!0===e._isAPXObject},P.is_numeric=e=>!isNaN(e-parseFloat(e));const L=P})();var a=o.Z;export{a as default};
@@ -72,6 +72,7 @@ h2.APX-dialog-title{
72
72
 
73
73
  /* Button in the dialog */
74
74
  .APX-dialog-button-container button {
75
+ position: relative;
75
76
  background-color: #2C3E50;
76
77
  color: #ECF0F1;
77
78
  border: none;
@@ -79,11 +80,14 @@ h2.APX-dialog-title{
79
80
  border-radius: 5px;
80
81
  font-size: 16px;
81
82
  cursor: pointer;
82
- transition: background-color 0.3s;
83
+ transition: all 0.3s ease;
84
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
83
85
  }
84
86
 
85
87
  .APX-dialog-button-container button:hover {
86
88
  background-color: #34495E;
89
+ transform: translateY(-1px);
90
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
87
91
  }
88
92
 
89
93
  .APX-dialog-button-container {
@@ -115,4 +119,29 @@ h2.APX-dialog-title{
115
119
  @keyframes APX-dialog-spin {
116
120
  0% { transform: rotate(0deg); }
117
121
  100% { transform: rotate(360deg); }
122
+ }
123
+ .APX-dialog-button-disabled {
124
+ opacity: 0.5;
125
+ cursor: not-allowed !important;
126
+ background-color: #95a5a6 !important; /* Grayed out color */
127
+ box-shadow: none !important;
128
+ transition: all 0.2s ease;
129
+ transform: none !important;
130
+ }
131
+
132
+ .APX-dialog-button-disabled:hover {
133
+ background-color: #95a5a6 !important; /* Keep gray on hover */
134
+ transform: none !important;
135
+ }
136
+
137
+ /* Add a subtle strikethrough effect */
138
+ .APX-dialog-button-disabled::after {
139
+ content: '';
140
+ position: absolute;
141
+ top: 50%;
142
+ left: 0;
143
+ width: 100%;
144
+ height: 1px;
145
+ background-color: rgba(0, 0, 0, 0.2);
146
+ transform: rotate(-5deg);
118
147
  }
@@ -42,6 +42,20 @@ const createDialog = (options) => {
42
42
  buttons: {},
43
43
  isClosed: false,
44
44
  lifecycle: lifecycleEvents, // Lifecycle promises directly exposed here
45
+ disableButton: (key) => {
46
+ const button = dialogElement.querySelector(`.APX-dialog-button[data-key="${key}"]`);
47
+ if (button) {
48
+ button.disabled = true;
49
+ button.classList.add('APX-dialog-button-disabled');
50
+ }
51
+ },
52
+ enableButton: (key) => {
53
+ const button = dialogElement.querySelector(`.APX-dialog-button[data-key="${key}"]`);
54
+ if (button) {
55
+ button.disabled = false;
56
+ button.classList.remove('APX-dialog-button-disabled');
57
+ }
58
+ },
45
59
  open: async () => {
46
60
  try {
47
61
  triggerEvent('opening');
@@ -123,8 +137,24 @@ const createDialog = (options) => {
123
137
 
124
138
  buttons.forEach(({ key, label, order = 0, align = 'flex-end', closeOnClick = true }) => {
125
139
  const button = document.createElement('button');
140
+ button.classList.add('APX-dialog-button');
126
141
  button.textContent = label;
127
142
  button.style.order = order;
143
+ button.setAttribute('data-key', key);
144
+
145
+ // Create button context with disable/enable methods
146
+ const buttonContext = {
147
+ disable: () => {
148
+ button.disabled = true;
149
+ button.classList.add('APX-dialog-button-disabled');
150
+ },
151
+ enable: () => {
152
+ button.disabled = false;
153
+ button.classList.remove('APX-dialog-button-disabled');
154
+ },
155
+ key,
156
+ element: button
157
+ };
128
158
 
129
159
  if (closeOnClick) {
130
160
  // Handle as a one-time Promise
@@ -132,9 +162,9 @@ const createDialog = (options) => {
132
162
 
133
163
  const firstClickPromise = new Promise((resolve) => {
134
164
  button.onclick = () => {
135
- if (!firstClickResolved) {
165
+ if (!firstClickResolved && !button.disabled) {
136
166
  firstClickResolved = true;
137
- resolve(dialog); // Resolve the Promise
167
+ resolve({ dialog, button: buttonContext }); // Pass both dialog and button context
138
168
  dialog.close(); // Close the dialog
139
169
  }
140
170
  };
@@ -156,7 +186,9 @@ const createDialog = (options) => {
156
186
  };
157
187
 
158
188
  button.onclick = () => {
159
- handlers.forEach((handler) => handler(dialog)); // Call all registered handlers
189
+ if (!button.disabled) {
190
+ handlers.forEach((handler) => handler({ dialog, button: buttonContext })); // Pass both dialog and button context
191
+ }
160
192
  };
161
193
 
162
194
  dialog.buttons[key] = clickPromise; // Assign the "fake" promise
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appius-fr/apx",
3
- "version": "2.2.2",
3
+ "version": "2.3.0",
4
4
  "description": "Appius Extended JS - A powerful JavaScript extension library",
5
5
  "main": "dist/APX.prod.mjs",
6
6
  "module": "dist/APX.prod.mjs",