@agilemotion/oui-react-js 2.0.7 → 2.0.9

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.
@@ -101,13 +101,13 @@ class RestService {
101
101
  if (requestBodyParamFound) {
102
102
  reject(new Error("Only one request body is permitted"));
103
103
  return;
104
- } else {
105
- if (!this.isParamValueNull(parameterValue)) {
106
- requestBody = parameterValue.instanceType === 'TypedValue' ? parameterValue.value : parameterValue;
107
- /*if (typeof requestBody === 'object') {
108
- requestBody.type = parameterValue.type;
109
- }*/
110
- }
104
+ }
105
+ // Mark the slot as taken regardless of whether the value
106
+ // is null. A second REQUEST_BODY param is a config bug
107
+ // either way, and we want it to surface loudly.
108
+ requestBodyParamFound = true;
109
+ if (!this.isParamValueNull(parameterValue)) {
110
+ requestBody = parameterValue.instanceType === 'TypedValue' ? parameterValue.value : parameterValue;
111
111
  }
112
112
  }
113
113
  }
@@ -123,28 +123,20 @@ class RestService {
123
123
  if (!_Utils.default.isNull(headers)) {
124
124
  contentType = headers['Content-Type'];
125
125
  }
126
- if (requestBody !== null && service.method === 'GET') {
127
- throw new Error('A request body parameter cannot be specified for a GET request');
126
+
127
+ // Resolve the HTTP method. Honor service.method when provided so
128
+ // callers can issue DELETE, PUT, PATCH (not just GET/POST).
129
+ // Default: POST when a body was bound, GET otherwise — preserves
130
+ // the historical behaviour for callers that omit service.method.
131
+ const method = service.method ? service.method.toUpperCase() : requestBody !== null ? 'POST' : 'GET';
132
+ if (requestBody !== null && method === 'GET') {
133
+ reject(new Error('A request body parameter cannot be specified for a GET request'));
134
+ return;
128
135
  }
129
- if (requestBody !== null || service.method === 'POST') {
130
- this.fetchWithCustomConfig({
131
- viewId: request.viewId,
132
- url,
133
- serviceType: request.service.type,
134
- method: 'POST',
135
- secure: !service.url.startsWith('http://'),
136
- body: requestBody,
137
- headers
138
- }).then(response => {
139
- let path = _Utils.default.getPropertyChainPath(request.returnValueBinding);
140
- if (!_Utils.default.isNull(path.valueObject) && !_Utils.default.isNull(path.property)) {
141
- path.valueObject[path.property] = response;
142
- }
143
- resolve(this.processSuccessfulResponseData(request.component, response, request.viewId, request.successMessage));
144
- }).catch(e => {
145
- reject(e);
146
- });
147
- } else if (contentType === 'application/pdf' || contentType === 'application/vnd.ms-excel') {
136
+
137
+ // Download path (PDF / Excel) is GET-only and uses a separate
138
+ // fetch shape (blob handling); branch first.
139
+ if (method === 'GET' && (contentType === 'application/pdf' || contentType === 'application/vnd.ms-excel')) {
148
140
  this.fetchWithCustomConfig({
149
141
  viewId: request.viewId,
150
142
  url,
@@ -158,24 +150,30 @@ class RestService {
158
150
  }).catch(e => {
159
151
  reject(e);
160
152
  });
161
- } else {
162
- this.fetchWithCustomConfig({
163
- viewId: request.viewId,
164
- url,
165
- serviceType: request.service.type,
166
- secure: !service.url.startsWith('http://'),
167
- method: 'GET',
168
- headers
169
- }).then(response => {
170
- let path = _Utils.default.getPropertyChainPath(request.returnValueBinding);
171
- if (!_Utils.default.isNull(path.valueObject) && !_Utils.default.isNull(path.property)) {
172
- path.valueObject[path.property] = response;
173
- }
174
- resolve(this.processSuccessfulResponseData(request.component, response, request.viewId, request.successMessage));
175
- }).catch(e => {
176
- reject(e);
177
- });
153
+ return;
178
154
  }
155
+
156
+ // Single dispatch for GET / POST / PUT / PATCH / DELETE / etc.
157
+ // Body is passed through; the fetch layer drops it for verbs that
158
+ // forbid one. DELETE with a body is uncommon but permitted by
159
+ // HTTP — we don't block it here.
160
+ this.fetchWithCustomConfig({
161
+ viewId: request.viewId,
162
+ url,
163
+ serviceType: request.service.type,
164
+ method,
165
+ secure: !service.url.startsWith('http://'),
166
+ body: requestBody,
167
+ headers
168
+ }).then(response => {
169
+ let path = _Utils.default.getPropertyChainPath(request.returnValueBinding);
170
+ if (!_Utils.default.isNull(path.valueObject) && !_Utils.default.isNull(path.property)) {
171
+ path.valueObject[path.property] = response;
172
+ }
173
+ resolve(this.processSuccessfulResponseData(request.component, response, request.viewId, request.successMessage));
174
+ }).catch(e => {
175
+ reject(e);
176
+ });
179
177
  });
180
178
  }
181
179
  invokeRpc(request) {
@@ -406,4 +404,4 @@ const invokeRest = request => {
406
404
  return instance.invokeRest(request);
407
405
  };
408
406
  exports.invokeRest = invokeRest;
409
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9wcm9wVHlwZXMiLCJfUmVzdFV0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImxvY2F0aW9uIiwiZXhwb3J0cyIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsIlJlc3RTZXJ2aWNlIiwiaXNQYXJhbVZhbHVlTnVsbCIsInBhcmFtVmFsdWUiLCJVdGlscyIsImlzTnVsbCIsImhhc093blByb3BlcnR5IiwiaW52b2tlUmVzdCIsInJlcXVlc3QiLCJzZXJ2aWNlIiwidXJsIiwic3RhcnRzV2l0aCIsImNvbmNhdCIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwicmVxdWVzdEJvZHkiLCJoZWFkZXJzIiwicGFyYW1ldGVycyIsInF1ZXJ5U3RyaW5nIiwicGF0aFBhcmFtZXRlcnMiLCJyZXF1ZXN0Qm9keVBhcmFtRm91bmQiLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInJlc29sdmVQYXJhbWV0ZXJWYWx1ZSIsImV2ZW50IiwiZGF0YSIsInZhbGlkYXRvciIsIm51bGxhYmxlIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsIm5hbWUiLCJyZXF1aXJlZCIsImVycm9yVHlwZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiaW5jbHVkZVBhcmFtZXRlclR5cGVzIiwidHlwZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXNvbHZlZFZhbHVlIiwiZW5jb2RlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiaW5zdGFuY2VUeXBlIiwiaW5kZXhPZiIsInJlcGxhY2UiLCJFcnJvciIsImNvbnRlbnRUeXBlIiwibWV0aG9kIiwiZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnIiwidmlld0lkIiwic2VydmljZVR5cGUiLCJzZWN1cmUiLCJib2R5IiwidGhlbiIsInBhdGgiLCJnZXRQcm9wZXJ0eUNoYWluUGF0aCIsInJldHVyblZhbHVlQmluZGluZyIsInZhbHVlT2JqZWN0IiwicHJvcGVydHkiLCJwcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YSIsImNvbXBvbmVudCIsInN1Y2Nlc3NNZXNzYWdlIiwiY2F0Y2giLCJkb3dubG9hZCIsImludm9rZVJwYyIsInJwY1JlcXVlc3QiLCJpZCIsInNwbGl0Iiwic2VydmljZUlkIiwicHJvY2VkdXJlTmFtZSIsIm1vZHVsZSIsInRvTG93ZXJDYXNlIiwicGFyYW1ldGVyQ29uZmlnIiwiaW5kZXgiLCJ2YWwiLCJ0cmFjayIsImFjY2Vzc1Rva2VuIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaWRUb2tlbiIsIkZvcm1EYXRhIiwiZmV0Y2hDb25maWciLCJjb25maWciLCJhY2NlcHQiLCJnZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvciIsImdldEFwcGxpY2F0aW9uU2Vjb25kYXJ5Q29sb3IiLCJmZXRjaCIsImVycm9yRGF0YSIsIm1lc3NhZ2UiLCJzdGF0dXNUZXh0IiwiY29udGVudERpc3Bvc2l0aW9uIiwiZ2V0IiwiZmlsZW5hbWUiLCJpbmNsdWRlcyIsInRyaW0iLCJibG9iIiwiX3JlZiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImEiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiZXJyb3IiLCJjb25zb2xlIiwidHJhY2tQcm9taXNlIiwiZXhlY3V0ZUZldGNoIiwiZW5jb2RlVVJJIiwiZW5kc1dpdGgiLCJjbGVhciIsIm5hdmlnYXRlIiwidG9TdHJpbmciLCJwYXJzZSIsImlnbm9yZWQiLCJkYXRhVHlwZSIsIkV2ZW50IiwiZXZlbnRNYW5hZ2VyIiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiTUVTU0FHRV9BUlJJVkVEIiwibWVzc2FnZVR5cGUiLCJwb3B1bGF0ZVRlbXBsYXRlIiwiaW5zdGFuY2UiXSwic291cmNlcyI6WyIuLi9zcmMvbGliL1Jlc3RTZXJ2aWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBVdGlscyBmcm9tICcuL1V0aWxzJztcbmltcG9ydCB7dHJhY2tQcm9taXNlfSBmcm9tICdyZWFjdC1wcm9taXNlLXRyYWNrZXInO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgRXZlbnQgZnJvbSAnLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4vZXZlbnQvRXZlbnRUeXBlJztcbmltcG9ydCB7aW5zdGFuY2VPZn0gZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7ZG93bmxvYWQsIHBvc3REYXRhLCBzZW5kUmVxdWVzdH0gZnJvbSBcIi4vUmVzdFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBzdGF0dXMgPSAocmVzcG9uc2UpID0+IHtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BvbnNlKTtcbiAgICB9XG59O1xuXG5jb25zdCBqc29uID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn07XG5cbmNsYXNzIFJlc3RTZXJ2aWNlIHtcbiAgICBpc1BhcmFtVmFsdWVOdWxsKHBhcmFtVmFsdWUpIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYXJhbVZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyYW1WYWx1ZS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSA/IFV0aWxzLmlzTnVsbChwYXJhbVZhbHVlLnZhbHVlKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGludm9rZVJlc3QocmVxdWVzdCkge1xuICAgICAgICBsZXQgc2VydmljZSA9IHJlcXVlc3Quc2VydmljZTtcbiAgICAgICAgbGV0IHVybCA9IHNlcnZpY2UudXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBzZXJ2aWNlLnVybC5zdGFydHNXaXRoKCdodHRwczovLycpID9cbiAgICAgICAgICAgIHNlcnZpY2UudXJsIDogbG9jYXRpb24gKyBgJHthcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIHNlcnZpY2UudXJsfWA7XG4gICAgICAgIGxldCByZXF1ZXN0Qm9keSA9IG51bGw7XG4gICAgICAgIGxldCBoZWFkZXJzID0gc2VydmljZS5oZWFkZXJzO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlLnBhcmFtZXRlcnMpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhQYXJhbWV0ZXJzID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RCb2R5UGFyYW1Gb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIHNlcnZpY2UucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyVmFsdWUgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlclZhbHVlKHBhcmFtZXRlciwgcmVxdWVzdC5ldmVudCA/IHJlcXVlc3QuZXZlbnQuZGF0YSA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIudmFsaWRhdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChwYXJhbWV0ZXIudmFsaWRhdG9yLm51bGxhYmxlICYmICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlci52YWxpZGF0b3IubnVsbGFibGUsIHBhcmFtZXRlci5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5yZXF1aXJlZCAmJiBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlci52YWxpZGF0b3IucmVxdWlyZWQsIHBhcmFtZXRlci5uYW1lKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaXNQYXJhbVZhbHVlTnVsbChwYXJhbWV0ZXJWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiAnSU5WQUxJRF9QQVJBTUVURVInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGh0dHBQYXJhbWV0ZXJUeXBlID0gcGFyYW1ldGVyLmh0dHBQYXJhbWV0ZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGh0dHBQYXJhbWV0ZXJUeXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtZXRlclR5cGUgPSAnUVVFUllfUEFSQU1FVEVSJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChodHRwUGFyYW1ldGVyVHlwZSA9PT0gJ1FVRVJZX1BBUkFNRVRFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeVN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICcmJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlLmluY2x1ZGVQYXJhbWV0ZXJUeXBlcykgJiYgc2VydmljZS5pbmNsdWRlUGFyYW1ldGVyVHlwZXMgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gcGFyYW1ldGVyVmFsdWUudHlwZSArICc6JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyArPSBwYXJhbWV0ZXIubmFtZSArICc9JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyArPSAodHlwZW9mIHBhcmFtZXRlclZhbHVlLnZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW1ldGVyVmFsdWUudmFsdWUgPT09ICdudW1iZXInID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyVmFsdWUudmFsdWUgOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJWYWx1ZS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnUEFUSF9WQVJJQUJMRScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIuZW5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSB0eXBlb2YgcGFyYW1ldGVyVmFsdWUudmFsdWUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJWYWx1ZS52YWx1ZSkpIDogcGFyYW1ldGVyVmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJWYWx1ZS52YWx1ZSkgOiBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSB0eXBlb2YgcGFyYW1ldGVyVmFsdWUudmFsdWUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSA6IHBhcmFtZXRlclZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA6IHBhcmFtZXRlclZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJhbWV0ZXIgaGFzIGEgbmFtZSBhbmQgdGhlIFVSTCBjb250YWlucyB7bmFtZX0sIHJlcGxhY2UgdGhlIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyLm5hbWUpICYmIHVybC5pbmRleE9mKCd7JyArIHBhcmFtZXRlci5uYW1lICsgJ30nKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCd7JyArIHBhcmFtZXRlci5uYW1lICsgJ30nLCByZXNvbHZlZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5OiBhcHBlbmQgdG8gZW5kIG9mIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoUGFyYW1ldGVycyArPSAnLycgKyByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChodHRwUGFyYW1ldGVyVHlwZSA9PT0gJ0hFQURFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0ge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW3BhcmFtZXRlci5uYW1lXSA9IHBhcmFtZXRlclZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnUkVRVUVTVF9CT0RZJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RCb2R5UGFyYW1Gb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJPbmx5IG9uZSByZXF1ZXN0IGJvZHkgaXMgcGVybWl0dGVkXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1BhcmFtVmFsdWVOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keSA9IHBhcmFtZXRlclZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID8gcGFyYW1ldGVyVmFsdWUudmFsdWUgOiBwYXJhbWV0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiAodHlwZW9mIHJlcXVlc3RCb2R5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkudHlwZSA9IHBhcmFtZXRlclZhbHVlLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwYXRoUGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSBwYXRoUGFyYW1ldGVycztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocXVlcnlTdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gJz8nO1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gcXVlcnlTdHJpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgY29udGVudFR5cGUgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChoZWFkZXJzKSkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gaGVhZGVyc1snQ29udGVudC1UeXBlJ107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXF1ZXN0Qm9keSAhPT0gbnVsbCAmJiBzZXJ2aWNlLm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgcmVxdWVzdCBib2R5IHBhcmFtZXRlciBjYW5ub3QgYmUgc3BlY2lmaWVkIGZvciBhIEdFVCByZXF1ZXN0Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXF1ZXN0Qm9keSAhPT0gbnVsbCB8fCBzZXJ2aWNlLm1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaFdpdGhDdXN0b21Db25maWcoe1xuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ6IHJlcXVlc3Qudmlld0lkLFxuICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlOiByZXF1ZXN0LnNlcnZpY2UudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIHNlY3VyZTogIXNlcnZpY2UudXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogcmVxdWVzdEJvZHksXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IFV0aWxzLmdldFByb3BlcnR5Q2hhaW5QYXRoKHJlcXVlc3QucmV0dXJuVmFsdWVCaW5kaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdFtwYXRoLnByb3BlcnR5XSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKHJlcXVlc3QuY29tcG9uZW50LCByZXNwb25zZSwgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoV2l0aEN1c3RvbUNvbmZpZyh7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZDogcmVxdWVzdC52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZVR5cGU6IHJlcXVlc3Quc2VydmljZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICBzZWN1cmU6IHJlcXVlc3Quc2VjdXJlLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoV2l0aEN1c3RvbUNvbmZpZyh7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZDogcmVxdWVzdC52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZVR5cGU6IHJlcXVlc3Quc2VydmljZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICBzZWN1cmU6ICFzZXJ2aWNlLnVybC5zdGFydHNXaXRoKCdodHRwOi8vJyksXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IFV0aWxzLmdldFByb3BlcnR5Q2hhaW5QYXRoKHJlcXVlc3QucmV0dXJuVmFsdWVCaW5kaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC52YWx1ZU9iamVjdFtwYXRoLnByb3BlcnR5XSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKHJlcXVlc3QuY29tcG9uZW50LCByZXNwb25zZSwgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGludm9rZVJwYyhyZXF1ZXN0KSB7XG4gICAgICAgIGxldCBycGNSZXF1ZXN0ID0ge307XG4gICAgICAgIHJwY1JlcXVlc3QuaWQgPSByZXF1ZXN0LnZpZXdJZDtcblxuICAgICAgICBsZXQgc3BsaXQgPSByZXF1ZXN0LnNlcnZpY2Uuc2VydmljZUlkLnNwbGl0KCcuJyk7XG4gICAgICAgIHJwY1JlcXVlc3Quc2VydmljZSA9IHNwbGl0WzFdO1xuICAgICAgICBycGNSZXF1ZXN0Lm1ldGhvZCA9IHJlcXVlc3Quc2VydmljZS5wcm9jZWR1cmVOYW1lO1xuXG4gICAgICAgIGxldCBtb2R1bGUgPSBzcGxpdFswXS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGxldCBoZWFkZXJzID0ge307XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyZXF1ZXN0LnNlcnZpY2UucGFyYW1ldGVycykgJiYgcmVxdWVzdC5zZXJ2aWNlLnBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJwY1JlcXVlc3QucGFyYW1ldGVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVxdWVzdC5zZXJ2aWNlLnBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtZXRlckNvbmZpZyA9IHJlcXVlc3Quc2VydmljZS5wYXJhbWV0ZXJzW2ldO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0ge307XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5uYW1lID0gcGFyYW1ldGVyQ29uZmlnLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5pbmRleCA9IHBhcmFtZXRlckNvbmZpZy5pbmRleDtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVQYXJhbWV0ZXJWYWx1ZShwYXJhbWV0ZXJDb25maWcsIHJlcXVlc3QuZXZlbnQgPyByZXF1ZXN0LmV2ZW50LmRhdGEgOiBudWxsKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudmFsdWUgPSB2YWwudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudHlwZSA9IHZhbC50eXBlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbWV0ZXIudmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwYXJhbWV0ZXIudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci50eXBlID0gJ1N0cmluZyc7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIudmFsaWRhdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChwYXJhbWV0ZXIudmFsaWRhdG9yLm51bGxhYmxlICYmICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlci52YWxpZGF0b3IubnVsbGFibGUsIHBhcmFtZXRlci5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5yZXF1aXJlZCAmJiBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcmFtZXRlci52YWxpZGF0b3IucmVxdWlyZWQsIHBhcmFtZXRlci5uYW1lKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaXNQYXJhbVZhbHVlTnVsbChwYXJhbWV0ZXIudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZTogJ0lOVkFMSURfUEFSQU1FVEVSJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJDb25maWcuaHR0cFBhcmFtZXRlclR5cGUgPT09ICdIRUFERVInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcnBjUmVxdWVzdC5wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mZXRjaFdpdGhDdXN0b21Db25maWcoe1xuICAgICAgICAgICAgICAgIHZpZXdJZDogcmVxdWVzdC52aWV3SWQsXG4gICAgICAgICAgICAgICAgdXJsOiBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgJy8nICsgbW9kdWxlICsgJy9hcGkvdjEvcnBjL2ludm9rZScsXG4gICAgICAgICAgICAgICAgc2VydmljZVR5cGU6IHJlcXVlc3Quc2VydmljZS50eXBlLFxuICAgICAgICAgICAgICAgIHNlY3VyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBib2R5OiBycGNSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRyYWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QucmV0dXJuVmFsdWVCaW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IFV0aWxzLmdldFByb3BlcnR5Q2hhaW5QYXRoKHJlcXVlc3QucmV0dXJuVmFsdWVCaW5kaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpICYmICFVdGlscy5pc051bGwocGF0aC5wcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0W3BhdGgucHJvcGVydHldID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucHJvY2Vzc1N1Y2Nlc3NmdWxSZXNwb25zZURhdGEocmVxdWVzdC5jb21wb25lbnQsIHJlc3BvbnNlLCByZXF1ZXN0LnZpZXdJZCwgcmVxdWVzdC5zdWNjZXNzTWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnKHJlcXVlc3QpIHtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICBjb25zdCBpZFRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpO1xuXG4gICAgICAgIGxldCBkYXRhID0gcmVxdWVzdC5ib2R5ID8gKHJlcXVlc3QuYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSA/IHJlcXVlc3QuYm9keSA6IEpTT04uc3RyaW5naWZ5KHJlcXVlc3QuYm9keSkgOiBudWxsO1xuICAgICAgICBsZXQgZmV0Y2hDb25maWcgPSByZXF1ZXN0LmNvbmZpZztcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChmZXRjaENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJlcXVlc3Quc2VjdXJlKSB8fCByZXF1ZXN0LnNlY3VyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogVXRpbHMuaXNOdWxsKHJlcXVlc3QubWV0aG9kKSA/ICdHRVQnIDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmNvbnRlbnRUeXBlID8gcmVxdWVzdC5jb250ZW50VHlwZSA6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkVG9rZW4nOiBpZFRva2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFV0aWxzLmlzTnVsbChyZXF1ZXN0Lm1ldGhvZCkgPyAnR0VUJyA6IHJlcXVlc3QubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlcXVlc3QuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5jb250ZW50VHlwZSA/IHJlcXVlc3QuY29udGVudFR5cGUgOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6IHJlcXVlc3QuYWNjZXB0ID8gcmVxdWVzdC5hY2NlcHQgOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCdyZXN0JyA9PT0gcmVxdWVzdC5zZXJ2aWNlVHlwZSAmJiAhKHJlcXVlc3QuYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHJlcXVlc3QuY29udGVudFR5cGUgPyByZXF1ZXN0LmNvbnRlbnRUeXBlIDogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgocmVxdWVzdC5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmZXRjaENvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXTtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hDb25maWcuaGVhZGVyc1snQWNjZXB0J10gPSByZXF1ZXN0LmFjY2VwdCA/IHJlcXVlc3QuYWNjZXB0IDogJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcXVlc3QuY29udGVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBmZXRjaENvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHJlcXVlc3QuY29udGVudFR5cGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB1cmwgPSByZXF1ZXN0LnVybDtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0LmRvd25sb2FkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHVybCArPSAnPyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICcmJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL3VybCArPSAnYWNjZXNzX3Rva2VuPScgKyBhY2Nlc3NUb2tlbjtcbiAgICAgICAgICAgICAgICAvL3VybCArPSAnJmlkVG9rZW49JyArIGlkVG9rZW47XG4gICAgICAgICAgICAgICAgdXJsICs9ICcmdGhlbWVQcmltYXJ5Q29sb3I9JyArIGVuY29kZVVSSUNvbXBvbmVudChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKSk7XG4gICAgICAgICAgICAgICAgdXJsICs9ICcmdGhlbWVTZWNvbmRhcnlDb2xvcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblNlY29uZGFyeUNvbG9yKCkpO1xuXG4gICAgICAgICAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZFRva2VuJzogaWRUb2tlblxuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKGVycm9yRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgJHtyZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yRGF0YS5tZXNzYWdlIHx8IHJlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50RGlzcG9zaXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtRGlzcG9zaXRpb25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcImRvd25sb2FkZWQtZmlsZVwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudERpc3Bvc2l0aW9uICYmIGNvbnRlbnREaXNwb3NpdGlvbi5pbmNsdWRlcyhcImZpbGVuYW1lPVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gY29udGVudERpc3Bvc2l0aW9uLnNwbGl0KFwiZmlsZW5hbWU9XCIpWzFdLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1tcIiddL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpLnRoZW4oYmxvYiA9PiAoe2Jsb2IsIGZpbGVuYW1lfSkpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe2Jsb2IsIGZpbGVuYW1lfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4gY29uc29sZS5lcnJvcihcIkRvd25sb2FkIGZhaWxlZDpcIiwgZXJyb3IpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChyZXF1ZXN0LnRyYWNrKSB8fCByZXF1ZXN0LnRyYWNrID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUZldGNoKHVybCwgZmV0Y2hDb25maWcsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUZldGNoKHVybCwgZmV0Y2hDb25maWcsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGV4ZWN1dGVGZXRjaCh1cmwsIGZldGNoQ29uZmlnLCB2aWV3SWQsIHN1Y2Nlc3NNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBmZXRjaChlbmNvZGVVUkkodXJsKSwgZmV0Y2hDb25maWcpXG4gICAgICAgICAgICAgICAgLnRoZW4oc3RhdHVzKVxuICAgICAgICAgICAgICAgIC50aGVuKGpzb24pXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKG51bGwsIGRhdGEsIHZpZXdJZCwgc3VjY2Vzc01lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5zdGF0dXMgPT09IDQwMSAmJiAhdXJsLmVuZHNXaXRoKCcvbG9nb3V0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm5hdmlnYXRlKCcvbG9naW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YShjb21wb25lbnQsIGRhdGEsIHZpZXdJZCwgc3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgfHwgVXRpbHMuaXNOdWxsKGRhdGEpIHx8IGRhdGEudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlZCkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhVHlwZSA9PT0gJ21lc3NhZ2UnKSB7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQoYXBwbGljYXRpb25NYW5hZ2VyLCB2aWV3SWQsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoY29tcG9uZW50LCB2aWV3SWQsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghVXRpbHMuaXNOdWxsKHN1Y2Nlc3NNZXNzYWdlKSkge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZVR5cGU6ICdTVUNDRVNTJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBhcHBsaWNhdGlvbk1hbmFnZXIucG9wdWxhdGVUZW1wbGF0ZShzdWNjZXNzTWVzc2FnZSwgcmVzcG9uc2UpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQoYXBwbGljYXRpb25NYW5hZ2VyLCB2aWV3SWQsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBldmVudCA9IG5ldyBFdmVudChjb21wb25lbnQsIHZpZXdJZCwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxufVxuXG5jb25zdCBpbnN0YW5jZSA9IG5ldyBSZXN0U2VydmljZSgpO1xuXG5leHBvcnQgY29uc3QgaW52b2tlUnBjID0gKHJlcXVlc3QpID0+IHtcbiAgICByZXR1cm4gaW5zdGFuY2UuaW52b2tlUnBjKHJlcXVlc3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IGludm9rZVJlc3QgPSAocmVxdWVzdCkgPT4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5pbnZva2VSZXN0KHJlcXVlc3QpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsb0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG1CQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFBNEQsU0FBQUQsdUJBQUFTLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxD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
407
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9wcm9wVHlwZXMiLCJfUmVzdFV0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImxvY2F0aW9uIiwiZXhwb3J0cyIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsIlJlc3RTZXJ2aWNlIiwiaXNQYXJhbVZhbHVlTnVsbCIsInBhcmFtVmFsdWUiLCJVdGlscyIsImlzTnVsbCIsImhhc093blByb3BlcnR5IiwiaW52b2tlUmVzdCIsInJlcXVlc3QiLCJzZXJ2aWNlIiwidXJsIiwic3RhcnRzV2l0aCIsImNvbmNhdCIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwicmVxdWVzdEJvZHkiLCJoZWFkZXJzIiwicGFyYW1ldGVycyIsInF1ZXJ5U3RyaW5nIiwicGF0aFBhcmFtZXRlcnMiLCJyZXF1ZXN0Qm9keVBhcmFtRm91bmQiLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInJlc29sdmVQYXJhbWV0ZXJWYWx1ZSIsImV2ZW50IiwiZGF0YSIsInZhbGlkYXRvciIsIm51bGxhYmxlIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsIm5hbWUiLCJyZXF1aXJlZCIsImVycm9yVHlwZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiaW5jbHVkZVBhcmFtZXRlclR5cGVzIiwidHlwZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXNvbHZlZFZhbHVlIiwiZW5jb2RlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiaW5zdGFuY2VUeXBlIiwiaW5kZXhPZiIsInJlcGxhY2UiLCJFcnJvciIsImNvbnRlbnRUeXBlIiwibWV0aG9kIiwidG9VcHBlckNhc2UiLCJmZXRjaFdpdGhDdXN0b21Db25maWciLCJ2aWV3SWQiLCJzZXJ2aWNlVHlwZSIsInNlY3VyZSIsImRvd25sb2FkIiwidGhlbiIsImNhdGNoIiwiYm9keSIsInBhdGgiLCJnZXRQcm9wZXJ0eUNoYWluUGF0aCIsInJldHVyblZhbHVlQmluZGluZyIsInZhbHVlT2JqZWN0IiwicHJvcGVydHkiLCJwcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YSIsImNvbXBvbmVudCIsInN1Y2Nlc3NNZXNzYWdlIiwiaW52b2tlUnBjIiwicnBjUmVxdWVzdCIsImlkIiwic3BsaXQiLCJzZXJ2aWNlSWQiLCJwcm9jZWR1cmVOYW1lIiwibW9kdWxlIiwidG9Mb3dlckNhc2UiLCJwYXJhbWV0ZXJDb25maWciLCJpbmRleCIsInZhbCIsInRyYWNrIiwiYWNjZXNzVG9rZW4iLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZFRva2VuIiwiRm9ybURhdGEiLCJmZXRjaENvbmZpZyIsImNvbmZpZyIsImFjY2VwdCIsImdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yIiwiZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvciIsImZldGNoIiwiZXJyb3JEYXRhIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJjb250ZW50RGlzcG9zaXRpb24iLCJnZXQiLCJmaWxlbmFtZSIsImluY2x1ZGVzIiwidHJpbSIsImJsb2IiLCJfcmVmIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImhyZWYiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJlcnJvciIsImNvbnNvbGUiLCJ0cmFja1Byb21pc2UiLCJleGVjdXRlRmV0Y2giLCJlbmNvZGVVUkkiLCJlbmRzV2l0aCIsImNsZWFyIiwibmF2aWdhdGUiLCJ0b1N0cmluZyIsInBhcnNlIiwiaWdub3JlZCIsImRhdGFUeXBlIiwiRXZlbnQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJNRVNTQUdFX0FSUklWRUQiLCJtZXNzYWdlVHlwZSIsInBvcHVsYXRlVGVtcGxhdGUiLCJpbnN0YW5jZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvUmVzdFNlcnZpY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFV0aWxzIGZyb20gJy4vVXRpbHMnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gJ3JlYWN0LXByb21pc2UtdHJhY2tlcic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IHtpbnN0YW5jZU9mfSBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtkb3dubG9hZCwgcG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tIFwiLi9SZXN0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IHN0YXR1cyA9IChyZXNwb25zZSkgPT4ge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2UpO1xuICAgIH1cbn07XG5cbmNvbnN0IGpzb24gPSAocmVzcG9uc2UpID0+IHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xufTtcblxuY2xhc3MgUmVzdFNlcnZpY2Uge1xuICAgIGlzUGFyYW1WYWx1ZU51bGwocGFyYW1WYWx1ZSkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHBhcmFtVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbVZhbHVlLmhhc093blByb3BlcnR5KCd2YWx1ZScpID8gVXRpbHMuaXNOdWxsKHBhcmFtVmFsdWUudmFsdWUpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgaW52b2tlUmVzdChyZXF1ZXN0KSB7XG4gICAgICAgIGxldCBzZXJ2aWNlID0gcmVxdWVzdC5zZXJ2aWNlO1xuICAgICAgICBsZXQgdXJsID0gc2VydmljZS51cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHNlcnZpY2UudXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykgP1xuICAgICAgICAgICAgc2VydmljZS51cmwgOiBsb2NhdGlvbiArIGAke2FwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgc2VydmljZS51cmx9YDtcbiAgICAgICAgbGV0IHJlcXVlc3RCb2R5ID0gbnVsbDtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBzZXJ2aWNlLmhlYWRlcnM7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UucGFyYW1ldGVycykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcXVlcnlTdHJpbmcgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcGF0aFBhcmFtZXRlcnMgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdEJvZHlQYXJhbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2Ygc2VydmljZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJWYWx1ZSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyLCByZXF1ZXN0LmV2ZW50ID8gcmVxdWVzdC5ldmVudC5kYXRhIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlci52YWxpZGF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoKHBhcmFtZXRlci52YWxpZGF0b3IubnVsbGFibGUgJiYgIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5udWxsYWJsZSwgcGFyYW1ldGVyLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJhbWV0ZXIudmFsaWRhdG9yLnJlcXVpcmVkICYmIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5yZXF1aXJlZCwgcGFyYW1ldGVyLm5hbWUpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pc1BhcmFtVmFsdWVOdWxsKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGU6ICdJTlZBTElEX1BBUkFNRVRFUicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgaHR0cFBhcmFtZXRlclR5cGUgPSBwYXJhbWV0ZXIuaHR0cFBhcmFtZXRlclR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoaHR0cFBhcmFtZXRlclR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1ldGVyVHlwZSA9ICdRVUVSWV9QQVJBTUVURVInO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnUVVFUllfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gJyYnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UuaW5jbHVkZVBhcmFtZXRlclR5cGVzKSAmJiBzZXJ2aWNlLmluY2x1ZGVQYXJhbWV0ZXJUeXBlcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVN0cmluZyArPSBwYXJhbWV0ZXJWYWx1ZS50eXBlICsgJzonO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9IHBhcmFtZXRlci5uYW1lICsgJz0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICh0eXBlb2YgcGFyYW1ldGVyVmFsdWUudmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ251bWJlcicgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFBhcmFtZXRlclR5cGUgPT09ICdQQVRIX1ZBUklBQkxFJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc29sdmVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5lbmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlclZhbHVlLnZhbHVlKSkgOiBwYXJhbWV0ZXJWYWx1ZS5pbnN0YW5jZVR5cGUgPT09ICdUeXBlZFZhbHVlJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlclZhbHVlLnZhbHVlKSA6IGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHR5cGVvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVyVmFsdWUudmFsdWUpIDogcGFyYW1ldGVyVmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlLnZhbHVlIDogcGFyYW1ldGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmFtZXRlciBoYXMgYSBuYW1lIGFuZCB0aGUgVVJMIGNvbnRhaW5zIHtuYW1lfSwgcmVwbGFjZSB0aGUgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXJhbWV0ZXIubmFtZSkgJiYgdXJsLmluZGV4T2YoJ3snICsgcGFyYW1ldGVyLm5hbWUgKyAnfScpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3snICsgcGFyYW1ldGVyLm5hbWUgKyAnfScsIHJlc29sdmVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHk6IGFwcGVuZCB0byBlbmQgb2YgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhQYXJhbWV0ZXJzICs9ICcvJyArIHJlc29sdmVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBQYXJhbWV0ZXJUeXBlID09PSAnSEVBREVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbcGFyYW1ldGVyLm5hbWVdID0gcGFyYW1ldGVyVmFsdWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFBhcmFtZXRlclR5cGUgPT09ICdSRVFVRVNUX0JPRFknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdEJvZHlQYXJhbUZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIk9ubHkgb25lIHJlcXVlc3QgYm9keSBpcyBwZXJtaXR0ZWRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhlIHNsb3QgYXMgdGFrZW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgbnVsbC4gQSBzZWNvbmQgUkVRVUVTVF9CT0RZIHBhcmFtIGlzIGEgY29uZmlnIGJ1Z1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWl0aGVyIHdheSwgYW5kIHdlIHdhbnQgaXQgdG8gc3VyZmFjZSBsb3VkbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVBhcmFtRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUGFyYW1WYWx1ZU51bGwocGFyYW1ldGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHkgPSBwYXJhbWV0ZXJWYWx1ZS5pbnN0YW5jZVR5cGUgPT09ICdUeXBlZFZhbHVlJyA/IHBhcmFtZXRlclZhbHVlLnZhbHVlIDogcGFyYW1ldGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocGF0aFBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gcGF0aFBhcmFtZXRlcnM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9IHF1ZXJ5U3RyaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvbnRlbnRUeXBlID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGVycykpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBIVFRQIG1ldGhvZC4gSG9ub3Igc2VydmljZS5tZXRob2Qgd2hlbiBwcm92aWRlZCBzb1xuICAgICAgICAgICAgLy8gY2FsbGVycyBjYW4gaXNzdWUgREVMRVRFLCBQVVQsIFBBVENIIChub3QganVzdCBHRVQvUE9TVCkuXG4gICAgICAgICAgICAvLyBEZWZhdWx0OiBQT1NUIHdoZW4gYSBib2R5IHdhcyBib3VuZCwgR0VUIG90aGVyd2lzZSDigJQgcHJlc2VydmVzXG4gICAgICAgICAgICAvLyB0aGUgaGlzdG9yaWNhbCBiZWhhdmlvdXIgZm9yIGNhbGxlcnMgdGhhdCBvbWl0IHNlcnZpY2UubWV0aG9kLlxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gc2VydmljZS5tZXRob2RcbiAgICAgICAgICAgICAgICA/IHNlcnZpY2UubWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICA6IChyZXF1ZXN0Qm9keSAhPT0gbnVsbCA/ICdQT1NUJyA6ICdHRVQnKTtcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3RCb2R5ICE9PSBudWxsICYmIG1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdBIHJlcXVlc3QgYm9keSBwYXJhbWV0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYSBHRVQgcmVxdWVzdCcpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERvd25sb2FkIHBhdGggKFBERiAvIEV4Y2VsKSBpcyBHRVQtb25seSBhbmQgdXNlcyBhIHNlcGFyYXRlXG4gICAgICAgICAgICAvLyBmZXRjaCBzaGFwZSAoYmxvYiBoYW5kbGluZyk7IGJyYW5jaCBmaXJzdC5cbiAgICAgICAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnICYmIChjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hXaXRoQ3VzdG9tQ29uZmlnKHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiByZXF1ZXN0LnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZTogcmVxdWVzdC5zZXJ2aWNlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3VyZTogcmVxdWVzdC5zZWN1cmUsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaW5nbGUgZGlzcGF0Y2ggZm9yIEdFVCAvIFBPU1QgLyBQVVQgLyBQQVRDSCAvIERFTEVURSAvIGV0Yy5cbiAgICAgICAgICAgIC8vIEJvZHkgaXMgcGFzc2VkIHRocm91Z2g7IHRoZSBmZXRjaCBsYXllciBkcm9wcyBpdCBmb3IgdmVyYnMgdGhhdFxuICAgICAgICAgICAgLy8gZm9yYmlkIG9uZS4gREVMRVRFIHdpdGggYSBib2R5IGlzIHVuY29tbW9uIGJ1dCBwZXJtaXR0ZWQgYnlcbiAgICAgICAgICAgIC8vIEhUVFAg4oCUIHdlIGRvbid0IGJsb2NrIGl0IGhlcmUuXG4gICAgICAgICAgICB0aGlzLmZldGNoV2l0aEN1c3RvbUNvbmZpZyh7XG4gICAgICAgICAgICAgICAgdmlld0lkOiByZXF1ZXN0LnZpZXdJZCxcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgc2VydmljZVR5cGU6IHJlcXVlc3Quc2VydmljZS50eXBlLFxuICAgICAgICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICAgICAgICBzZWN1cmU6ICFzZXJ2aWNlLnVybC5zdGFydHNXaXRoKCdodHRwOi8vJyksXG4gICAgICAgICAgICAgICAgYm9keTogcmVxdWVzdEJvZHksXG4gICAgICAgICAgICAgICAgaGVhZGVyc1xuICAgICAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IFV0aWxzLmdldFByb3BlcnR5Q2hhaW5QYXRoKHJlcXVlc3QucmV0dXJuVmFsdWVCaW5kaW5nKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgucHJvcGVydHkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3RbcGF0aC5wcm9wZXJ0eV0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucHJvY2Vzc1N1Y2Nlc3NmdWxSZXNwb25zZURhdGEocmVxdWVzdC5jb21wb25lbnQsIHJlc3BvbnNlLCByZXF1ZXN0LnZpZXdJZCwgcmVxdWVzdC5zdWNjZXNzTWVzc2FnZSkpO1xuICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW52b2tlUnBjKHJlcXVlc3QpIHtcbiAgICAgICAgbGV0IHJwY1JlcXVlc3QgPSB7fTtcbiAgICAgICAgcnBjUmVxdWVzdC5pZCA9IHJlcXVlc3Qudmlld0lkO1xuXG4gICAgICAgIGxldCBzcGxpdCA9IHJlcXVlc3Quc2VydmljZS5zZXJ2aWNlSWQuc3BsaXQoJy4nKTtcbiAgICAgICAgcnBjUmVxdWVzdC5zZXJ2aWNlID0gc3BsaXRbMV07XG4gICAgICAgIHJwY1JlcXVlc3QubWV0aG9kID0gcmVxdWVzdC5zZXJ2aWNlLnByb2NlZHVyZU5hbWU7XG5cbiAgICAgICAgbGV0IG1vZHVsZSA9IHNwbGl0WzBdLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB7fTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHJlcXVlc3Quc2VydmljZS5wYXJhbWV0ZXJzKSAmJiByZXF1ZXN0LnNlcnZpY2UucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcnBjUmVxdWVzdC5wYXJhbWV0ZXJzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXF1ZXN0LnNlcnZpY2UucGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyQ29uZmlnID0gcmVxdWVzdC5zZXJ2aWNlLnBhcmFtZXRlcnNbaV07XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLm5hbWUgPSBwYXJhbWV0ZXJDb25maWcubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmluZGV4ID0gcGFyYW1ldGVyQ29uZmlnLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlclZhbHVlKHBhcmFtZXRlckNvbmZpZywgcmVxdWVzdC5ldmVudCA/IHJlcXVlc3QuZXZlbnQuZGF0YSA6IG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci52YWx1ZSA9IHZhbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci50eXBlID0gdmFsLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtZXRlci52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHBhcmFtZXRlci50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLnR5cGUgPSAnU3RyaW5nJztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlci52YWxpZGF0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoKHBhcmFtZXRlci52YWxpZGF0b3IubnVsbGFibGUgJiYgIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5udWxsYWJsZSwgcGFyYW1ldGVyLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJhbWV0ZXIudmFsaWRhdG9yLnJlcXVpcmVkICYmIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyYW1ldGVyLnZhbGlkYXRvci5yZXF1aXJlZCwgcGFyYW1ldGVyLm5hbWUpKSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5pc1BhcmFtVmFsdWVOdWxsKHBhcmFtZXRlci52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlOiAnSU5WQUxJRF9QQVJBTUVURVInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlckNvbmZpZy5odHRwUGFyYW1ldGVyVHlwZSA9PT0gJ0hFQURFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcmFtZXRlci52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1twYXJhbWV0ZXIubmFtZV0gPSBwYXJhbWV0ZXIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBycGNSZXF1ZXN0LnBhcmFtZXRlcnMucHVzaChwYXJhbWV0ZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZldGNoV2l0aEN1c3RvbUNvbmZpZyh7XG4gICAgICAgICAgICAgICAgdmlld0lkOiByZXF1ZXN0LnZpZXdJZCxcbiAgICAgICAgICAgICAgICB1cmw6IGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyAnLycgKyBtb2R1bGUgKyAnL2FwaS92MS9ycGMvaW52b2tlJyxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZTogcmVxdWVzdC5zZXJ2aWNlLnR5cGUsXG4gICAgICAgICAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGJvZHk6IHJwY1JlcXVlc3QsXG4gICAgICAgICAgICAgICAgdHJhY2s6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5yZXR1cm5WYWx1ZUJpbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoID0gVXRpbHMuZ2V0UHJvcGVydHlDaGFpblBhdGgocmVxdWVzdC5yZXR1cm5WYWx1ZUJpbmRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGF0aC52YWx1ZU9iamVjdCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3RbcGF0aC5wcm9wZXJ0eV0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5wcm9jZXNzU3VjY2Vzc2Z1bFJlc3BvbnNlRGF0YShyZXF1ZXN0LmNvbXBvbmVudCwgcmVzcG9uc2UsIHJlcXVlc3Qudmlld0lkLCByZXF1ZXN0LnN1Y2Nlc3NNZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmZXRjaFdpdGhDdXN0b21Db25maWcocmVxdWVzdCkge1xuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgbGV0IGRhdGEgPSByZXF1ZXN0LmJvZHkgPyAocmVxdWVzdC5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpID8gcmVxdWVzdC5ib2R5IDogSlNPTi5zdHJpbmdpZnkocmVxdWVzdC5ib2R5KSA6IG51bGw7XG4gICAgICAgIGxldCBmZXRjaENvbmZpZyA9IHJlcXVlc3QuY29uZmlnO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGZldGNoQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocmVxdWVzdC5zZWN1cmUpIHx8IHJlcXVlc3Quc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBVdGlscy5pc051bGwocmVxdWVzdC5tZXRob2QpID8gJ0dFVCcgOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IHJlcXVlc3QuY29udGVudFR5cGUgPyByZXF1ZXN0LmNvbnRlbnRUeXBlIDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRhdGFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogVXRpbHMuaXNOdWxsKHJlcXVlc3QubWV0aG9kKSA/ICdHRVQnIDogcmVxdWVzdC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmNvbnRlbnRUeXBlID8gcmVxdWVzdC5jb250ZW50VHlwZSA6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogcmVxdWVzdC5hY2NlcHQgPyByZXF1ZXN0LmFjY2VwdCA6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRhdGFcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoJ3Jlc3QnID09PSByZXF1ZXN0LnNlcnZpY2VUeXBlICYmICEocmVxdWVzdC5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gcmVxdWVzdC5jb250ZW50VHlwZSA/IHJlcXVlc3QuY29udGVudFR5cGUgOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKChyZXF1ZXN0LmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENvbmZpZy5oZWFkZXJzWydBY2NlcHQnXSA9IHJlcXVlc3QuYWNjZXB0ID8gcmVxdWVzdC5hY2NlcHQgOiAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVxdWVzdC5jb250ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGZldGNoQ29uZmlnLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gcmVxdWVzdC5jb250ZW50VHlwZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHVybCA9IHJlcXVlc3QudXJsO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3QuZG93bmxvYWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cmwgKz0gJyYnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vdXJsICs9ICdhY2Nlc3NfdG9rZW49JyArIGFjY2Vzc1Rva2VuO1xuICAgICAgICAgICAgICAgIC8vdXJsICs9ICcmaWRUb2tlbj0nICsgaWRUb2tlbjtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJyZ0aGVtZVByaW1hcnlDb2xvcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvcigpKTtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJyZ0aGVtZVNlY29uZGFyeUNvbG9yPScgKyBlbmNvZGVVUklDb21wb25lbnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uU2Vjb25kYXJ5Q29sb3IoKSk7XG5cbiAgICAgICAgICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkVG9rZW4nOiBpZFRva2VuXG5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpLnRoZW4oZXJyb3JEYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciAke3Jlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3JEYXRhLm1lc3NhZ2UgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnREaXNwb3NpdGlvbiA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1EaXNwb3NpdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IFwiZG93bmxvYWRlZC1maWxlXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50RGlzcG9zaXRpb24gJiYgY29udGVudERpc3Bvc2l0aW9uLmluY2x1ZGVzKFwiZmlsZW5hbWU9XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBjb250ZW50RGlzcG9zaXRpb24uc3BsaXQoXCJmaWxlbmFtZT1cIilbMV0udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvW1wiJ10vZywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCkudGhlbihibG9iID0+ICh7YmxvYiwgZmlsZW5hbWV9KSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7YmxvYiwgZmlsZW5hbWV9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiBjb25zb2xlLmVycm9yKFwiRG93bmxvYWQgZmFpbGVkOlwiLCBlcnJvcikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJlcXVlc3QudHJhY2spIHx8IHJlcXVlc3QudHJhY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlRmV0Y2godXJsLCBmZXRjaENvbmZpZywgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlRmV0Y2godXJsLCBmZXRjaENvbmZpZywgcmVxdWVzdC52aWV3SWQsIHJlcXVlc3Quc3VjY2Vzc01lc3NhZ2UpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZXhlY3V0ZUZldGNoKHVybCwgZmV0Y2hDb25maWcsIHZpZXdJZCwgc3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGZldGNoKGVuY29kZVVSSSh1cmwpLCBmZXRjaENvbmZpZylcbiAgICAgICAgICAgICAgICAudGhlbihzdGF0dXMpXG4gICAgICAgICAgICAgICAgLnRoZW4oanNvbilcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucHJvY2Vzc1N1Y2Nlc3NmdWxSZXNwb25zZURhdGEobnVsbCwgZGF0YSwgdmlld0lkLCBzdWNjZXNzTWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnN0YXR1cyA9PT0gNDAxICYmICF1cmwuZW5kc1dpdGgoJy9sb2dvdXQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIubmF2aWdhdGUoJy9sb2dpbicpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByb2Nlc3NTdWNjZXNzZnVsUmVzcG9uc2VEYXRhKGNvbXBvbmVudCwgZGF0YSwgdmlld0lkLCBzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgICBsZXQgcmVzcG9uc2U7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyB8fCBVdGlscy5pc051bGwoZGF0YSkgfHwgZGF0YS50b1N0cmluZygpXG4gICAgICAgICAgICAudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGFUeXBlID09PSAnbWVzc2FnZScpIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChhcHBsaWNhdGlvbk1hbmFnZXIsIHZpZXdJZCwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuTUVTU0FHRV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBldmVudCA9IG5ldyBFdmVudChjb21wb25lbnQsIHZpZXdJZCwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFVdGlscy5pc051bGwoc3VjY2Vzc01lc3NhZ2UpKSB7XG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZTogJ1NVQ0NFU1MnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGFwcGxpY2F0aW9uTWFuYWdlci5wb3B1bGF0ZVRlbXBsYXRlKHN1Y2Nlc3NNZXNzYWdlLCByZXNwb25zZSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChhcHBsaWNhdGlvbk1hbmFnZXIsIHZpZXdJZCwgbWVzc2FnZSk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcblxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGV2ZW50ID0gbmV3IEV2ZW50KGNvbXBvbmVudCwgdmlld0lkLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG59XG5cbmNvbnN0IGluc3RhbmNlID0gbmV3IFJlc3RTZXJ2aWNlKCk7XG5cbmV4cG9ydCBjb25zdCBpbnZva2VScGMgPSAocmVxdWVzdCkgPT4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5pbnZva2VScGMocmVxdWVzdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW52b2tlUmVzdCA9IChyZXF1ZXN0KSA9PiB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmludm9rZVJlc3QocmVxdWVzdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxvQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUE0RCxTQUFBRCx1QkFBQVMsQ0FBQSxXQUFBQSxDQUFB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
@@ -20,12 +20,35 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
20
20
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
21
21
  const KEY = exports.KEY = 'Ngo9BigBOggjHTQxAR8/V1JGaF5cXGpCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdlWX5ceHVRQ2BYUUdwX0NWYEs=';
22
22
  (0, _ej2Base.registerLicense)(KEY);
23
- const location = exports.location = window.location.protocol + '//' + window.location.hostname;
24
- const DOCSVC = exports.DOCSVC = "/docs/api/v1/syncfusion";
23
+ function resolveLocation() {
24
+ if (process.env.REACT_APP_DOCS_API_HOST) {
25
+ return process.env.REACT_APP_DOCS_API_HOST;
26
+ }
27
+ return window.location.protocol + '//' + window.location.hostname;
28
+ }
29
+ function resolveDocSvc() {
30
+ if (process.env.REACT_APP_DOCS_API_PATH) {
31
+ return process.env.REACT_APP_DOCS_API_PATH;
32
+ }
33
+ return "/docs/api/v1/syncfusion";
34
+ }
35
+ const location = exports.location = resolveLocation();
36
+ const DOCSVC = exports.DOCSVC = resolveDocSvc();
37
+
38
+ // When DOCSVC is an absolute URL (production stopgap pointing at the
39
+ // Syncfusion-hosted backend while our own docs service is upgraded),
40
+ // use it verbatim and skip the host + contextRoot prefix. Trailing
41
+ // slash is stripped so `${...}/Import` doesn't produce a double slash.
42
+ function getDocsBase() {
43
+ if (/^https?:\/\//i.test(DOCSVC)) {
44
+ return DOCSVC.replace(/\/+$/, '');
45
+ }
46
+ return location + _ApplicationManager.default.getContextRoot() + DOCSVC;
47
+ }
25
48
  function getServiceUrl() {
26
49
  const accessToken = sessionStorage.getItem('accessToken');
27
50
  const idToken = sessionStorage.getItem('idToken');
28
- const base = "".concat(location + _ApplicationManager.default.getContextRoot() + DOCSVC, "/Import");
51
+ const base = "".concat(getDocsBase(), "/Import");
29
52
  const params = new URLSearchParams();
30
53
  if (accessToken) params.set('access_token', accessToken);
31
54
  if (idToken) params.set('id_token', idToken);
@@ -193,7 +216,7 @@ const WordDocumentViewer = props => {
193
216
  formData.append('files', file, 'document.docx');
194
217
  const accessToken = sessionStorage.getItem('accessToken');
195
218
  const idToken = sessionStorage.getItem('idToken');
196
- (0, _reactPromiseTracker.trackPromise)(fetch("".concat(location + _ApplicationManager.default.getContextRoot() + DOCSVC, "/Import"), {
219
+ (0, _reactPromiseTracker.trackPromise)(fetch("".concat(getDocsBase(), "/Import"), {
197
220
  method: 'POST',
198
221
  headers: {
199
222
  'Authorization': 'Bearer ' + accessToken,
@@ -646,4 +669,4 @@ const WordDocumentViewer = props => {
646
669
  }));
647
670
  };
648
671
  var _default = exports.default = WordDocumentViewer;
649
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkRPQ1NWQyIsImdldFNlcnZpY2VVcmwiLCJhY2Nlc3NUb2tlbiIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkVG9rZW4iLCJiYXNlIiwiY29uY2F0IiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0Q29udGV4dFJvb3QiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJxcyIsInRvU3RyaW5nIiwiRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQiLCJJbmplY3QiLCJUb29sYmFyIiwiTEVWRUxfRk1UIiwiYXBwbHlMZXZlbCIsImVkIiwibGV2ZWwiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkZXB0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJzZWxlY3Rpb24iLCJwYXJhZ3JhcGhGb3JtYXQiLCJsaXN0TGV2ZWxOdW1iZXIiLCJhcHBseU51bWJlcmluZyIsInVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0IiwicGFyZW50UmVmIiwiY29udGFpbmVyUmVmIiwiaGVpZ2h0Iiwic2V0SGVpZ2h0IiwidXNlU3RhdGUiLCJtZWFzdXJlIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm5ld0hlaWdodCIsImZsb29yIiwiY29uc29sZSIsImxvZyIsInVzZVJlc2l6ZU9ic2VydmVyIiwidXNlRWZmZWN0IiwicmVzaXplIiwiZG9jdW1lbnRFZGl0b3IiLCJXb3JkRG9jdW1lbnRWaWV3ZXIiLCJwcm9wcyIsImNvbnRhaW5lciIsInNldENvbnRhaW5lciIsIlJlYWN0IiwiaXRlbXMiLCJzZXRJdGVtcyIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwicmVSZW5kZXJpbmciLCJzZXRSZVJlbmRlcmluZyIsImpzb24iLCJzZXRKc29uIiwiZXJyb3JNZXNzYWdlIiwic2V0RXJyb3JNZXNzYWdlIiwiY3VycmVudFRleHQiLCJ1c2VSZWYiLCJhY3RpdmVBbmNob3JSZWYiLCJhbmNob3JFbmQiLCJkZWxldGVMb2NrUmVmIiwibG9hZGluZyIsInVzZU9uRnVsbHlWaXNpYmxlIiwiZWwiLCJlZGl0b3JIZWlnaHQiLCJpc1BvaW50SW5zaWRlRWxlbWVudCIsIngiLCJ5IiwibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiZ2V0Vmlld2VyRWxlbWVudCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImlzTmF2aWdhdGlvbktleSIsImluY2x1ZGVzIiwia2V5Iiwibm9ybWFsaXplQW5jaG9yIiwidmFsdWUiLCJyZXBsYWNlIiwidmlld2VyRWxlbWVudCIsImluc2VydFJlYWRvbmx5QW5jaG9yIiwiZXZlbnREYXRhIiwiZHJvcFBvc2l0aW9uIiwiZG9jIiwiZWRpdG9yIiwic2VsIiwiY2FyZXRPZmZzZXQiLCJzdGFydE9mZnNldCIsImV4aXN0aW5nQW5jaG9yIiwiZ3JhYkFuY2hvcldpdGhCb3VuZHMiLCJhdFN0YXJ0IiwiYXRFbmQiLCJlbmRPZmZzZXQiLCJ3YXJuIiwidG9rZW4iLCJpbnNlcnRUZXh0IiwiZHJvcERhdGEiLCJhcGkiLCJnZXRWYWx1ZSIsInNhdmVBc0Jhc2U2NCIsInZhbHVlSGFuZGxlciIsIm51bWJlcmluZ0l0ZW1zIiwidGV4dCIsInNlcGFyYXRvciIsInRvb2xiYXJJdGVtcyIsImNvbW1lbnRzT25seSIsInRvb2x0aXBUZXh0IiwicHJlZml4SWNvbiIsImNvbW1hbmQiLCJlbmFibGVVcGxvYWQiLCJ1bnNoaWZ0IiwiX3Byb3BzJGZpbGUiLCJmaWxlIiwiYmFzZTY0IiwiYXJyYXlCdWZmZXIiLCJVdGlscyIsImJhc2U2NFRvQXJyYXlCdWZmZXIiLCJCbG9iIiwidHlwZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0dXBDb250YWluZXIiLCJjdXJyZW50VXNlciIsImdldFVzZXJEZXRhaWxzIiwibmFtZSIsInN1cm5hbWUiLCJhbGxvd1VucmVzb2x2ZWRDaGFuZ2VzIiwicmV2aXNpb25zIiwiX3Byb3BzJGZpbGUyIiwiX3Byb3BzJGZpbGUzIiwic3RvcFByb3RlY3Rpb24iLCJibG9iIiwic2F2ZUFzQmxvYiIsImVuZm9yY2VQcm90ZWN0aW9uIiwiRmlsZSIsImV4dHJhY3REb2N1bWVudFRleHQiLCJvcmlnaW5hbFN0YXJ0Iiwib3JpZ2luYWxFbmQiLCJzZWxlY3RBbGwiLCJnZXRUZXh0Iiwic2VsZWN0IiwiZXh0cmFjdEFuY2hvclRva2VucyIsInJlZ2V4IiwidG9rZW5zIiwiU2V0IiwibWF0Y2giLCJleGVjIiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiaXNDYXJldFdpdGhpblJhbmdlIiwiY2FyZXQiLCJzdGFydCIsImVuZCIsInBhcmFncmFwaCIsInhJbiIsInlJbiIsImRlbGV0ZUN1cnJlbnRBbmNob3IiLCJkb2NFZGl0b3IiLCJhbmNob3IiLCJ1cGRhdGVBY3RpdmVBbmNob3IiLCJzY2FuUmlnaHRVbnRpbEFuY2hvciIsIm9yaWdpbk9mZnNldCIsIm1heFNjYW4iLCJidW1wT2Zmc2V0IiwiY2giLCJ0ZXN0IiwibmV4dCIsInNjYW5MZWZ0VW50aWxBbmNob3IiLCJwcmV2IiwiZ2V0Q2hhckF0Iiwib2Zmc2V0IiwiaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQiLCJjMCIsImMxIiwiaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IiLCJzZWxlY3RDdXJyZW50V29yZCIsInNjYW5TdGFydCIsImlzQ2FyZXRBdEVuZCIsImRlbHRhIiwicGFydHMiLCJzcGxpdCIsImlkeCIsInBhcnNlSW50Iiwiam9pbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJhcmdzIiwiZXZlbnQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJlZGl0b3JIaXN0b3J5IiwidW5kbyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY3RybEtleSIsIm1ldGFLZXkiLCJvbk1vdXNlVXAiLCJjbGllbnRYIiwiY2xpZW50WSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkb2N1bWVudENoYW5nZSIsImVuYWJsZVRyYWNrQ2hhbmdlcyIsImlzTnVsbCIsInRyYWNrQ2hhbmdlcyIsInJlYWRPbmx5IiwiaXNSZWFkT25seSIsInZhbHVlQ2hhbmdlSGFuZGxlciIsImRpc2FibGVBY2NlcHRDaGFuZ2VzIiwiYWNjZXB0QnV0dG9ucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJhY2NlcHRCdXR0b24iLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJkaXNhYmxlUmVqZWN0Q2hhbmdlcyIsInJlamVjdEJ1dHRvbnMiLCJyZWplY3RCdXR0b24iLCJvcGVuIiwib25Ub29sYmFyQ2xpY2siLCJfY29udGFpbmVyJGRvY3VtZW50RWQiLCJpdGVtIiwiYXBwbHlCdWxsZXQiLCJjbGVhckxpc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJyZWYiLCJ3aWR0aCIsImZsZXhXcmFwIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25Db250ZW50IiwicGFkZGluZyIsIm1heEhlaWdodCIsInZhcmlhbnQiLCJzaG93Iiwib25DbG9zZSIsImRpc21pc3NpYmxlIiwid2l0aCIsImNvbG9yIiwic2NvcGUiLCJjcmVhdGVkIiwiZW5hYmxlUGVyc2lzdGVuY2UiLCJ0b29sYmFyQ2xpY2siLCJyZXN0cmljdEVkaXRpbmciLCJzaG93UHJvcGVydGllc1BhbmUiLCJlbmFibGVBdXRvRm9jdXMiLCJzZXJ2aWNlVXJsIiwiZW5hYmxlVG9vbGJhciIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1dvcmREb2N1bWVudFZpZXdlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dHJhY2tQcm9taXNlfSBmcm9tIFwicmVhY3QtcHJvbWlzZS10cmFja2VyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcIi4uL1V0aWxzXCI7XG5pbXBvcnQge0RvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50LCBUb29sYmFyfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcmVhY3QtZG9jdW1lbnRlZGl0b3InO1xuaW1wb3J0IFwiLi9Eb2N1bWVudFRlbXBsYXRlRGVzaWduZXJDb21wb25lbnQuY3NzXCJcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtyZWdpc3RlckxpY2Vuc2V9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xuaW1wb3J0IEFsZXJ0IGZyb20gXCJyZWFjdC1ib290c3RyYXAvQWxlcnRcIjtcbmltcG9ydCBMb3R0aWVJY29uIGZyb20gXCIuL0xvdHRpZUljb25cIjtcbmltcG9ydCBcIi4vV29yZERvY3VtZW50Vmlld2VyLmNzc1wiXG5pbXBvcnQge3VzZVN0YXRlLCB1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZVJlc2l6ZU9ic2VydmVyfSBmcm9tIFwiLi9vYnNlcnZlcnMvdXNlUmVzaXplT2JzZXJ2ZXJcIjtcbmltcG9ydCB7dXNlT25GdWxseVZpc2libGV9IGZyb20gXCIuL29ic2VydmVycy91c2VPbkZ1bGx5VmlzaWJsZVwiO1xuXG5leHBvcnQgY29uc3QgS0VZID0gJ05nbzlCaWdCT2dnakhUUXhBUjgvVjFKR2FGNWNYR3BDZjFGcFJtSkdkbGQ1ZlVWSFlWWlVUWHhhUzAwRE5IVlJka2RsV1g1Y2VIVlJRMkJZVVVkd1gwTldZRXM9JztcbnJlZ2lzdGVyTGljZW5zZShLRVkpO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuZXhwb3J0IGNvbnN0IERPQ1NWQyA9IFwiL2RvY3MvYXBpL3YxL3N5bmNmdXNpb25cIjtcblxuZnVuY3Rpb24gZ2V0U2VydmljZVVybCgpIHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcbiAgICBjb25zdCBiYXNlID0gYCR7bG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIERPQ1NWQ30vSW1wb3J0YDtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKGFjY2Vzc1Rva2VuKSBwYXJhbXMuc2V0KCdhY2Nlc3NfdG9rZW4nLCBhY2Nlc3NUb2tlbik7XG4gICAgaWYgKGlkVG9rZW4pIHBhcmFtcy5zZXQoJ2lkX3Rva2VuJywgaWRUb2tlbik7XG4gICAgY29uc3QgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gcXMgPyBgJHtiYXNlfT8ke3FzfWAgOiBiYXNlO1xufVxuXG5Eb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudC5JbmplY3QoVG9vbGJhcik7XG5cbmNvbnN0IExFVkVMX0ZNVCA9IFsnJTEuJywgJyUxLiUyLicsICclMS4lMi4lMy4nXTtcblxuZnVuY3Rpb24gYXBwbHlMZXZlbChlZCwgbGV2ZWwgPSAwKSB7XG4gICAgY29uc3QgZGVwdGggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsZXZlbCwgTEVWRUxfRk1ULmxlbmd0aCAtIDEpKTtcbiAgICBlZC5zZWxlY3Rpb24ucGFyYWdyYXBoRm9ybWF0Lmxpc3RMZXZlbE51bWJlciA9IGRlcHRoO1xuICAgIGVkLmFwcGx5TnVtYmVyaW5nKExFVkVMX0ZNVFtkZXB0aF0sICdBcmFiaWMnKTtcbn1cblxuZnVuY3Rpb24gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpIHtcbiAgICBjb25zdCBbaGVpZ2h0LCBzZXRIZWlnaHRdID0gdXNlU3RhdGUoMCk7XG5cbiAgICBjb25zdCBtZWFzdXJlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXBhcmVudFJlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmVjdCA9IHBhcmVudFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLmZsb29yKHJlY3QuaGVpZ2h0KTtcblxuICAgICAgICBpZiAobmV3SGVpZ2h0ID4gMCAmJiBuZXdIZWlnaHQgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJNRUFTVVJFIDogXCIsIG5ld0hlaWdodCk7XG4gICAgICAgICAgICBzZXRIZWlnaHQobmV3SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH0sIFtwYXJlbnRSZWYsIGhlaWdodF0pO1xuXG4gICAgLy8g8J+UgSBSZXNpemUgb2JzZXJ2ZXJcbiAgICB1c2VSZXNpemVPYnNlcnZlcihwYXJlbnRSZWYsIG1lYXN1cmUpO1xuXG4gICAgLy8g4pqhIFN5bmNmdXNpb24gcmVzaXplIHRyaWdnZXJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBzaWxlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtoZWlnaHQsIGNvbnRhaW5lclJlZl0pO1xuXG4gICAgcmV0dXJuIGhlaWdodDtcbn1cblxuY29uc3QgV29yZERvY3VtZW50Vmlld2VyID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW2NvbnRhaW5lciwgc2V0Q29udGFpbmVyXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3JlUmVuZGVyaW5nLCBzZXRSZVJlbmRlcmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2pzb24sIHNldEpzb25dID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2Vycm9yTWVzc2FnZSwgc2V0RXJyb3JNZXNzYWdlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbnRUZXh0ID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFjdGl2ZUFuY2hvclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhbmNob3JFbmQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGRlbGV0ZUxvY2tSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGxvYWRpbmcgPSB1c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgcGFyZW50UmVmID0gdXNlT25GdWxseVZpc2libGUoKGVsKSA9PiB7XG4gICAgICAgIGlmICghcmVSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgc2V0UmVSZW5kZXJpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBlZGl0b3JIZWlnaHQgPSB1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodChwYXJlbnRSZWYsIGNvbnRhaW5lclJlZik7XG5cbiAgICBmdW5jdGlvbiBpc1BvaW50SW5zaWRlRWxlbWVudCh4LCB5LCBlbCkge1xuICAgICAgICBpZiAoIWVsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeCA+PSByZWN0LmxlZnQgJiZcbiAgICAgICAgICAgIHggPD0gcmVjdC5yaWdodCAmJlxuICAgICAgICAgICAgeSA+PSByZWN0LnRvcCAmJlxuICAgICAgICAgICAgeSA8PSByZWN0LmJvdHRvbVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFZpZXdlckVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgIGAke3Byb3BzLmlkfS1jb250YWluZXJfZWRpdG9yX3ZpZXdlckNvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05hdmlnYXRpb25LZXkoZSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJyxcbiAgICAgICAgICAgICdIb21lJywgJ0VuZCcsICdQYWdlVXAnLCAnUGFnZURvd24nXG4gICAgICAgIF0uaW5jbHVkZXMoZS5rZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUFuY2hvcih2YWx1ZSkge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcW1xcW3xcXF1cXF0kL2csICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL148PHw+PiQvZywgJycpO1xuICAgIH1cblxuICAgIGxldCB2aWV3ZXJFbGVtZW50ID0gZ2V0Vmlld2VyRWxlbWVudCgpO1xuXG4gICAgZnVuY3Rpb24gaW5zZXJ0UmVhZG9ubHlBbmNob3IoZXZlbnREYXRhLCBkcm9wUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKCFjb250YWluZXI/LmRvY3VtZW50RWRpdG9yKSByZXR1cm47XG4gICAgICAgIGlmICghZHJvcFBvc2l0aW9uKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCFpc1BvaW50SW5zaWRlRWxlbWVudChkcm9wUG9zaXRpb24ueCwgZHJvcFBvc2l0aW9uLnksIHZpZXdlckVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkb2MgPSBjb250YWluZXIuZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IGVkID0gZG9jLmVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsID0gZG9jLnNlbGVjdGlvbjtcbiAgICAgICAgaWYgKCFlZCB8fCAhc2VsKSByZXR1cm47XG5cbiAgICAgICAgLy8gUmVqZWN0IGRyb3AgaWYgY3Vyc29yIGlzIHN0cmljdGx5IGluc2lkZSBhbiBleGlzdGluZyBhbmNob3JcbiAgICAgICAgLy8gQWxsb3cgZHJvcHBpbmcgYXQgdGhlIGV4YWN0IHN0YXJ0IG9yIGVuZCBib3VuZGFyeVxuICAgICAgICBjb25zdCBjYXJldE9mZnNldCA9IHNlbC5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBbmNob3IgPSBncmFiQW5jaG9yV2l0aEJvdW5kcyhjb250YWluZXIpO1xuICAgICAgICBpZiAoZXhpc3RpbmdBbmNob3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0U3RhcnQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3Iuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBhdEVuZCA9IGNhcmV0T2Zmc2V0ID09PSBleGlzdGluZ0FuY2hvci5lbmRPZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIWF0U3RhcnQgJiYgIWF0RW5kKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRHJvcCByZWplY3RlZCDigJQgY3Vyc29yIGlzIGluc2lkZSBhbmNob3I6IFwiICsgZXhpc3RpbmdBbmNob3IudG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRva2VuID0gYFtbJHtub3JtYWxpemVBbmNob3IoZXZlbnREYXRhKX1dXWA7XG4gICAgICAgIGVkLmluc2VydFRleHQodG9rZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BEYXRhID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFZhbHVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3I6IGFzeW5jICh2YWx1ZSwgZHJvcFBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgZHJvcERhdGEuY3VycmVudCA9IHt2YWx1ZSwgZHJvcFBvc2l0aW9ufTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMudmFsdWVIYW5kbGVyLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbnVtYmVyaW5nSXRlbXMgPSBbXG4gICAgICAgIHtpZDogJ2x2bC0wJywgdGV4dDogJzEuJ30sXG4gICAgICAgIHtpZDogJ2x2bC0xJywgdGV4dDogJzEuMSd9LFxuICAgICAgICB7aWQ6ICdsdmwtMicsIHRleHQ6ICcxLjEuMSd9LFxuICAgICAgICB7c2VwYXJhdG9yOiB0cnVlfSxcbiAgICAgICAge2lkOiAnY2xlYXInLCB0ZXh0OiAnQ2xlYXIgbGlzdCd9LFxuICAgIF07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgdG9vbGJhckl0ZW1zID0gcHJvcHMuY29tbWVudHNPbmx5ID9cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIlVuZG9cIixcbiAgICAgICAgICAgICAgICBcIlJlZG9cIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIHtpZDogJ2J1bGxldHMnLCB0ZXh0OiAn4oCiIEJ1bGxldHMnLCB0b29sdGlwVGV4dDogJ0J1bGxldGVkIGxpc3QnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIHt0b29sdGlwVGV4dDogJ0JvbGQnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWJvbGQnLCBjb21tYW5kOiAnQm9sZCd9LFxuICAgICAgICAgICAgICAgIHt0b29sdGlwVGV4dDogJ0l0YWxpYycsIHByZWZpeEljb246ICdlLWljb25zIGUtaXRhbGljJywgY29tbWFuZDogJ0l0YWxpYyd9LFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJJbWFnZVwiLFxuICAgICAgICAgICAgICAgIFwiVGFibGVcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSGVhZGVyXCIsXG4gICAgICAgICAgICAgICAgXCJGb290ZXJcIixcbiAgICAgICAgICAgICAgICBcIlBhZ2VTZXR1cFwiLFxuICAgICAgICAgICAgICAgIFwiUGFnZU51bWJlclwiLFxuICAgICAgICAgICAgICAgIFwiQnJlYWtcIixcbiAgICAgICAgICAgICAgICBcIkluc2VydEZvb3Rub3RlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkZpbmRcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiQ29tbWVudHNcIlxuICAgICAgICAgICAgXVxuXG4gICAgICAgIGlmIChwcm9wcy5lbmFibGVVcGxvYWQpIHtcbiAgICAgICAgICAgIHRvb2xiYXJJdGVtcy51bnNoaWZ0KFwiT3BlblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEl0ZW1zKHRvb2xiYXJJdGVtcyk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmZpbGU/LmJhc2U2NCkge1xuICAgICAgICAgICAgbGV0IGJhc2U2NCA9IHByb3BzLmZpbGUuYmFzZTY0O1xuICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBVdGlscy5iYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW2FycmF5QnVmZmVyXSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLmZpbGUudHlwZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZSwgJ2RvY3VtZW50LmRvY3gnKTtcblxuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgIGZldGNoKFxuICAgICAgICAgICAgICAgICAgICBgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgRE9DU1ZDfS9JbXBvcnRgLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZFRva2VuJzogaWRUb2tlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SnNvbihqc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5maWxlXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocmVSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICB9LCAxXzAwMCk7XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgfVxuICAgIH0sIFtyZVJlbmRlcmluZ10pO1xuXG4gICAgZnVuY3Rpb24gc2V0dXBDb250YWluZXIoKSB7XG4gICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5jdXJyZW50VXNlciA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLm5hbWUgKyBcIiBcIiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnN1cm5hbWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZUFzQmFzZTY0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuYWxsb3dVbnJlc29sdmVkQ2hhbmdlcyA9PT0gZmFsc2UgJiYgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJldmlzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoXCJQbGVhc2UgYWNjZXB0IG9yIHJlamVjdCBhbGwgc3VnZ2VzdGVkIGNoYW5nZXNcIik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3Iuc3RvcFByb3RlY3Rpb24oXCJwYXNzd29yZFwiKTtcbiAgICAgICAgICAgIGxldCBibG9iID0gYXdhaXQgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnNhdmVBc0Jsb2IoJ0RvY3gnKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLmVuZm9yY2VQcm90ZWN0aW9uKCdwYXNzd29yZCcsICdDb21tZW50c09ubHknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgcHJvcHMuZmlsZT8ubmFtZSA/IHByb3BzLmZpbGUubmFtZSA6ICdkb2N1bWVudC5kb2N4Jywge3R5cGU6IHByb3BzLmZpbGU/LnR5cGUgPyBwcm9wcy5maWxlLnR5cGUgOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdERvY3VtZW50VGV4dChlZGl0b3IpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmN1cnJlbnQpIHJldHVybiBjdXJyZW50VGV4dC5jdXJyZW50O1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RhcnQgPSBlZGl0b3Iuc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IGVkaXRvci5zZWxlY3Rpb24uZW5kT2Zmc2V0O1xuXG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0QWxsKCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBlZGl0b3Iuc2VsZWN0aW9uLmdldFRleHQoKTtcbiAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSB0ZXh0O1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0QW5jaG9yVG9rZW5zKHRleHQpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxbXFxbW15cXFtcXF1dKz9cXF1cXF0vZztcbiAgICAgICAgY29uc3QgdG9rZW5zID0gbmV3IFNldCgpO1xuICAgICAgICBsZXQgbWF0Y2g7XG5cbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbnMuYWRkKG1hdGNoWzBdKTsgLy8gZXhhY3QgW1tURVhUXV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRva2Vucyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldFdpdGhpblJhbmdlKGNhcmV0LCBzdGFydCwgZW5kKSB7XG4gICAgICAgIGlmIChjYXJldC5wYXJhZ3JhcGggIT09IHN0YXJ0LnBhcmFncmFwaCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHggPSBjYXJldC5sb2NhdGlvbi54SW47XG4gICAgICAgIGNvbnN0IHkgPSBjYXJldC5sb2NhdGlvbi55SW47XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkNIRUNLSU5HIENBUkVUIFdJVEhJTiBSQU5HRSA6IFwiLCB4LCB5LCBzdGFydC5sb2NhdGlvbi54SW4sIHN0YXJ0LmxvY2F0aW9uLnlJbiwgZW5kLmxvY2F0aW9uLnhJbiwgZW5kLmxvY2F0aW9uLnlJbik7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB5ID09PSBzdGFydC5sb2NhdGlvbi55SW4gJiZcbiAgICAgICAgICAgIHggPj0gc3RhcnQubG9jYXRpb24ueEluICYmXG4gICAgICAgICAgICB4IDw9IGVuZC5sb2NhdGlvbi54SW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcbiAgICAgICAgY29uc3QgZG9jRWRpdG9yID0gZWRpdG9yPy5lZGl0b3I7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yID0gYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghZWRpdG9yIHx8ICFzZWxlY3Rpb24gfHwgIWRvY0VkaXRvciB8fCAhYW5jaG9yKSByZXR1cm47XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkVORCBPRkZTRVQgOiBcIiwgYW5jaG9yLmVuZE9mZnNldCwgYnVtcE9mZnNldChhbmNob3IuZW5kT2Zmc2V0LCAtMSkpXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJTVEFSVCAtIEVORCA6IFwiLCBhbmNob3Iuc3RhcnRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3QoYW5jaG9yLnN0YXJ0T2Zmc2V0LCBhbmNob3IuZW5kT2Zmc2V0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJTRUxFQ1RJT04gVEVYVCA6IFwiICsgc2VsZWN0aW9uLnRleHQpO1xuICAgICAgICAgICAgLy9kb2NFZGl0b3IuZGVsZXRlKCk7XG4gICAgICAgICAgICAvL3NlbGVjdGlvbi5zZWxlY3QoYW5jaG9yLnN0YXJ0T2Zmc2V0LCBhbmNob3Iuc3RhcnRPZmZzZXQpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKSB7XG4gICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmlnaHRVbnRpbEFuY2hvcihlZGl0b3IsIG9yaWdpbk9mZnNldCwgbWF4U2NhbiA9IDUwMCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgY3VycmVudCA9IG9yaWdpbk9mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjYW47IGkrKykge1xuICAgICAgICAgICAgLy8gbW92ZSByaWdodFxuICAgICAgICAgICAgY3VycmVudCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpO1xuXG4gICAgICAgICAgICBzZWwuc2VsZWN0KGN1cnJlbnQsIGN1cnJlbnQpO1xuXG4gICAgICAgICAgICAvLyBzZWxlY3QgT05FIGNoYXJhY3RlciBvbmx5XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgICAgYnVtcE9mZnNldChjdXJyZW50LCArMSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIC8vIOKblCBCYWlsIG9uIHdoaXRlc3BhY2Ugb3IgcGFyYWdyYXBoIGJyZWFrXG4gICAgICAgICAgICBpZiAoIWNoIHx8IC9cXHMvLnRlc3QoY2gpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gRGV0ZWN0IGNsb3NpbmcgXCJdXVwiXG4gICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgIC8vIGxvb2thaGVhZCBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcbiAgICAgICAgICAgICAgICBzZWwuc2VsZWN0KG5leHQsIGJ1bXBPZmZzZXQobmV4dCwgKzEpKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBwb3NpdGlvbiBBRlRFUiBdXVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCArMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIG9yaWdpbk9mZnNldCwgbWF4U2NhbiA9IDUwMCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgY3VycmVudCA9IG9yaWdpbk9mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjYW47IGkrKykge1xuICAgICAgICAgICAgY3VycmVudCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuXG4gICAgICAgICAgICAvLyBzZWxlY3Qgb25lIGNoYXIgdG8gdGhlIGxlZnRcbiAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgYnVtcE9mZnNldChjdXJyZW50LCAtMSksXG4gICAgICAgICAgICAgICAgY3VycmVudFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgY2ggPSBzZWwudGV4dDtcblxuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIGRldGVjdCBbW1xuICAgICAgICAgICAgaWYgKGNoID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gYnVtcE9mZnNldChjdXJyZW50LCAtMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgYnVtcE9mZnNldChwcmV2LCAtMSksXG4gICAgICAgICAgICAgICAgICAgIHByZXZcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbC50ZXh0ID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g8J+UkSBGSVg6IGdvIGJhY2sgVFdPIGNoYXJzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidW1wT2Zmc2V0KGN1cnJlbnQsIC0yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgc2VsLnNlbGVjdChvZmZzZXQsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gc2VsLnRleHQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydChlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBjMCA9IGdldENoYXJBdChlZGl0b3IsIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IGMxID0gZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsICsxKSk7XG4gICAgICAgIHJldHVybiBjMCA9PT0gJ1snICYmIGMxID09PSAnWyc7IC8vIHxbW1RFWFRdXVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgLTEpKSA9PT0gJ10nICYmXG4gICAgICAgICAgICBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgLTIpKSA9PT0gJ10nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGVkaXRvcj8uc2VsZWN0aW9uO1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RhcnQgPSBzZWxlY3Rpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRW5kID0gc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBzZWxlY3Rpb24uc2VsZWN0Q3VycmVudFdvcmQoKTtcbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChvcmlnaW5hbFN0YXJ0LCBvcmlnaW5hbEVuZCk7XG5cbiAgICAgICAgLy9sZXQgd29yZCA9IHNlbGVjdGlvbi50ZXh0O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ3JhYkFuY2hvcldpdGhCb3VuZHMgU0VMRUNUSU9OIFRFWFQgOiBcIiwgd29yZCk7XG5cbiAgICAgICAgbGV0IHNjYW5TdGFydCA9IG9yaWdpbmFsU3RhcnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvcmlnaW5hbFN0YXJ0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXNDYXJldEF0RW5kID0gaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IoZWRpdG9yLCBvcmlnaW5hbFN0YXJ0KVxuICAgICAgICAgICAgaWYgKGlzQ2FyZXRBdEVuZCkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJDQVJFVCBBVCBFTkRcIik7XG4gICAgICAgICAgICAgICAgc2NhblN0YXJ0ID0gYnVtcE9mZnNldChvcmlnaW5hbFN0YXJ0LCAtMyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzY2FuTGVmdFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBzY2FuU3RhcnQpO1xuXG4gICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3QobGVmdCwgcmlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGlzQ2FyZXRBdEVuZDtcblxuICAgICAgICAgICAgICAgIC8qY29uc29sZS5sb2coXCJHUkFCIFJFU1VMVCA6IFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiByaWdodFxuICAgICAgICAgICAgICAgIH0pOyovXG5cbiAgICAgICAgICAgICAgICBpZiAoL15cXFtcXFsuKz9cXF1cXF0kLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiByaWdodFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVtcE9mZnNldChvZmZzZXQsIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gb2Zmc2V0LnNwbGl0KCc7Jyk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHBhcnRzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heCgwLCBwYXJzZUludChwYXJ0c1tpZHhdLCAxMCkgKyBkZWx0YSk7XG4gICAgICAgIHBhcnRzW2lkeF0gPSB2YWx1ZS50b1N0cmluZygpO1xuXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCc7Jyk7XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgc2V0dXBDb250YWluZXIoKTtcbiAgICAgICAgICAgIC8vYXV0b1NhdmUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2tleURvd24nLCAoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBhcmdzLmV2ZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gMe+4j+KDoyBOYXZpZ2F0aW9uIGtleXMg4oaSIGluc3BlY3Qgb25seVxuICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25LZXkoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkFDVElWRSBBTkNIT1IgOiBcIiwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkRFTEVURSBMT0NLRUQgOiBcIiwgZGVsZXRlTG9ja1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGVMb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN5bmNmdXNpb24gYWxyZWFkeSBkZWxldGVkIOKGkiByZXdpbmQgc2FmZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWNxdWlyZSBsb2NrXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSBsb2NrIHdoZW4gZWRpdG9yIGlzIGFjdHVhbGx5IHN0YWJsZVxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAy77iP4oOjIElmIHdlIGFyZSBpbnNpZGUgYSByZXN0cmljdGVkIGFuY2hvclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhbmNob3JFbmQuY3VycmVudCA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgJiYgIWlzTmF2aWdhdGlvbktleShlKSkgfHwgYW5jaG9yRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIC8gQmFja3NwYWNlID0gZGVsZXRlIHdob2xlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9lZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lciwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBibG9jayB3aGVuIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGFuIGFuY2hvci4gSW5wdXQgd2lsbCBuZXZlciBkYW1hZ2UgdGhlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVU5CTE9DS0lORyA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFuY2hvckVuZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDwn5SSIEJsb2NrIHR5cGluZyAmIHBhc3RlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5rZXkubGVuZ3RoID09PSAxIHx8IC8vIHByaW50YWJsZSBjaGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jdHJsS2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tZXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb25Nb3VzZVVwID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJbnNpZGVFbGVtZW50KGUuY2xpZW50WCwgZS5jbGllbnRZLCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRyb3BEYXRhLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3IoZHJvcERhdGEuY3VycmVudC52YWx1ZSwgZHJvcERhdGEuY3VycmVudC5kcm9wUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBkcm9wRGF0YS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAvL3ZpZXdlci5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZpZXdlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gdmlld2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWluZXJdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIgJiYganNvbikge1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmRvY3VtZW50Q2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lbmFibGVUcmFja0NoYW5nZXMgPSAhVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgPyBwcm9wcy50cmFja0NoYW5nZXMgOiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuaXNSZWFkT25seSA9IHByb3BzLnJlYWRPbmx5O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IGV4dHJhY3REb2N1bWVudFRleHQoY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29udGVudENoYW5nZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVBY2NlcHRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhY2NlcHRCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImUtZGUtdHJhY2stYWNjZXB0LWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY2NlcHRCdXR0b24gb2YgYWNjZXB0QnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYWNjZXB0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kaXNhYmxlUmVqZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVqZWN0QnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlLWRlLXRyYWNrLXJlamVjdC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVqZWN0QnV0dG9uIG9mIHJlamVjdEJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdEJ1dHRvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHJlamVjdEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZGluZy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0gYXdhaXQgc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSBleHRyYWN0RG9jdW1lbnRUZXh0KGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5vcGVuKGpzb24pO1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVuYWJsZVRyYWNrQ2hhbmdlcyA9ICFVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSA/IHByb3BzLnRyYWNrQ2hhbmdlcyA6IHRydWU7XG4gICAgICAgICAgICAvL2NvbnRhaW5lci5kb2N1bWVudEVkaXRvci5pc1JlYWRPbmx5ID0gKHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmNvbW1lbnRzT25seSk7XG4gICAgICAgIH1cbiAgICB9LCBbanNvbiwgY29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBvblRvb2xiYXJDbGljayA9IChhcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcj8uZWRpdG9yO1xuICAgICAgICBpZiAoIWVkKSByZXR1cm47XG4gICAgICAgIHN3aXRjaCAoYXJncy5pdGVtLmlkKSB7XG4gICAgICAgICAgICBjYXNlICdidWxsZXRzJzpcbiAgICAgICAgICAgICAgICBlZC5hcHBseUJ1bGxldCgnXFx1ZjBiNycsICdTeW1ib2wnKTsgLy8g4oCiXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdudW1iZXJpbmcnOlxuICAgICAgICAgICAgICAgIGVkLmFwcGx5TnVtYmVyaW5nKCclMS4nLCAnQXJhYmljJyk7IC8vIDEuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0wJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTEnOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMic6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjbGVhci1saXN0JzpcbiAgICAgICAgICAgICAgICBlZC5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBsZXQgYnVpbHQtaW5zIChVbmRvL1JlZG8vTmV3L09wZW4pIHdvcmsgbm9ybWFsbHlcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J25vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3toZWlnaHQ6ICcxMDAlJ319IGlkPXtgcGFyZW50LWNvbnRhaW5lcmB9IHJlZj17cGFyZW50UmVmfT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhdmlzaWJsZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxMb3R0aWVJY29uIGlkPXsnd2FpdGluZy1zbSd9Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDMycHggMCAzMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnNjRweCdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3c9eyFVdGlscy5pc051bGwoZXJyb3JNZXNzYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEVycm9yTWVzc2FnZShudWxsKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3NpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGg6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57ZXJyb3JNZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHsvKiBTZXR0aW5nIGVuYWJsZVRyYWNrQ2hhbmdlcyB0byBmYWxzZSBkb2VzIG5vdCB3b3JrIHNvIHdlIGR1cGxpY2F0ZSB0aGUgY29kZSovfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiYgaXRlbXMgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpIHx8IHByb3BzLnRyYWNrQ2hhbmdlcyA9PT0gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQgaWQ9e2Ake3Byb3BzLmlkfS1jb250YWluZXJgfSBoZWlnaHQ9e2VkaXRvckhlaWdodCA+IDAgPyBgJHtlZGl0b3JIZWlnaHR9cHhgIDogJzEyMDBweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17KHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWluZXIoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBzY29wZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVBlcnNpc3RlbmNlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckNsaWNrPXtvblRvb2xiYXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW1zPXtpdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RFZGl0aW5nPXtwcm9wcy5yZWFkT25seSAmJiAhcHJvcHMuY29tbWVudHNPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvcGVydGllc1BhbmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUcmFja0NoYW5nZXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9Gb2N1cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VVcmw9e2dldFNlcnZpY2VVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVG9vbGJhcj17IShwcm9wcy5yZWFkT25seSkgfHwgcHJvcHMuY29tbWVudHNPbmx5fS8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSAmJiBpdGVtcyAmJiBwcm9wcy50cmFja0NoYW5nZXMgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgPERvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IGlkPXtgJHtwcm9wcy5pZH0tY29udGFpbmVyYH0gaGVpZ2h0PXtlZGl0b3JIZWlnaHQgPiAwID8gYCR7ZWRpdG9ySGVpZ2h0fXB4YCA6ICcxMjAwcHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9eyhzY29wZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gc2NvcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVQZXJzaXN0ZW5jZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJDbGljaz17b25Ub29sYmFyQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtcz17aXRlbXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RWRpdGluZz17cHJvcHMucmVhZE9ubHkgJiYgIXByb3BzLmNvbW1lbnRzT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb3BlcnRpZXNQYW5lPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b0ZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVVybD17Z2V0U2VydmljZVVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUb29sYmFyPXshKHByb3BzLnJlYWRPbmx5KSB8fCBwcm9wcy5jb21tZW50c09ubHl9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdvcmREb2N1bWVudFZpZXdlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsb0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHVCQUFBLEdBQUFKLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFLLG1CQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQUEsT0FBQTtBQUVBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxrQkFBQSxHQUFBVixPQUFBO0FBQWdFLFNBQUFHLHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQVosd0JBQUFZLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFoQix1QkFBQSxZQUFBQSxDQUFBWSxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFTLENBQUEsTUFBQUYsQ0FBQSxHQUFBSixDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRSxDQUFBLENBQUFJLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTyxDQUFBLENBQUFLLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTyxDQUFBLENBQUFNLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUyxDQUFBLGdCQUFBTixDQUFBLElBQUFILENBQUEsZ0JBQUFHLENBQUEsT0FBQVcsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUcsQ0FBQSxPQUFBSyxDQUFBLElBQUFELENBQUEsR0FBQVMsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsQ0FBQSxPQUFBSyxDQUFBLENBQUFJLEdBQUEsSUFBQUosQ0FBQSxDQUFBSyxHQUFBLElBQUFOLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTixDQUFBLEVBQUFLLENBQUEsSUFBQUMsQ0FBQSxDQUFBTixDQUFBLElBQUFILENBQUEsQ0FBQUcsQ0FBQSxXQUFBTSxDQUFBLEtBQUFULENBQUEsRUFBQUcsQ0FBQTtBQUV6RCxNQUFNZ0IsR0FBRyxHQUFBQyxPQUFBLENBQUFELEdBQUEsR0FBRyw4RkFBOEY7QUFDakgsSUFBQUUsd0JBQWUsRUFBQ0YsR0FBRyxDQUFDO0FBRWIsTUFBTUcsUUFBUSxHQUFBRixPQUFBLENBQUFFLFFBQUEsR0FBR0MsTUFBTSxDQUFDRCxRQUFRLENBQUNFLFFBQVEsR0FBRyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRyxRQUFRO0FBQzNFLE1BQU1DLE1BQU0sR0FBQU4sT0FBQSxDQUFBTSxNQUFBLEdBQUcseUJBQXlCO0FBRS9DLFNBQVNDLGFBQWFBLENBQUEsRUFBRztFQUNyQixNQUFNQyxXQUFXLEdBQUdDLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztFQUN6RCxNQUFNQyxPQUFPLEdBQUdGLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLFNBQVMsQ0FBQztFQUNqRCxNQUFNRSxJQUFJLE1BQUFDLE1BQUEsQ0FBTVgsUUFBUSxHQUFHWSwyQkFBa0IsQ0FBQ0MsY0FBYyxDQUFDLENBQUMsR0FBR1QsTUFBTSxZQUFTO0VBQ2hGLE1BQU1VLE1BQU0sR0FBRyxJQUFJQyxlQUFlLENBQUMsQ0FBQztFQUNwQyxJQUFJVCxXQUFXLEVBQUVRLE1BQU0sQ0FBQ3ZCLEdBQUcsQ0FBQyxjQUFjLEVBQUVlLFdBQVcsQ0FBQztFQUN4RCxJQUFJRyxPQUFPLEVBQUVLLE1BQU0sQ0FBQ3ZCLEdBQUcsQ0FBQyxVQUFVLEVBQUVrQixPQUFPLENBQUM7RUFDNUMsTUFBTU8sRUFBRSxHQUFHRixNQUFNLENBQUNHLFFBQVEsQ0FBQyxDQUFDO0VBQzVCLE9BQU9ELEVBQUUsTUFBQUwsTUFBQSxDQUFNRCxJQUFJLE9BQUFDLE1BQUEsQ0FBSUssRUFBRSxJQUFLTixJQUFJO0FBQ3RDO0FBRUFRLHdEQUFnQyxDQUFDQyxNQUFNLENBQUNDLCtCQUFPLENBQUM7QUFFaEQsTUFBTUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUM7QUFFaEQsU0FBU0MsVUFBVUEsQ0FBQ0MsRUFBRSxFQUFhO0VBQUEsSUFBWEMsS0FBSyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDO0VBQzdCLE1BQU1HLEtBQUssR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFRCxJQUFJLENBQUNFLEdBQUcsQ0FBQ1AsS0FBSyxFQUFFSCxTQUFTLENBQUNLLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNoRUgsRUFBRSxDQUFDUyxTQUFTLENBQUNDLGVBQWUsQ0FBQ0MsZUFBZSxHQUFHTixLQUFLO0VBQ3BETCxFQUFFLENBQUNZLGNBQWMsQ0FBQ2QsU0FBUyxDQUFDTyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUM7QUFDakQ7QUFFQSxTQUFTUSwwQkFBMEJBLENBQUNDLFNBQVMsRUFBRUMsWUFBWSxFQUFFO0VBQ3pELE1BQU0sQ0FBQ0MsTUFBTSxFQUFFQyxTQUFTLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBQUMsQ0FBQyxDQUFDO0VBRXZDLE1BQU1DLE9BQU8sR0FBRyxJQUFBQyxrQkFBVyxFQUFDLE1BQU07SUFDOUIsSUFBSSxDQUFDTixTQUFTLENBQUNPLE9BQU8sRUFBRTtJQUV4QixNQUFNQyxJQUFJLEdBQUdSLFNBQVMsQ0FBQ08sT0FBTyxDQUFDRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3RELE1BQU1DLFNBQVMsR0FBR2xCLElBQUksQ0FBQ21CLEtBQUssQ0FBQ0gsSUFBSSxDQUFDTixNQUFNLENBQUM7SUFFekMsSUFBSVEsU0FBUyxHQUFHLENBQUMsSUFBSUEsU0FBUyxLQUFLUixNQUFNLEVBQUU7TUFDdkNVLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLFlBQVksRUFBRUgsU0FBUyxDQUFDO01BQ3BDUCxTQUFTLENBQUNPLFNBQVMsQ0FBQztJQUN4QjtFQUNKLENBQUMsRUFBRSxDQUFDVixTQUFTLEVBQUVFLE1BQU0sQ0FBQyxDQUFDOztFQUV2QjtFQUNBLElBQUFZLG9DQUFpQixFQUFDZCxTQUFTLEVBQUVLLE9BQU8sQ0FBQzs7RUFFckM7RUFDQSxJQUFBVSxnQkFBUyxFQUFDLE1BQU07SUFDWixJQUFJZCxZQUFZLENBQUNNLE9BQU8sSUFBSUwsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNwQyxJQUFJO1FBQ0FELFlBQVksQ0FBQ00sT0FBTyxDQUFDUyxNQUFNLENBQUMsQ0FBQztRQUM3QmYsWUFBWSxDQUFDTSxPQUFPLENBQUNVLGNBQWMsQ0FBQ0QsTUFBTSxDQUFDLENBQUM7TUFDaEQsQ0FBQyxDQUFDLE9BQU8zRSxDQUFDLEVBQUU7UUFDUjtNQUFBO0lBRVI7RUFDSixDQUFDLEVBQUUsQ0FBQzZELE1BQU0sRUFBRUQsWUFBWSxDQUFDLENBQUM7RUFFMUIsT0FBT0MsTUFBTTtBQUNqQjtBQUVBLE1BQU1nQixrQkFBa0IsR0FBSUMsS0FBSyxJQUFLO0VBQ2xDLE1BQU0sQ0FBQ0MsU0FBUyxFQUFFQyxZQUFZLENBQUMsR0FBR0MsY0FBSyxDQUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQztFQUN0RCxNQUFNLENBQUNtQixLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHRixjQUFLLENBQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDO0VBQzlDLE1BQU0sQ0FBQ3FCLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUdKLGNBQUssQ0FBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDbEQsTUFBTSxDQUFDdUIsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBR04sY0FBSyxDQUFDbEIsUUFBUSxDQUFDLEtBQUssQ0FBQztFQUMzRCxNQUFNLENBQUN5QixJQUFJLEVBQUVDLE9BQU8sQ0FBQyxHQUFHUixjQUFLLENBQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDO0VBQzVDLE1BQU0sQ0FBQzJCLFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUdWLGNBQUssQ0FBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDNUQsTUFBTTZCLFdBQVcsR0FBR1gsY0FBSyxDQUFDWSxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ3RDLE1BQU1DLGVBQWUsR0FBRyxJQUFBRCxhQUFNLEVBQUMsSUFBSSxDQUFDO0VBQ3BDLE1BQU1FLFNBQVMsR0FBRyxJQUFBRixhQUFNLEVBQUMsS0FBSyxDQUFDO0VBQy9CLE1BQU1HLGFBQWEsR0FBRyxJQUFBSCxhQUFNLEVBQUMsS0FBSyxDQUFDO0VBQ25DLE1BQU1JLE9BQU8sR0FBRyxJQUFBSixhQUFNLEVBQUMsSUFBSSxDQUFDO0VBQzVCLE1BQU1sQyxTQUFTLEdBQUcsSUFBQXVDLG9DQUFpQixFQUFFQyxFQUFFLElBQUs7SUFDeEMsSUFBSSxDQUFDYixXQUFXLEVBQUU7TUFDZEQsVUFBVSxDQUFDLEtBQUssQ0FBQztNQUNqQkUsY0FBYyxDQUFDLElBQUksQ0FBQztJQUN4QjtFQUNKLENBQUMsQ0FBQztFQUVGLE1BQU0zQixZQUFZLEdBQUcsSUFBQWlDLGFBQU0sRUFBQyxJQUFJLENBQUM7RUFDakMsTUFBTU8sWUFBWSxHQUFHMUMsMEJBQTBCLENBQUNDLFNBQVMsRUFBRUMsWUFBWSxDQUFDO0VBRXhFLFNBQVN5QyxvQkFBb0JBLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxFQUFFSixFQUFFLEVBQUU7SUFDcEMsSUFBSSxDQUFDQSxFQUFFLEVBQUUsT0FBTyxLQUFLO0lBQ3JCLE1BQU1oQyxJQUFJLEdBQUdnQyxFQUFFLENBQUMvQixxQkFBcUIsQ0FBQyxDQUFDO0lBRXZDLE9BQ0lrQyxDQUFDLElBQUluQyxJQUFJLENBQUNxQyxJQUFJLElBQ2RGLENBQUMsSUFBSW5DLElBQUksQ0FBQ3NDLEtBQUssSUFDZkYsQ0FBQyxJQUFJcEMsSUFBSSxDQUFDdUMsR0FBRyxJQUNiSCxDQUFDLElBQUlwQyxJQUFJLENBQUN3QyxNQUFNO0VBRXhCO0VBRUEsU0FBU0MsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDeEIsT0FBT0MsUUFBUSxDQUFDQyxjQUFjLElBQUE3RSxNQUFBLENBQ3ZCNkMsS0FBSyxDQUFDaUMsRUFBRSxzQ0FDZixDQUFDO0VBQ0w7RUFFQSxTQUFTQyxlQUFlQSxDQUFDaEgsQ0FBQyxFQUFFO0lBQ3hCLE9BQU8sQ0FDSCxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQ2pELE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FDdEMsQ0FBQ2lILFFBQVEsQ0FBQ2pILENBQUMsQ0FBQ2tILEdBQUcsQ0FBQztFQUNyQjtFQUVBLFNBQVNDLGVBQWVBLENBQUNDLEtBQUssRUFBRTtJQUM1QixJQUFJLENBQUNBLEtBQUssRUFBRSxPQUFPLElBQUk7SUFDdkIsT0FBT0EsS0FBSyxDQUNQQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUMzQkEsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7RUFDaEM7RUFFQSxJQUFJQyxhQUFhLEdBQUdWLGdCQUFnQixDQUFDLENBQUM7RUFFdEMsU0FBU1csb0JBQW9CQSxDQUFDQyxTQUFTLEVBQUVDLFlBQVksRUFBRTtJQUNuRCxJQUFJLEVBQUMxQyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFFSCxjQUFjLEdBQUU7SUFDaEMsSUFBSSxDQUFDNkMsWUFBWSxFQUFFO0lBRW5CLElBQUksQ0FBQ3BCLG9CQUFvQixDQUFDb0IsWUFBWSxDQUFDbkIsQ0FBQyxFQUFFbUIsWUFBWSxDQUFDbEIsQ0FBQyxFQUFFZSxhQUFhLENBQUMsRUFBRTtNQUN0RTtJQUNKO0lBRUEsTUFBTUksR0FBRyxHQUFHM0MsU0FBUyxDQUFDSCxjQUFjO0lBQ3BDLE1BQU0vQixFQUFFLEdBQUc2RSxHQUFHLENBQUNDLE1BQU07SUFDckIsTUFBTUMsR0FBRyxHQUFHRixHQUFHLENBQUNwRSxTQUFTO0lBQ3pCLElBQUksQ0FBQ1QsRUFBRSxJQUFJLENBQUMrRSxHQUFHLEVBQUU7O0lBRWpCO0lBQ0E7SUFDQSxNQUFNQyxXQUFXLEdBQUdELEdBQUcsQ0FBQ0UsV0FBVztJQUNuQyxNQUFNQyxjQUFjLEdBQUdDLG9CQUFvQixDQUFDakQsU0FBUyxDQUFDO0lBQ3RELElBQUlnRCxjQUFjLEVBQUU7TUFDaEIsTUFBTUUsT0FBTyxHQUFHSixXQUFXLEtBQUtFLGNBQWMsQ0FBQ0QsV0FBVztNQUMxRCxNQUFNSSxLQUFLLEdBQUdMLFdBQVcsS0FBS0UsY0FBYyxDQUFDSSxTQUFTO01BQ3RELElBQUksQ0FBQ0YsT0FBTyxJQUFJLENBQUNDLEtBQUssRUFBRTtRQUNwQjNELE9BQU8sQ0FBQzZELElBQUksQ0FBQywyQ0FBMkMsR0FBR0wsY0FBYyxDQUFDTSxLQUFLLENBQUM7UUFDaEY7TUFDSjtJQUNKO0lBRUEsTUFBTUEsS0FBSyxRQUFBcEcsTUFBQSxDQUFRa0YsZUFBZSxDQUFDSyxTQUFTLENBQUMsT0FBSTtJQUNqRDNFLEVBQUUsQ0FBQ3lGLFVBQVUsQ0FBQ0QsS0FBSyxDQUFDO0VBQ3hCO0VBRUEsTUFBTUUsUUFBUSxHQUFHdEQsY0FBSyxDQUFDWSxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ25DLE1BQU0yQyxHQUFHLEdBQUdBLENBQUEsS0FBTTtJQUNkLE9BQU87TUFDSEMsUUFBUSxFQUFFQSxDQUFBLEtBQU07UUFDWixPQUFPQyxZQUFZLENBQUMsQ0FBQztNQUN6QixDQUFDO01BRURuQixvQkFBb0IsRUFBRSxNQUFBQSxDQUFPSCxLQUFLLEVBQUVLLFlBQVksS0FBSztRQUNqRGMsUUFBUSxDQUFDckUsT0FBTyxHQUFHO1VBQUNrRCxLQUFLO1VBQUVLO1FBQVksQ0FBQztNQUM1QztJQUNKLENBQUM7RUFDTCxDQUFDO0VBRUR4QyxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCSSxLQUFLLENBQUM2RCxZQUFZLENBQUNILEdBQUcsR0FBR0EsR0FBRyxDQUFDLENBQUM7RUFDbEMsQ0FBQyxDQUFDO0VBRUYsTUFBTUksY0FBYyxHQUFHLENBQ25CO0lBQUM3QixFQUFFLEVBQUUsT0FBTztJQUFFOEIsSUFBSSxFQUFFO0VBQUksQ0FBQyxFQUN6QjtJQUFDOUIsRUFBRSxFQUFFLE9BQU87SUFBRThCLElBQUksRUFBRTtFQUFLLENBQUMsRUFDMUI7SUFBQzlCLEVBQUUsRUFBRSxPQUFPO0lBQUU4QixJQUFJLEVBQUU7RUFBTyxDQUFDLEVBQzVCO0lBQUNDLFNBQVMsRUFBRTtFQUFJLENBQUMsRUFDakI7SUFBQy9CLEVBQUUsRUFBRSxPQUFPO0lBQUU4QixJQUFJLEVBQUU7RUFBWSxDQUFDLENBQ3BDO0VBRUQ1RCxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUlxRSxZQUFZLEdBQUdqRSxLQUFLLENBQUNrRSxZQUFZLEdBQ2pDLENBQ0ksVUFBVSxDQUNiLEdBRUQsQ0FDSSxNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWDtNQUFDakMsRUFBRSxFQUFFLFNBQVM7TUFBRThCLElBQUksRUFBRSxXQUFXO01BQUVJLFdBQVcsRUFBRTtJQUFlLENBQUMsRUFDaEUsV0FBVyxFQUNYO01BQUNBLFdBQVcsRUFBRSxNQUFNO01BQUVDLFVBQVUsRUFBRSxnQkFBZ0I7TUFBRUMsT0FBTyxFQUFFO0lBQU0sQ0FBQyxFQUNwRTtNQUFDRixXQUFXLEVBQUUsUUFBUTtNQUFFQyxVQUFVLEVBQUUsa0JBQWtCO01BQUVDLE9BQU8sRUFBRTtJQUFRLENBQUMsRUFDMUUsV0FBVyxFQUNYLE9BQU8sRUFDUCxPQUFPLEVBQ1AsV0FBVyxFQUNYLFFBQVEsRUFDUixRQUFRLEVBQ1IsV0FBVyxFQUNYLFlBQVksRUFDWixPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxNQUFNLEVBQ04sV0FBVyxFQUNYLFVBQVUsQ0FDYjtJQUVMLElBQUlyRSxLQUFLLENBQUNzRSxZQUFZLEVBQUU7TUFDcEJMLFlBQVksQ0FBQ00sT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNoQztJQUVBbEUsUUFBUSxDQUFDNEQsWUFBWSxDQUFDO0VBQzFCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTjlELGNBQUssQ0FBQ1AsU0FBUyxDQUFDLE1BQU07SUFBQSxJQUFBNEUsV0FBQTtJQUNsQixLQUFBQSxXQUFBLEdBQUl4RSxLQUFLLENBQUN5RSxJQUFJLGNBQUFELFdBQUEsZUFBVkEsV0FBQSxDQUFZRSxNQUFNLEVBQUU7TUFDcEIsSUFBSUEsTUFBTSxHQUFHMUUsS0FBSyxDQUFDeUUsSUFBSSxDQUFDQyxNQUFNO01BQzlCLE1BQU1DLFdBQVcsR0FBR0MsY0FBSyxDQUFDQyxtQkFBbUIsQ0FBQ0gsTUFBTSxDQUFDO01BQ3JELE1BQU1ELElBQUksR0FBRyxJQUFJSyxJQUFJLENBQUMsQ0FBQ0gsV0FBVyxDQUFDLEVBQUU7UUFDakNJLElBQUksRUFBRS9FLEtBQUssQ0FBQ3lFLElBQUksQ0FBQ007TUFDckIsQ0FBQyxDQUFDO01BRUYsTUFBTUMsUUFBUSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxDQUFDO01BQy9CRCxRQUFRLENBQUNFLE1BQU0sQ0FBQyxPQUFPLEVBQUVULElBQUksRUFBRSxlQUFlLENBQUM7TUFFL0MsTUFBTTNILFdBQVcsR0FBR0MsY0FBYyxDQUFDQyxPQUFPLENBQUMsYUFBYSxDQUFDO01BQ3pELE1BQU1DLE9BQU8sR0FBR0YsY0FBYyxDQUFDQyxPQUFPLENBQUMsU0FBUyxDQUFDO01BRWpELElBQUFtSSxpQ0FBWSxFQUNSQyxLQUFLLElBQUFqSSxNQUFBLENBQ0VYLFFBQVEsR0FBR1ksMkJBQWtCLENBQUNDLGNBQWMsQ0FBQyxDQUFDLEdBQUdULE1BQU0sY0FDMUQ7UUFDSXlJLE1BQU0sRUFBRSxNQUFNO1FBQ2RDLE9BQU8sRUFBRTtVQUNMLGVBQWUsRUFBRSxTQUFTLEdBQUd4SSxXQUFXO1VBQ3hDLFNBQVMsRUFBRUc7UUFFZixDQUFDO1FBQ0RzSSxJQUFJLEVBQUVQO01BQ1YsQ0FDSixDQUFDLENBQUNRLElBQUksQ0FBRUMsUUFBUSxJQUFLO1FBQ2pCLElBQUFOLGlDQUFZLEVBQ1JNLFFBQVEsQ0FBQy9FLElBQUksQ0FBQyxDQUFDLENBQUM4RSxJQUFJLENBQUU5RSxJQUFJLElBQUs7VUFDM0JDLE9BQU8sQ0FBQ0QsSUFBSSxDQUFDO1FBQ2pCLENBQUMsQ0FDTCxDQUFDO01BQ0wsQ0FBQyxDQUNMLENBQUM7SUFDTDtFQUNKLENBQUMsRUFBRSxDQUFDVixLQUFLLENBQUN5RSxJQUFJLENBQUMsQ0FBQztFQUVoQnRFLGNBQUssQ0FBQ1AsU0FBUyxDQUFDLE1BQU07SUFDbEIsSUFBSVksV0FBVyxFQUFFO01BQ2IsTUFBTWtGLEtBQUssR0FBR2pKLE1BQU0sQ0FBQ2tKLFVBQVUsQ0FBQyxNQUFNO1FBQ2xDcEYsVUFBVSxDQUFDLElBQUksQ0FBQztNQUNwQixDQUFDLEVBQUUsSUFBSyxDQUFDO01BRVQsT0FBTyxNQUFNOUQsTUFBTSxDQUFDbUosWUFBWSxDQUFDRixLQUFLLENBQUM7SUFDM0M7RUFDSixDQUFDLEVBQUUsQ0FBQ2xGLFdBQVcsQ0FBQyxDQUFDO0VBRWpCLFNBQVNxRixjQUFjQSxDQUFBLEVBQUc7SUFDdEI1RixTQUFTLENBQUNILGNBQWMsQ0FBQ2dHLFdBQVcsR0FBRzFJLDJCQUFrQixDQUFDMkksY0FBYyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxHQUFHLEdBQUcsR0FBRzVJLDJCQUFrQixDQUFDMkksY0FBYyxDQUFDLENBQUMsQ0FBQ0UsT0FBTztFQUN2STtFQUVBLE1BQU1yQyxZQUFZLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO0lBQzdCLElBQUk1RCxLQUFLLENBQUNrRyxzQkFBc0IsS0FBSyxLQUFLLElBQUlqRyxTQUFTLENBQUNILGNBQWMsQ0FBQ3FHLFNBQVMsQ0FBQ2pJLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDekYyQyxlQUFlLENBQUMsK0NBQStDLENBQUM7TUFDaEUsT0FBTyxJQUFJO0lBQ2Y7SUFFQSxJQUFJWixTQUFTLEVBQUU7TUFBQSxJQUFBbUcsWUFBQSxFQUFBQyxZQUFBO01BQ1hwRyxTQUFTLENBQUNILGNBQWMsQ0FBQytDLE1BQU0sQ0FBQ3lELGNBQWMsQ0FBQyxVQUFVLENBQUM7TUFDMUQsSUFBSUMsSUFBSSxHQUFHLE1BQU10RyxTQUFTLENBQUNILGNBQWMsQ0FBQzBHLFVBQVUsQ0FBQyxNQUFNLENBQUM7TUFDNUQsSUFBSXhHLEtBQUssQ0FBQ2tFLFlBQVksRUFBRTtRQUNwQmpFLFNBQVMsQ0FBQ0gsY0FBYyxDQUFDK0MsTUFBTSxDQUFDNEQsaUJBQWlCLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQztNQUNqRjtNQUVBLE9BQU8sSUFBSUMsSUFBSSxDQUFDLENBQUNILElBQUksQ0FBQyxFQUFFLENBQUFILFlBQUEsR0FBQXBHLEtBQUssQ0FBQ3lFLElBQUksY0FBQTJCLFlBQUEsZUFBVkEsWUFBQSxDQUFZSixJQUFJLEdBQUdoRyxLQUFLLENBQUN5RSxJQUFJLENBQUN1QixJQUFJLEdBQUcsZUFBZSxFQUFFO1FBQUNqQixJQUFJLEVBQUUsQ0FBQXNCLFlBQUEsR0FBQXJHLEtBQUssQ0FBQ3lFLElBQUksY0FBQTRCLFlBQUEsZUFBVkEsWUFBQSxDQUFZdEIsSUFBSSxHQUFHL0UsS0FBSyxDQUFDeUUsSUFBSSxDQUFDTSxJQUFJLEdBQUc7TUFBeUUsQ0FBQyxDQUFDO0lBQ3pNO0VBQ0osQ0FBQztFQUVELFNBQVM0QixtQkFBbUJBLENBQUM5RCxNQUFNLEVBQUU7SUFDakMsSUFBSS9CLFdBQVcsQ0FBQzFCLE9BQU8sRUFBRSxPQUFPMEIsV0FBVyxDQUFDMUIsT0FBTztJQUVuRCxNQUFNd0gsYUFBYSxHQUFHL0QsTUFBTSxDQUFDckUsU0FBUyxDQUFDd0UsV0FBVztJQUNsRCxNQUFNNkQsV0FBVyxHQUFHaEUsTUFBTSxDQUFDckUsU0FBUyxDQUFDNkUsU0FBUztJQUU5Q1IsTUFBTSxDQUFDckUsU0FBUyxDQUFDc0ksU0FBUyxDQUFDLENBQUM7SUFDNUIsTUFBTS9DLElBQUksR0FBR2xCLE1BQU0sQ0FBQ3JFLFNBQVMsQ0FBQ3VJLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDbEUsTUFBTSxDQUFDckUsU0FBUyxDQUFDd0ksTUFBTSxDQUFDSixhQUFhLEVBQUVDLFdBQVcsQ0FBQztJQUVuRC9GLFdBQVcsQ0FBQzFCLE9BQU8sR0FBRzJFLElBQUk7SUFDMUIsT0FBT0EsSUFBSTtFQUNmO0VBRUEsU0FBU2tELG1CQUFtQkEsQ0FBQ2xELElBQUksRUFBRTtJQUMvQixNQUFNbUQsS0FBSyxHQUFHLG9CQUFvQjtJQUNsQyxNQUFNQyxNQUFNLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsSUFBSUMsS0FBSztJQUVULE9BQU8sQ0FBQ0EsS0FBSyxHQUFHSCxLQUFLLENBQUNJLElBQUksQ0FBQ3ZELElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtNQUN4Q29ELE1BQU0sQ0FBQ0ksR0FBRyxDQUFDRixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCO0lBRUEsT0FBT0csS0FBSyxDQUFDQyxJQUFJLENBQUNOLE1BQU0sQ0FBQztFQUM3QjtFQUVBLFNBQVNPLGtCQUFrQkEsQ0FBQ0MsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLEdBQUcsRUFBRTtJQUMzQyxJQUFJRixLQUFLLENBQUNHLFNBQVMsS0FBS0YsS0FBSyxDQUFDRSxTQUFTLEVBQUUsT0FBTyxLQUFLO0lBRXJELE1BQU10RyxDQUFDLEdBQUdtRyxLQUFLLENBQUNuTCxRQUFRLENBQUN1TCxHQUFHO0lBQzVCLE1BQU10RyxDQUFDLEdBQUdrRyxLQUFLLENBQUNuTCxRQUFRLENBQUN3TCxHQUFHOztJQUU1QjtJQUNBLE9BQ0l2RyxDQUFDLEtBQUttRyxLQUFLLENBQUNwTCxRQUFRLENBQUN3TCxHQUFHLElBQ3hCeEcsQ0FBQyxJQUFJb0csS0FBSyxDQUFDcEwsUUFBUSxDQUFDdUwsR0FBRyxJQUN2QnZHLENBQUMsSUFBSXFHLEdBQUcsQ0FBQ3JMLFFBQVEsQ0FBQ3VMLEdBQUc7RUFFN0I7RUFFQSxTQUFTRSxtQkFBbUJBLENBQUNoSSxTQUFTLEVBQUU7SUFDcEMsTUFBTTRDLE1BQU0sR0FBRzVDLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFSCxjQUFjO0lBQ3hDLE1BQU10QixTQUFTLEdBQUdxRSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXJFLFNBQVM7SUFDbkMsTUFBTTBKLFNBQVMsR0FBR3JGLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFQSxNQUFNO0lBRWhDLE1BQU1zRixNQUFNLEdBQUduSCxlQUFlLENBQUM1QixPQUFPO0lBQ3RDLElBQUksQ0FBQ3lELE1BQU0sSUFBSSxDQUFDckUsU0FBUyxJQUFJLENBQUMwSixTQUFTLElBQUksQ0FBQ0MsTUFBTSxFQUFFOztJQUVwRDtJQUNBO0lBQ0EsSUFBSTtNQUNBM0osU0FBUyxDQUFDd0ksTUFBTSxDQUFDbUIsTUFBTSxDQUFDbkYsV0FBVyxFQUFFbUYsTUFBTSxDQUFDOUUsU0FBUyxDQUFDO01BQ3REO01BQ0E7TUFDQTtJQUNKLENBQUMsU0FBUztNQUNOckMsZUFBZSxDQUFDNUIsT0FBTyxHQUFHLElBQUk7TUFDOUJnSixrQkFBa0IsQ0FBQ25JLFNBQVMsQ0FBQztJQUNqQztFQUNKO0VBRUEsU0FBU21JLGtCQUFrQkEsQ0FBQ25JLFNBQVMsRUFBRTtJQUNuQ2UsZUFBZSxDQUFDNUIsT0FBTyxHQUFHOEQsb0JBQW9CLENBQUNqRCxTQUFTLENBQUM7RUFDN0Q7RUFFQSxTQUFTb0ksb0JBQW9CQSxDQUFDeEYsTUFBTSxFQUFFeUYsWUFBWSxFQUFpQjtJQUFBLElBQWZDLE9BQU8sR0FBQXRLLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEdBQUc7SUFDN0QsTUFBTTZFLEdBQUcsR0FBR0QsTUFBTSxDQUFDckUsU0FBUztJQUM1QixJQUFJWSxPQUFPLEdBQUdrSixZQUFZO0lBRTFCLEtBQUssSUFBSTVNLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRzZNLE9BQU8sRUFBRTdNLENBQUMsRUFBRSxFQUFFO01BQzlCO01BQ0EwRCxPQUFPLEdBQUdvSixVQUFVLENBQUNwSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFFakMwRCxHQUFHLENBQUNrRSxNQUFNLENBQUM1SCxPQUFPLEVBQUVBLE9BQU8sQ0FBQzs7TUFFNUI7TUFDQTBELEdBQUcsQ0FBQ2tFLE1BQU0sQ0FDTjVILE9BQU8sRUFDUG9KLFVBQVUsQ0FBQ3BKLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDMUIsQ0FBQztNQUVELE1BQU1xSixFQUFFLEdBQUczRixHQUFHLENBQUNpQixJQUFJOztNQUVuQjtNQUNBLElBQUksQ0FBQzBFLEVBQUUsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0QsRUFBRSxDQUFDLEVBQUUsT0FBTyxJQUFJOztNQUVyQztNQUNBLElBQUlBLEVBQUUsS0FBSyxHQUFHLEVBQUU7UUFDWjtRQUNBLE1BQU1FLElBQUksR0FBR0gsVUFBVSxDQUFDcEosT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDMEQsR0FBRyxDQUFDa0UsTUFBTSxDQUFDMkIsSUFBSSxFQUFFSCxVQUFVLENBQUNHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLElBQUk3RixHQUFHLENBQUNpQixJQUFJLEtBQUssR0FBRyxFQUFFO1VBQ2xCO1VBQ0EsT0FBT3lFLFVBQVUsQ0FBQ3BKLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQztNQUNKO0lBQ0o7SUFFQSxPQUFPLElBQUk7RUFDZjtFQUVBLFNBQVN3SixtQkFBbUJBLENBQUMvRixNQUFNLEVBQUV5RixZQUFZLEVBQWlCO0lBQUEsSUFBZkMsT0FBTyxHQUFBdEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsR0FBRztJQUM1RCxNQUFNNkUsR0FBRyxHQUFHRCxNQUFNLENBQUNyRSxTQUFTO0lBQzVCLElBQUlZLE9BQU8sR0FBR2tKLFlBQVk7SUFFMUIsS0FBSyxJQUFJNU0sQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHNk0sT0FBTyxFQUFFN00sQ0FBQyxFQUFFLEVBQUU7TUFDOUIwRCxPQUFPLEdBQUdvSixVQUFVLENBQUNwSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7O01BRWpDO01BQ0EwRCxHQUFHLENBQUNrRSxNQUFNLENBQ053QixVQUFVLENBQUNwSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDdkJBLE9BQ0osQ0FBQztNQUVELE1BQU1xSixFQUFFLEdBQUczRixHQUFHLENBQUNpQixJQUFJO01BRW5CLElBQUksQ0FBQzBFLEVBQUUsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0QsRUFBRSxDQUFDLEVBQUUsT0FBTyxJQUFJOztNQUVyQztNQUNBLElBQUlBLEVBQUUsS0FBSyxHQUFHLEVBQUU7UUFDWixNQUFNSSxJQUFJLEdBQUdMLFVBQVUsQ0FBQ3BKLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQzBELEdBQUcsQ0FBQ2tFLE1BQU0sQ0FDTndCLFVBQVUsQ0FBQ0ssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3BCQSxJQUNKLENBQUM7UUFFRCxJQUFJL0YsR0FBRyxDQUFDaUIsSUFBSSxLQUFLLEdBQUcsRUFBRTtVQUNsQjtVQUNBLE9BQU95RSxVQUFVLENBQUNwSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEM7TUFDSjtJQUNKO0lBRUEsT0FBTyxJQUFJO0VBQ2Y7RUFFQSxTQUFTMEosU0FBU0EsQ0FBQ2pHLE1BQU0sRUFBRWtHLE1BQU0sRUFBRTtJQUMvQixNQUFNakcsR0FBRyxHQUFHRCxNQUFNLENBQUNyRSxTQUFTO0lBQzVCc0UsR0FBRyxDQUFDa0UsTUFBTSxDQUFDK0IsTUFBTSxFQUFFUCxVQUFVLENBQUNPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU9qRyxHQUFHLENBQUNpQixJQUFJLElBQUksSUFBSTtFQUMzQjtFQUVBLFNBQVNpRixtQ0FBbUNBLENBQUNuRyxNQUFNLEVBQUVrRyxNQUFNLEVBQUU7SUFDekQsTUFBTUUsRUFBRSxHQUFHSCxTQUFTLENBQUNqRyxNQUFNLEVBQUVrRyxNQUFNLENBQUM7SUFDcEMsTUFBTUcsRUFBRSxHQUFHSixTQUFTLENBQUNqRyxNQUFNLEVBQUUyRixVQUFVLENBQUNPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE9BQU9FLEVBQUUsS0FBSyxHQUFHLElBQUlDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztFQUNyQztFQUVBLFNBQVNDLDZCQUE2QkEsQ0FBQ3RHLE1BQU0sRUFBRWtHLE1BQU0sRUFBRTtJQUNuRCxPQUNJRCxTQUFTLENBQUNqRyxNQUFNLEVBQUUyRixVQUFVLENBQUNPLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUNqREQsU0FBUyxDQUFDakcsTUFBTSxFQUFFMkYsVUFBVSxDQUFDTyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7RUFFekQ7RUFFQSxTQUFTN0Ysb0JBQW9CQSxDQUFDakQsU0FBUyxFQUFFO0lBQ3JDLE1BQU00QyxNQUFNLEdBQUc1QyxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRUgsY0FBYztJQUN4QyxNQUFNdEIsU0FBUyxHQUFHcUUsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVyRSxTQUFTO0lBRW5DLE1BQU1vSSxhQUFhLEdBQUdwSSxTQUFTLENBQUN3RSxXQUFXO0lBQzNDLE1BQU02RCxXQUFXLEdBQUdySSxTQUFTLENBQUM2RSxTQUFTO0lBRXZDN0UsU0FBUyxDQUFDNEssaUJBQWlCLENBQUMsQ0FBQztJQUM3QjVLLFNBQVMsQ0FBQ3dJLE1BQU0sQ0FBQ0osYUFBYSxFQUFFQyxXQUFXLENBQUM7O0lBRTVDO0lBQ0E7O0lBRUEsSUFBSXdDLFNBQVMsR0FBR3pDLGFBQWE7SUFDN0IsSUFBSTtNQUNBLElBQUlvQyxtQ0FBbUMsQ0FBQ25HLE1BQU0sRUFBRStELGFBQWEsQ0FBQyxFQUFFO1FBQzVELE9BQU8sSUFBSTtNQUNmO01BRUEsSUFBSTBDLFlBQVksR0FBR0gsNkJBQTZCLENBQUN0RyxNQUFNLEVBQUUrRCxhQUFhLENBQUM7TUFDdkUsSUFBSTBDLFlBQVksRUFBRTtRQUNkO1FBQ0FELFNBQVMsR0FBR2IsVUFBVSxDQUFDNUIsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQzdDO01BRUEsTUFBTWxGLElBQUksR0FBR2tILG1CQUFtQixDQUFDL0YsTUFBTSxFQUFFd0csU0FBUyxDQUFDO01BQ25ELE1BQU0xSCxLQUFLLEdBQUcwRyxvQkFBb0IsQ0FBQ3hGLE1BQU0sRUFBRXdHLFNBQVMsQ0FBQztNQUVyRCxJQUFJM0gsSUFBSSxJQUFJQyxLQUFLLEVBQUU7UUFDZm5ELFNBQVMsQ0FBQ3dJLE1BQU0sQ0FBQ3RGLElBQUksRUFBRUMsS0FBSyxDQUFDO1FBQzdCLE1BQU1vQyxJQUFJLEdBQUd2RixTQUFTLENBQUN1RixJQUFJO1FBQzNCOUMsU0FBUyxDQUFDN0IsT0FBTyxHQUFHa0ssWUFBWTs7UUFFaEM7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O1FBRWdCLElBQUksZUFBZSxDQUFDWixJQUFJLENBQUMzRSxJQUFJLENBQUMsRUFBRTtVQUM1QixPQUFPO1lBQ0hSLEtBQUssRUFBRVEsSUFBSTtZQUNYZixXQUFXLEVBQUV0QixJQUFJO1lBQ2pCMkIsU0FBUyxFQUFFMUI7VUFDZixDQUFDO1FBQ0w7TUFDSjtJQUNKLENBQUMsU0FBUztNQUNObkQsU0FBUyxDQUFDd0ksTUFBTSxDQUFDSixhQUFhLEVBQUVDLFdBQVcsQ0FBQztJQUNoRDtFQUNKO0VBRUEsU0FBUzJCLFVBQVVBLENBQUNPLE1BQU0sRUFBRVEsS0FBSyxFQUFFO0lBQy9CLE1BQU1DLEtBQUssR0FBR1QsTUFBTSxDQUFDVSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQy9CLE1BQU1DLEdBQUcsR0FBR0YsS0FBSyxDQUFDdEwsTUFBTSxHQUFHLENBQUM7SUFFNUIsTUFBTW9FLEtBQUssR0FBR2pFLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRXFMLFFBQVEsQ0FBQ0gsS0FBSyxDQUFDRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBR0gsS0FBSyxDQUFDO0lBQzNEQyxLQUFLLENBQUNFLEdBQUcsQ0FBQyxHQUFHcEgsS0FBSyxDQUFDN0UsUUFBUSxDQUFDLENBQUM7SUFFN0IsT0FBTytMLEtBQUssQ0FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUMxQjtFQUVBekosY0FBSyxDQUFDUCxTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJSyxTQUFTLEVBQUU7TUFDWDRGLGNBQWMsQ0FBQyxDQUFDO01BQ2hCOztNQUVBLE1BQU1oRCxNQUFNLEdBQUc1QyxTQUFTLENBQUNILGNBQWM7TUFDdkMrQyxNQUFNLENBQUNnSCxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUdDLElBQUksSUFBSztRQUN6QyxNQUFNNU8sQ0FBQyxHQUFHNE8sSUFBSSxDQUFDQyxLQUFLOztRQUVwQjtRQUNBLElBQUk3SCxlQUFlLENBQUNoSCxDQUFDLENBQUMsRUFBRTtVQUNwQjhPLHFCQUFxQixDQUFDLE1BQU07WUFDeEI1QixrQkFBa0IsQ0FBQ25JLFNBQVMsQ0FBQztZQUM3QjtVQUNKLENBQUMsQ0FBQztVQUVGO1FBQ0o7O1FBRUE7UUFDQSxJQUFJL0UsQ0FBQyxDQUFDa0gsR0FBRyxLQUFLLFdBQVcsSUFBSWxILENBQUMsQ0FBQ2tILEdBQUcsS0FBSyxRQUFRLEVBQUU7VUFFN0MsSUFBSWxCLGFBQWEsQ0FBQzlCLE9BQU8sRUFBRTtZQUN2QjtZQUNBeUQsTUFBTSxDQUFDb0gsYUFBYSxDQUFDQyxJQUFJLENBQUMsQ0FBQztZQUMzQmhQLENBQUMsQ0FBQ2lQLGNBQWMsQ0FBQyxDQUFDO1lBQ2xCalAsQ0FBQyxDQUFDa1AsZUFBZSxDQUFDLENBQUM7WUFDbkI7VUFDSjs7VUFFQTtVQUNBbEosYUFBYSxDQUFDOUIsT0FBTyxHQUFHLElBQUk7O1VBRTVCO1VBQ0E0SyxxQkFBcUIsQ0FBQyxNQUFNO1lBQ3hCQSxxQkFBcUIsQ0FBQyxNQUFNO2NBQ3hCOUksYUFBYSxDQUFDOUIsT0FBTyxHQUFHLEtBQUs7WUFDakMsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDO1FBQ047O1FBRUE7UUFDQTtRQUNBLElBQUs0QixlQUFlLENBQUM1QixPQUFPLElBQUksQ0FBQzhDLGVBQWUsQ0FBQ2hILENBQUMsQ0FBQyxJQUFLK0YsU0FBUyxDQUFDN0IsT0FBTyxFQUFFO1VBQ3ZFO1VBQ0EsSUFBSWxFLENBQUMsQ0FBQ2tILEdBQUcsS0FBSyxXQUFXLElBQUlsSCxDQUFDLENBQUNrSCxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzdDO1lBQ0FsSCxDQUFDLENBQUNpUCxjQUFjLENBQUMsQ0FBQztZQUNsQmpQLENBQUMsQ0FBQ2tQLGVBQWUsQ0FBQyxDQUFDO1lBRW5CbkMsbUJBQW1CLENBQUNoSSxTQUFTLEVBQUVlLGVBQWUsQ0FBQzVCLE9BQU8sQ0FBQztZQUN2RDRCLGVBQWUsQ0FBQzVCLE9BQU8sR0FBRyxJQUFJO1lBQzlCNkIsU0FBUyxDQUFDN0IsT0FBTyxHQUFHLEtBQUs7WUFDekI4QixhQUFhLENBQUM5QixPQUFPLEdBQUcsS0FBSztZQUU3QjtVQUNKOztVQUVBO1VBQ0E7VUFDQSxJQUFJLENBQUM2QixTQUFTLENBQUM3QixPQUFPLEVBQUU7WUFDcEI7WUFDQSxJQUNJbEUsQ0FBQyxDQUFDa0gsR0FBRyxDQUFDbEUsTUFBTSxLQUFLLENBQUM7WUFBSTtZQUN0QmhELENBQUMsQ0FBQ21QLE9BQU8sSUFDVG5QLENBQUMsQ0FBQ29QLE9BQU8sRUFDWDtjQUNFcFAsQ0FBQyxDQUFDaVAsY0FBYyxDQUFDLENBQUM7Y0FDbEJqUCxDQUFDLENBQUNrUCxlQUFlLENBQUMsQ0FBQztZQUN2QjtVQUNKLENBQUMsTUFBTTtZQUNIcEosZUFBZSxDQUFDNUIsT0FBTyxHQUFHLElBQUk7VUFDbEM7VUFFQTZCLFNBQVMsQ0FBQzdCLE9BQU8sR0FBRyxLQUFLO1FBQzdCO1FBRUEsSUFBSWxFLENBQUMsQ0FBQ2tILEdBQUcsS0FBSyxXQUFXLElBQUlsSCxDQUFDLENBQUNrSCxHQUFHLEtBQUssUUFBUSxFQUFFO1VBQzdDNEgscUJBQXFCLENBQUMsTUFBTTtZQUN4QjVCLGtCQUFrQixDQUFDbkksU0FBUyxDQUFDO1VBQ2pDLENBQUMsQ0FBQztRQUNOO01BQ0osQ0FBQyxDQUFDO01BRUYsTUFBTXNLLFNBQVMsR0FBSXJQLENBQUMsSUFBSztRQUNyQixJQUFJLENBQUNxRyxvQkFBb0IsQ0FBQ3JHLENBQUMsQ0FBQ3NQLE9BQU8sRUFBRXRQLENBQUMsQ0FBQ3VQLE9BQU8sRUFBRWpJLGFBQWEsQ0FBQyxFQUFFO1VBQzVEO1FBQ0o7UUFFQSxJQUFJaUIsUUFBUSxDQUFDckUsT0FBTyxFQUFFO1VBQ2xCcUQsb0JBQW9CLENBQUNnQixRQUFRLENBQUNyRSxPQUFPLENBQUNrRCxLQUFLLEVBQUVtQixRQUFRLENBQUNyRSxPQUFPLENBQUN1RCxZQUFZLENBQUM7VUFDM0VjLFFBQVEsQ0FBQ3JFLE9BQU8sR0FBRyxJQUFJO1FBQzNCO1FBRUFnSixrQkFBa0IsQ0FBQ25JLFNBQVMsQ0FBQztRQUM3QjtNQUNKLENBQUM7TUFFRHVDLGFBQWEsQ0FBQ3FILGdCQUFnQixDQUFDLFNBQVMsRUFBRVUsU0FBUyxDQUFDO01BQ3BELE9BQU8sTUFBTS9ILGFBQWEsQ0FBQ2tJLG1CQUFtQixDQUFDLFNBQVMsRUFBRUgsU0FBUyxDQUFDO0lBQ3hFO0VBQ0osQ0FBQyxFQUFFLENBQUN0SyxTQUFTLENBQUMsQ0FBQztFQUVmRSxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUlLLFNBQVMsSUFBSVMsSUFBSSxFQUFFO01BQ25CVCxTQUFTLENBQUNILGNBQWMsQ0FBQzZLLGNBQWMsR0FBRyxZQUFZO1FBQ2xEMUssU0FBUyxDQUFDSCxjQUFjLENBQUM4SyxrQkFBa0IsR0FBRyxDQUFDaEcsY0FBSyxDQUFDaUcsTUFBTSxDQUFDN0ssS0FBSyxDQUFDOEssWUFBWSxDQUFDLEdBQUc5SyxLQUFLLENBQUM4SyxZQUFZLEdBQUcsSUFBSTtRQUMzRyxJQUFJOUssS0FBSyxDQUFDa0UsWUFBWSxFQUFFO1VBQ3BCakUsU0FBUyxDQUFDSCxjQUFjLENBQUMrQyxNQUFNLENBQUM0RCxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDO1FBQ2pGLENBQUMsTUFBTSxJQUFJekcsS0FBSyxDQUFDK0ssUUFBUSxFQUFFO1VBQ3ZCOUssU0FBUyxDQUFDSCxjQUFjLENBQUNrTCxVQUFVLEdBQUdoTCxLQUFLLENBQUMrSyxRQUFRO1FBQ3hEO1FBRUEsSUFBSTVKLE9BQU8sQ0FBQy9CLE9BQU8sRUFBRTtVQUNqQixJQUFJcUYsSUFBSSxHQUFHLE1BQU1iLFlBQVksQ0FBQyxDQUFDO1VBQy9CLElBQUk1RCxLQUFLLENBQUNpTCxrQkFBa0IsRUFBRTtZQUMxQmpMLEtBQUssQ0FBQ2lMLGtCQUFrQixDQUFDeEcsSUFBSSxDQUFDO1VBQ2xDO1VBRUF0RCxPQUFPLENBQUMvQixPQUFPLEdBQUcsS0FBSztRQUMzQjtRQUVBMEIsV0FBVyxDQUFDMUIsT0FBTyxHQUFHdUgsbUJBQW1CLENBQUMxRyxTQUFTLENBQUNILGNBQWMsQ0FBQytDLE1BQU0sQ0FBQztNQUM5RSxDQUFDO01BRUQ1QyxTQUFTLENBQUNILGNBQWMsQ0FBQytKLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxNQUFPM08sQ0FBQyxJQUFLO1FBQ3BFLElBQUk4RSxLQUFLLENBQUNrTCxvQkFBb0IsRUFBRTtVQUM1QixJQUFJQyxhQUFhLEdBQUdwSixRQUFRLENBQUNxSixzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztVQUMvRSxLQUFLLE1BQU1DLFlBQVksSUFBSUYsYUFBYSxFQUFFO1lBQ3RDRSxZQUFZLENBQUNDLGFBQWEsQ0FBQ0MsV0FBVyxDQUFDRixZQUFZLENBQUM7VUFDeEQ7UUFDSjtRQUVBLElBQUlyTCxLQUFLLENBQUN3TCxvQkFBb0IsRUFBRTtVQUM1QixJQUFJQyxhQUFhLEdBQUcxSixRQUFRLENBQUNxSixzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztVQUMvRSxLQUFLLE1BQU1NLFlBQVksSUFBSUQsYUFBYSxFQUFFO1lBQ3RDQyxZQUFZLENBQUNKLGFBQWEsQ0FBQ0MsV0FBVyxDQUFDRyxZQUFZLENBQUM7VUFDeEQ7UUFDSjtRQUVBLElBQUl2SyxPQUFPLENBQUMvQixPQUFPLEVBQUU7VUFDakIsSUFBSXFGLElBQUksR0FBRyxNQUFNYixZQUFZLENBQUMsQ0FBQztVQUMvQixJQUFJNUQsS0FBSyxDQUFDaUwsa0JBQWtCLEVBQUU7WUFDMUJqTCxLQUFLLENBQUNpTCxrQkFBa0IsQ0FBQ3hHLElBQUksQ0FBQztVQUNsQztVQUVBdEQsT0FBTyxDQUFDL0IsT0FBTyxHQUFHLEtBQUs7UUFDM0I7UUFFQTBCLFdBQVcsQ0FBQzFCLE9BQU8sR0FBR3VILG1CQUFtQixDQUFDMUcsU0FBUyxDQUFDSCxjQUFjLENBQUMrQyxNQUFNLENBQUM7TUFDOUUsQ0FBQyxDQUFDO01BRUY1QyxTQUFTLENBQUNILGNBQWMsQ0FBQzZMLElBQUksQ0FBQ2pMLElBQUksQ0FBQztNQUNuQ1QsU0FBUyxDQUFDSCxjQUFjLENBQUM4SyxrQkFBa0IsR0FBRyxDQUFDaEcsY0FBSyxDQUFDaUcsTUFBTSxDQUFDN0ssS0FBSyxDQUFDOEssWUFBWSxDQUFDLEdBQUc5SyxLQUFLLENBQUM4SyxZQUFZLEdBQUcsSUFBSTtNQUMzRztJQUNKO0VBQ0osQ0FBQyxFQUFFLENBQUNwSyxJQUFJLEVBQUVULFNBQVMsQ0FBQyxDQUFDO0VBRXJCLE1BQU0yTCxjQUFjLEdBQUk5QixJQUFJLElBQUs7SUFBQSxJQUFBK0IscUJBQUE7SUFDN0IsTUFBTTlOLEVBQUUsR0FBR2tDLFNBQVMsYUFBVEEsU0FBUyxnQkFBQTRMLHFCQUFBLEdBQVQ1TCxTQUFTLENBQUVILGNBQWMsY0FBQStMLHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkJoSixNQUFNO0lBQzVDLElBQUksQ0FBQzlFLEVBQUUsRUFBRTtJQUNULFFBQVErTCxJQUFJLENBQUNnQyxJQUFJLENBQUM3SixFQUFFO01BQ2hCLEtBQUssU0FBUztRQUNWbEUsRUFBRSxDQUFDZ08sV0FBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BDO01BQ0osS0FBSyxXQUFXO1FBQ1poTyxFQUFFLENBQUNZLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwQztNQUNKLEtBQUssU0FBUztRQUNWYixVQUFVLENBQUNDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakI7TUFDSixLQUFLLFNBQVM7UUFDVkQsVUFBVSxDQUFDQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCO01BQ0osS0FBSyxTQUFTO1FBQ1ZELFVBQVUsQ0FBQ0MsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQjtNQUNKLEtBQUssWUFBWTtRQUNiQSxFQUFFLENBQUNpTyxTQUFTLENBQUMsQ0FBQztRQUNkO01BQ0o7TUFDQTtJQUNKO0VBQ0osQ0FBQztFQUVELG9CQUNJM1IsTUFBQSxDQUFBZSxPQUFBLENBQUE2USxhQUFBO0lBQUtDLFNBQVMsRUFBRSxzQkFBdUI7SUFBQ0MsS0FBSyxFQUFFO01BQUNwTixNQUFNLEVBQUU7SUFBTSxDQUFFO0lBQUNrRCxFQUFFLG9CQUFxQjtJQUFDbUssR0FBRyxFQUFFdk47RUFBVSxHQUVoRyxDQUFDeUIsT0FBTyxpQkFDUmpHLE1BQUEsQ0FBQWUsT0FBQSxDQUFBNlEsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUnBOLE1BQU0sRUFBRSxNQUFNO01BQ2RzTixLQUFLLEVBQUUsTUFBTTtNQUNiQyxRQUFRLEVBQUUsTUFBTTtNQUNoQkMsT0FBTyxFQUFFLE1BQU07TUFDZkMsY0FBYyxFQUFFLFFBQVE7TUFDeEJDLFlBQVksRUFBRTtJQUNsQjtFQUFFLGdCQUNFcFMsTUFBQSxDQUFBZSxPQUFBLENBQUE2USxhQUFBLENBQUNsUixXQUFBLENBQUFLLE9BQVU7SUFBQzZHLEVBQUUsRUFBRTtFQUFhLENBQUMsQ0FDN0IsQ0FBQyxFQUdOckIsWUFBWSxpQkFDWnZHLE1BQUEsQ0FBQWUsT0FBQSxDQUFBNlEsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUk8sT0FBTyxFQUFFLGVBQWU7TUFDeEJDLFNBQVMsRUFBRTtJQUNmO0VBQUUsZ0JBQ0V0UyxNQUFBLENBQUFlLE9BQUEsQ0FBQTZRLGFBQUEsQ0FBQ25SLE1BQUEsQ0FBQU0sT0FBSztJQUNGd1IsT0FBTyxFQUFFLFFBQVM7SUFDbEJDLElBQUksRUFBRSxDQUFDakksY0FBSyxDQUFDaUcsTUFBTSxDQUFDakssWUFBWSxDQUFFO0lBQ2xDa00sT0FBTyxFQUFFQSxDQUFBLEtBQU1qTSxlQUFlLENBQUMsSUFBSSxDQUFFO0lBQ3JDa00sV0FBVztJQUNYWixLQUFLLEVBQUU7TUFDSGEsSUFBSSxFQUFFO0lBQ1Y7RUFBRSxnQkFFRjNTLE1BQUEsQ0FBQWUsT0FBQSxDQUFBNlEsYUFBQTtJQUFHRSxLQUFLLEVBQUU7TUFBQ2MsS0FBSyxFQUFFO0lBQTBCO0VBQUUsR0FBRXJNLFlBQWdCLENBQzdELENBQ04sQ0FBQyxFQUlOTixPQUFPLElBQUlGLEtBQUssS0FBS3dFLGNBQUssQ0FBQ2lHLE1BQU0sQ0FBQzdLLEtBQUssQ0FBQzhLLFlBQVksQ0FBQyxJQUFJOUssS0FBSyxDQUFDOEssWUFBWSxLQUFLLElBQUksQ0FBQyxpQkFDckZ6USxNQUFBLENBQUFlLE9BQUEsQ0FBQTZRLGFBQUEsQ0FBQ3RSLHVCQUFBLENBQUErQyxnQ0FBZ0M7SUFBQ3VFLEVBQUUsS0FBQTlFLE1BQUEsQ0FBSzZDLEtBQUssQ0FBQ2lDLEVBQUUsZUFBYTtJQUFDbEQsTUFBTSxFQUFFdUMsWUFBWSxHQUFHLENBQUMsTUFBQW5FLE1BQUEsQ0FBTW1FLFlBQVksVUFBTyxRQUFTO0lBQ3ZGOEssR0FBRyxFQUFHYyxLQUFLLElBQUs7TUFDWmhOLFlBQVksQ0FBQ2dOLEtBQUssQ0FBQztNQUNuQnBPLFlBQVksQ0FBQ00sT0FBTyxHQUFHOE4sS0FBSztJQUNoQyxDQUFFO0lBQ0ZDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO01BQ1gsSUFBSWxOLFNBQVMsRUFBRTtRQUNYQSxTQUFTLENBQUNKLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCSSxTQUFTLENBQUNILGNBQWMsQ0FBQ0QsTUFBTSxDQUFDLENBQUM7TUFDckM7SUFDSixDQUFFO0lBQ0Z1TixpQkFBaUIsRUFBRSxLQUFNO0lBQ3pCQyxZQUFZLEVBQUV6QixjQUFlO0lBQzdCM0gsWUFBWSxFQUFFN0QsS0FBTTtJQUNwQmtOLGVBQWUsRUFBRXROLEtBQUssQ0FBQytLLFFBQVEsSUFBSSxDQUFDL0ssS0FBSyxDQUFDa0UsWUFBYTtJQUN2RHFKLGtCQUFrQixFQUFFLEtBQU07SUFDMUIzQyxrQkFBa0IsRUFBRSxJQUFLO0lBQ3pCNEMsZUFBZSxFQUFFLEtBQU07SUFDdkJDLFVBQVUsRUFBRTVRLGFBQWEsQ0FBQyxDQUFFO0lBQzVCNlEsYUFBYSxFQUFFLENBQUUxTixLQUFLLENBQUMrSyxRQUFTLElBQUkvSyxLQUFLLENBQUNrRTtFQUFhLENBQUMsQ0FBQyxFQUczRjVELE9BQU8sSUFBSUYsS0FBSyxJQUFJSixLQUFLLENBQUM4SyxZQUFZLEtBQUssS0FBSyxpQkFDaER6USxNQUFBLENBQUFlLE9BQUEsQ0FBQTZRLGFBQUEsQ0FBQ3RSLHVCQUFBLENBQUErQyxnQ0FBZ0M7SUFBQ3VFLEVBQUUsS0FBQTlFLE1BQUEsQ0FBSzZDLEtBQUssQ0FBQ2lDLEVBQUUsZUFBYTtJQUFDbEQsTUFBTSxFQUFFdUMsWUFBWSxHQUFHLENBQUMsTUFBQW5FLE1BQUEsQ0FBTW1FLFlBQVksVUFBTyxRQUFTO0lBQ3ZGOEssR0FBRyxFQUFHYyxLQUFLLElBQUs7TUFDWmhOLFlBQVksQ0FBQ2dOLEtBQUssQ0FBQztNQUNuQnBPLFlBQVksQ0FBQ00sT0FBTyxHQUFHOE4sS0FBSztJQUNoQyxDQUFFO0lBQ0ZDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO01BQ1gsSUFBSWxOLFNBQVMsRUFBRTtRQUNYQSxTQUFTLENBQUNKLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCSSxTQUFTLENBQUNILGNBQWMsQ0FBQ0QsTUFBTSxDQUFDLENBQUM7TUFDckM7SUFDSixDQUFFO0lBQ0Z1TixpQkFBaUIsRUFBRSxLQUFNO0lBQ3pCQyxZQUFZLEVBQUV6QixjQUFlO0lBQzdCM0gsWUFBWSxFQUFFN0QsS0FBTTtJQUNwQmtOLGVBQWUsRUFBRXROLEtBQUssQ0FBQytLLFFBQVEsSUFBSSxDQUFDL0ssS0FBSyxDQUFDa0UsWUFBYTtJQUN2RHFKLGtCQUFrQixFQUFFLEtBQU07SUFDMUJDLGVBQWUsRUFBRSxLQUFNO0lBQ3ZCQyxVQUFVLEVBQUU1USxhQUFhLENBQUMsQ0FBRTtJQUM1QjZRLGFBQWEsRUFBRSxDQUFFMU4sS0FBSyxDQUFDK0ssUUFBUyxJQUFJL0ssS0FBSyxDQUFDa0U7RUFBYSxDQUFDLENBRTdGLENBQUM7QUFFZCxDQUFDO0FBQUMsSUFBQXlKLFFBQUEsR0FBQXJSLE9BQUEsQ0FBQWxCLE9BQUEsR0FFYTJFLGtCQUFrQiIsImlnbm9yZUxpc3QiOltdfQ==
672
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJSRUFDVF9BUFBfRE9DU19BUElfSE9TVCIsIndpbmRvdyIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInJlc29sdmVEb2NTdmMiLCJSRUFDVF9BUFBfRE9DU19BUElfUEFUSCIsIkRPQ1NWQyIsImdldERvY3NCYXNlIiwidGVzdCIsInJlcGxhY2UiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRDb250ZXh0Um9vdCIsImdldFNlcnZpY2VVcmwiLCJhY2Nlc3NUb2tlbiIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkVG9rZW4iLCJiYXNlIiwiY29uY2F0IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwicXMiLCJ0b1N0cmluZyIsIkRvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IiwiSW5qZWN0IiwiVG9vbGJhciIsIkxFVkVMX0ZNVCIsImFwcGx5TGV2ZWwiLCJlZCIsImxldmVsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZGVwdGgiLCJNYXRoIiwibWF4IiwibWluIiwic2VsZWN0aW9uIiwicGFyYWdyYXBoRm9ybWF0IiwibGlzdExldmVsTnVtYmVyIiwiYXBwbHlOdW1iZXJpbmciLCJ1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodCIsInBhcmVudFJlZiIsImNvbnRhaW5lclJlZiIsImhlaWdodCIsInNldEhlaWdodCIsInVzZVN0YXRlIiwibWVhc3VyZSIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJuZXdIZWlnaHQiLCJmbG9vciIsImNvbnNvbGUiLCJsb2ciLCJ1c2VSZXNpemVPYnNlcnZlciIsInVzZUVmZmVjdCIsInJlc2l6ZSIsImRvY3VtZW50RWRpdG9yIiwiV29yZERvY3VtZW50Vmlld2VyIiwicHJvcHMiLCJjb250YWluZXIiLCJzZXRDb250YWluZXIiLCJSZWFjdCIsIml0ZW1zIiwic2V0SXRlbXMiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInJlUmVuZGVyaW5nIiwic2V0UmVSZW5kZXJpbmciLCJqc29uIiwic2V0SnNvbiIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsImN1cnJlbnRUZXh0IiwidXNlUmVmIiwiYWN0aXZlQW5jaG9yUmVmIiwiYW5jaG9yRW5kIiwiZGVsZXRlTG9ja1JlZiIsImxvYWRpbmciLCJ1c2VPbkZ1bGx5VmlzaWJsZSIsImVsIiwiZWRpdG9ySGVpZ2h0IiwiaXNQb2ludEluc2lkZUVsZW1lbnQiLCJ4IiwieSIsImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImdldFZpZXdlckVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaWQiLCJpc05hdmlnYXRpb25LZXkiLCJpbmNsdWRlcyIsImtleSIsIm5vcm1hbGl6ZUFuY2hvciIsInZhbHVlIiwidmlld2VyRWxlbWVudCIsImluc2VydFJlYWRvbmx5QW5jaG9yIiwiZXZlbnREYXRhIiwiZHJvcFBvc2l0aW9uIiwiZG9jIiwiZWRpdG9yIiwic2VsIiwiY2FyZXRPZmZzZXQiLCJzdGFydE9mZnNldCIsImV4aXN0aW5nQW5jaG9yIiwiZ3JhYkFuY2hvcldpdGhCb3VuZHMiLCJhdFN0YXJ0IiwiYXRFbmQiLCJlbmRPZmZzZXQiLCJ3YXJuIiwidG9rZW4iLCJpbnNlcnRUZXh0IiwiZHJvcERhdGEiLCJhcGkiLCJnZXRWYWx1ZSIsInNhdmVBc0Jhc2U2NCIsInZhbHVlSGFuZGxlciIsIm51bWJlcmluZ0l0ZW1zIiwidGV4dCIsInNlcGFyYXRvciIsInRvb2xiYXJJdGVtcyIsImNvbW1lbnRzT25seSIsInRvb2x0aXBUZXh0IiwicHJlZml4SWNvbiIsImNvbW1hbmQiLCJlbmFibGVVcGxvYWQiLCJ1bnNoaWZ0IiwiX3Byb3BzJGZpbGUiLCJmaWxlIiwiYmFzZTY0IiwiYXJyYXlCdWZmZXIiLCJVdGlscyIsImJhc2U2NFRvQXJyYXlCdWZmZXIiLCJCbG9iIiwidHlwZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0dXBDb250YWluZXIiLCJjdXJyZW50VXNlciIsImdldFVzZXJEZXRhaWxzIiwibmFtZSIsInN1cm5hbWUiLCJhbGxvd1VucmVzb2x2ZWRDaGFuZ2VzIiwicmV2aXNpb25zIiwiX3Byb3BzJGZpbGUyIiwiX3Byb3BzJGZpbGUzIiwic3RvcFByb3RlY3Rpb24iLCJibG9iIiwic2F2ZUFzQmxvYiIsImVuZm9yY2VQcm90ZWN0aW9uIiwiRmlsZSIsImV4dHJhY3REb2N1bWVudFRleHQiLCJvcmlnaW5hbFN0YXJ0Iiwib3JpZ2luYWxFbmQiLCJzZWxlY3RBbGwiLCJnZXRUZXh0Iiwic2VsZWN0IiwiZXh0cmFjdEFuY2hvclRva2VucyIsInJlZ2V4IiwidG9rZW5zIiwiU2V0IiwibWF0Y2giLCJleGVjIiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiaXNDYXJldFdpdGhpblJhbmdlIiwiY2FyZXQiLCJzdGFydCIsImVuZCIsInBhcmFncmFwaCIsInhJbiIsInlJbiIsImRlbGV0ZUN1cnJlbnRBbmNob3IiLCJkb2NFZGl0b3IiLCJhbmNob3IiLCJ1cGRhdGVBY3RpdmVBbmNob3IiLCJzY2FuUmlnaHRVbnRpbEFuY2hvciIsIm9yaWdpbk9mZnNldCIsIm1heFNjYW4iLCJidW1wT2Zmc2V0IiwiY2giLCJuZXh0Iiwic2NhbkxlZnRVbnRpbEFuY2hvciIsInByZXYiLCJnZXRDaGFyQXQiLCJvZmZzZXQiLCJpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydCIsImMwIiwiYzEiLCJpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvciIsInNlbGVjdEN1cnJlbnRXb3JkIiwic2NhblN0YXJ0IiwiaXNDYXJldEF0RW5kIiwiZGVsdGEiLCJwYXJ0cyIsInNwbGl0IiwiaWR4IiwicGFyc2VJbnQiLCJqb2luIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFyZ3MiLCJldmVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImVkaXRvckhpc3RvcnkiLCJ1bmRvIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjdHJsS2V5IiwibWV0YUtleSIsIm9uTW91c2VVcCIsImNsaWVudFgiLCJjbGllbnRZIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50Q2hhbmdlIiwiZW5hYmxlVHJhY2tDaGFuZ2VzIiwiaXNOdWxsIiwidHJhY2tDaGFuZ2VzIiwicmVhZE9ubHkiLCJpc1JlYWRPbmx5IiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwiZGlzYWJsZUFjY2VwdENoYW5nZXMiLCJhY2NlcHRCdXR0b25zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImFjY2VwdEJ1dHRvbiIsInBhcmVudEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImRpc2FibGVSZWplY3RDaGFuZ2VzIiwicmVqZWN0QnV0dG9ucyIsInJlamVjdEJ1dHRvbiIsIm9wZW4iLCJvblRvb2xiYXJDbGljayIsIl9jb250YWluZXIkZG9jdW1lbnRFZCIsIml0ZW0iLCJhcHBseUJ1bGxldCIsImNsZWFyTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsInJlZiIsIndpZHRoIiwiZmxleFdyYXAiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkNvbnRlbnQiLCJwYWRkaW5nIiwibWF4SGVpZ2h0IiwidmFyaWFudCIsInNob3ciLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJ3aXRoIiwiY29sb3IiLCJzY29wZSIsImNyZWF0ZWQiLCJlbmFibGVQZXJzaXN0ZW5jZSIsInRvb2xiYXJDbGljayIsInJlc3RyaWN0RWRpdGluZyIsInNob3dQcm9wZXJ0aWVzUGFuZSIsImVuYWJsZUF1dG9Gb2N1cyIsInNlcnZpY2VVcmwiLCJlbmFibGVUb29sYmFyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvV29yZERvY3VtZW50Vmlld2VyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gXCJyZWFjdC1wcm9taXNlLXRyYWNrZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwiLi4vVXRpbHNcIjtcbmltcG9ydCB7RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQsIFRvb2xiYXJ9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1yZWFjdC1kb2N1bWVudGVkaXRvcic7XG5pbXBvcnQgXCIuL0RvY3VtZW50VGVtcGxhdGVEZXNpZ25lckNvbXBvbmVudC5jc3NcIlxuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQge3JlZ2lzdGVyTGljZW5zZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1iYXNlXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSBcIi4vTG90dGllSWNvblwiO1xuaW1wb3J0IFwiLi9Xb3JkRG9jdW1lbnRWaWV3ZXIuY3NzXCJcbmltcG9ydCB7dXNlU3RhdGUsIHVzZUNhbGxiYWNrfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlUmVzaXplT2JzZXJ2ZXJ9IGZyb20gXCIuL29ic2VydmVycy91c2VSZXNpemVPYnNlcnZlclwiO1xuaW1wb3J0IHt1c2VPbkZ1bGx5VmlzaWJsZX0gZnJvbSBcIi4vb2JzZXJ2ZXJzL3VzZU9uRnVsbHlWaXNpYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBLRVkgPSAnTmdvOUJpZ0JPZ2dqSFRReEFSOC9WMUpHYUY1Y1hHcENmMUZwUm1KR2RsZDVmVVZIWVZaVVRYeGFTMDBETkhWUmRrZGxXWDVjZUhWUlEyQllVVWR3WDBOV1lFcz0nO1xucmVnaXN0ZXJMaWNlbnNlKEtFWSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVMb2NhdGlvbigpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUO1xuICAgIH1cbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURvY1N2YygpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIO1xuICAgIH1cbiAgICByZXR1cm4gXCIvZG9jcy9hcGkvdjEvc3luY2Z1c2lvblwiO1xufVxuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSByZXNvbHZlTG9jYXRpb24oKTtcbmV4cG9ydCBjb25zdCBET0NTVkMgPSByZXNvbHZlRG9jU3ZjKCk7XG5cbi8vIFdoZW4gRE9DU1ZDIGlzIGFuIGFic29sdXRlIFVSTCAocHJvZHVjdGlvbiBzdG9wZ2FwIHBvaW50aW5nIGF0IHRoZVxuLy8gU3luY2Z1c2lvbi1ob3N0ZWQgYmFja2VuZCB3aGlsZSBvdXIgb3duIGRvY3Mgc2VydmljZSBpcyB1cGdyYWRlZCksXG4vLyB1c2UgaXQgdmVyYmF0aW0gYW5kIHNraXAgdGhlIGhvc3QgKyBjb250ZXh0Um9vdCBwcmVmaXguIFRyYWlsaW5nXG4vLyBzbGFzaCBpcyBzdHJpcHBlZCBzbyBgJHsuLi59L0ltcG9ydGAgZG9lc24ndCBwcm9kdWNlIGEgZG91YmxlIHNsYXNoLlxuZnVuY3Rpb24gZ2V0RG9jc0Jhc2UoKSB7XG4gICAgaWYgKC9eaHR0cHM/OlxcL1xcLy9pLnRlc3QoRE9DU1ZDKSkge1xuICAgICAgICByZXR1cm4gRE9DU1ZDLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIERPQ1NWQztcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmljZVVybCgpIHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcbiAgICBjb25zdCBiYXNlID0gYCR7Z2V0RG9jc0Jhc2UoKX0vSW1wb3J0YDtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKGFjY2Vzc1Rva2VuKSBwYXJhbXMuc2V0KCdhY2Nlc3NfdG9rZW4nLCBhY2Nlc3NUb2tlbik7XG4gICAgaWYgKGlkVG9rZW4pIHBhcmFtcy5zZXQoJ2lkX3Rva2VuJywgaWRUb2tlbik7XG4gICAgY29uc3QgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gcXMgPyBgJHtiYXNlfT8ke3FzfWAgOiBiYXNlO1xufVxuXG5Eb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudC5JbmplY3QoVG9vbGJhcik7XG5cbmNvbnN0IExFVkVMX0ZNVCA9IFsnJTEuJywgJyUxLiUyLicsICclMS4lMi4lMy4nXTtcblxuZnVuY3Rpb24gYXBwbHlMZXZlbChlZCwgbGV2ZWwgPSAwKSB7XG4gICAgY29uc3QgZGVwdGggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsZXZlbCwgTEVWRUxfRk1ULmxlbmd0aCAtIDEpKTtcbiAgICBlZC5zZWxlY3Rpb24ucGFyYWdyYXBoRm9ybWF0Lmxpc3RMZXZlbE51bWJlciA9IGRlcHRoO1xuICAgIGVkLmFwcGx5TnVtYmVyaW5nKExFVkVMX0ZNVFtkZXB0aF0sICdBcmFiaWMnKTtcbn1cblxuZnVuY3Rpb24gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpIHtcbiAgICBjb25zdCBbaGVpZ2h0LCBzZXRIZWlnaHRdID0gdXNlU3RhdGUoMCk7XG5cbiAgICBjb25zdCBtZWFzdXJlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXBhcmVudFJlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmVjdCA9IHBhcmVudFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLmZsb29yKHJlY3QuaGVpZ2h0KTtcblxuICAgICAgICBpZiAobmV3SGVpZ2h0ID4gMCAmJiBuZXdIZWlnaHQgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJNRUFTVVJFIDogXCIsIG5ld0hlaWdodCk7XG4gICAgICAgICAgICBzZXRIZWlnaHQobmV3SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH0sIFtwYXJlbnRSZWYsIGhlaWdodF0pO1xuXG4gICAgLy8g8J+UgSBSZXNpemUgb2JzZXJ2ZXJcbiAgICB1c2VSZXNpemVPYnNlcnZlcihwYXJlbnRSZWYsIG1lYXN1cmUpO1xuXG4gICAgLy8g4pqhIFN5bmNmdXNpb24gcmVzaXplIHRyaWdnZXJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBzaWxlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtoZWlnaHQsIGNvbnRhaW5lclJlZl0pO1xuXG4gICAgcmV0dXJuIGhlaWdodDtcbn1cblxuY29uc3QgV29yZERvY3VtZW50Vmlld2VyID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW2NvbnRhaW5lciwgc2V0Q29udGFpbmVyXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3JlUmVuZGVyaW5nLCBzZXRSZVJlbmRlcmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2pzb24sIHNldEpzb25dID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2Vycm9yTWVzc2FnZSwgc2V0RXJyb3JNZXNzYWdlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbnRUZXh0ID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFjdGl2ZUFuY2hvclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhbmNob3JFbmQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGRlbGV0ZUxvY2tSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGxvYWRpbmcgPSB1c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgcGFyZW50UmVmID0gdXNlT25GdWxseVZpc2libGUoKGVsKSA9PiB7XG4gICAgICAgIGlmICghcmVSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgc2V0UmVSZW5kZXJpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBlZGl0b3JIZWlnaHQgPSB1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodChwYXJlbnRSZWYsIGNvbnRhaW5lclJlZik7XG5cbiAgICBmdW5jdGlvbiBpc1BvaW50SW5zaWRlRWxlbWVudCh4LCB5LCBlbCkge1xuICAgICAgICBpZiAoIWVsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeCA+PSByZWN0LmxlZnQgJiZcbiAgICAgICAgICAgIHggPD0gcmVjdC5yaWdodCAmJlxuICAgICAgICAgICAgeSA+PSByZWN0LnRvcCAmJlxuICAgICAgICAgICAgeSA8PSByZWN0LmJvdHRvbVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFZpZXdlckVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgIGAke3Byb3BzLmlkfS1jb250YWluZXJfZWRpdG9yX3ZpZXdlckNvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05hdmlnYXRpb25LZXkoZSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJyxcbiAgICAgICAgICAgICdIb21lJywgJ0VuZCcsICdQYWdlVXAnLCAnUGFnZURvd24nXG4gICAgICAgIF0uaW5jbHVkZXMoZS5rZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUFuY2hvcih2YWx1ZSkge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcW1xcW3xcXF1cXF0kL2csICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL148PHw+PiQvZywgJycpO1xuICAgIH1cblxuICAgIGxldCB2aWV3ZXJFbGVtZW50ID0gZ2V0Vmlld2VyRWxlbWVudCgpO1xuXG4gICAgZnVuY3Rpb24gaW5zZXJ0UmVhZG9ubHlBbmNob3IoZXZlbnREYXRhLCBkcm9wUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKCFjb250YWluZXI/LmRvY3VtZW50RWRpdG9yKSByZXR1cm47XG4gICAgICAgIGlmICghZHJvcFBvc2l0aW9uKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCFpc1BvaW50SW5zaWRlRWxlbWVudChkcm9wUG9zaXRpb24ueCwgZHJvcFBvc2l0aW9uLnksIHZpZXdlckVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkb2MgPSBjb250YWluZXIuZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IGVkID0gZG9jLmVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsID0gZG9jLnNlbGVjdGlvbjtcbiAgICAgICAgaWYgKCFlZCB8fCAhc2VsKSByZXR1cm47XG5cbiAgICAgICAgLy8gUmVqZWN0IGRyb3AgaWYgY3Vyc29yIGlzIHN0cmljdGx5IGluc2lkZSBhbiBleGlzdGluZyBhbmNob3JcbiAgICAgICAgLy8gQWxsb3cgZHJvcHBpbmcgYXQgdGhlIGV4YWN0IHN0YXJ0IG9yIGVuZCBib3VuZGFyeVxuICAgICAgICBjb25zdCBjYXJldE9mZnNldCA9IHNlbC5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBbmNob3IgPSBncmFiQW5jaG9yV2l0aEJvdW5kcyhjb250YWluZXIpO1xuICAgICAgICBpZiAoZXhpc3RpbmdBbmNob3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0U3RhcnQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3Iuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBhdEVuZCA9IGNhcmV0T2Zmc2V0ID09PSBleGlzdGluZ0FuY2hvci5lbmRPZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIWF0U3RhcnQgJiYgIWF0RW5kKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRHJvcCByZWplY3RlZCDigJQgY3Vyc29yIGlzIGluc2lkZSBhbmNob3I6IFwiICsgZXhpc3RpbmdBbmNob3IudG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRva2VuID0gYFtbJHtub3JtYWxpemVBbmNob3IoZXZlbnREYXRhKX1dXWA7XG4gICAgICAgIGVkLmluc2VydFRleHQodG9rZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BEYXRhID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFZhbHVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3I6IGFzeW5jICh2YWx1ZSwgZHJvcFBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgZHJvcERhdGEuY3VycmVudCA9IHt2YWx1ZSwgZHJvcFBvc2l0aW9ufTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMudmFsdWVIYW5kbGVyLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbnVtYmVyaW5nSXRlbXMgPSBbXG4gICAgICAgIHtpZDogJ2x2bC0wJywgdGV4dDogJzEuJ30sXG4gICAgICAgIHtpZDogJ2x2bC0xJywgdGV4dDogJzEuMSd9LFxuICAgICAgICB7aWQ6ICdsdmwtMicsIHRleHQ6ICcxLjEuMSd9LFxuICAgICAgICB7c2VwYXJhdG9yOiB0cnVlfSxcbiAgICAgICAge2lkOiAnY2xlYXInLCB0ZXh0OiAnQ2xlYXIgbGlzdCd9LFxuICAgIF07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgdG9vbGJhckl0ZW1zID0gcHJvcHMuY29tbWVudHNPbmx5ID9cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIlVuZG9cIixcbiAgICAgICAgICAgICAgICBcIlJlZG9cIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIHtpZDogJ2J1bGxldHMnLCB0ZXh0OiAn4oCiIEJ1bGxldHMnLCB0b29sdGlwVGV4dDogJ0J1bGxldGVkIGxpc3QnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIHt0b29sdGlwVGV4dDogJ0JvbGQnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWJvbGQnLCBjb21tYW5kOiAnQm9sZCd9LFxuICAgICAgICAgICAgICAgIHt0b29sdGlwVGV4dDogJ0l0YWxpYycsIHByZWZpeEljb246ICdlLWljb25zIGUtaXRhbGljJywgY29tbWFuZDogJ0l0YWxpYyd9LFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJJbWFnZVwiLFxuICAgICAgICAgICAgICAgIFwiVGFibGVcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSGVhZGVyXCIsXG4gICAgICAgICAgICAgICAgXCJGb290ZXJcIixcbiAgICAgICAgICAgICAgICBcIlBhZ2VTZXR1cFwiLFxuICAgICAgICAgICAgICAgIFwiUGFnZU51bWJlclwiLFxuICAgICAgICAgICAgICAgIFwiQnJlYWtcIixcbiAgICAgICAgICAgICAgICBcIkluc2VydEZvb3Rub3RlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkZpbmRcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiQ29tbWVudHNcIlxuICAgICAgICAgICAgXVxuXG4gICAgICAgIGlmIChwcm9wcy5lbmFibGVVcGxvYWQpIHtcbiAgICAgICAgICAgIHRvb2xiYXJJdGVtcy51bnNoaWZ0KFwiT3BlblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEl0ZW1zKHRvb2xiYXJJdGVtcyk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmZpbGU/LmJhc2U2NCkge1xuICAgICAgICAgICAgbGV0IGJhc2U2NCA9IHByb3BzLmZpbGUuYmFzZTY0O1xuICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBVdGlscy5iYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW2FycmF5QnVmZmVyXSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLmZpbGUudHlwZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZSwgJ2RvY3VtZW50LmRvY3gnKTtcblxuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgIGZldGNoKFxuICAgICAgICAgICAgICAgICAgICBgJHtnZXREb2NzQmFzZSgpfS9JbXBvcnRgLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZFRva2VuJzogaWRUb2tlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SnNvbihqc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5maWxlXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocmVSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICB9LCAxXzAwMCk7XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgfVxuICAgIH0sIFtyZVJlbmRlcmluZ10pO1xuXG4gICAgZnVuY3Rpb24gc2V0dXBDb250YWluZXIoKSB7XG4gICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5jdXJyZW50VXNlciA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLm5hbWUgKyBcIiBcIiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnN1cm5hbWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZUFzQmFzZTY0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuYWxsb3dVbnJlc29sdmVkQ2hhbmdlcyA9PT0gZmFsc2UgJiYgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJldmlzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoXCJQbGVhc2UgYWNjZXB0IG9yIHJlamVjdCBhbGwgc3VnZ2VzdGVkIGNoYW5nZXNcIik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3Iuc3RvcFByb3RlY3Rpb24oXCJwYXNzd29yZFwiKTtcbiAgICAgICAgICAgIGxldCBibG9iID0gYXdhaXQgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnNhdmVBc0Jsb2IoJ0RvY3gnKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLmVuZm9yY2VQcm90ZWN0aW9uKCdwYXNzd29yZCcsICdDb21tZW50c09ubHknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgcHJvcHMuZmlsZT8ubmFtZSA/IHByb3BzLmZpbGUubmFtZSA6ICdkb2N1bWVudC5kb2N4Jywge3R5cGU6IHByb3BzLmZpbGU/LnR5cGUgPyBwcm9wcy5maWxlLnR5cGUgOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdERvY3VtZW50VGV4dChlZGl0b3IpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmN1cnJlbnQpIHJldHVybiBjdXJyZW50VGV4dC5jdXJyZW50O1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RhcnQgPSBlZGl0b3Iuc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IGVkaXRvci5zZWxlY3Rpb24uZW5kT2Zmc2V0O1xuXG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0QWxsKCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBlZGl0b3Iuc2VsZWN0aW9uLmdldFRleHQoKTtcbiAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSB0ZXh0O1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0QW5jaG9yVG9rZW5zKHRleHQpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxbXFxbW15cXFtcXF1dKz9cXF1cXF0vZztcbiAgICAgICAgY29uc3QgdG9rZW5zID0gbmV3IFNldCgpO1xuICAgICAgICBsZXQgbWF0Y2g7XG5cbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbnMuYWRkKG1hdGNoWzBdKTsgLy8gZXhhY3QgW1tURVhUXV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRva2Vucyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldFdpdGhpblJhbmdlKGNhcmV0LCBzdGFydCwgZW5kKSB7XG4gICAgICAgIGlmIChjYXJldC5wYXJhZ3JhcGggIT09IHN0YXJ0LnBhcmFncmFwaCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHggPSBjYXJldC5sb2NhdGlvbi54SW47XG4gICAgICAgIGNvbnN0IHkgPSBjYXJldC5sb2NhdGlvbi55SW47XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkNIRUNLSU5HIENBUkVUIFdJVEhJTiBSQU5HRSA6IFwiLCB4LCB5LCBzdGFydC5sb2NhdGlvbi54SW4sIHN0YXJ0LmxvY2F0aW9uLnlJbiwgZW5kLmxvY2F0aW9uLnhJbiwgZW5kLmxvY2F0aW9uLnlJbik7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB5ID09PSBzdGFydC5sb2NhdGlvbi55SW4gJiZcbiAgICAgICAgICAgIHggPj0gc3RhcnQubG9jYXRpb24ueEluICYmXG4gICAgICAgICAgICB4IDw9IGVuZC5sb2NhdGlvbi54SW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcbiAgICAgICAgY29uc3QgZG9jRWRpdG9yID0gZWRpdG9yPy5lZGl0b3I7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yID0gYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghZWRpdG9yIHx8ICFzZWxlY3Rpb24gfHwgIWRvY0VkaXRvciB8fCAhYW5jaG9yKSByZXR1cm47XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkVORCBPRkZTRVQgOiBcIiwgYW5jaG9yLmVuZE9mZnNldCwgYnVtcE9mZnNldChhbmNob3IuZW5kT2Zmc2V0LCAtMSkpXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJTVEFSVCAtIEVORCA6IFwiLCBhbmNob3Iuc3RhcnRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3QoYW5jaG9yLnN0YXJ0T2Zmc2V0LCBhbmNob3IuZW5kT2Zmc2V0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJTRUxFQ1RJT04gVEVYVCA6IFwiICsgc2VsZWN0aW9uLnRleHQpO1xuICAgICAgICAgICAgLy9kb2NFZGl0b3IuZGVsZXRlKCk7XG4gICAgICAgICAgICAvL3NlbGVjdGlvbi5zZWxlY3QoYW5jaG9yLnN0YXJ0T2Zmc2V0LCBhbmNob3Iuc3RhcnRPZmZzZXQpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKSB7XG4gICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmlnaHRVbnRpbEFuY2hvcihlZGl0b3IsIG9yaWdpbk9mZnNldCwgbWF4U2NhbiA9IDUwMCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgY3VycmVudCA9IG9yaWdpbk9mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjYW47IGkrKykge1xuICAgICAgICAgICAgLy8gbW92ZSByaWdodFxuICAgICAgICAgICAgY3VycmVudCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpO1xuXG4gICAgICAgICAgICBzZWwuc2VsZWN0KGN1cnJlbnQsIGN1cnJlbnQpO1xuXG4gICAgICAgICAgICAvLyBzZWxlY3QgT05FIGNoYXJhY3RlciBvbmx5XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgICAgYnVtcE9mZnNldChjdXJyZW50LCArMSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIC8vIOKblCBCYWlsIG9uIHdoaXRlc3BhY2Ugb3IgcGFyYWdyYXBoIGJyZWFrXG4gICAgICAgICAgICBpZiAoIWNoIHx8IC9cXHMvLnRlc3QoY2gpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gRGV0ZWN0IGNsb3NpbmcgXCJdXVwiXG4gICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgIC8vIGxvb2thaGVhZCBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcbiAgICAgICAgICAgICAgICBzZWwuc2VsZWN0KG5leHQsIGJ1bXBPZmZzZXQobmV4dCwgKzEpKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBwb3NpdGlvbiBBRlRFUiBdXVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCArMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIG9yaWdpbk9mZnNldCwgbWF4U2NhbiA9IDUwMCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgY3VycmVudCA9IG9yaWdpbk9mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjYW47IGkrKykge1xuICAgICAgICAgICAgY3VycmVudCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuXG4gICAgICAgICAgICAvLyBzZWxlY3Qgb25lIGNoYXIgdG8gdGhlIGxlZnRcbiAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgYnVtcE9mZnNldChjdXJyZW50LCAtMSksXG4gICAgICAgICAgICAgICAgY3VycmVudFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgY2ggPSBzZWwudGV4dDtcblxuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIGRldGVjdCBbW1xuICAgICAgICAgICAgaWYgKGNoID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gYnVtcE9mZnNldChjdXJyZW50LCAtMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgYnVtcE9mZnNldChwcmV2LCAtMSksXG4gICAgICAgICAgICAgICAgICAgIHByZXZcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbC50ZXh0ID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g8J+UkSBGSVg6IGdvIGJhY2sgVFdPIGNoYXJzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidW1wT2Zmc2V0KGN1cnJlbnQsIC0yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgc2VsLnNlbGVjdChvZmZzZXQsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gc2VsLnRleHQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydChlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBjMCA9IGdldENoYXJBdChlZGl0b3IsIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IGMxID0gZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsICsxKSk7XG4gICAgICAgIHJldHVybiBjMCA9PT0gJ1snICYmIGMxID09PSAnWyc7IC8vIHxbW1RFWFRdXVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgLTEpKSA9PT0gJ10nICYmXG4gICAgICAgICAgICBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgLTIpKSA9PT0gJ10nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGVkaXRvcj8uc2VsZWN0aW9uO1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RhcnQgPSBzZWxlY3Rpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRW5kID0gc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBzZWxlY3Rpb24uc2VsZWN0Q3VycmVudFdvcmQoKTtcbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChvcmlnaW5hbFN0YXJ0LCBvcmlnaW5hbEVuZCk7XG5cbiAgICAgICAgLy9sZXQgd29yZCA9IHNlbGVjdGlvbi50ZXh0O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ3JhYkFuY2hvcldpdGhCb3VuZHMgU0VMRUNUSU9OIFRFWFQgOiBcIiwgd29yZCk7XG5cbiAgICAgICAgbGV0IHNjYW5TdGFydCA9IG9yaWdpbmFsU3RhcnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvcmlnaW5hbFN0YXJ0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXNDYXJldEF0RW5kID0gaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IoZWRpdG9yLCBvcmlnaW5hbFN0YXJ0KVxuICAgICAgICAgICAgaWYgKGlzQ2FyZXRBdEVuZCkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJDQVJFVCBBVCBFTkRcIik7XG4gICAgICAgICAgICAgICAgc2NhblN0YXJ0ID0gYnVtcE9mZnNldChvcmlnaW5hbFN0YXJ0LCAtMyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzY2FuTGVmdFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBzY2FuU3RhcnQpO1xuXG4gICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3QobGVmdCwgcmlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGlzQ2FyZXRBdEVuZDtcblxuICAgICAgICAgICAgICAgIC8qY29uc29sZS5sb2coXCJHUkFCIFJFU1VMVCA6IFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiByaWdodFxuICAgICAgICAgICAgICAgIH0pOyovXG5cbiAgICAgICAgICAgICAgICBpZiAoL15cXFtcXFsuKz9cXF1cXF0kLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiByaWdodFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVtcE9mZnNldChvZmZzZXQsIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gb2Zmc2V0LnNwbGl0KCc7Jyk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHBhcnRzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heCgwLCBwYXJzZUludChwYXJ0c1tpZHhdLCAxMCkgKyBkZWx0YSk7XG4gICAgICAgIHBhcnRzW2lkeF0gPSB2YWx1ZS50b1N0cmluZygpO1xuXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCc7Jyk7XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgc2V0dXBDb250YWluZXIoKTtcbiAgICAgICAgICAgIC8vYXV0b1NhdmUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2tleURvd24nLCAoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBhcmdzLmV2ZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gMe+4j+KDoyBOYXZpZ2F0aW9uIGtleXMg4oaSIGluc3BlY3Qgb25seVxuICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25LZXkoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkFDVElWRSBBTkNIT1IgOiBcIiwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkRFTEVURSBMT0NLRUQgOiBcIiwgZGVsZXRlTG9ja1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGVMb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN5bmNmdXNpb24gYWxyZWFkeSBkZWxldGVkIOKGkiByZXdpbmQgc2FmZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWNxdWlyZSBsb2NrXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSBsb2NrIHdoZW4gZWRpdG9yIGlzIGFjdHVhbGx5IHN0YWJsZVxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAy77iP4oOjIElmIHdlIGFyZSBpbnNpZGUgYSByZXN0cmljdGVkIGFuY2hvclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhbmNob3JFbmQuY3VycmVudCA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgJiYgIWlzTmF2aWdhdGlvbktleShlKSkgfHwgYW5jaG9yRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIC8gQmFja3NwYWNlID0gZGVsZXRlIHdob2xlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9lZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lciwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBibG9jayB3aGVuIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGFuIGFuY2hvci4gSW5wdXQgd2lsbCBuZXZlciBkYW1hZ2UgdGhlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVU5CTE9DS0lORyA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFuY2hvckVuZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDwn5SSIEJsb2NrIHR5cGluZyAmIHBhc3RlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5rZXkubGVuZ3RoID09PSAxIHx8IC8vIHByaW50YWJsZSBjaGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jdHJsS2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tZXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb25Nb3VzZVVwID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJbnNpZGVFbGVtZW50KGUuY2xpZW50WCwgZS5jbGllbnRZLCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRyb3BEYXRhLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3IoZHJvcERhdGEuY3VycmVudC52YWx1ZSwgZHJvcERhdGEuY3VycmVudC5kcm9wUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBkcm9wRGF0YS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAvL3ZpZXdlci5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZpZXdlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gdmlld2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWluZXJdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIgJiYganNvbikge1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmRvY3VtZW50Q2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lbmFibGVUcmFja0NoYW5nZXMgPSAhVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgPyBwcm9wcy50cmFja0NoYW5nZXMgOiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuaXNSZWFkT25seSA9IHByb3BzLnJlYWRPbmx5O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IGV4dHJhY3REb2N1bWVudFRleHQoY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29udGVudENoYW5nZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVBY2NlcHRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhY2NlcHRCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImUtZGUtdHJhY2stYWNjZXB0LWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY2NlcHRCdXR0b24gb2YgYWNjZXB0QnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYWNjZXB0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kaXNhYmxlUmVqZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVqZWN0QnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlLWRlLXRyYWNrLXJlamVjdC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVqZWN0QnV0dG9uIG9mIHJlamVjdEJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdEJ1dHRvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHJlamVjdEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZGluZy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0gYXdhaXQgc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSBleHRyYWN0RG9jdW1lbnRUZXh0KGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5vcGVuKGpzb24pO1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVuYWJsZVRyYWNrQ2hhbmdlcyA9ICFVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSA/IHByb3BzLnRyYWNrQ2hhbmdlcyA6IHRydWU7XG4gICAgICAgICAgICAvL2NvbnRhaW5lci5kb2N1bWVudEVkaXRvci5pc1JlYWRPbmx5ID0gKHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmNvbW1lbnRzT25seSk7XG4gICAgICAgIH1cbiAgICB9LCBbanNvbiwgY29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBvblRvb2xiYXJDbGljayA9IChhcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcj8uZWRpdG9yO1xuICAgICAgICBpZiAoIWVkKSByZXR1cm47XG4gICAgICAgIHN3aXRjaCAoYXJncy5pdGVtLmlkKSB7XG4gICAgICAgICAgICBjYXNlICdidWxsZXRzJzpcbiAgICAgICAgICAgICAgICBlZC5hcHBseUJ1bGxldCgnXFx1ZjBiNycsICdTeW1ib2wnKTsgLy8g4oCiXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdudW1iZXJpbmcnOlxuICAgICAgICAgICAgICAgIGVkLmFwcGx5TnVtYmVyaW5nKCclMS4nLCAnQXJhYmljJyk7IC8vIDEuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0wJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTEnOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMic6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjbGVhci1saXN0JzpcbiAgICAgICAgICAgICAgICBlZC5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBsZXQgYnVpbHQtaW5zIChVbmRvL1JlZG8vTmV3L09wZW4pIHdvcmsgbm9ybWFsbHlcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J25vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3toZWlnaHQ6ICcxMDAlJ319IGlkPXtgcGFyZW50LWNvbnRhaW5lcmB9IHJlZj17cGFyZW50UmVmfT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhdmlzaWJsZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxMb3R0aWVJY29uIGlkPXsnd2FpdGluZy1zbSd9Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDMycHggMCAzMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnNjRweCdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3c9eyFVdGlscy5pc051bGwoZXJyb3JNZXNzYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEVycm9yTWVzc2FnZShudWxsKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3NpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGg6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57ZXJyb3JNZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHsvKiBTZXR0aW5nIGVuYWJsZVRyYWNrQ2hhbmdlcyB0byBmYWxzZSBkb2VzIG5vdCB3b3JrIHNvIHdlIGR1cGxpY2F0ZSB0aGUgY29kZSovfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiYgaXRlbXMgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpIHx8IHByb3BzLnRyYWNrQ2hhbmdlcyA9PT0gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQgaWQ9e2Ake3Byb3BzLmlkfS1jb250YWluZXJgfSBoZWlnaHQ9e2VkaXRvckhlaWdodCA+IDAgPyBgJHtlZGl0b3JIZWlnaHR9cHhgIDogJzEyMDBweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17KHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWluZXIoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBzY29wZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVBlcnNpc3RlbmNlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckNsaWNrPXtvblRvb2xiYXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW1zPXtpdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RFZGl0aW5nPXtwcm9wcy5yZWFkT25seSAmJiAhcHJvcHMuY29tbWVudHNPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvcGVydGllc1BhbmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUcmFja0NoYW5nZXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9Gb2N1cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VVcmw9e2dldFNlcnZpY2VVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVG9vbGJhcj17IShwcm9wcy5yZWFkT25seSkgfHwgcHJvcHMuY29tbWVudHNPbmx5fS8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSAmJiBpdGVtcyAmJiBwcm9wcy50cmFja0NoYW5nZXMgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgPERvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IGlkPXtgJHtwcm9wcy5pZH0tY29udGFpbmVyYH0gaGVpZ2h0PXtlZGl0b3JIZWlnaHQgPiAwID8gYCR7ZWRpdG9ySGVpZ2h0fXB4YCA6ICcxMjAwcHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9eyhzY29wZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gc2NvcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVQZXJzaXN0ZW5jZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJDbGljaz17b25Ub29sYmFyQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtcz17aXRlbXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RWRpdGluZz17cHJvcHMucmVhZE9ubHkgJiYgIXByb3BzLmNvbW1lbnRzT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb3BlcnRpZXNQYW5lPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b0ZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVVybD17Z2V0U2VydmljZVVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUb29sYmFyPXshKHByb3BzLnJlYWRPbmx5KSB8fCBwcm9wcy5jb21tZW50c09ubHl9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdvcmREb2N1bWVudFZpZXdlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsb0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHVCQUFBLEdBQUFKLE9BQUE7QUFDQUEsT0FBQTtBQUNB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
@@ -182,7 +182,12 @@ const BaseField = props => {
182
182
  }
183
183
  try {
184
184
  const cv = !_Utils.default.isNull(path) && !_Utils.default.isNull(path.valueObject) ? path.valueObject[path.valueProperty] : null;
185
- doValidation(props.values, cv);
185
+ // Run inbound valueParser so fields whose parser synthesises
186
+ // a default for null input (e.g. RadioGroup → defaultValue)
187
+ // are validated against their semantic value, not the raw
188
+ // model. bind() does the same for non-null model values.
189
+ const cvForValidation = !_Utils.default.isNull(props.valueParser) ? props.valueParser(cv, true) : cv;
190
+ doValidation(props.values, cvForValidation);
186
191
  } finally {
187
192
  if (previouslyEnabled) {
188
193
  _ApplicationManager.default.enableFormMarkers(true);
@@ -406,4 +411,4 @@ const BaseField = props => {
406
411
  }))) : null;
407
412
  };
408
413
  exports.BaseField = BaseField;
409
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQmFzZUZpZWxkIiwicHJvcHMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIlJlYWN0IiwidXNlU3RhdGUiLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJ2YWx1ZU9iamVjdCIsInNldFZhbHVlT2JqZWN0IiwidmFsdWVQcm9wZXJ0eSIsInNldFZhbHVlUHJvcGVydHkiLCJsb2FkaW5nUmVmIiwidXNlUmVmIiwiY29uZmlnIiwic2V0Q29uZmlnIiwidmFsdWUiLCJzZXRWYWx1ZSIsIlV0aWxzIiwiaXNOdWxsIiwidmFsdWVSZWYiLCJzZWxlY3RPcHRpb25zIiwic2V0U2VsZWN0T3B0aW9ucyIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInJlcXVpcmVkIiwic2V0UmVxdWlyZWQiLCJtaW5EYXRlIiwic2V0TWluRGF0ZSIsIm1heERhdGUiLCJzZXRNYXhEYXRlIiwicmVzZXRTd2l0Y2giLCJzZXRSZXNldFN3aXRjaCIsInZhbGlkYXRlT25DaGFuZ2UiLCJpbml0aWFsVmFsdWVCb3VuZCIsInJlZiIsInZhbGlkIiwibGFzdFZhbGlkYXRpb24iLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiYmluZCIsImJvdW5kVmFsdWUiLCJmaWVsZFR5cGUiLCJpZCIsInZhbHVlUGFyc2VyIiwiZm9ybSIsInZhbGlkYXRlUGFyZW50IiwiZGF0YUJpbmRpbmciLCJkb1ZhbGlkYXRpb24iLCJ2YWx1ZXMiLCJjdXJyZW50VmFsdWUiLCJtYXJrZXJzIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNGb3JtTWFya2Vyc0VuYWJsZWQiLCJsYXN0IiwicGF0aCIsImdldFZhbHVlUGF0aCIsInJlc3VsdCIsInZhbGlkYXRvciIsInNjcmlwdCIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHRPYmplY3QiLCJjb25jYXQiLCJtZXNzYWdlIiwidmFsaWRhdGVGaWVsZCIsImZvcmNlTWFya2VyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVmFsaWRpdHkiLCJvblZhbGlkaXR5Q2hhbmdlIiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJldmVudE1hbmFnZXIiLCJhZGRTdWJzY3JpcHRpb25zIiwiZXZlbnRIYW5kbGluZ0NvbmZpZyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZXZlbnQiLCJFdmVudCIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIkNPTVBPTkVOVF9MT0FEIiwic2NyaXB0VmFsdWUiLCJpc0V4cHJlc3Npb24iLCJleGVjdXRlU2NyaXB0IiwicmVwbGFjZSIsInZhbCIsImluc3RhbmNlVHlwZSIsImhhbmRsZUNoYW5nZSIsInByZXZpb3VzbHlFbmFibGVkIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJjdiIsImZpZWxkIiwiYWRkRmllbGQiLCJwYXJlbnRJZCIsImJpbmRWYWx1ZVRvRm9ybSIsImVycm9yIiwibGVuZ3RoIiwiY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyIsInJlbW92ZUZpZWxkIiwiaGFuZGxlVmFsdWVDaGFuZ2UiLCJuZXdWYWx1ZSIsInZhbHVlQ2hhbmdlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGxpY2UiLCJuZXdWYWx1ZUVsZW1lbnQiLCJwdXNoIiwic2VsZWN0SXRlbUNoYW5nZSIsImhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UiLCJzZWxlY3RPcHRpb24iLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJWQUxVRV9DSEFOR0UiLCJ2YWxpZGF0ZSIsInBhcnNlVmFsdWUiLCJpbmJvdW5kIiwicm93cyIsInJvd3NIYW5kbGVyIiwiZ2V0VmFsaWRhdGlvbkdyb3VwIiwiZ3JvdXAiLCJjbGVhciIsImNsZWFySGFuZGxlciIsInNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImhhbmRsZUxvYWRDb21wbGV0ZSIsInJlZnJlc2giLCJyZXF1aXJlZE5ld1ZhbCIsIm51bGxhYmxlIiwiaXNSZXF1aXJlZCIsInJlc2V0Iiwic2V0RmllbGRSZXF1aXJlZCIsIm5ld1ZhbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldENoaWxkcmVuIiwibG9hZERhdGEiLCJsb2FkRGF0YUhhbmRsZXIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwia2V5Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJtYXJnaW5MZWZ0IiwiYXR0cmlidXRlcyIsImluZGV4IiwiZGlzcGxheSIsImdldENvbXBvbmVudEF0dHJpYnV0ZSIsImNoaWxkcmVuIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0Jhc2VGaWVsZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vLi4vZXZlbnQvRXZlbnRUeXBlJztcbmltcG9ydCBkeW5hbWljSlMgZnJvbSAnLi4vLi4vRHluYW1pY0pTJztcblxuZXhwb3J0IGNvbnN0IEJhc2VGaWVsZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW3ZhbHVlT2JqZWN0LCBzZXRWYWx1ZU9iamVjdF0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3ZhbHVlUHJvcGVydHksIHNldFZhbHVlUHJvcGVydHldID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgbG9hZGluZ1JlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgLy8gVE9ETyA6IFJlcGxhY2UgdGhlIHN0YXRlIHZhbHVlIHdpdGggdGhlIHZhbHVlUmVmIGJlbG93LiBUaGUgc3RhdGUgdmFsdWUgaXMgb2NjYXRpb25hbHkgbm90IGF2YWlsYWJsZSBpbiB0aW1lIGZvciBldmVudCBzY3JpcHRzXG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlKSA/IHByb3BzLnZhbHVlIDogbnVsbCk7XG4gICAgLy8gVE9ETyA6IFJlcGxhY2UgdGhlIHN0YXRlIHZhbHVlIHdpdGggdGhpcyByZWYgZm9yIHRoZSByZWFzb24gbWVuc2lvbmVkIGFib3ZlXG4gICAgY29uc3QgdmFsdWVSZWYgPSBSZWFjdC51c2VSZWYoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZSkgPyBwcm9wcy52YWx1ZSA6IG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RPcHRpb25zLCBzZXRTZWxlY3RPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JlcXVpcmVkLCBzZXRSZXF1aXJlZF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWluRGF0ZSwgc2V0TWluRGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWF4RGF0ZSwgc2V0TWF4RGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcmVzZXRTd2l0Y2gsIHNldFJlc2V0U3dpdGNoXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB2YWxpZGF0ZU9uQ2hhbmdlID0gUmVhY3QudXNlUmVmKCk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlQm91bmQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB2YWxpZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgLy8gTWVtbyBvZiB0aGUgbGFzdCAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycykgdHVwbGUgKyBpdHMgcmVzdWx0LnZhbGlkLlxuICAgIC8vIGRvVmFsaWRhdGlvbiBzaG9ydC1jaXJjdWl0cyB3aGVuIHRoZSBpbnB1dHMgYXJlIHVuY2hhbmdlZCBzbyByZXBlYXRlZCByZWFkc1xuICAgIC8vIG9mIEAje2Zvcm19LnZhbHVlICh3aGljaCBpdGVyYXRlcyBmaWVsZHMgYW5kIGNhbGxzIHZhbGlkYXRlIG9uIGVhY2ggaW5cbiAgICAvLyBGb3JtLmpzeCBnZXQgdmFsdWUoKSkgZG9uJ3Qga2VlcCBmaXJpbmcgc2V0RXJyb3JNZXNzYWdlL3NldEhhc0Vycm9yIGFuZFxuICAgIC8vIHJlLXJlbmRlci1sb29wIHRoZSB3aG9sZSBmb3JtLlxuICAgIGNvbnN0IGxhc3RWYWxpZGF0aW9uID0gUmVhY3QudXNlUmVmKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBiaW5kKCk7XG4gICAgfSwgW3ZhbHVlT2JqZWN0XSk7XG5cbiAgICBmdW5jdGlvbiBiaW5kKCkge1xuICAgICAgICBsZXQgYm91bmRWYWx1ZSA9IHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldO1xuICAgICAgICBpZiAoYm91bmRWYWx1ZSAmJiAhaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCkge1xuICAgICAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1NFTEVDVCcgfHwgcHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0xPT0tVUCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWJvdW5kVmFsdWUgfHwgVXRpbHMuaXNOdWxsKGJvdW5kVmFsdWUuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZihwcm9wcy52YWx1ZVBhcnNlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUocHJvcHMudmFsdWVQYXJzZXIoYm91bmRWYWx1ZSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoYm91bmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gYm91bmRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHByb3BzLnZhbHVlUGFyc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHByb3BzLnZhbHVlUGFyc2VyKGJvdW5kVmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShib3VuZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gYm91bmRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGJpbmQoKTtcbiAgICB9LCBbdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV1dKTtcblxuICAgIC8vIENoYW5nZSB0aGUgcmVxdWlyZWQgdmFsdWUgYW5kIHJlLXZhbGlkYXRlIGZpZWxkIGlmIG5lY2Vzc2FyeVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAudmFsaWRhdGVQYXJlbnQoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCwgZG9WYWxpZGF0aW9uKHByb3BzLnZhbHVlcywgdmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IG51bGw7XG4gICAgfSwgW3JlcXVpcmVkXSk7XG5cbiAgICBjb25zdCBkb1ZhbGlkYXRpb24gPSAodmFsdWVzLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgaWYoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXJzID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCk7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gbGFzdFZhbGlkYXRpb24uY3VycmVudDtcbiAgICAgICAgICAgIGlmIChsYXN0ICE9PSBudWxsXG4gICAgICAgICAgICAgICAgJiYgbGFzdC5jdXJyZW50VmFsdWUgPT09IGN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgICAgICYmIGxhc3QucmVxdWlyZWQgPT09IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgJiYgbGFzdC5tYXJrZXJzID09PSBtYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3QudmFsaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXRoID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLmdldFZhbHVlUGF0aChjb25maWcuZGF0YUJpbmRpbmcgfHwgY29uZmlnLmlkKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7dmFsaWQ6IHRydWV9O1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvcikgJiYgIVV0aWxzLmlzTnVsbChjb25maWcudmFsaWRhdG9yLnNjcmlwdCkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdChgJHtjb25maWcuaWR9VmFsaWRhdG9yYCwgY29uZmlnLnZhbGlkYXRvci5zY3JpcHQpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlID0gcmVzdWx0Lm1lc3NhZ2UgPyByZXN1bHQubWVzc2FnZSA6IGNvbmZpZy52YWxpZGF0b3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBVdGlscy52YWxpZGF0ZUZpZWxkKHBhdGgudmFsdWVQcm9wZXJ0eSwgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3QsIGN1cnJlbnRWYWx1ZSwgY29uZmlnLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShtYXJrZXJzIHx8IHJlc3VsdC5mb3JjZU1hcmtlciA/IHJlc3VsdC5tZXNzYWdlIDogJycpO1xuICAgICAgICAgICAgc2V0SGFzRXJyb3IoIXJlc3VsdC52YWxpZCAmJiAobWFya2VycyB8fCByZXN1bHQuZm9yY2VNYXJrZXIpKTtcbiAgICAgICAgICAgIHZhbGlkLmN1cnJlbnQgPSByZXN1bHQudmFsaWQgJiYgKG1hcmtlcnMgfHwgcmVzdWx0LmZvcmNlTWFya2VyKTtcblxuICAgICAgICAgICAgaWYgKG1hcmtlcnMpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLnNldEZpZWxkRXJyb3IoY29uZmlnLmlkLCB0eXBlb2YgcmVzdWx0Lm1lc3NhZ2UgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFzdFZhbGlkYXRpb24uY3VycmVudCA9IHsgY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycywgdmFsaWQ6IHJlc3VsdC52YWxpZCB9O1xuXG4gICAgICAgICAgICAvLyBQdWJsaXNoIHRvIHRoZSBmb3JtJ3MgdmFsaWRpdHkgcmVnaXN0ZXIuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGhcbiAgICAgICAgICAgIC8vIGZvciBcImlzIHRoaXMgZmllbGQgdmFsaWQ/XCIg4oCUIGZvcm0udmFsdWUgcmVhZHMgZnJvbSBoZXJlIHdpdGhvdXRcbiAgICAgICAgICAgIC8vIGNhbGxpbmcgYmFjayBpbnRvIHRoZSBmaWVsZCAoa2lsbHMgdGhlIGJpLWRpcmVjdGlvbmFsIGNoYWluKS5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZm9ybSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcHJvcHMuZm9ybSgpLnNldEZpZWxkVmFsaWRpdHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKCkuc2V0RmllbGRWYWxpZGl0eShjb25maWcuaWQgfHwgY29uZmlnLmRhdGFCaW5kaW5nLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiByZXN1bHQudmFsaWQsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBmb3JjZU1hcmtlcjogcmVzdWx0LmZvcmNlTWFya2VyLFxuICAgICAgICAgICAgICAgICAgICBvblZhbGlkaXR5Q2hhbmdlOiAodmFsaWQsIGVycm9yTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYXNFcnJvcighdmFsaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudmFsaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBzZXRDb25maWcocGFyc2VkQ29uZmlnKTtcbiAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkLCB0cnVlKSk7XG4gICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkLCBmYWxzZSkpO1xuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlcykgJiYgIVV0aWxzLmlzTnVsbChjb25maWcpKSB7XG4gICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZVBhdGgoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCwgcHJvcHMudmFsdWVzKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVPYmplY3QocGF0aC52YWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVQcm9wZXJ0eShwYXRoLnZhbHVlUHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNjcmlwdFZhbHVlID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihwcm9wcy5jb25maWcudmFsdWUpID9cbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQocHJvcHMuY29uZmlnLmlkLnJlcGxhY2UoJy4nLCAnXycpICsgJ1ZhbHVlJywgcHJvcHMuY29uZmlnLnZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNjcmlwdFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gc2NyaXB0VmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgPyBzY3JpcHRWYWx1ZS52YWx1ZSA6IHNjcmlwdFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZWxmLWFubm91bmNlOiB2YWxpZGF0ZSB0aGlzIGZpZWxkIGFnYWluc3QgY3VycmVudCBkYXRhIGFuZCBwdXNoXG4gICAgICAgICAgICAvLyB2ZXJkaWN0IHRvIHRoZSBmb3JtJ3MgdmFsaWRpdHkgcmVnaXN0ZXIgdmlhIHNldEZpZWxkVmFsaWRpdHkgKGluXG4gICAgICAgICAgICAvLyBkb1ZhbGlkYXRpb24pLiBNYXJrZXJzIGFyZSBzdXBwcmVzc2VkIGxvY2FsbHkgc28gaW5pdGlhbC1sb2FkXG4gICAgICAgICAgICAvLyB2YWxpZGF0aW9uIG5ldmVyIGZsYXNoZXMgZXJyb3IgVUkg4oCUIGV2ZW4gaWYgZ2xvYmFsIG1hcmtlcnMgYXJlXG4gICAgICAgICAgICAvLyBhbHJlYWR5IG9uIChlLmcuIGFzeW5jIGRhdGEgYXJyaXZpbmcgYWZ0ZXIgRm9ybSdzIENPTVBPTkVOVF9MT0FEXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHJlLWVuYWJsZWQgbWFya2VycykuIENhY2hlIG1ha2VzIHJlcGVhdCBzZWxmLVxuICAgICAgICAgICAgLy8gYW5ub3VuY2VtZW50cyBjaGVhcCB3aGVuIChjdXJyZW50VmFsdWUsIHJlcXVpcmVkLCBtYXJrZXJzKVxuICAgICAgICAgICAgLy8gdHVwbGUgaXMgdW5jaGFuZ2VkLlxuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNseUVuYWJsZWQgPSBhcHBsaWNhdGlvbk1hbmFnZXIuaXNGb3JtTWFya2Vyc0VuYWJsZWQoKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2VycyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN2ID0gIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpXG4gICAgICAgICAgICAgICAgICAgID8gcGF0aC52YWx1ZU9iamVjdFtwYXRoLnZhbHVlUHJvcGVydHldXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICBkb1ZhbGlkYXRpb24ocHJvcHMudmFsdWVzLCBjdik7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnModHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLnZhbHVlcywgY29uZmlnXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobG9hZGluZ1JlZi5jdXJyZW50ID09PSB0cnVlICYmICFVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IGZpZWxkID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLmFkZEZpZWxkKGNvbmZpZy5pZCB8fCBjb25maWcuZGF0YUJpbmRpbmcsIHByb3BzLmhhbmRsZSwgcHJvcHMucGFyZW50SWQsIHByb3BzLmJpbmRWYWx1ZVRvRm9ybSk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWVsZCkgJiYgIVV0aWxzLmlzTnVsbChmaWVsZC5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQuZXJyb3IubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRIYXNFcnJvcih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGZpZWxkLmVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGRvIE5PVCB2YWxpZGF0ZSBvbiBtb3VudDogdmFsdWVSZWYuY3VycmVudCBpcyBub3RcbiAgICAgICAgICAgIC8vIHlldCBib3VuZCBmcm9tIHRoZSBmb3JtJ3MgbWFzdGVyIGRhdGEgYXQgdGhpcyBwb2ludCDigJQgYmluZCgpXG4gICAgICAgICAgICAvLyBydW5zIGluIGEgbGF0ZXIgcmVuZGVyIGN5Y2xlIHZpYSB0aGUgW3ZhbHVlT2JqZWN0XSB1c2VFZmZlY3QuXG4gICAgICAgICAgICAvLyBWYWxpZGF0aW5nIGhlcmUgd291bGQgbWFyayBldmVyeSBmaWVsZC13aXRoLW1hc3Rlci12YWx1ZSBhc1xuICAgICAgICAgICAgLy8gaW52YWxpZCAoY3VycmVudFZhbHVlPW51bGwpLCBwZXJtYW5lbnRseSBmbGlwcGluZyBmb3JtLnZhbHVlIHRvXG4gICAgICAgICAgICAvLyBudWxsLiBSZWdpc3RlciBzdGF5cyBlbXB0eSBmb3IgdGhpcyBmaWVsZCB1bnRpbCBlaXRoZXIgdXNlclxuICAgICAgICAgICAgLy8gaW50ZXJhY3Rpb24gKGhhbmRsZUNoYW5nZSDihpIgdmFsaWRhdGVGaWVsZCDihpIgZG9WYWxpZGF0aW9uIOKGklxuICAgICAgICAgICAgLy8gc2V0RmllbGRWYWxpZGl0eSkgb3IgYW4gZXhwbGljaXQgZm9ybS5hcGkudmFsaWRhdGVBbGwoKSBydW5zLlxuICAgICAgICAgICAgLy8gZm9ybS52YWx1ZSB0cmVhdHMgZW1wdHktcmVnaXN0ZXIgYXMgXCJvcHRpbWlzdGljYWxseSB2YWxpZFwiIOKAlCBzb1xuICAgICAgICAgICAgLy8gYW55IHNhdmUgZmxvdyBNVVNUIGNhbGwgZm9ybS5hcGkudmFsaWRhdGVBbGwoKSBiZWZvcmUgcmVhZGluZ1xuICAgICAgICAgICAgLy8gZm9ybS52YWx1ZSwgb3IgaW52YWxpZCBkYXRhIHdpbGwgcGFzcyB0aHJvdWdoIHNpbGVudGx5LlxuICAgICAgICAgICAgbG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKCkpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMocHJvcHMuaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUZpZWxkKHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyB8fCBwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBsZXQgdmFsdWVDaGFuZ2VkID0gbmV3VmFsdWUgIT09IHZhbHVlUmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwobmV3VmFsdWUpICYmICFVdGlscy5pc051bGwodmFsdWVSZWYuY3VycmVudCkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnU0VMRUNUJyB8fCBwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnTE9PS1VQJykge1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlLmlkICE9PSB2YWx1ZVJlZi5jdXJyZW50LmlkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnREFURScgfHwgcHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1RJTUUnKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gbmV3VmFsdWUgIT09IHZhbHVlUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlUmVmLmN1cnJlbnQpICE9PSBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0dSSUQnICYmIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldKSB7XG4gICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5zcGxpY2UoMCwgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0ubGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBuZXdWYWx1ZUVsZW1lbnQgb2YgbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0ucHVzaChuZXdWYWx1ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlkID0gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nID8gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIDogcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZSghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kYXRhQmluZGluZykgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBpZCwgbmV3VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlQ2hhbmdlZCkge1xuICAgICAgICAgICAgbGV0IGlkID0gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nID8gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIDogcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgLy9hcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnModHJ1ZSk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0SXRlbUNoYW5nZSA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAuaGFuZGxlU2VsZWN0SXRlbUNoYW5nZShpZCwgc2VsZWN0T3B0aW9ucywgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdEl0ZW1DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSBzZWxlY3RJdGVtQ2hhbmdlO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0T3B0aW9uIG9mIHNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdE9wdGlvbi5pZCA9PT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gc2VsZWN0T3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5oYW5kbGVDaGFuZ2UoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcpID8gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIDogaWQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuVkFMVUVfQ0hBTkdFLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsaWRhdGU6ICh2YWx1ZXMsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb1ZhbGlkYXRpb24odmFsdWVzLCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcnNlVmFsdWU6ICh2YWx1ZSwgaW5ib3VuZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlUGFyc2VyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMudmFsdWVQYXJzZXIodmFsdWUsIGluYm91bmQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgdmFsaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkLmN1cnJlbnQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHJvd3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnJvd3NIYW5kbGVyID8gcHJvcHMucm93c0hhbmRsZXIoKSA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0VmFsaWRhdGlvbkdyb3VwOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvcikgPyBjb25maWcudmFsaWRhdG9yLmdyb3VwIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNsZWFySGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuY2xlYXJIYW5kbGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbFRvOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s6IFwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh2YWx1ZU9iamVjdCkgJiYgIVV0aWxzLmlzTnVsbCh2YWx1ZVByb3BlcnR5KSAmJiAhVXRpbHMuaXNOdWxsKHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZVBhcnNlcikgP1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVQYXJzZXIodmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0sIGZhbHNlKSA6IHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMudmFsdWVQYXJzZXIgPyBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZSwgZmFsc2UpIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZhbHVlKHZhbCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKHZhbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUNhbGxiYWNrKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUNhbGxiYWNrKHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKGRpc2FibGVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVMb2FkQ29tcGxldGUoKSB7XG4gICAgICAgICAgICAgICAgbG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIGxldCByZXF1aXJlZE5ld1ZhbCA9ICFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZhbGlkYXRvcikgP1xuICAgICAgICAgICAgICAgICAgICAhVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmFsaWRhdG9yLm51bGxhYmxlLCBwYXJzZWRDb25maWcuaWQsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgIHx8IFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZhbGlkYXRvci5yZXF1aXJlZCwgcGFyc2VkQ29uZmlnLmlkLCBmYWxzZSkgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZU9uQ2hhbmdlLmN1cnJlbnQgPSByZXF1aXJlZCAhPT0gbnVsbCAmJiByZXF1aXJlZCAhPT0gcmVxdWlyZWROZXdWYWwgJiYgbG9hZGluZ1JlZi5jdXJyZW50ID09PSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRSZXF1aXJlZChyZXF1aXJlZE5ld1ZhbCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHJlcXVpcmVkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXF1aXJlZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgcmVxdWlyZWQoaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgIHNldFJlcXVpcmVkKGlzUmVxdWlyZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBtaW5EYXRlKG1pbkRhdGUpIHtcbiAgICAgICAgICAgICAgICBzZXRNaW5EYXRlKG1pbkRhdGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBtYXhEYXRlKG1heERhdGUpIHtcbiAgICAgICAgICAgICAgICBzZXRNYXhEYXRlKG1heERhdGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBzZWxlY3RPcHRpb25zKHNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RPcHRpb25zKHNlbGVjdE9wdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHNldFJlc2V0U3dpdGNoKCFyZXNldFN3aXRjaCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0RmllbGRSZXF1aXJlZChuZXdWYWwsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IHZhbGlkYXRlO1xuICAgICAgICAgICAgICAgIHNldFJlcXVpcmVkKG5ld1ZhbCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5nZXRDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmdldENoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvYWREYXRhKCkge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5sb2FkRGF0YUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMubG9hZERhdGFIYW5kbGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnID9cbiAgICAgICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPVwiY29sLSotKlwiIGtleT17Y29uZmlnLmlkfSBzdHlsZT17e1xuICAgICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgICBtYXJnaW5MZWZ0OiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZT8ubWFyZ2luTGVmdCkgPyBwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGU/Lm1hcmdpbkxlZnQgOlxuICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5pbmRleCA9PT0gMCA/IDAgOiAnOHB4JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICF2aXNpYmxlIHx8IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdoaWRkZW4nLCBmYWxzZSkgPT09IHRydWUgPyAnbm9uZScgOiAnYmxvY2snXG4gICAgICAgIH19PlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVuKHtcbiAgICAgICAgICAgIG1pbkRhdGU6IG1pbkRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiBtYXhEYXRlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgdmFsdWVPYmplY3Q6IHZhbHVlT2JqZWN0LFxuICAgICAgICAgICAgdmFsdWVQcm9wZXJ0eTogdmFsdWVQcm9wZXJ0eSxcbiAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlOiBoYW5kbGVWYWx1ZUNoYW5nZSxcbiAgICAgICAgICAgIHNldFZhbHVlOiBzZXRWYWx1ZSxcbiAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnM6IHNldFNlbGVjdE9wdGlvbnMsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBzZWxlY3RPcHRpb25zLFxuICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2g6IHNldFJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgcmVzZXRTd2l0Y2g6IHJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgaGFzRXJyb3I6IGhhc0Vycm9yLFxuICAgICAgICAgICAgZG9WYWxpZGF0aW9uOiBkb1ZhbGlkYXRpb24sXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGxvYWRpbmdSZWY6IGxvYWRpbmdSZWZcbiAgICAgICAgfSl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDogbnVsbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFBd0MsU0FBQUQsdUJBQUFRLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFakMsTUFBTUcsU0FBUyxHQUFJQyxLQUFLLElBQUs7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxzQkFBQTtFQUNoQyxNQUFNLENBQUNDLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUdDLGNBQUssQ0FBQ0MsUUFBUSxDQUFDLEtBQUssQ0FBQztFQUNyRCxNQUFNLENBQUNDLFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUdILGNBQUssQ0FBQ0MsUUFBUSxDQUFDLEVBQUUsQ0FBQztFQUMxRCxNQUFNLENBQUNHLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUdMLGNBQUss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
414
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQmFzZUZpZWxkIiwicHJvcHMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIlJlYWN0IiwidXNlU3RhdGUiLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJ2YWx1ZU9iamVjdCIsInNldFZhbHVlT2JqZWN0IiwidmFsdWVQcm9wZXJ0eSIsInNldFZhbHVlUHJvcGVydHkiLCJsb2FkaW5nUmVmIiwidXNlUmVmIiwiY29uZmlnIiwic2V0Q29uZmlnIiwidmFsdWUiLCJzZXRWYWx1ZSIsIlV0aWxzIiwiaXNOdWxsIiwidmFsdWVSZWYiLCJzZWxlY3RPcHRpb25zIiwic2V0U2VsZWN0T3B0aW9ucyIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInJlcXVpcmVkIiwic2V0UmVxdWlyZWQiLCJtaW5EYXRlIiwic2V0TWluRGF0ZSIsIm1heERhdGUiLCJzZXRNYXhEYXRlIiwicmVzZXRTd2l0Y2giLCJzZXRSZXNldFN3aXRjaCIsInZhbGlkYXRlT25DaGFuZ2UiLCJpbml0aWFsVmFsdWVCb3VuZCIsInJlZiIsInZhbGlkIiwibGFzdFZhbGlkYXRpb24iLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiYmluZCIsImJvdW5kVmFsdWUiLCJmaWVsZFR5cGUiLCJpZCIsInZhbHVlUGFyc2VyIiwiZm9ybSIsInZhbGlkYXRlUGFyZW50IiwiZGF0YUJpbmRpbmciLCJkb1ZhbGlkYXRpb24iLCJ2YWx1ZXMiLCJjdXJyZW50VmFsdWUiLCJtYXJrZXJzIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNGb3JtTWFya2Vyc0VuYWJsZWQiLCJsYXN0IiwicGF0aCIsImdldFZhbHVlUGF0aCIsInJlc3VsdCIsInZhbGlkYXRvciIsInNjcmlwdCIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHRPYmplY3QiLCJjb25jYXQiLCJtZXNzYWdlIiwidmFsaWRhdGVGaWVsZCIsImZvcmNlTWFya2VyIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkVmFsaWRpdHkiLCJvblZhbGlkaXR5Q2hhbmdlIiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJldmVudE1hbmFnZXIiLCJhZGRTdWJzY3JpcHRpb25zIiwiZXZlbnRIYW5kbGluZ0NvbmZpZyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZXZlbnQiLCJFdmVudCIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIkNPTVBPTkVOVF9MT0FEIiwic2NyaXB0VmFsdWUiLCJpc0V4cHJlc3Npb24iLCJleGVjdXRlU2NyaXB0IiwicmVwbGFjZSIsInZhbCIsImluc3RhbmNlVHlwZSIsImhhbmRsZUNoYW5nZSIsInByZXZpb3VzbHlFbmFibGVkIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJjdiIsImN2Rm9yVmFsaWRhdGlvbiIsImZpZWxkIiwiYWRkRmllbGQiLCJwYXJlbnRJZCIsImJpbmRWYWx1ZVRvRm9ybSIsImVycm9yIiwibGVuZ3RoIiwiY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyIsInJlbW92ZUZpZWxkIiwiaGFuZGxlVmFsdWVDaGFuZ2UiLCJuZXdWYWx1ZSIsInZhbHVlQ2hhbmdlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGxpY2UiLCJuZXdWYWx1ZUVsZW1lbnQiLCJwdXNoIiwic2VsZWN0SXRlbUNoYW5nZSIsImhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UiLCJzZWxlY3RPcHRpb24iLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJWQUxVRV9DSEFOR0UiLCJ2YWxpZGF0ZSIsInBhcnNlVmFsdWUiLCJpbmJvdW5kIiwicm93cyIsInJvd3NIYW5kbGVyIiwiZ2V0VmFsaWRhdGlvbkdyb3VwIiwiZ3JvdXAiLCJjbGVhciIsImNsZWFySGFuZGxlciIsInNjcm9sbFRvIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImhhbmRsZUxvYWRDb21wbGV0ZSIsInJlZnJlc2giLCJyZXF1aXJlZE5ld1ZhbCIsIm51bGxhYmxlIiwiaXNSZXF1aXJlZCIsInJlc2V0Iiwic2V0RmllbGRSZXF1aXJlZCIsIm5ld1ZhbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldENoaWxkcmVuIiwibG9hZERhdGEiLCJsb2FkRGF0YUhhbmRsZXIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwia2V5Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJtYXJnaW5MZWZ0IiwiYXR0cmlidXRlcyIsImluZGV4IiwiZGlzcGxheSIsImdldENvbXBvbmVudEF0dHJpYnV0ZSIsImNoaWxkcmVuIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL0Jhc2VGaWVsZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uLy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vLi4vZXZlbnQvRXZlbnRUeXBlJztcbmltcG9ydCBkeW5hbWljSlMgZnJvbSAnLi4vLi4vRHluYW1pY0pTJztcblxuZXhwb3J0IGNvbnN0IEJhc2VGaWVsZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW3ZhbHVlT2JqZWN0LCBzZXRWYWx1ZU9iamVjdF0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3ZhbHVlUHJvcGVydHksIHNldFZhbHVlUHJvcGVydHldID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgbG9hZGluZ1JlZiA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgLy8gVE9ETyA6IFJlcGxhY2UgdGhlIHN0YXRlIHZhbHVlIHdpdGggdGhlIHZhbHVlUmVmIGJlbG93LiBUaGUgc3RhdGUgdmFsdWUgaXMgb2NjYXRpb25hbHkgbm90IGF2YWlsYWJsZSBpbiB0aW1lIGZvciBldmVudCBzY3JpcHRzXG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlKSA/IHByb3BzLnZhbHVlIDogbnVsbCk7XG4gICAgLy8gVE9ETyA6IFJlcGxhY2UgdGhlIHN0YXRlIHZhbHVlIHdpdGggdGhpcyByZWYgZm9yIHRoZSByZWFzb24gbWVuc2lvbmVkIGFib3ZlXG4gICAgY29uc3QgdmFsdWVSZWYgPSBSZWFjdC51c2VSZWYoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZSkgPyBwcm9wcy52YWx1ZSA6IG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RPcHRpb25zLCBzZXRTZWxlY3RPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JlcXVpcmVkLCBzZXRSZXF1aXJlZF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWluRGF0ZSwgc2V0TWluRGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWF4RGF0ZSwgc2V0TWF4RGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcmVzZXRTd2l0Y2gsIHNldFJlc2V0U3dpdGNoXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB2YWxpZGF0ZU9uQ2hhbmdlID0gUmVhY3QudXNlUmVmKCk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlQm91bmQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB2YWxpZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgLy8gTWVtbyBvZiB0aGUgbGFzdCAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycykgdHVwbGUgKyBpdHMgcmVzdWx0LnZhbGlkLlxuICAgIC8vIGRvVmFsaWRhdGlvbiBzaG9ydC1jaXJjdWl0cyB3aGVuIHRoZSBpbnB1dHMgYXJlIHVuY2hhbmdlZCBzbyByZXBlYXRlZCByZWFkc1xuICAgIC8vIG9mIEAje2Zvcm19LnZhbHVlICh3aGljaCBpdGVyYXRlcyBmaWVsZHMgYW5kIGNhbGxzIHZhbGlkYXRlIG9uIGVhY2ggaW5cbiAgICAvLyBGb3JtLmpzeCBnZXQgdmFsdWUoKSkgZG9uJ3Qga2VlcCBmaXJpbmcgc2V0RXJyb3JNZXNzYWdlL3NldEhhc0Vycm9yIGFuZFxuICAgIC8vIHJlLXJlbmRlci1sb29wIHRoZSB3aG9sZSBmb3JtLlxuICAgIGNvbnN0IGxhc3RWYWxpZGF0aW9uID0gUmVhY3QudXNlUmVmKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICBiaW5kKCk7XG4gICAgfSwgW3ZhbHVlT2JqZWN0XSk7XG5cbiAgICBmdW5jdGlvbiBiaW5kKCkge1xuICAgICAgICBsZXQgYm91bmRWYWx1ZSA9IHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldO1xuICAgICAgICBpZiAoYm91bmRWYWx1ZSAmJiAhaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCkge1xuICAgICAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1NFTEVDVCcgfHwgcHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0xPT0tVUCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWJvdW5kVmFsdWUgfHwgVXRpbHMuaXNOdWxsKGJvdW5kVmFsdWUuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZihwcm9wcy52YWx1ZVBhcnNlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUocHJvcHMudmFsdWVQYXJzZXIoYm91bmRWYWx1ZSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoYm91bmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gYm91bmRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHByb3BzLnZhbHVlUGFyc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHByb3BzLnZhbHVlUGFyc2VyKGJvdW5kVmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShib3VuZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gYm91bmRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGJpbmQoKTtcbiAgICB9LCBbdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV1dKTtcblxuICAgIC8vIENoYW5nZSB0aGUgcmVxdWlyZWQgdmFsdWUgYW5kIHJlLXZhbGlkYXRlIGZpZWxkIGlmIG5lY2Vzc2FyeVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAudmFsaWRhdGVQYXJlbnQoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCwgZG9WYWxpZGF0aW9uKHByb3BzLnZhbHVlcywgdmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IG51bGw7XG4gICAgfSwgW3JlcXVpcmVkXSk7XG5cbiAgICBjb25zdCBkb1ZhbGlkYXRpb24gPSAodmFsdWVzLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgaWYoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXJzID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCk7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gbGFzdFZhbGlkYXRpb24uY3VycmVudDtcbiAgICAgICAgICAgIGlmIChsYXN0ICE9PSBudWxsXG4gICAgICAgICAgICAgICAgJiYgbGFzdC5jdXJyZW50VmFsdWUgPT09IGN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgICAgICYmIGxhc3QucmVxdWlyZWQgPT09IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgJiYgbGFzdC5tYXJrZXJzID09PSBtYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3QudmFsaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXRoID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLmdldFZhbHVlUGF0aChjb25maWcuZGF0YUJpbmRpbmcgfHwgY29uZmlnLmlkKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7dmFsaWQ6IHRydWV9O1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvcikgJiYgIVV0aWxzLmlzTnVsbChjb25maWcudmFsaWRhdG9yLnNjcmlwdCkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdChgJHtjb25maWcuaWR9VmFsaWRhdG9yYCwgY29uZmlnLnZhbGlkYXRvci5zY3JpcHQpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlID0gcmVzdWx0Lm1lc3NhZ2UgPyByZXN1bHQubWVzc2FnZSA6IGNvbmZpZy52YWxpZGF0b3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBVdGlscy52YWxpZGF0ZUZpZWxkKHBhdGgudmFsdWVQcm9wZXJ0eSwgcmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhdGgudmFsdWVPYmplY3QsIGN1cnJlbnRWYWx1ZSwgY29uZmlnLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShtYXJrZXJzIHx8IHJlc3VsdC5mb3JjZU1hcmtlciA/IHJlc3VsdC5tZXNzYWdlIDogJycpO1xuICAgICAgICAgICAgc2V0SGFzRXJyb3IoIXJlc3VsdC52YWxpZCAmJiAobWFya2VycyB8fCByZXN1bHQuZm9yY2VNYXJrZXIpKTtcbiAgICAgICAgICAgIHZhbGlkLmN1cnJlbnQgPSByZXN1bHQudmFsaWQgJiYgKG1hcmtlcnMgfHwgcmVzdWx0LmZvcmNlTWFya2VyKTtcblxuICAgICAgICAgICAgaWYgKG1hcmtlcnMpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLnNldEZpZWxkRXJyb3IoY29uZmlnLmlkLCB0eXBlb2YgcmVzdWx0Lm1lc3NhZ2UgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFzdFZhbGlkYXRpb24uY3VycmVudCA9IHsgY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycywgdmFsaWQ6IHJlc3VsdC52YWxpZCB9O1xuXG4gICAgICAgICAgICAvLyBQdWJsaXNoIHRvIHRoZSBmb3JtJ3MgdmFsaWRpdHkgcmVnaXN0ZXIuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGhcbiAgICAgICAgICAgIC8vIGZvciBcImlzIHRoaXMgZmllbGQgdmFsaWQ/XCIg4oCUIGZvcm0udmFsdWUgcmVhZHMgZnJvbSBoZXJlIHdpdGhvdXRcbiAgICAgICAgICAgIC8vIGNhbGxpbmcgYmFjayBpbnRvIHRoZSBmaWVsZCAoa2lsbHMgdGhlIGJpLWRpcmVjdGlvbmFsIGNoYWluKS5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZm9ybSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcHJvcHMuZm9ybSgpLnNldEZpZWxkVmFsaWRpdHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKCkuc2V0RmllbGRWYWxpZGl0eShjb25maWcuaWQgfHwgY29uZmlnLmRhdGFCaW5kaW5nLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiByZXN1bHQudmFsaWQsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBmb3JjZU1hcmtlcjogcmVzdWx0LmZvcmNlTWFya2VyLFxuICAgICAgICAgICAgICAgICAgICBvblZhbGlkaXR5Q2hhbmdlOiAodmFsaWQsIGVycm9yTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYXNFcnJvcighdmFsaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudmFsaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBzZXRDb25maWcocGFyc2VkQ29uZmlnKTtcbiAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkLCB0cnVlKSk7XG4gICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkLCBmYWxzZSkpO1xuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlcykgJiYgIVV0aWxzLmlzTnVsbChjb25maWcpKSB7XG4gICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZVBhdGgoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCwgcHJvcHMudmFsdWVzKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVPYmplY3QocGF0aC52YWx1ZU9iamVjdCk7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWVQcm9wZXJ0eShwYXRoLnZhbHVlUHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNjcmlwdFZhbHVlID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihwcm9wcy5jb25maWcudmFsdWUpID9cbiAgICAgICAgICAgICAgICAgICAgZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQocHJvcHMuY29uZmlnLmlkLnJlcGxhY2UoJy4nLCAnXycpICsgJ1ZhbHVlJywgcHJvcHMuY29uZmlnLnZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNjcmlwdFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gc2NyaXB0VmFsdWUuaW5zdGFuY2VUeXBlID09PSAnVHlwZWRWYWx1ZScgPyBzY3JpcHRWYWx1ZS52YWx1ZSA6IHNjcmlwdFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZWxmLWFubm91bmNlOiB2YWxpZGF0ZSB0aGlzIGZpZWxkIGFnYWluc3QgY3VycmVudCBkYXRhIGFuZCBwdXNoXG4gICAgICAgICAgICAvLyB2ZXJkaWN0IHRvIHRoZSBmb3JtJ3MgdmFsaWRpdHkgcmVnaXN0ZXIgdmlhIHNldEZpZWxkVmFsaWRpdHkgKGluXG4gICAgICAgICAgICAvLyBkb1ZhbGlkYXRpb24pLiBNYXJrZXJzIGFyZSBzdXBwcmVzc2VkIGxvY2FsbHkgc28gaW5pdGlhbC1sb2FkXG4gICAgICAgICAgICAvLyB2YWxpZGF0aW9uIG5ldmVyIGZsYXNoZXMgZXJyb3IgVUkg4oCUIGV2ZW4gaWYgZ2xvYmFsIG1hcmtlcnMgYXJlXG4gICAgICAgICAgICAvLyBhbHJlYWR5IG9uIChlLmcuIGFzeW5jIGRhdGEgYXJyaXZpbmcgYWZ0ZXIgRm9ybSdzIENPTVBPTkVOVF9MT0FEXG4gICAgICAgICAgICAvLyBhbHJlYWR5IHJlLWVuYWJsZWQgbWFya2VycykuIENhY2hlIG1ha2VzIHJlcGVhdCBzZWxmLVxuICAgICAgICAgICAgLy8gYW5ub3VuY2VtZW50cyBjaGVhcCB3aGVuIChjdXJyZW50VmFsdWUsIHJlcXVpcmVkLCBtYXJrZXJzKVxuICAgICAgICAgICAgLy8gdHVwbGUgaXMgdW5jaGFuZ2VkLlxuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNseUVuYWJsZWQgPSBhcHBsaWNhdGlvbk1hbmFnZXIuaXNGb3JtTWFya2Vyc0VuYWJsZWQoKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2VycyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN2ID0gIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKHBhdGgudmFsdWVPYmplY3QpXG4gICAgICAgICAgICAgICAgICAgID8gcGF0aC52YWx1ZU9iamVjdFtwYXRoLnZhbHVlUHJvcGVydHldXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICAvLyBSdW4gaW5ib3VuZCB2YWx1ZVBhcnNlciBzbyBmaWVsZHMgd2hvc2UgcGFyc2VyIHN5bnRoZXNpc2VzXG4gICAgICAgICAgICAgICAgLy8gYSBkZWZhdWx0IGZvciBudWxsIGlucHV0IChlLmcuIFJhZGlvR3JvdXAg4oaSIGRlZmF1bHRWYWx1ZSlcbiAgICAgICAgICAgICAgICAvLyBhcmUgdmFsaWRhdGVkIGFnYWluc3QgdGhlaXIgc2VtYW50aWMgdmFsdWUsIG5vdCB0aGUgcmF3XG4gICAgICAgICAgICAgICAgLy8gbW9kZWwuIGJpbmQoKSBkb2VzIHRoZSBzYW1lIGZvciBub24tbnVsbCBtb2RlbCB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgY29uc3QgY3ZGb3JWYWxpZGF0aW9uID0gIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZVBhcnNlcilcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy52YWx1ZVBhcnNlcihjdiwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBjdjtcbiAgICAgICAgICAgICAgICBkb1ZhbGlkYXRpb24ocHJvcHMudmFsdWVzLCBjdkZvclZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy52YWx1ZXMsIGNvbmZpZ10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGxvYWRpbmdSZWYuY3VycmVudCA9PT0gdHJ1ZSAmJiAhVXRpbHMuaXNOdWxsKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGxldCBmaWVsZCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5hZGRGaWVsZChjb25maWcuaWQgfHwgY29uZmlnLmRhdGFCaW5kaW5nLCBwcm9wcy5oYW5kbGUsIHByb3BzLnBhcmVudElkLCBwcm9wcy5iaW5kVmFsdWVUb0Zvcm0pO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmllbGQpICYmICFVdGlscy5pc051bGwoZmllbGQuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkLmVycm9yLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SGFzRXJyb3IodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShmaWVsZC5lcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBkbyBOT1QgdmFsaWRhdGUgb24gbW91bnQ6IHZhbHVlUmVmLmN1cnJlbnQgaXMgbm90XG4gICAgICAgICAgICAvLyB5ZXQgYm91bmQgZnJvbSB0aGUgZm9ybSdzIG1hc3RlciBkYXRhIGF0IHRoaXMgcG9pbnQg4oCUIGJpbmQoKVxuICAgICAgICAgICAgLy8gcnVucyBpbiBhIGxhdGVyIHJlbmRlciBjeWNsZSB2aWEgdGhlIFt2YWx1ZU9iamVjdF0gdXNlRWZmZWN0LlxuICAgICAgICAgICAgLy8gVmFsaWRhdGluZyBoZXJlIHdvdWxkIG1hcmsgZXZlcnkgZmllbGQtd2l0aC1tYXN0ZXItdmFsdWUgYXNcbiAgICAgICAgICAgIC8vIGludmFsaWQgKGN1cnJlbnRWYWx1ZT1udWxsKSwgcGVybWFuZW50bHkgZmxpcHBpbmcgZm9ybS52YWx1ZSB0b1xuICAgICAgICAgICAgLy8gbnVsbC4gUmVnaXN0ZXIgc3RheXMgZW1wdHkgZm9yIHRoaXMgZmllbGQgdW50aWwgZWl0aGVyIHVzZXJcbiAgICAgICAgICAgIC8vIGludGVyYWN0aW9uIChoYW5kbGVDaGFuZ2Ug4oaSIHZhbGlkYXRlRmllbGQg4oaSIGRvVmFsaWRhdGlvbiDihpJcbiAgICAgICAgICAgIC8vIHNldEZpZWxkVmFsaWRpdHkpIG9yIGFuIGV4cGxpY2l0IGZvcm0uYXBpLnZhbGlkYXRlQWxsKCkgcnVucy5cbiAgICAgICAgICAgIC8vIGZvcm0udmFsdWUgdHJlYXRzIGVtcHR5LXJlZ2lzdGVyIGFzIFwib3B0aW1pc3RpY2FsbHkgdmFsaWRcIiDigJQgc29cbiAgICAgICAgICAgIC8vIGFueSBzYXZlIGZsb3cgTVVTVCBjYWxsIGZvcm0uYXBpLnZhbGlkYXRlQWxsKCkgYmVmb3JlIHJlYWRpbmdcbiAgICAgICAgICAgIC8vIGZvcm0udmFsdWUsIG9yIGludmFsaWQgZGF0YSB3aWxsIHBhc3MgdGhyb3VnaCBzaWxlbnRseS5cbiAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZm9ybSgpKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVGaWVsZChwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgfHwgcHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBpbml0aWFsVmFsdWVCb3VuZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgbGV0IHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9PSB2YWx1ZVJlZi5jdXJyZW50O1xuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG5ld1ZhbHVlKSAmJiAhVXRpbHMuaXNOdWxsKHZhbHVlUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ1NFTEVDVCcgfHwgcHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0xPT0tVUCcpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZS5pZCAhPT0gdmFsdWVSZWYuY3VycmVudC5pZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcHMuY29uZmlnLmZpZWxkVHlwZSA9PT0gJ0RBVEUnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdUSU1FJykge1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9PSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZVJlZi5jdXJyZW50KSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdHUklEJyAmJiB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSkge1xuICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0uc3BsaWNlKDAsIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLmxlbmd0aCk7XG5cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmV3VmFsdWVFbGVtZW50IG9mIG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLnB1c2gobmV3VmFsdWVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpZCA9IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5oYW5kbGVDaGFuZ2UoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcpID8gcHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIDogaWQsIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIGxldCBpZCA9IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIC8vYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdEl0ZW1DaGFuZ2UgPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLmhhbmRsZVNlbGVjdEl0ZW1DaGFuZ2UoaWQsIHNlbGVjdE9wdGlvbnMsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3RJdGVtQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZVJlZi5jdXJyZW50ID0gc2VsZWN0SXRlbUNoYW5nZTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdE9wdGlvbiBvZiBzZWxlY3RPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RPcHRpb24uaWQgPT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHNlbGVjdE9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nKSA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IGlkLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLlZBTFVFX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbGlkYXRlOiAodmFsdWVzLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9WYWxpZGF0aW9uKHZhbHVlcywgY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJzZVZhbHVlOiAodmFsdWUsIGluYm91bmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZVBhcnNlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlLCBpbmJvdW5kKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHZhbGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZC5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCByb3dzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5yb3dzSGFuZGxlciA/IHByb3BzLnJvd3NIYW5kbGVyKCkgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFZhbGlkYXRpb25Hcm91cDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAhVXRpbHMuaXNOdWxsKGNvbmZpZy52YWxpZGF0b3IpID8gY29uZmlnLnZhbGlkYXRvci5ncm91cCA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jbGVhckhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNsZWFySGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxUbzogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZWYuY3VycmVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiBcImNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwodmFsdWVPYmplY3QpICYmICFVdGlscy5pc051bGwodmFsdWVQcm9wZXJ0eSkgJiYgIVV0aWxzLmlzTnVsbCh2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLCBmYWxzZSkgOiB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnZhbHVlUGFyc2VyID8gcHJvcHMudmFsdWVQYXJzZXIodmFsdWUsIGZhbHNlKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2YWx1ZSh2YWwpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZSh2YWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVDaGFuZ2VDYWxsYmFjaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VDYWxsYmFjayh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChkaXNhYmxlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZpc2libGUodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodmlzaWJsZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFuZGxlTG9hZENvbXBsZXRlKCkge1xuICAgICAgICAgICAgICAgIGxvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLmRpc2FibGVkLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWlyZWROZXdWYWwgPSAhVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52YWxpZGF0b3IpID9cbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZhbGlkYXRvci5udWxsYWJsZSwgcGFyc2VkQ29uZmlnLmlkLCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52YWxpZGF0b3IucmVxdWlyZWQsIHBhcnNlZENvbmZpZy5pZCwgZmFsc2UpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID0gcmVxdWlyZWQgIT09IG51bGwgJiYgcmVxdWlyZWQgIT09IHJlcXVpcmVkTmV3VmFsICYmIGxvYWRpbmdSZWYuY3VycmVudCA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQocmVxdWlyZWROZXdWYWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCByZXF1aXJlZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWlyZWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHJlcXVpcmVkKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXF1aXJlZChpc1JlcXVpcmVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgbWluRGF0ZShtaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgc2V0TWluRGF0ZShtaW5EYXRlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgbWF4RGF0ZShtYXhEYXRlKSB7XG4gICAgICAgICAgICAgICAgc2V0TWF4RGF0ZShtYXhEYXRlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgc2VsZWN0T3B0aW9ucyhzZWxlY3RPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0T3B0aW9ucyhzZWxlY3RPcHRpb25zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXNldFN3aXRjaCghcmVzZXRTd2l0Y2gpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEZpZWxkUmVxdWlyZWQobmV3VmFsLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZU9uQ2hhbmdlLmN1cnJlbnQgPSB2YWxpZGF0ZTtcbiAgICAgICAgICAgICAgICBzZXRSZXF1aXJlZChuZXdWYWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YSgpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMubG9hZERhdGFIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmxvYWREYXRhSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZyA/XG4gICAgICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT1cImNvbC0qLSpcIiBrZXk9e2NvbmZpZy5pZH0gc3R5bGU9e3tcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGU/Lm1hcmdpbkxlZnQpID8gcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlPy5tYXJnaW5MZWZ0IDpcbiAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcuaW5kZXggPT09IDAgPyAwIDogJzhweCcsXG4gICAgICAgICAgICBkaXNwbGF5OiAhdmlzaWJsZSB8fCBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnaGlkZGVuJywgZmFsc2UpID09PSB0cnVlID8gJ25vbmUnIDogJ2Jsb2NrJ1xuICAgICAgICB9fT5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbih7XG4gICAgICAgICAgICBtaW5EYXRlOiBtaW5EYXRlLFxuICAgICAgICAgICAgbWF4RGF0ZTogbWF4RGF0ZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIHZhbHVlT2JqZWN0OiB2YWx1ZU9iamVjdCxcbiAgICAgICAgICAgIHZhbHVlUHJvcGVydHk6IHZhbHVlUHJvcGVydHksXG4gICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZTogaGFuZGxlVmFsdWVDaGFuZ2UsXG4gICAgICAgICAgICBzZXRWYWx1ZTogc2V0VmFsdWUsXG4gICAgICAgICAgICBzZXRTZWxlY3RPcHRpb25zOiBzZXRTZWxlY3RPcHRpb25zLFxuICAgICAgICAgICAgc2VsZWN0T3B0aW9uczogc2VsZWN0T3B0aW9ucyxcbiAgICAgICAgICAgIHNldFJlc2V0U3dpdGNoOiBzZXRSZXNldFN3aXRjaCxcbiAgICAgICAgICAgIHJlc2V0U3dpdGNoOiByZXNldFN3aXRjaCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGhhc0Vycm9yOiBoYXNFcnJvcixcbiAgICAgICAgICAgIGRvVmFsaWRhdGlvbjogZG9WYWxpZGF0aW9uLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBsb2FkaW5nUmVmOiBsb2FkaW5nUmVmXG4gICAgICAgIH0pfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6IG51bGw7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxtQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQXdDLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRWpDLE1BQU1HLFNBQVMsR0FBSUMsS0FBSyxJQUFLO0VBQUEsSUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7RUFDaEMsTUFBTSxDQUFDQyxRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHQyxjQUFLLENBQUNDLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDckQsTUFBTSxDQUFDQyxZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHSCxjQUFLLENBQUNDLFFBQVEsQ0FBQyxFQUFFLENBQUM7RUFDMUQsTUFBTSxDQUFDRyxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHTCxjQUFLLENBQUNDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN4RCxNQUFNLENBQUNLLGFBQWEsRUFBRUMsZ0JBQWdCLENBQUMsR0FBR1AsY0FBSyxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDO0VBQzlELE1BQU1PLFVBQVUsR0FBR1IsY0FBSyxDQUFDUyxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ3JDLE1BQU0sQ0FBQ0MsTUFBTSxFQUFFQyxTQUFTLENBQUMsR0FBR1gsY0FBSyxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDO0VBQ2hEO0VBQ0EsTUFBTSxDQUFDVyxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHYixjQUFLLENBQUNDLFFBQVEsQ0FBQyxDQUFDYSxjQUFLLENBQUNDLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQ2lCLEtBQUssQ0FBQyxHQUFHakIsS0FBSyxDQUFDaUIsS0FBSyxHQUFHLElBQUksQ0FBQztFQUN6RjtFQUNBLE1BQU1JLFFBQVEsR0FBR2hCLGNBQUssQ0FBQ1MsTUFBTSxDQUFDLENBQUNLLGNBQUssQ0FBQ0MsTUFBTSxDQUFDcEIsS0FBSyxDQUFDaUIsS0FBSyxDQUFDLEdBQUdqQixLQUFLLENBQUNpQixLQUFLLEdBQUcsSUFBSSxDQUFDO0VBQzlFLE1BQU0sQ0FBQ0ssYUFBYSxFQUFFQyxnQkFBZ0IsQ0FBQyxHQUFHbEIsY0FBSyxDQUFDQyxRQUFRLENBQUMsRUFBRSxDQUFDO0VBQzVELE1BQU0sQ0FBQ2tCLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUdwQixjQUFLLENBQUNDLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDckQsTUFBTSxDQUFDb0IsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR3RCLGNBQUssQ0FBQ0MsUUFBUSxDQUFDLEtBQUssQ0FBQztFQUNuRCxNQUFNLENBQUNzQixRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHeEIsY0FBSyxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDO0VBQ3BELE1BQU0sQ0FBQ3dCLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUcxQixjQUFLLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDbEQsTUFBTSxDQUFDMEIsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBRzVCLGNBQUssQ0FBQ0MsUUFBUSxDQUFDLElBQUksQ0FBQztFQUNsRCxNQUFNLENBQUM0QixXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHOUIsY0FBSyxDQUFDQyxRQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU04QixnQkFBZ0IsR0FBRy9CLGNBQUssQ0FBQ1MsTUFBTSxDQUFDLENBQUM7RUFDdkMsTUFBTXVCLGlCQUFpQixHQUFHaEMsY0FBSyxDQUFDUyxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQzdDLE1BQU13QixHQUFHLEdBQUdqQyxjQUFLLENBQUNTLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDOUIsTUFBTXlCLEtBQUssR0FBR2xDLGNBQUssQ0FBQ1MsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNqQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFBTTBCLGNBQWMsR0FBR25DLGNBQUssQ0FBQ1MsTUFBTSxDQUFDLElBQUksQ0FBQztFQUV6Q1QsY0FBSyxDQUFDb0MsU0FBUyxDQUFDLE1BQU07SUFDbEJKLGlCQUFpQixDQUFDSyxPQUFPLEdBQUcsS0FBSztJQUNqQ0MsSUFBSSxDQUFDLENBQUM7RUFDVixDQUFDLEVBQUUsQ0FBQ2xDLFdBQVcsQ0FBQyxDQUFDO0VBRWpCLFNBQVNrQyxJQUFJQSxDQUFBLEVBQUc7SUFDWixJQUFJQyxVQUFVLEdBQUduQyxXQUFXLENBQUNFLGFBQWEsQ0FBQztJQUMzQyxJQUFJaUMsVUFBVSxJQUFJLENBQUNQLGlCQUFpQixDQUFDSyxPQUFPLEVBQUU7TUFDMUNMLGlCQUFpQixDQUFDSyxPQUFPLEdBQUcsSUFBSTtNQUNoQyxJQUFJMUMsS0FBSyxDQUFDZSxNQUFNLENBQUM4QixTQUFTLEtBQUssUUFBUSxJQUFJN0MsS0FBSyxDQUFDZSxNQUFNLENBQUM4QixTQUFTLEtBQUssUUFBUSxFQUFFO1FBQzVFLElBQUksQ0FBQ0QsVUFBVSxJQUFJekIsY0FBSyxDQUFDQyxNQUFNLENBQUN3QixVQUFVLENBQUNFLEVBQUUsQ0FBQyxFQUFFO1VBQzVDNUIsUUFBUSxDQUFDLElBQUksQ0FBQztVQUNkRyxRQUFRLENBQUNxQixPQUFPLEdBQUcsSUFBSTtRQUMzQixDQUFDLE1BQU07VUFDSCxJQUFHMUMsS0FBSyxDQUFDK0MsV0FBVyxFQUFFO1lBQ2xCN0IsUUFBUSxDQUFDbEIsS0FBSyxDQUFDK0MsV0FBVyxDQUFDSCxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7VUFDakQsQ0FBQyxNQUFNO1lBQ0gxQixRQUFRLENBQUMwQixVQUFVLENBQUM7VUFDeEI7VUFFQXZCLFFBQVEsQ0FBQ3FCLE9BQU8sR0FBR0UsVUFBVTtRQUNqQztNQUNKLENBQUMsTUFBTTtRQUNILElBQUc1QyxLQUFLLENBQUMrQyxXQUFXLEVBQUU7VUFDbEI3QixRQUFRLENBQUNsQixLQUFLLENBQUMrQyxXQUFXLENBQUNILFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDLE1BQU07VUFDSDFCLFFBQVEsQ0FBQzBCLFVBQVUsQ0FBQztRQUN4QjtRQUVBdkIsUUFBUSxDQUFDcUIsT0FBTyxHQUFHRSxVQUFVO01BQ2pDO0lBQ0o7RUFDSjtFQUVBdkMsY0FBSyxDQUFDb0MsU0FBUyxDQUFDLE1BQU07SUFDbEJFLElBQUksQ0FBQyxDQUFDO0VBQ1YsQ0FBQyxFQUFFLENBQUNsQyxXQUFXLENBQUNFLGFBQWEsQ0FBQyxDQUFDLENBQUM7O0VBRWhDO0VBQ0FOLGNBQUssQ0FBQ29DLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUksQ0FBQ3RCLGNBQUssQ0FBQ0MsTUFBTSxDQUFDTCxNQUFNLENBQUMsSUFBSXFCLGdCQUFnQixDQUFDTSxPQUFPLEtBQUssSUFBSSxFQUFFO01BQzVEMUMsS0FBSyxDQUFDZ0QsSUFBSSxDQUFDLENBQUMsQ0FDUEMsY0FBYyxDQUFDbEMsTUFBTSxDQUFDbUMsV0FBVyxJQUFJbkMsTUFBTSxDQUFDK0IsRUFBRSxFQUFFSyxZQUFZLENBQUNuRCxLQUFLLENBQUNvRCxNQUFNLEVBQUVuQyxLQUFLLENBQUMsQ0FBQztJQUMzRjtJQUVBbUIsZ0JBQWdCLENBQUNNLE9BQU8sR0FBRyxJQUFJO0VBQ25DLENBQUMsRUFBRSxDQUFDZCxRQUFRLENBQUMsQ0FBQztFQUVkLE1BQU11QixZQUFZLEdBQUdBLENBQUNDLE1BQU0sRUFBRUMsWUFBWSxLQUFLO0lBQzNDLElBQUd0QyxNQUFNLEVBQUU7TUFDUCxNQUFNdUMsT0FBTyxHQUFHQywyQkFBa0IsQ0FBQ0Msb0JBQW9CLENBQUMsQ0FBQztNQUN6RCxNQUFNQyxJQUFJLEdBQUdqQixjQUFjLENBQUNFLE9BQU87TUFDbkMsSUFBSWUsSUFBSSxLQUFLLElBQUksSUFDVkEsSUFBSSxDQUFDSixZQUFZLEtBQUtBLFlBQVksSUFDbENJLElBQUksQ0FBQzdCLFFBQVEsS0FBS0EsUUFBUSxJQUMxQjZCLElBQUksQ0FBQ0gsT0FBTyxLQUFLQSxPQUFPLEVBQUU7UUFDN0IsT0FBT0csSUFBSSxDQUFDbEIsS0FBSztNQUNyQjtNQUVBLElBQUltQixJQUFJLEdBQUcxRCxLQUFLLENBQUNnRCxJQUFJLENBQUMsQ0FBQyxDQUNsQlcsWUFBWSxDQUFDNUMsTUFBTSxDQUFDbUMsV0FBVyxJQUFJbkMsTUFBTSxDQUFDK0IsRUFBRSxDQUFDO01BQ2xELElBQUljLE1BQU0sR0FBRztRQUFDckIsS0FBSyxFQUFFO01BQUksQ0FBQztNQUMxQixJQUFJLENBQUNwQixjQUFLLENBQUNDLE1BQU0sQ0FBQ0wsTUFBTSxDQUFDOEMsU0FBUyxDQUFDLElBQUksQ0FBQzFDLGNBQUssQ0FBQ0MsTUFBTSxDQUFDTCxNQUFNLENBQUM4QyxTQUFTLENBQUNDLE1BQU0sQ0FBQyxFQUFFO1FBQzNFRixNQUFNLEdBQUdHLGtCQUFTLENBQUNDLG1CQUFtQixJQUFBQyxNQUFBLENBQUlsRCxNQUFNLENBQUMrQixFQUFFLGdCQUFhL0IsTUFBTSxDQUFDOEMsU0FBUyxDQUFDQyxNQUFNLENBQUM7UUFDeEYsSUFBSSxDQUFDRixNQUFNLENBQUNyQixLQUFLLEVBQUU7VUFDZnFCLE1BQU0sQ0FBQ00sT0FBTyxHQUFHTixNQUFNLENBQUNNLE9BQU8sR0FBR04sTUFBTSxDQUFDTSxPQUFPLEdBQUduRCxNQUFNLENBQUM4QyxTQUFTLENBQUNLLE9BQU87UUFDL0U7TUFDSjtNQUVBLElBQUlOLE1BQU0sQ0FBQ3JCLEtBQUssRUFBRTtRQUNkcUIsTUFBTSxHQUFHekMsY0FBSyxDQUFDZ0QsYUFBYSxDQUFDVCxJQUFJLENBQUMvQyxhQUFhLEVBQUVpQixRQUFRLEVBQ3JEOEIsSUFBSSxDQUFDakQsV0FBVyxFQUFFNEMsWUFBWSxFQUFFdEMsTUFBTSxDQUFDOEMsU0FBUyxDQUFDO01BQ3pEO01BRUFyRCxlQUFlLENBQUM4QyxPQUFPLElBQUlNLE1BQU0sQ0FBQ1EsV0FBVyxHQUFHUixNQUFNLENBQUNNLE9BQU8sR0FBRyxFQUFFLENBQUM7TUFDcEU5RCxXQUFXLENBQUMsQ0FBQ3dELE1BQU0sQ0FBQ3JCLEtBQUssS0FBS2UsT0FBTyxJQUFJTSxNQUFNLENBQUNRLFdBQVcsQ0FBQyxDQUFDO01BQzdEN0IsS0FBSyxDQUFDRyxPQUFPLEdBQUdrQixNQUFNLENBQUNyQixLQUFLLEtBQUtlLE9BQU8sSUFBSU0sTUFBTSxDQUFDUSxXQUFXLENBQUM7TUFFL0QsSUFBSWQsT0FBTyxFQUFFO1FBQ1R0RCxLQUFLLENBQUNnRCxJQUFJLENBQUMsQ0FBQyxDQUNQcUIsYUFBYSxDQUFDdEQsTUFBTSxDQUFDK0IsRUFBRSxFQUFFLE9BQU9jLE1BQU0sQ0FBQ00sT0FBTyxLQUFLLFdBQVcsR0FBRyxJQUFJLEdBQUdOLE1BQU0sQ0FBQ00sT0FBTyxDQUFDO01BQ2hHO01BRUExQixjQUFjLENBQUNFLE9BQU8sR0FBRztRQUFFVyxZQUFZO1FBQUV6QixRQUFRO1FBQUUwQixPQUFPO1FBQUVmLEtBQUssRUFBRXFCLE1BQU0sQ0FBQ3JCO01BQU0sQ0FBQzs7TUFFakY7TUFDQTtNQUNBO01BQ0EsSUFBSSxPQUFPdkMsS0FBSyxDQUFDZ0QsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPaEQsS0FBSyxDQUFDZ0QsSUFBSSxDQUFDLENBQUMsQ0FBQ3NCLGdCQUFnQixLQUFLLFVBQVUsRUFBRTtRQUN6RnRFLEtBQUssQ0FBQ2dELElBQUksQ0FBQyxDQUFDLENBQUNzQixnQkFBZ0IsQ0FBQ3ZELE1BQU0sQ0FBQytCLEVBQUUsSUFBSS9CLE1BQU0sQ0FBQ21DLFdBQVcsRUFBRTtVQUMzRFgsS0FBSyxFQUFFcUIsTUFBTSxDQUFDckIsS0FBSztVQUNuQjJCLE9BQU8sRUFBRU4sTUFBTSxDQUFDTSxPQUFPO1VBQ3ZCRSxXQUFXLEVBQUVSLE1BQU0sQ0FBQ1EsV0FBVztVQUMvQkcsZ0JBQWdCLEVBQUVBLENBQUNoQyxLQUFLLEVBQUVoQyxZQUFZLEtBQUs7WUFDdkMsSUFBR2dELDJCQUFrQixDQUFDQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUU7Y0FDMUNoRCxlQUFlLENBQUNELFlBQVksQ0FBQztjQUM3QkgsV0FBVyxDQUFDLENBQUNtQyxLQUFLLENBQUM7WUFDdkI7VUFDSjtRQUNKLENBQUMsQ0FBQztNQUNOO01BRUEsT0FBT3FCLE1BQU0sQ0FBQ3JCLEtBQUs7SUFDdkI7SUFFQSxPQUFPLEtBQUs7RUFDaEIsQ0FBQztFQUVEbEMsY0FBSyxDQUFDb0MsU0FBUyxDQUFDLE1BQU07SUFDbEJ6QyxLQUFLLENBQUN3RSxNQUFNLENBQUNDLEdBQUcsR0FBR0EsR0FBRyxDQUFDLENBQUM7RUFDNUIsQ0FBQyxDQUFDO0VBRUZwRSxjQUFLLENBQUNvQyxTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJdEIsY0FBSyxDQUFDQyxNQUFNLENBQUNMLE1BQU0sQ0FBQyxFQUFFO01BQ3RCLElBQUkyRCxZQUFZLEdBQUd2RCxjQUFLLENBQUN3RCxXQUFXLENBQUMzRSxLQUFLLENBQUNlLE1BQU0sRUFBRWYsS0FBSyxDQUFDNEUsTUFBTSxDQUFDO01BQ2hFQyxtQkFBWSxDQUFDQyxnQkFBZ0IsQ0FBQ0osWUFBWSxDQUFDSyxtQkFBbUIsRUFBRS9FLEtBQUssQ0FBQ3dFLE1BQU0sRUFBRXhFLEtBQUssQ0FBQzRFLE1BQU0sQ0FBQztNQUMzRkMsbUJBQVksQ0FBQ0csc0JBQXNCLENBQUNoRixLQUFLLENBQUM0RSxNQUFNLEVBQUVGLFlBQVksQ0FBQztNQUMvRDFELFNBQVMsQ0FBQzBELFlBQVksQ0FBQztNQUN2Qi9DLFVBQVUsQ0FBQ1IsY0FBSyxDQUFDOEQseUJBQXlCLENBQUNQLFlBQVksQ0FBQ2hELE9BQU8sRUFBRWdELFlBQVksQ0FBQzVCLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztNQUN4RnJCLFdBQVcsQ0FBQ04sY0FBSyxDQUFDOEQseUJBQXlCLENBQUNQLFlBQVksQ0FBQ2xELFFBQVEsRUFBRWtELFlBQVksQ0FBQzVCLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztNQUUzRixJQUFJb0MsS0FBSyxHQUFHLElBQUlDLGNBQUssQ0FBQ25GLEtBQUssQ0FBQ3dFLE1BQU0sRUFBRXhFLEtBQUssQ0FBQzRFLE1BQU0sRUFBRSxJQUFJLENBQUM7TUFDdkRDLG1CQUFZLENBQUNPLFNBQVMsQ0FBQ0Msa0JBQVMsQ0FBQ0MsY0FBYyxFQUFFSixLQUFLLENBQUM7SUFDM0Q7RUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU43RSxjQUFLLENBQUNvQyxTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJLENBQUN0QixjQUFLLENBQUNDLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQ29ELE1BQU0sQ0FBQyxJQUFJLENBQUNqQyxjQUFLLENBQUNDLE1BQU0sQ0FBQ0wsTUFBTSxDQUFDLEVBQUU7TUFDdEQsSUFBSTJDLElBQUksR0FBRzFELEtBQUssQ0FBQ2dELElBQUksQ0FBQyxDQUFDLENBQ2xCVyxZQUFZLENBQUM1QyxNQUFNLENBQUNtQyxXQUFXLElBQUluQyxNQUFNLENBQUMrQixFQUFFLEVBQUU5QyxLQUFLLENBQUNvRCxNQUFNLENBQUM7TUFDaEUsSUFBSSxDQUFDakMsY0FBSyxDQUFDQyxNQUFNLENBQUNzQyxJQUFJLENBQUNqRCxXQUFXLENBQUMsRUFBRTtRQUNqQ0MsY0FBYyxDQUFDZ0QsSUFBSSxDQUFDakQsV0FBVyxDQUFDO1FBQ2hDRyxnQkFBZ0IsQ0FBQzhDLElBQUksQ0FBQy9DLGFBQWEsQ0FBQztNQUN4QztNQUVBLElBQUksQ0FBQ1EsY0FBSyxDQUFDQyxNQUFNLENBQUNwQixLQUFLLENBQUNlLE1BQU0sQ0FBQ0UsS0FBSyxDQUFDLEVBQUU7UUFDbkMsSUFBSXNFLFdBQVcsR0FBR2hDLDJCQUFrQixDQUFDaUMsWUFBWSxDQUFDeEYsS0FBSyxDQUFDZSxNQUFNLENBQUNFLEtBQUssQ0FBQyxHQUNqRThDLGtCQUFTLENBQUMwQixhQUFhLENBQUN6RixLQUFLLENBQUNlLE1BQU0sQ0FBQytCLEVBQUUsQ0FBQzRDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsT0FBTyxFQUFFMUYsS0FBSyxDQUFDZSxNQUFNLENBQUNFLEtBQUssQ0FBQyxHQUN4RmpCLEtBQUssQ0FBQ2UsTUFBTSxDQUFDRSxLQUFLO1FBRXRCLElBQUksQ0FBQ0UsY0FBSyxDQUFDQyxNQUFNLENBQUNtRSxXQUFXLENBQUMsRUFBRTtVQUM1QixJQUFJSSxHQUFHLEdBQUdKLFdBQVcsQ0FBQ0ssWUFBWSxLQUFLLFlBQVksR0FBR0wsV0FBVyxDQUFDdEUsS0FBSyxHQUFHc0UsV0FBVztVQUNyRjlFLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDLEdBQUdnRixHQUFHO1VBQ2hDekUsUUFBUSxDQUFDeUUsR0FBRyxDQUFDO1VBQ2J0RSxRQUFRLENBQUNxQixPQUFPLEdBQUdpRCxHQUFHO1VBQ3RCM0YsS0FBSyxDQUFDZ0QsSUFBSSxDQUFDLENBQUMsQ0FDUDZDLFlBQVksQ0FBQzlFLE1BQU0sQ0FBQ21DLFdBQVcsSUFBSW5DLE1BQU0sQ0FBQytCLEVBQUUsRUFBRTZDLEdBQUcsQ0FBQztRQUMzRDtNQUNKOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQSxNQUFNRyxpQkFBaUIsR0FBR3ZDLDJCQUFrQixDQUFDQyxvQkFBb0IsQ0FBQyxDQUFDO01BQ25FLElBQUlzQyxpQkFBaUIsRUFBRTtRQUNuQnZDLDJCQUFrQixDQUFDd0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDO01BQy9DO01BQ0EsSUFBSTtRQUNBLE1BQU1DLEVBQUUsR0FBRyxDQUFDN0UsY0FBSyxDQUFDQyxNQUFNLENBQUNzQyxJQUFJLENBQUMsSUFBSSxDQUFDdkMsY0FBSyxDQUFDQyxNQUFNLENBQUNzQyxJQUFJLENBQUNqRCxXQUFXLENBQUMsR0FDM0RpRCxJQUFJLENBQUNqRCxXQUFXLENBQUNpRCxJQUFJLENBQUMvQyxhQUFhLENBQUMsR0FDcEMsSUFBSTtRQUNWO1FBQ0E7UUFDQTtRQUNBO1FBQ0EsTUFBTXNGLGVBQWUsR0FBRyxDQUFDOUUsY0FBSyxDQUFDQyxNQUFNLENBQUNwQixLQUFLLENBQUMrQyxXQUFXLENBQUMsR0FDbEQvQyxLQUFLLENBQUMrQyxXQUFXLENBQUNpRCxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQzNCQSxFQUFFO1FBQ1I3QyxZQUFZLENBQUNuRCxLQUFLLENBQUNvRCxNQUFNLEVBQUU2QyxlQUFlLENBQUM7TUFDL0MsQ0FBQyxTQUFTO1FBQ04sSUFBSUgsaUJBQWlCLEVBQUU7VUFDbkJ2QywyQkFBa0IsQ0FBQ3dDLGlCQUFpQixDQUFDLElBQUksQ0FBQztRQUM5QztNQUNKO0lBQ0o7RUFDSixDQUFDLEVBQUUsQ0FBQy9GLEtBQUssQ0FBQ29ELE1BQU0sRUFBRXJDLE1BQU0sQ0FBQyxDQUFDO0VBRTFCVixjQUFLLENBQUNvQyxTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJNUIsVUFBVSxDQUFDNkIsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDdkIsY0FBSyxDQUFDQyxNQUFNLENBQUNMLE1BQU0sQ0FBQyxFQUFFO01BQ3RELElBQUltRixLQUFLLEdBQUdsRyxLQUFLLENBQUNnRCxJQUFJLENBQUMsQ0FBQyxDQUNuQm1ELFFBQVEsQ0FBQ3BGLE1BQU0sQ0FBQytCLEVBQUUsSUFBSS9CLE1BQU0sQ0FBQ21DLFdBQVcsRUFBRWxELEtBQUssQ0FBQ3dFLE1BQU0sRUFBRXhFLEtBQUssQ0FBQ29HLFFBQVEsRUFBRXBHLEtBQUssQ0FBQ3FHLGVBQWUsQ0FBQztNQUNuRyxJQUFJLENBQUNsRixjQUFLLENBQUNDLE1BQU0sQ0FBQzhFLEtBQUssQ0FBQyxJQUFJLENBQUMvRSxjQUFLLENBQUNDLE1BQU0sQ0FBQzhFLEtBQUssQ0FBQ0ksS0FBSyxDQUFDLEVBQUU7UUFDcEQsSUFBSUosS0FBSyxDQUFDSSxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDeEJuRyxXQUFXLENBQUMsSUFBSSxDQUFDO1VBQ2pCSSxlQUFlLENBQUMwRixLQUFLLENBQUNJLEtBQUssQ0FBQztRQUNoQztNQUNKO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBekYsVUFBVSxDQUFDNkIsT0FBTyxHQUFHLEtBQUs7SUFDOUI7RUFDSixDQUFDLENBQUM7RUFFRnJDLGNBQUssQ0FBQ29DLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLE9BQU8sTUFBTTtNQUNULElBQUksQ0FBQ3RCLGNBQUssQ0FBQ0MsTUFBTSxDQUFDcEIsS0FBSyxDQUFDZ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzdCNkIsbUJBQVksQ0FBQzJCLDRCQUE0QixDQUFDeEcsS0FBSyxDQUFDd0UsTUFBTSxDQUFDO1FBQ3ZEeEUsS0FBSyxDQUFDZ0QsSUFBSSxDQUFDLENBQUMsQ0FDUHlELFdBQVcsQ0FBQ3pHLEtBQUssQ0FBQ2UsTUFBTSxDQUFDbUMsV0FBVyxJQUFJbEQsS0FBSyxDQUFDZSxNQUFNLENBQUMrQixFQUFFLENBQUM7TUFDakU7SUFDSixDQUFDO0VBQ0wsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLE1BQU00RCxpQkFBaUIsR0FBSUMsUUFBUSxJQUFLO0lBQ3BDdEUsaUJBQWlCLENBQUNLLE9BQU8sR0FBRyxJQUFJO0lBQ2hDLElBQUlrRSxZQUFZLEdBQUdELFFBQVEsS0FBS3RGLFFBQVEsQ0FBQ3FCLE9BQU87SUFFaEQsSUFBSSxDQUFDdkIsY0FBSyxDQUFDQyxNQUFNLENBQUN1RixRQUFRLENBQUMsSUFBSSxDQUFDeEYsY0FBSyxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ3FCLE9BQU8sQ0FBQyxFQUFFO01BQzVELElBQUkxQyxLQUFLLENBQUNlLE1BQU0sQ0FBQzhCLFNBQVMsS0FBSyxRQUFRLElBQUk3QyxLQUFLLENBQUNlLE1BQU0sQ0FBQzhCLFNBQVMsS0FBSyxRQUFRLEVBQUU7UUFDNUUrRCxZQUFZLEdBQUdELFFBQVEsQ0FBQzdELEVBQUUsS0FBS3pCLFFBQVEsQ0FBQ3FCLE9BQU8sQ0FBQ0ksRUFBRTtNQUN0RCxDQUFDLE1BQU0sSUFBSTlDLEtBQUssQ0FBQ2UsTUFBTSxDQUFDOEIsU0FBUyxLQUFLLE1BQU0sSUFBSTdDLEtBQUssQ0FBQ2UsTUFBTSxDQUFDOEIsU0FBUyxLQUFLLE1BQU0sRUFBRTtRQUMvRStELFlBQVksR0FBR0QsUUFBUSxLQUFLdEYsUUFBUSxDQUFDcUIsT0FBTztNQUNoRCxDQUFDLE1BQU07UUFDSGtFLFlBQVksR0FBR0MsSUFBSSxDQUFDQyxTQUFTLENBQUN6RixRQUFRLENBQUNxQixPQUFPLENBQUMsS0FBS21FLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxRQUFRLENBQUM7TUFDaEY7SUFDSjtJQUVBLElBQUkzRyxLQUFLLENBQUNlLE1BQU0sQ0FBQzhCLFNBQVMsS0FBSyxNQUFNLElBQUlwQyxXQUFXLENBQUNFLGFBQWEsQ0FBQyxFQUFFO01BQ2pFRixXQUFXLENBQUNFLGFBQWEsQ0FBQyxDQUFDb0csTUFBTSxDQUFDLENBQUMsRUFBRXRHLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDLENBQUM0RixNQUFNLENBQUM7TUFFdkUsSUFBSUksUUFBUSxFQUFFO1FBQ1YsS0FBSyxNQUFNSyxlQUFlLElBQUlMLFFBQVEsRUFBRTtVQUNwQ2xHLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDLENBQUNzRyxJQUFJLENBQUNELGVBQWUsQ0FBQztRQUNwRDtNQUNKO01BRUEsSUFBSWxFLEVBQUUsR0FBRzlDLEtBQUssQ0FBQ2UsTUFBTSxDQUFDbUMsV0FBVyxHQUFHbEQsS0FBSyxDQUFDZSxNQUFNLENBQUNtQyxXQUFXLEdBQUdsRCxLQUFLLENBQUNlLE1BQU0sQ0FBQytCLEVBQUU7TUFDOUU5QyxLQUFLLENBQUNnRCxJQUFJLENBQUMsQ0FBQyxDQUNQNkMsWUFBWSxDQUFDLENBQUMxRSxjQUFLLENBQUNDLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQ2UsTUFBTSxDQUFDbUMsV0FBVyxDQUFDLEdBQUdsRCxLQUFLLENBQUNlLE1BQU0sQ0FBQ21DLFdBQVcsR0FBR0osRUFBRSxFQUFFNkQsUUFBUSxDQUFDO0lBQ3hHO0lBRUEsSUFBSUMsWUFBWSxFQUFFO01BQ2QsSUFBSTlELEVBQUUsR0FBRzlDLEtBQUssQ0FBQ2UsTUFBTSxDQUFDbUMsV0FBVyxHQUFHbEQsS0FBSyxDQUFDZSxNQUFNLENBQUNtQyxXQUFXLEdBQUdsRCxLQUFLLENBQUNlLE1BQU0sQ0FBQytCLEVBQUU7TUFDOUU7TUFDQSxJQUFJOUMsS0FBSyxDQUFDZSxNQUFNLENBQUM4QixTQUFTLEtBQUssUUFBUSxFQUFFO1FBQ3JDLElBQUlxRSxnQkFBZ0IsR0FBR2xILEtBQUssQ0FBQ2dELElBQUksQ0FBQyxDQUFDLENBQzlCbUUsc0JBQXNCLENBQUNyRSxFQUFFLEVBQUV4QixhQUFhLEVBQUVxRixRQUFRLENBQUM7UUFDeER6RixRQUFRLENBQUNnRyxnQkFBZ0IsQ0FBQztRQUMxQjdGLFFBQVEsQ0FBQ3FCLE9BQU8sR0FBR3dFLGdCQUFnQjtRQUNuQyxLQUFLLE1BQU1FLFlBQVksSUFBSTlGLGFBQWEsRUFBRTtVQUN0QyxJQUFJOEYsWUFBWSxDQUFDdEUsRUFBRSxLQUFLNkQsUUFBUSxFQUFFO1lBQzlCQSxRQUFRLEdBQUdTLFlBQVk7WUFDdkI7VUFDSjtRQUNKO01BQ0osQ0FBQyxNQUFNO1FBQ0hsRyxRQUFRLENBQUN5RixRQUFRLENBQUM7UUFDbEJ0RixRQUFRLENBQUNxQixPQUFPLEdBQUdpRSxRQUFRO1FBQzNCM0csS0FBSyxDQUFDZ0QsSUFBSSxDQUFDLENBQUMsQ0FDUDZDLFlBQVksQ0FBQyxDQUFDMUUsY0FBSyxDQUFDQyxNQUFNLENBQUNwQixLQUFLLENBQUNlLE1BQU0sQ0FBQ21DLFdBQVcsQ0FBQyxHQUFHbEQsS0FBSyxDQUFDZSxNQUFNLENBQUNtQyxXQUFXLEdBQUdKLEVBQUUsRUFBRTZELFFBQVEsQ0FBQztNQUN4RztNQUVBLElBQUksQ0FBQ3hGLGNBQUssQ0FBQ0MsTUFBTSxDQUFDcEIsS0FBSyxDQUFDcUgsa0JBQWtCLENBQUMsRUFBRTtRQUN6Q3JILEtBQUssQ0FBQ3FILGtCQUFrQixDQUFDVixRQUFRLENBQUM7TUFDdEM7TUFFQSxJQUFJekIsS0FBSyxHQUFHLElBQUlDLGNBQUssQ0FBQ25GLEtBQUssQ0FBQ3dFLE1BQU0sRUFBRXhFLEtBQUssQ0FBQzRFLE1BQU0sRUFBRStCLFFBQVEsQ0FBQztNQUMzRDlCLG1CQUFZLENBQUNPLFNBQVMsQ0FBQ0Msa0JBQVMsQ0FBQ2lDLFlBQVksRUFBRXBDLEtBQUssQ0FBQztJQUN6RDtFQUNKLENBQUM7RUFFRCxNQUFNVCxHQUFHLEdBQUdBLENBQUEsS0FBTTtJQUNkLE9BQU87TUFDSDhDLFFBQVEsRUFBRUEsQ0FBQ25FLE1BQU0sRUFBRUMsWUFBWSxLQUFLO1FBQ2hDLE9BQU9GLFlBQVksQ0FBQ0MsTUFBTSxFQUFFQyxZQUFZLENBQUM7TUFDN0MsQ0FBQztNQUNEbUUsVUFBVSxFQUFFQSxDQUFDdkcsS0FBSyxFQUFFd0csT0FBTyxLQUFLO1FBQzVCLElBQUksQ0FBQ3RHLGNBQUssQ0FBQ0MsTUFBTSxDQUFDcEIsS0FBSyxDQUFDK0MsV0FBVyxDQUFDLEVBQUU7VUFDbEMsT0FBTy9DLEtBQUssQ0FBQytDLFdBQVcsQ0FBQzlCLEtBQUssRUFBRXdHLE9BQU8sQ0FBQztRQUM1QztRQUVBLE9BQU94RyxLQUFLO01BQ2hCLENBQUM7TUFDRCxJQUFJc0IsS0FBS0EsQ0FBQSxFQUFHO1FBQ1IsT0FBT0EsS0FBSyxDQUFDRyxPQUFPO01BQ3hCLENBQUM7TUFDRCxJQUFJSSxFQUFFQSxDQUFBLEVBQUc7UUFDTCxPQUFPOUMsS0FBSyxDQUFDZSxNQUFNLENBQUMrQixFQUFFO01BQzFCLENBQUM7TUFDRCxJQUFJNEUsSUFBSUEsQ0FBQSxFQUFHO1FBQ1AsT0FBTzFILEtBQUssQ0FBQzJILFdBQVcsR0FBRzNILEtBQUssQ0FBQzJILFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSTtNQUN6RCxDQUFDO01BQ0RDLGtCQUFrQixFQUFFQSxDQUFBLEtBQU07UUFDdEIsT0FBTyxDQUFDekcsY0FBSyxDQUFDQyxNQUFNLENBQUNMLE1BQU0sQ0FBQzhDLFNBQVMsQ0FBQyxHQUFHOUMsTUFBTSxDQUFDOEMsU0FBUyxDQUFDZ0UsS0FBSyxHQUFHLElBQUk7TUFDMUUsQ0FBQztNQUNEQyxLQUFLLEVBQUVBLENBQUEsS0FBTTtRQUNUcEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQ3ZGLGNBQUssQ0FBQ0MsTUFBTSxDQUFDcEIsS0FBSyxDQUFDK0gsWUFBWSxDQUFDLEVBQUU7VUFDbkMvSCxLQUFLLENBQUMrSCxZQUFZLENBQUMsQ0FBQztRQUN4QjtNQUNKLENBQUM7TUFDREMsUUFBUSxFQUFFQSxDQUFBLEtBQU07UUFDWixJQUFJMUYsR0FBRyxDQUFDSSxPQUFPLEVBQUU7VUFDYkosR0FBRyxDQUFDSSxPQUFPLENBQUN1RixjQUFjLENBQUM7WUFDdkJDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCQyxLQUFLLEVBQUU7VUFDWCxDQUFDLENBQUM7UUFDTjtNQUNKLENBQUM7TUFDRCxJQUFJbEgsS0FBS0EsQ0FBQSxFQUFHO1FBQ1IsSUFBSSxDQUFDRSxjQUFLLENBQUNDLE1BQU0sQ0FBQ1gsV0FBVyxDQUFDLElBQUksQ0FBQ1UsY0FBSyxDQUFDQyxNQUFNLENBQUNULGFBQWEsQ0FBQyxJQUFJLENBQUNRLGNBQUssQ0FBQ0MsTUFBTSxDQUFDWCxXQUFXLENBQUNFLGFBQWEsQ0FBQyxDQUFDLEVBQUU7VUFDekcsT0FBTyxDQUFDUSxjQUFLLENBQUNDLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQytDLFdBQVcsQ0FBQyxHQUNuQy9DLEtBQUssQ0FBQytDLFdBQVcsQ0FBQ3RDLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUdGLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDO1FBQ3pGO1FBRUEsSUFBSU0sS0FBSyxFQUFFO1VBQ1AsSUFBSVIsV0FBVyxFQUFFO1lBQ2JBLFdBQVcsQ0FBQ0UsYUFBYSxDQUFDLEdBQUdNLEtBQUs7VUFDdEM7VUFFQSxPQUFPakIsS0FBSyxDQUFDK0MsV0FBVyxHQUFHL0MsS0FBSyxDQUFDK0MsV0FBVyxDQUFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHQSxLQUFLO1FBQ3RFO1FBRUEsT0FBTyxJQUFJO01BQ2YsQ0FBQztNQUNELElBQUlBLEtBQUtBLENBQUMwRSxHQUFHLEVBQUU7UUFDWGUsaUJBQWlCLENBQUNmLEdBQUcsQ0FBQztRQUV0QixJQUFJLENBQUN4RSxjQUFLLENBQUNDLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQ29JLG1CQUFtQixDQUFDLEVBQUU7VUFDMUNwSSxLQUFLLENBQUNvSSxtQkFBbUIsQ0FBQ3pDLEdBQUcsQ0FBQztRQUNsQztNQUNKLENBQUM7TUFDRCxJQUFJbkUsUUFBUUEsQ0FBQ0EsUUFBUSxFQUFFO1FBQ25CQyxXQUFXLENBQUNELFFBQVEsQ0FBQztNQUN6QixDQUFDO01BQ0QsSUFBSUUsT0FBT0EsQ0FBQ0EsT0FBTyxFQUFFO1FBQ2pCQyxVQUFVLENBQUNELE9BQU8sQ0FBQztNQUN2QixDQUFDO01BQ0QyRyxrQkFBa0JBLENBQUEsRUFBRztRQUNqQnhILFVBQVUsQ0FBQzZCLE9BQU8sR0FBRyxLQUFLO01BQzlCLENBQUM7TUFDRDRGLE9BQU9BLENBQUEsRUFBRztRQUNOLElBQUk1RCxZQUFZLEdBQUd2RCxjQUFLLENBQUN3RCxXQUFXLENBQUMzRSxLQUFLLENBQUNlLE1BQU0sRUFBRWYsS0FBSyxDQUFDNEUsTUFBTSxDQUFDO1FBQ2hFakQsVUFBVSxDQUFDUixjQUFLLENBQUM4RCx5QkFBeUIsQ0FBQ1AsWUFBWSxDQUFDaEQsT0FBTyxFQUFFZ0QsWUFBWSxDQUFDNUIsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hGckIsV0FBVyxDQUFDTixjQUFLLENBQUM4RCx5QkFBeUIsQ0FBQ1AsWUFBWSxDQUFDbEQsUUFBUSxFQUFFa0QsWUFBWSxDQUFDNUIsRUFBRSxDQUFDLENBQUM7UUFDcEYsSUFBSXlGLGNBQWMsR0FBRyxDQUFDcEgsY0FBSyxDQUFDQyxNQUFNLENBQUNzRCxZQUFZLENBQUNiLFNBQVMsQ0FBQyxHQUN0RCxDQUFDMUMsY0FBSyxDQUFDOEQseUJBQXlCLENBQUNQLFlBQVksQ0FBQ2IsU0FBUyxDQUFDMkUsUUFBUSxFQUFFOUQsWUFBWSxDQUFDNUIsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUNyRjNCLGNBQUssQ0FBQzhELHlCQUF5QixDQUFDUCxZQUFZLENBQUNiLFNBQVMsQ0FBQ2pDLFFBQVEsRUFBRThDLFlBQVksQ0FBQzVCLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLO1FBQ3ZHVixnQkFBZ0IsQ0FBQ00sT0FBTyxHQUFHZCxRQUFRLEtBQUssSUFBSSxJQUFJQSxRQUFRLEtBQUsyRyxjQUFjLElBQUkxSCxVQUFVLENBQUM2QixPQUFPLEtBQUssS0FBSztRQUMzR2IsV0FBVyxDQUFDMEcsY0FBYyxDQUFDO01BQy9CLENBQUM7TUFDRCxJQUFJM0csUUFBUUEsQ0FBQSxFQUFHO1FBQ1gsT0FBT0EsUUFBUTtNQUNuQixDQUFDO01BQ0QsSUFBSUEsUUFBUUEsQ0FBQzZHLFVBQVUsRUFBRTtRQUNyQjVHLFdBQVcsQ0FBQzRHLFVBQVUsQ0FBQztNQUMzQixDQUFDO01BQ0QsSUFBSTNHLE9BQU9BLENBQUNBLE9BQU8sRUFBRTtRQUNqQkMsVUFBVSxDQUFDRCxPQUFPLENBQUM7TUFDdkIsQ0FBQztNQUNELElBQUlFLE9BQU9BLENBQUNBLE9BQU8sRUFBRTtRQUNqQkMsVUFBVSxDQUFDRCxPQUFPLENBQUM7TUFDdkIsQ0FBQztNQUNELElBQUlWLGFBQWFBLENBQUNBLGFBQWEsRUFBRTtRQUM3QkMsZ0JBQWdCLENBQUNELGFBQWEsQ0FBQztNQUNuQyxDQUFDO01BQ0RvSCxLQUFLQSxDQUFBLEVBQUc7UUFDSnZHLGNBQWMsQ0FBQyxDQUFDRCxXQUFXLENBQUM7TUFDaEMsQ0FBQztNQUNEeUcsZ0JBQWdCQSxDQUFDQyxNQUFNLEVBQW1CO1FBQUEsSUFBakJyQixRQUFRLEdBQUFzQixTQUFBLENBQUF0QyxNQUFBLFFBQUFzQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7UUFDcEN6RyxnQkFBZ0IsQ0FBQ00sT0FBTyxHQUFHNkUsUUFBUTtRQUNuQzFGLFdBQVcsQ0FBQytHLE1BQU0sQ0FBQztNQUN2QixDQUFDO01BQ0RHLFdBQVcsRUFBRUEsQ0FBQSxLQUFNO1FBQ2YsSUFBSSxDQUFDNUgsY0FBSyxDQUFDQyxNQUFNLENBQUNwQixLQUFLLENBQUMrSSxXQUFXLENBQUMsRUFBRTtVQUNsQyxPQUFPL0ksS0FBSyxDQUFDK0ksV0FBVyxDQUFDLENBQUM7UUFDOUI7UUFFQSxPQUFPLEVBQUU7TUFDYixDQUFDO01BQ0RDLFFBQVFBLENBQUEsRUFBRztRQUNQLElBQUloSixLQUFLLENBQUNpSixlQUFlLEVBQUU7VUFDdkJqSixLQUFLLENBQUNpSixlQUFlLENBQUMsQ0FBQztRQUMzQjtNQUNKO0lBQ0osQ0FBQztFQUNMLENBQUM7RUFFRCxPQUFPbEksTUFBTSxnQkFDVDVCLE1BQUEsQ0FBQVcsT0FBQSxDQUFBb0osYUFBQTtJQUFLNUcsR0FBRyxFQUFFQSxHQUFJO0lBQUM2RyxTQUFTLEVBQUMsU0FBUztJQUFDQyxHQUFHLEVBQUVySSxNQUFNLENBQUMrQixFQUFHO0lBQUN1RyxLQUFLLEVBQUU7TUFDdERDLFNBQVMsRUFBRSxNQUFNO01BQ2pCQyxVQUFVLEVBQUUsQ0FBQ3BJLGNBQUssQ0FBQ0MsTUFBTSxFQUFBbkIscUJBQUEsR0FBQ0QsS0FBSyxDQUFDZSxNQUFNLENBQUN5SSxVQUFVLGNBQUF2SixxQkFBQSxnQkFBQUEscUJBQUEsR0FBdkJBLHFCQUFBLENBQXlCb0osS0FBSyxjQUFBcEoscUJBQUEsdUJBQTlCQSxxQkFBQSxDQUFnQ3NKLFVBQVUsQ0FBQyxJQUFBckosc0JBQUEsR0FBR0YsS0FBSyxDQUFDZSxNQUFNLENBQUN5SSxVQUFVLGNBQUF0SixzQkFBQSxnQkFBQUEsc0JBQUEsR0FBdkJBLHNCQUFBLENBQXlCbUosS0FBSyxjQUFBbkosc0JBQUEsdUJBQTlCQSxzQkFBQSxDQUFnQ3FKLFVBQVUsR0FDOUd2SixLQUFLLENBQUNlLE1BQU0sQ0FBQzBJLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUs7TUFDeENDLE9BQU8sRUFBRSxDQUFDaEksT0FBTyxJQUFJUCxjQUFLLENBQUN3SSxxQkFBcUIsQ0FBQzVJLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sR0FBRztJQUNsRztFQUFFLGdCQUNGNUIsTUFBQSxDQUFBVyxPQUFBLENBQUFvSixhQUFBLGVBQ0NsSixLQUFLLENBQUM0SixRQUFRLENBQUM7SUFDWjlILE9BQU8sRUFBRUEsT0FBTztJQUNoQkUsT0FBTyxFQUFFQSxPQUFPO0lBQ2hCSixRQUFRLEVBQUVBLFFBQVE7SUFDbEJKLFFBQVEsRUFBRUEsUUFBUTtJQUNsQmYsV0FBVyxFQUFFQSxXQUFXO0lBQ3hCRSxhQUFhLEVBQUVBLGFBQWE7SUFDNUIrRixpQkFBaUIsRUFBRUEsaUJBQWlCO0lBQ3BDeEYsUUFBUSxFQUFFQSxRQUFRO0lBQ2xCSyxnQkFBZ0IsRUFBRUEsZ0JBQWdCO0lBQ2xDRCxhQUFhLEVBQUVBLGFBQWE7SUFDNUJhLGNBQWMsRUFBRUEsY0FBYztJQUM5QkQsV0FBVyxFQUFFQSxXQUFXO0lBQ3hCakIsS0FBSyxFQUFFQSxLQUFLO0lBQ1pkLFFBQVEsRUFBRUEsUUFBUTtJQUNsQmdELFlBQVksRUFBRUEsWUFBWTtJQUMxQjVDLFlBQVksRUFBRUEsWUFBWTtJQUMxQk0sVUFBVSxFQUFFQTtFQUNoQixDQUFDLENBQ0ssQ0FDRCxDQUFDLEdBQ0osSUFBSTtBQUNkLENBQUM7QUFBQ2dKLE9BQUEsQ0FBQTlKLFNBQUEsR0FBQUEsU0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "AgileMotion React UI Component Library - A comprehensive collection of dashboard components, forms, media controls, and more",
5
5
  "license": "ISC",
6
6
  "author": "",