single-scripture-rcl 3.4.16 → 3.4.17

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.
@@ -54,7 +54,7 @@ import "core-js/modules/es.array.reverse.js";
54
54
  import * as React from 'react';
55
55
  import { AlignmentHelpers, migrateOriginalLanguageHelpers, UsfmFileConversionHelpers, usfmHelpers } from 'word-aligner-rcl';
56
56
  import { isEqual } from '@react-hookz/deep-equal';
57
- import { BookObjectsType, ScriptureConfig, ScriptureReference, ServerConfig, VerseObjectsType } from '../types';
57
+ import { BookObjectsType, ScriptureConfig, ScriptureReferenceType, ServerConfigType, VerseObjectsType } from '../types';
58
58
  import { getAlignments, getScriptureResourceSettings } from '../utils/ScriptureSettings';
59
59
  import { ORIGINAL_SOURCE } from '../utils';
60
60
  import { getVersesForRef } from './useScripture';
@@ -174,12 +174,12 @@ export function useScriptureAlignmentEdit(_ref) {
174
174
  verseTextChanged = _state.verseTextChanged;
175
175
  var chapter = reference === null || reference === void 0 ? void 0 : reference.chapter;
176
176
  var verse = reference === null || reference === void 0 ? void 0 : reference.verse;
177
- var projectId = reference === null || reference === void 0 ? void 0 : reference.projectId;
177
+ var bookId = reference === null || reference === void 0 ? void 0 : reference.bookId;
178
178
  var basicReference = {
179
179
  // only has the three basic fields
180
180
  chapter: chapter,
181
181
  verse: verse,
182
- projectId: projectId
182
+ bookId: bookId
183
183
  };
184
184
  function setState(newState) {
185
185
  setState_(function (prevState) {
@@ -207,7 +207,6 @@ export function useScriptureAlignmentEdit(_ref) {
207
207
 
208
208
  // @ts-ignore
209
209
  httpConfig = httpConfig || {};
210
- var bookId = projectId;
211
210
  var originalScriptureSettings = getScriptureResourceSettings(bookId, originalScriptureSettings_, isNewTestament, originalRepoUrl);
212
211
  if (!enableAlignment) {
213
212
  // if not enabled, then we don't fetch resource
@@ -239,7 +238,7 @@ export function useScriptureAlignmentEdit(_ref) {
239
238
  }
240
239
  }
241
240
  return verseObjects;
242
- }, [originalScriptureBookObjects, chapter, verse, projectId]);
241
+ }, [originalScriptureBookObjects, chapter, verse, bookId]);
243
242
 
244
243
  /**
245
244
  * get current verseObjects
@@ -638,4 +637,4 @@ export function useScriptureAlignmentEdit(_ref) {
638
637
  }
639
638
  };
640
639
  }
641
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIm1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJTZXJ2ZXJDb25maWciLCJWZXJzZU9iamVjdHNUeXBlIiwiZ2V0QWxpZ25tZW50cyIsImdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MiLCJPUklHSU5BTF9TT1VSQ0UiLCJnZXRWZXJzZXNGb3JSZWYiLCJpc1VzZm1BbGlnbmVkIiwidGFyZ2V0VmVyc2VVU0ZNIiwib3JpZ2luYWxWZXJzZU9iamVjdHMiLCJfb3JpZ2luYWxWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyRleHQiLCJleHRyYWN0QWxpZ25tZW50c0Zyb21UYXJnZXRWZXJzZSIsImFsaWdubWVudHMiLCJ3b3JkQmFuayIsImFyZUFsZ25tZW50c0NvbXBsZXRlIiwiZ2V0Q3VycmVudFZlcnNlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0Q2hhbmdlZCIsIm5ld1ZlcnNlVGV4dCIsImN1cnJlbnRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZVRleHQiLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwiYWxsU3BhY2VzIiwidGV4dCIsImhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseSIsImluaXRpYWxWZXJzZVRleHQiLCJjaGFuZ2VkIiwibGVuZ3RoRGlmZmVyZW5jZSIsImZpcnN0UGFydE9mSW5pdGlhbCIsInN1YnN0cmluZyIsImxhc3RDaGFycyIsInBvcyIsImxhc3RJbmRleE9mIiwibGFzdFVzZm1UYWciLCJlbmRzV2l0aFF1b3RlIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIl9yZWYiLCJjdXJyZW50SW5kZXgiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50IiwiaHR0cENvbmZpZyIsImlzTmV3VGVzdGFtZW50Iiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsIm9yaWdpbmFsUmVwb1VybCIsInJlZmVyZW5jZSIsInNjcmlwdHVyZUNvbmZpZyIsInNjcmlwdHVyZVNldHRpbmdzIiwic2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJzdGFydEVkaXRCcmFuY2giLCJ0YXJnZXRMYW5ndWFnZSIsInRpdGxlIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJlZGl0aW5nIiwibmV3QWxpZ25tZW50cyIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl9zdGF0ZSIsImNoYXB0ZXIiLCJ2ZXJzZSIsInByb2plY3RJZCIsImJhc2ljUmVmZXJlbmNlIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNsZWFyQ2hhbmdlcyIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYXJTdGF0ZSIsIm9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfIiwicmVzb3VyY2VJZCIsImJvb2tJZCIsIm9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MiLCJyZXNvdXJjZUxpbmsiLCJ1c2VNZW1vIiwidmVyc2VPYmplY3RzIiwidmVyc2VzIiwibGFuZ3VhZ2VJZCIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3ZlcnNlUmVmZXJlbmNlJHZlcnNlIiwidmVyc2VSZWZlcmVuY2UiLCJvcmlnVmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiZ2V0Q3VycmVudFZlcnNlT2JqZWN0cyIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidXNlRWZmZWN0Iiwibm90RW1wdHkiLCJhbGlnbmVkXyIsInJlc3VsdHMiLCJnZXRDaGFuZ2VzIiwiX25ld1N0YXRlIiwidXBkYXRlZFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkMiIsInRhcmdldFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVDb25maWckdmVycyIsInJlZiIsInZlcnNlc0ZvclJlZiIsImlzTWlncmF0ZWQiLCJwcmVmaXgiLCJfaW5pdGlhbFZlcnNlT2JqZWN0cyIsInVwZGF0ZWRBbGlnbm1lbnRzIiwiaW5pdGlhbEFsaWdubWVudHMiLCJzYW1lIiwiZmlyc3REaWZmIiwidXBkYXRlZEFsaWdubWVudCIsImluaXRpYWxBbGlnbm1lbnQiLCJkaWZmZXJlbnQiLCJtaWdyYXRlQWxpZ25tZW50cyIsIm1pZ3JhdGVUYXJnZXRBbGlnbm1lbnRzVG9PcmlnaW5hbCIsImhhbmRsZUFsaWdubWVudENsaWNrIiwiX2hhbmRsZUFsaWdubWVudENsaWNrIiwiX2NhbGxlZSIsIl9hbGlnbmVyRGF0YSIsIm9yaWdpbmFsVmVyc2VVc2ZtIiwiX0FsaWdubWVudEhlbHBlcnMkcGFyIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhIiwidGFyZ2V0V29yZHMiLCJ2ZXJzZUFsaWdubWVudHMiLCJlcnJvck1lc3NhZ2UiLCJfbmV3QWxpZ25tZW50cyIsInZlcnNlVXNmbSIsImFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTSIsImFsaWduZWRWZXJzZU9iamVjdHMiLCJ1c2ZtVmVyc2VUb0pzb24iLCJzYXZlQWxpZ25tZW50IiwiY2FsbFNldFNhdmVkU3RhdGUiLCJjYW5jZWxBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwiX3giLCJfc2V0RWRpdGluZyIsIl9jYWxsZWUyIiwiZWRpdGluZ18iLCJfbmV3VmVyc2VUZXh0IiwiX3ZlcnNlVGV4dENoYW5nZWQiLCJfQWxpZ25tZW50SGVscGVycyR1cGQ0IiwiX2FsaWdubWVudHNDaGFuZ2VkIiwiX2FyZ3MyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiY3VycmVudFZlcnNlT2JqZWN0cyIsInNldFZlcnNlQ2hhbmdlZCIsIl9pbml0aWFsVmVyc2VUZXh0IiwiX3RhcmdldFZlcnNlT2JqZWN0cyIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZDMiLCJ1bnNhdmVkQ2hhbmdlcyIsInVuc2F2ZWRDaGFuZ2VzXyIsIm9uQWxpZ25tZW50c0NoYW5nZSIsImFsaWdubWVudENvbXBsZXRlIiwiYWN0aW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIEFsaWdubWVudEhlbHBlcnMsXG4gIG1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyxcbiAgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyxcbiAgdXNmbUhlbHBlcnMsXG59IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnQHJlYWN0LWhvb2t6L2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBCb29rT2JqZWN0c1R5cGUsXG4gIFNjcmlwdHVyZUNvbmZpZyxcbiAgU2NyaXB0dXJlUmVmZXJlbmNlLFxuICBTZXJ2ZXJDb25maWcsXG4gIFZlcnNlT2JqZWN0c1R5cGUsXG59IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0QWxpZ25tZW50cywgZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyB9IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgT1JJR0lOQUxfU09VUkNFIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBnZXRWZXJzZXNGb3JSZWYgfSBmcm9tICcuL3VzZVNjcmlwdHVyZSdcblxuaW50ZXJmYWNlIFN0YXJ0RWRpdCB7XG4gICgpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbnR5cGUgTGFuZ3VhZ2VUeXBlID0ge1xuICBsYW5ndWFnZUlkOiBzdHJpbmcsIC8vIHNob3J0IGxhbmd1YWdlIGNvZGUgc3VjaCBhcyBcImVuXCJcbiAgZGlyZWN0aW9uOiBzdHJpbmcsIC8vIGxhbmd1YWdlIGRpcmVjdGlvbiBcImx0clwiIG9yIFwicnRsXCJcbn07XG5cbmludGVyZmFjZSBBbGlnbmVyRGF0YVR5cGUge1xuICAgIHdvcmRCYW5rPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZGJhbmsgd29yZCAodGFyZ2V0IGxhbmd1YWdlIHdvcmRzKSBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbiAgICBhbGlnbm1lbnRzPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZCBhbGlnbm1lbnRzIGluIGZvcm1hdCBuZWVkZWQgYnkgd29yZC1hbGlnbmVyLXJjbFxuICAgIGVycm9yTWVzc2FnZT86IHN0cmluZywgLy8gaWYgcHJlc2VudCB0aGVuIHdlIGRvbid0IGhhdmUgbmVjZXNzYXJ5IGRhdGEgdG8gZG8gYWxpZ25tZW50XG59XG5cbmludGVyZmFjZSBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlIHtcbiAgICB0YXJnZXRXb3Jkcz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHRhcmdldCBsYW5ndWFnZSB3b3JkcyBpbiBmb3JtYXQgdXNlZCBpbiB3b3JkLWFsaWduZXItcmNsXG4gICAgdmVyc2VBbGlnbm1lbnRzPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZCBhbGlnbm1lbnRzIGluIGZvcm1hdCB1c2VkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMge1xuICAvLyBpbmRleCB0byB1c2UgZm9yIGJvb2sgKGUuZy4gYDAxYCBmb3IgYEdFTmApXG4gIGJvb2tJbmRleDogc3RyaW5nLFxuICAvLyBjdXJyZW50IHZlcnNlIHNlbGVjdGVkIGZyb20gaW5pdGlhbFZlcnNlT2JqZWN0c1tdXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAvLyByZWZlcmVuY2UgZm9yIHZlcnNlIHNlbGVjdGVkIGZvciBhbGlnbm1lbnRcbiAgY3VycmVudFZlcnNlUmVmOiBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIC8vIGlmIHRydWUgdGhlbiBlZGl0aW5nIGlzIGFsbG93ZWRcbiAgZW5hYmxlRWRpdDogYm9vbGVhbixcbiAgLy8gaWYgdHJ1ZSB0aGVuIGFsaWdubWVudCBpcyBhbGxvd2VkXG4gIGVuYWJsZUFsaWdubWVudDogYm9vbGVhbixcbiAgLy8gY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIGh0dHAgY29tbXVuaWNhdGlvblxuICBodHRwQ29uZmlnOiBTZXJ2ZXJDb25maWcsXG4gIC8vIGFycmF5IG9mIHRoZSBpbml0aWFsIHZlcnNlT2JqZWN0cyBmb3IgY3VycmVudCByZWZlcmVuY2VcbiAgaW5pdGlhbFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSxcbiAgLy8gaW5pdGlhbCB0ZXh0IGZvciB2ZXJzZVxuICBpbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcsXG4gIC8vIGZsYWcgdGhhdCB3ZSBhcmUgd29ya2luZyBvbiBOVCBib29rXG4gIGlzTmV3VGVzdGFtZW50OiBib29sZWFuLFxuICAvLyB1c2VyIG5hbWUgb2YgbG9nZ2VkIGluIHVzZXJcbiAgbG9nZ2VkSW5Vc2VyOiBzdHJpbmcsXG4gIC8vIG93bmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlc1xuICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IHN0cmluZyxcbiAgLy8gdXJsIGZvciB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVwb1xuICBvcmlnaW5hbFJlcG9Vcmw6IHN0cmluZyxcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogQm9va09iamVjdHNUeXBlLFxuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvLyBkZXRhaWxzIGFib3V0IHRoZSBjdXJyZW50IHNjcmlwdHVyZSBsb2FkZWRcbiAgc2NyaXB0dXJlQ29uZmlnOiBTY3JpcHR1cmVDb25maWcsXG4gIC8vIHNldHRpbmdzIHRvIGJlIHVzZWQgZm9yIHNjcmlwdHVyZVxuICBzY3JpcHR1cmVTZXR0aW5nczogeyB9LFxuICAvLyBjYWxsYmFjayB0byBzYXZlIGN1cnJlbnQgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IGNoYW5nZXNcbiAgc2V0U2F2ZWRDaGFuZ2VzOiBGdW5jdGlvbixcbiAgLy8gc291cmNlIGxhbmd1YWdlIGNvZGUgc3VjaCBhcyBgaGJvYFxuICBzb3VyY2VMYW5ndWFnZTogc3RyaW5nLFxuICAvLyBjYWxsYmFjayB0byBjcmVhdGUgYSB1c2VyIGJyYW5jaCBmb3Igc2F2aW5nIGVkaXQgZGF0YVxuICBzdGFydEVkaXRCcmFuY2g6IFN0YXJ0RWRpdCxcbiAgLy8gY3VycmVudCB0YXJnZXQgbGFuZ3VhZ2VcbiAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlVHlwZSxcbiAgLy8gdGl0bGUgdG8gc2hvdyBpbiBhbGlnbm1lbnRcbiAgdGl0bGU6IHN0cmluZyxcbiAgIC8vIGJyYW5jaCBuYW1lIGN1cnJlbnRseSBiZWluZyB1c2VkIChlLmcuIGBtYXN0ZXJgIG9yIHVzZXIgYnJhbmNoKVxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHN0cmluZyxcbn1cblxuLyoqXG4gKiBkZXRlcm1pbmVzIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZSBiYXNlZCBvbiB0YXJnZXQgVVNGTSBhbmQgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2Ugb2JqZWN0c1xuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFZlcnNlVVNGTVxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBvcmlnaW5hbFZlcnNlT2JqZWN0c1xuICovXG5mdW5jdGlvbiBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTTpzdHJpbmcsIG9yaWdpbmFsVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUpOmJvb2xlYW4ge1xuICBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5sZW5ndGggPyBvcmlnaW5hbFZlcnNlT2JqZWN0cyA6IG51bGwgLy8gbWFrZSBzdXJlIG5vdCBwYXNzaW5nIGVtcHR5IEFycmF5XG4gIGNvbnN0IHsgYWxpZ25tZW50cywgd29yZEJhbmsgfSA9IEFsaWdubWVudEhlbHBlcnMuZXh0cmFjdEFsaWdubWVudHNGcm9tVGFyZ2V0VmVyc2UodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgcmV0dXJuIEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUod29yZEJhbmssIGFsaWdubWVudHMpXG59XG5cbi8qKlxuICogZ2V0IHRoZSB1cGRhdGVkIFVTRk0gZm9yIHRhcmdldCB2ZXJzZSBmcm9tIHRoZSB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYW5kIGxhdGVzdCB0ZXh0XG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtib29sZWFufSB2ZXJzZVRleHRDaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCBpbml0aWFsVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUsIHZlcnNlVGV4dENoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dDpzdHJpbmcpOnN0cmluZyB7XG4gIGxldCB0YXJnZXRWZXJzZVVTRk0gPSBudWxsXG4gIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSB0YXJnZXRWZXJzZVRleHRcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gIH1cbiAgcmV0dXJuIHRhcmdldFZlcnNlVVNGTVxufVxuXG4vKipcbiAqIHJldHVybiB0cnVlIGlmIG9ubHkgc3BhY2VzIGluIGNvbnRlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKi9cbmZ1bmN0aW9uIGFsbFNwYWNlcyh0ZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0ZXh0W2ldICE9PSAnICcpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgdGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IGluaXRpYWxWZXJzZVRleHRcbiAqL1xuZnVuY3Rpb24gaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5KG5ld1ZlcnNlVGV4dDpzdHJpbmcsIGluaXRpYWxWZXJzZVRleHQ6c3RyaW5nKTpib29sZWFuIHtcbiAgbGV0IGNoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICBpZiAoY2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHsgLy8gbWFrZSBzdXJlIGl0J3Mgc2lnbmlmaWNhbnRcbiAgICBjb25zdCBsZW5ndGhEaWZmZXJlbmNlID0gbmV3VmVyc2VUZXh0Lmxlbmd0aCAtIGluaXRpYWxWZXJzZVRleHQ/Lmxlbmd0aFxuICAgIGNvbnN0IGZpcnN0UGFydE9mSW5pdGlhbCA9IG5ld1ZlcnNlVGV4dC5zdWJzdHJpbmcoMCwgaW5pdGlhbFZlcnNlVGV4dC5sZW5ndGgpXG5cbiAgICBpZiAoKGxlbmd0aERpZmZlcmVuY2UgPiAwKSAmJiAoaW5pdGlhbFZlcnNlVGV4dCA9PT0gZmlyc3RQYXJ0T2ZJbml0aWFsKSkgeyAvLyBpZiBpbml0aWFsIHBhcnRzIG1hdGNoXG4gICAgICAvLyBhZGQgZXhlbXB0aW9uIGlmIHRoZSB1c2ZtIGVuZHMgd2l0aCBhIHF1b3RlIHRhZ1xuICAgICAgY29uc3QgbGFzdENoYXJzID0gbmV3VmVyc2VUZXh0LnN1YnN0cmluZyhuZXdWZXJzZVRleHQubGVuZ3RoIC0gbGVuZ3RoRGlmZmVyZW5jZSlcbiAgICAgIGNvbnN0IHBvcyA9IG5ld1ZlcnNlVGV4dC5sYXN0SW5kZXhPZignXFxcXCcpXG4gICAgICBjb25zdCBsYXN0VXNmbVRhZyA9IG5ld1ZlcnNlVGV4dFtwb3MgKyAxXVxuICAgICAgY29uc3QgZW5kc1dpdGhRdW90ZSA9IChwb3MgPiAwKSAmJiAobGFzdFVzZm1UYWcgPT09ICdxJylcblxuICAgICAgaWYgKGVuZHNXaXRoUXVvdGUgJiYgYWxsU3BhY2VzKGxhc3RDaGFycykpIHtcbiAgICAgICAgY2hhbmdlZCA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjaGFuZ2VkXG59XG5cbi8vIG1hbmFnZSB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgc3RhdGVzXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCh7XG4gIGN1cnJlbnRJbmRleCxcbiAgZW5hYmxlRWRpdCxcbiAgZW5hYmxlQWxpZ25tZW50LFxuICBodHRwQ29uZmlnLFxuICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICBpbml0aWFsVmVyc2VUZXh0LFxuICBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBvcmlnaW5hbFJlcG9VcmwsXG4gIHJlZmVyZW5jZSxcbiAgc2NyaXB0dXJlQ29uZmlnLFxuICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzb3VyY2VMYW5ndWFnZSxcbiAgc3RhcnRFZGl0QnJhbmNoLFxuICB0YXJnZXRMYW5ndWFnZSxcbiAgdGl0bGUsXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbn0gOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMpIHtcbiAgdHlwZSBTdGF0ZVR5cGVzID0ge1xuICAgIGFsaWduZWQ6IGJvb2xlYW4sXG4gICAgYWxpZ25lckRhdGE6IEFsaWduZXJEYXRhVHlwZSxcbiAgICBlZGl0aW5nOiBib29sZWFuLFxuICAgIG5ld0FsaWdubWVudHM6IEFsaWduZXJSZXN1bHRzRGF0YVR5cGUsXG4gICAgbmV3VmVyc2VUZXh0OiBzdHJpbmcsXG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSxcbiAgICB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLFxuICB9XG5cbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGFsaWduZWQ6IGZhbHNlLFxuICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3QgX3N0YXRlOiBTdGF0ZVR5cGVzID0gc3RhdGUgLy8gVHJpY2t5OiB3b3JrLWFyb3VuZCBmb3IgYnVnIHRoYXQgc3RhbmRhcmQgdHlwZXNjcmlwdCB0eXBlIGNhc3RpbmcgZG9lcyBub3Qgd29yayBpbiAudHN4IGZpbGVzXG4gIGNvbnN0IHtcbiAgICBhbGlnbmVkLFxuICAgIGFsaWduZXJEYXRhLFxuICAgIGVkaXRpbmcsXG4gICAgbmV3QWxpZ25tZW50cyxcbiAgICBuZXdWZXJzZVRleHQsXG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICB9ID0gX3N0YXRlXG4gIGNvbnN0IGNoYXB0ZXIgPSByZWZlcmVuY2U/LmNoYXB0ZXJcbiAgY29uc3QgdmVyc2UgPSByZWZlcmVuY2U/LnZlcnNlXG4gIGNvbnN0IHByb2plY3RJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IGJhc2ljUmVmZXJlbmNlID0geyAvLyBvbmx5IGhhcyB0aGUgdGhyZWUgYmFzaWMgZmllbGRzXG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICBwcm9qZWN0SWQsXG4gIH1cblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyQ2hhbmdlcygpIHtcbiAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSAke0pTT04uc3RyaW5naWZ5KGJhc2ljUmVmZXJlbmNlKX1gKVxuICAgIGNvbnN0IGNsZWFyU3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogbnVsbCxcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChzdGF0ZSwgY2xlYXJTdGF0ZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBjbGVhckNoYW5nZXMoKSAtIHJlZmVyZW5jZSBjaGFuZ2VkLCByZXNldCBlZGl0L2FsaWdubWVudCBzdGF0ZSB2YXJpYWJsZXNgKVxuICAgICAgc2V0U3RhdGUoY2xlYXJTdGF0ZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyA9IHtcbiAgICAuLi5zY3JpcHR1cmVTZXR0aW5ncyxcbiAgICByZXNvdXJjZUlkOiBPUklHSU5BTF9TT1VSQ0UsXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGh0dHBDb25maWcgPSBodHRwQ29uZmlnIHx8IHt9XG4gIGNvbnN0IGJvb2tJZCA9IHByb2plY3RJZFxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzID0gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgICBib29rSWQsIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCwgb3JpZ2luYWxSZXBvVXJsLFxuICApXG5cbiAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHsgLy8gaWYgbm90IGVuYWJsZWQsIHRoZW4gd2UgZG9uJ3QgZmV0Y2ggcmVzb3VyY2VcbiAgICBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsVmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7IC8vIGdldCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2VPYmplY3RzXG4gICAgY29uc3QgdmVyc2VPYmplY3RzID0gW11cblxuICAgIGlmIChvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXNGb3JSZWYoYmFzaWNSZWZlcmVuY2UsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/Lmxhbmd1YWdlSWQpXG5cbiAgICAgIGlmICh2ZXJzZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmZXJlbmNlIG9mIHZlcnNlcykge1xuICAgICAgICAgIGNvbnN0IG9yaWdWZXJzZU9iamVjdHMgPSB2ZXJzZVJlZmVyZW5jZT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcblxuICAgICAgICAgIGlmIChvcmlnVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh2ZXJzZU9iamVjdHMsIG9yaWdWZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNcbiAgfSwgW29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIGNoYXB0ZXIsIHZlcnNlLCBwcm9qZWN0SWRdKVxuXG4gIC8qKlxuICAgKiBnZXQgY3VycmVudCB2ZXJzZU9iamVjdHNcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBfdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG9wdGlvbmFsIG92ZXJyaWRlcyB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VPYmplY3RzKF91cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlID0gdXBkYXRlZFZlcnNlT2JqZWN0cykge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gX3VwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIHJldHVybiBjdXJyZW50VmVyc2VPYmplY3RzX1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxuICAgIGNvbnN0IG5vdEVtcHR5ID0gISFpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgbGV0IGFsaWduZWRfID0gZmFsc2VcblxuICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gc2tpcCBpZiBhbGlnbmVyIGlzIGJlaW5nIHNob3duXG4gICAgICBpZiAobm90RW1wdHkpIHsgLy8gc2tpcCBpZiBlbXB0eVxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxuXG4gICAgICAgIGlmICghZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmVyc2VUZXh0ICYmIChuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduZWQgIT09IGFsaWduZWRfKSB7XG4gICAgICAgIHNldFN0YXRlKHsgYWxpZ25lZDogYWxpZ25lZF8gfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbml0aWFsVmVyc2VPYmplY3RzLCBhbGlnbmVyRGF0YSwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0LCBlbmFibGVBbGlnbm1lbnQsIG9yaWdpbmFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZ2V0IGNoYW5nZXMgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcbiAgICovXG4gIGZ1bmN0aW9uIGdldENoYW5nZXMobmV3U3RhdGUgPSB7fSkge1xuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICBzdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3QWxpZ25tZW50cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0gPSBfbmV3U3RhdGVcbiAgICBsZXQgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVuc2F2ZWQgYWxpZ25tZW50c31gKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKClcbiAgICB9XG5cbiAgICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgbmV3IHRleHQ6YCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSBnZXRDdXJyZW50VmVyc2VPYmplY3RzKHVwZGF0ZWRWZXJzZU9iamVjdHNfKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gJiYgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1cGRhdGVkIGFsaWdubWVudHNgKVxuICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgfSBlbHNlIHsgLy8gb25seSBhbGlnbm1lbnQgY2hhbmdlcyB0byB1cGxvYWRcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYCwgeyBuZXdWZXJzZVRleHQsIHVwZGF0ZWRWZXJzZU9iamVjdHNfIH0pXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0c18pIHtcbiAgICAgIGNvbnN0IHJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5bY3VycmVudEluZGV4XVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICByZWYsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IHVwZGF0ZWRWZXJzZU9iamVjdHNfLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fVxuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhcmUgaW5pdGlhbCBhbGlnbm1lbnRzIHdpdGggZmluYWwgdG8gc2VlIGlmIGNoYW5nZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeFxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gX2luaXRpYWxWZXJzZU9iamVjdHNcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY2hhbmdlZFxuICAgKi9cbiAgZnVuY3Rpb24gaXNNaWdyYXRlZChwcmVmaXg6c3RyaW5nLCBfdXBkYXRlZFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlID0gdXBkYXRlZFZlcnNlT2JqZWN0cywgX2luaXRpYWxWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSA9IGluaXRpYWxWZXJzZU9iamVjdHMpOmJvb2xlYW4ge1xuICAgIGNvbnN0IHVwZGF0ZWRBbGlnbm1lbnRzID0gZ2V0QWxpZ25tZW50cyhfdXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICBjb25zdCBpbml0aWFsQWxpZ25tZW50cyA9IGdldEFsaWdubWVudHMoX2luaXRpYWxWZXJzZU9iamVjdHMpXG4gICAgbGV0IHNhbWUgPSB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGggPT09IGluaXRpYWxBbGlnbm1lbnRzLmxlbmd0aCAvLyBmaXJzdCBtYWtlIHN1cmUgbGVuZ3RocyBhcmUgdGhlIHNhbWVcbiAgICBsZXQgZmlyc3REaWZmXG5cbiAgICBpZiAoc2FtZSkgeyAvLyBldmVuIGlmIGxlbmd0aHMgYXJlIHRoZSBzYW1lIGRvdWJsZSBjaGVjayBlYWNoIGFsaWdubWVudFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB1cGRhdGVkQWxpZ25tZW50ID0gdXBkYXRlZEFsaWdubWVudHNbaV1cbiAgICAgICAgY29uc3QgaW5pdGlhbEFsaWdubWVudCA9IGluaXRpYWxBbGlnbm1lbnRzW2ldXG5cbiAgICAgICAgaWYgKCFpc0VxdWFsKHVwZGF0ZWRBbGlnbm1lbnQsIGluaXRpYWxBbGlnbm1lbnQpKSB7XG4gICAgICAgICAgZmlyc3REaWZmID0gaVxuICAgICAgICAgIHNhbWUgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaWZmZXJlbnQgPSAhc2FtZVxuXG4gICAgaWYgKGRpZmZlcmVudCkge1xuICAgICAgY29uc29sZS5sb2coYCR7cHJlZml4fSAtIHRhcmdldCB2ZXJzZSBhbGlnbm1lbnRzIG1pZ3JhdGVkIHRvIG1hdGNoIG9yaWdpbmFsIGxhbmd1YWdlLCBmaXJzdCBkaWZmZXJlbmNlIGlzIGF0ICR7Zmlyc3REaWZmfWAsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZlcmVudFxuICB9XG5cbiAgLyoqXG4gICAqIGRvIGFsaWdubWVudHMgbWlncmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBtaWdyYXRlQWxpZ25tZW50cyhwcmVmaXg6IHN0cmluZywgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSA9IG51bGwpOiBWZXJzZU9iamVjdHNUeXBlIHtcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBnZXRDdXJyZW50VmVyc2VPYmplY3RzKClcbiAgICBjb25zdCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycy5taWdyYXRlVGFyZ2V0QWxpZ25tZW50c1RvT3JpZ2luYWwodXBkYXRlZFZlcnNlT2JqZWN0cywgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgaXNNaWdyYXRlZChwcmVmaXgsIF91cGRhdGVkVmVyc2VPYmplY3RzLCB1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgIHJldHVybiBfdXBkYXRlZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBhbGlnbm1lbnQgYnV0dG9uIC0gd2lsbCBzaG93IGlmIG5vdCBhbHJlYWR5IHNob3duXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBbGlnbm1lbnRDbGljaygpIHtcbiAgICBpZiAoZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICBsZXQgX2FsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUgPSBudWxsXG4gICAgICBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIGlmIHdvcmQgYWxpZ25lciBub3Qgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gdG9nZ2xlIE9OIGFsaWdubWVudGApXG4gICAgICAgIGxldCBvcmlnaW5hbFZlcnNlVXNmbSA9IG51bGxcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmIChvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIG9yaWdpbmFsVmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gbWlncmF0ZUFsaWdubWVudHMoJ2hhbmRsZUFsaWdubWVudENsaWNrKCknKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbShfdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0YXJnZXRXb3Jkczogd29yZEJhbmssXG4gICAgICAgICAgdmVyc2VBbGlnbm1lbnRzOiBhbGlnbm1lbnRzLFxuICAgICAgICB9ID0gQWxpZ25tZW50SGVscGVycy5wYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VVc2ZtKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSB7IHdvcmRCYW5rLCBhbGlnbm1lbnRzIH1cblxuICAgICAgICBpZiAoIWFsaWdubWVudHM/Lmxlbmd0aCkge1xuICAgICAgICAgIF9hbGlnbmVyRGF0YS5lcnJvck1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIHdvcmRzIHRvIGFsaWduIGluIHRoZSBPcmlnaW5hbCBsYW5ndWFnZSdcbiAgICAgICAgfSBlbHNlIGlmICghd29yZEJhbms/Lmxlbmd0aCkge1xuICAgICAgICAgIF9hbGlnbmVyRGF0YS5lcnJvck1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIHdvcmRzIHRvIGFsaWduIGluIHRoZSBMaXRlcmFsL1NpbXBsaWZpZWQgU2NyaXB0dXJlIFRleHQnXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7IC8vIHdvcmQgYWxpZ25lciBjdXJyZW50bHkgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gYWxpZ25tZW50IGFscmVhZHkgc2hvd25gKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSBhbGlnbmVyRGF0YVxuICAgICAgfVxuICAgICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogX2FsaWduZXJEYXRhIH0pXG4gICAgICBjb25zb2xlLmxvZyhfYWxpZ25lckRhdGEpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYWZ0ZXIgYWxpZ25tZW50cyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7QWxpZ25lclJlc3VsdHNEYXRhVHlwZX0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHM6IEFsaWduZXJSZXN1bHRzRGF0YVR5cGUgPSBuZXdBbGlnbm1lbnRzKTpWZXJzZU9iamVjdHNUeXBlIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVGV4dCA9IG5ld1ZlcnNlVGV4dCB8fCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgY29uc3QgdmVyc2VVc2ZtID0gQWxpZ25tZW50SGVscGVycy5hZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0oX25ld0FsaWdubWVudHMudGFyZ2V0V29yZHMsIF9uZXdBbGlnbm1lbnRzLnZlcnNlQWxpZ25tZW50cywgdGFyZ2V0VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odmVyc2VVc2ZtKVxuICAgIHJldHVybiBhbGlnbmVkVmVyc2VPYmplY3RzXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBzYXZlIGN1cnJlbnQgYWxpZ25tZW50cyBpbiB3b3JkIGFsaWduZXIuICBHZW5lcmF0ZXMgbmV3IHZlcnNlIGNvbnRlbnQgYW5kIHNhdmVzIGluIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqIEBwYXJhbSB7QWxpZ25lclJlc3VsdHNEYXRhVHlwZX0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVBbGlnbm1lbnQoX25ld0FsaWdubWVudHM6IEFsaWduZXJSZXN1bHRzRGF0YVR5cGUgPSBuZXdBbGlnbm1lbnRzKSB7XG4gICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5ld0FsaWdubWVudHNgLCBfbmV3QWxpZ25tZW50cylcblxuICAgIGlmIChfbmV3QWxpZ25tZW50cykge1xuICAgICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMpXG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gYWxpZ25lZFZlcnNlT2JqZWN0c2AsIGFsaWduZWRWZXJzZU9iamVjdHMpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBhbGlnbmVkVmVyc2VPYmplY3RzLFxuICAgICAgfVxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh0cnVlLCBuZXdTdGF0ZSApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBubyBhbGlnbm1lbnQgY2hhbmdlc2ApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gY2FuY2VsIHdvcmsgaW4gd29yZCBhbGlnbmVyLiAgQ2FsY3VsYXRlcyBhbmQgZGlzcGxheXMgY3VycmVudCBhbGlnbm1lbnQgdmFsaWQgc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICovXG4gIGZ1bmN0aW9uIGNhbmNlbEFsaWdubWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyhgY2FuY2VsQWxpZ25tZW50KClgKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogbnVsbCwgYWxpZ25lZCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciBidXR0b24gdG8gc2V0IGVkaXRpbmcgc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nXyAtIGlmIHRydWUsIGVkaXRvciBpcyBzaG93biwgb3RoZXJ3aXNlIGVkaXRvciBpcyBoaWRkZW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9uZXdWZXJzZVRleHQgLSBvcHRpb25hbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuICBhc3luYyBmdW5jdGlvbiBzZXRFZGl0aW5nKGVkaXRpbmdfOiBib29sZWFuLCBfbmV3VmVyc2VUZXh0OiBzdHJpbmcgPSBuZXdWZXJzZVRleHQpIHtcbiAgICBpZiAoZW5hYmxlRWRpdCkge1xuICAgICAgaWYgKGVkaXRpbmdfICE9PSBlZGl0aW5nKSB7XG4gICAgICAgIF9uZXdWZXJzZVRleHQgPSBfbmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gbnVsbFxuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gX25ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nXyxcbiAgICAgICAgICBuZXdWZXJzZVRleHQ6IF9uZXdWZXJzZVRleHQsXG4gICAgICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZWRpdGluZ18gJiYgdmVyc2VUZXh0Q2hhbmdlZCkgeyAvLyBpZiBkb25lIGVkaXRpbmcgYW5kIHZlcnNlIGhhcyBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZlcnNlIG9iamVjdHNcbiAgICAgICAgICAvLyBkbyBtaWdyYXRpb24gb2YgYWxpZ25tZW50cyB0byBtYXRjaCBsYXRlc3Qgb3JpZ2luYWwgbGFuZ3VhZ2VcbiAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVBbGlnbm1lbnRzKCdzZXRFZGl0aW5nKCknLCB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGN1cnJlbnRWZXJzZU9iamVjdHMpXG4gICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50cyBmcm9tIHVwZGF0ZWQgdmVyc2VPYmplY3RzIHRvIGVkaXRlZCB2ZXJzZSB0ZXh0XG4gICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoX3VwZGF0ZWRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXG4gICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB0YXJnZXRWZXJzZU9iamVjdHMgLy8gdXBkYXRlIHZlcnNlT2JqZWN0cyB0byBtYXRjaCBjdXJyZW50IHRleHRcbiAgICAgICAgICBuZXdTdGF0ZVsndXBkYXRlZFZlcnNlT2JqZWN0cyddID0gX3VwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgICBjb25zdCBfYWxpZ25tZW50c0NoYW5nZWQgPSAoX3VwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpKVxuICAgICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh2ZXJzZVRleHRDaGFuZ2VkIHx8IF9hbGlnbm1lbnRzQ2hhbmdlZCwgbmV3U3RhdGUgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmcm9tIHRoZSBlZGl0IG9uQ2hhbmdlIGV2ZW50IHRvIHVwZGF0ZSBlZGl0IHN0YXRlIHZhcmlhYmxlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoYW5nZWQgLSB0cnVlIGlmIHRoZSBuZXdWZXJzZVRleHQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGluaXRpYWxWZXJzZVRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dCAtIGN1cnJlbnQgY2hhbmdlZCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfaW5pdGlhbFZlcnNlVGV4dCAtIGluaXRpYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dDogc3RyaW5nLCBfaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgX3RhcmdldFZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKF90YXJnZXRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc186IGJvb2xlYW4sIG5ld1N0YXRlOiB7fSA9IHsgfSApIHtcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcbiAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgIXVuc2F2ZWRDaGFuZ2VzXywge1xuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIHN0YXRlOiBfbmV3U3RhdGUsXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCAhIWFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IHJlc3VsdHNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGVcbiAgICovXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlKTpib29sZWFuIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgZW5hYmxlRWRpdCxcbiAgICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcbiAgICAgIHNvdXJjZUxhbmd1YWdlLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FBQXJCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsUUFBQUssQ0FBQSxHQUFBVixDQUFBLElBQUFBLENBQUEsQ0FBQUksU0FBQSxZQUFBbUIsU0FBQSxHQUFBdkIsQ0FBQSxHQUFBdUIsU0FBQSxFQUFBWCxDQUFBLEdBQUFULE1BQUEsQ0FBQXFCLE1BQUEsQ0FBQWQsQ0FBQSxDQUFBTixTQUFBLEdBQUFVLENBQUEsT0FBQVcsT0FBQSxDQUFBcEIsQ0FBQSxnQkFBQUUsQ0FBQSxDQUFBSyxDQUFBLGVBQUFILEtBQUEsRUFBQWlCLGdCQUFBLENBQUF6QixDQUFBLEVBQUFDLENBQUEsRUFBQVksQ0FBQSxNQUFBRixDQUFBLGFBQUFlLFNBQUExQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxtQkFBQTBCLElBQUEsWUFBQUMsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBNkIsSUFBQSxDQUFBOUIsQ0FBQSxFQUFBRSxDQUFBLGNBQUFELENBQUEsYUFBQTJCLElBQUEsV0FBQUMsR0FBQSxFQUFBNUIsQ0FBQSxRQUFBRCxDQUFBLENBQUFzQixJQUFBLEdBQUFBLElBQUEsTUFBQVMsQ0FBQSxxQkFBQUMsQ0FBQSxxQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQVosVUFBQSxjQUFBYSxrQkFBQSxjQUFBQywyQkFBQSxTQUFBQyxDQUFBLE9BQUFwQixNQUFBLENBQUFvQixDQUFBLEVBQUExQixDQUFBLHFDQUFBMkIsQ0FBQSxHQUFBcEMsTUFBQSxDQUFBcUMsY0FBQSxFQUFBQyxDQUFBLEdBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBQSxDQUFBLENBQUFHLE1BQUEsUUFBQUQsQ0FBQSxJQUFBQSxDQUFBLEtBQUF2QyxDQUFBLElBQUFHLENBQUEsQ0FBQXlCLElBQUEsQ0FBQVcsQ0FBQSxFQUFBN0IsQ0FBQSxNQUFBMEIsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQWpDLFNBQUEsR0FBQW1CLFNBQUEsQ0FBQW5CLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBYyxDQUFBLFlBQUFNLHNCQUFBM0MsQ0FBQSxnQ0FBQTRDLE9BQUEsV0FBQTdDLENBQUEsSUFBQWtCLE1BQUEsQ0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBNkMsT0FBQSxDQUFBOUMsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBOEMsY0FBQTlDLENBQUEsRUFBQUQsQ0FBQSxhQUFBZ0QsT0FBQTlDLENBQUEsRUFBQUssQ0FBQSxFQUFBRyxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxHQUFBYSxRQUFBLENBQUExQixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBTSxDQUFBLG1CQUFBTyxDQUFBLENBQUFjLElBQUEsUUFBQVosQ0FBQSxHQUFBRixDQUFBLENBQUFlLEdBQUEsRUFBQUUsQ0FBQSxHQUFBZixDQUFBLENBQUFQLEtBQUEsU0FBQXNCLENBQUEsZ0JBQUFrQixPQUFBLENBQUFsQixDQUFBLEtBQUExQixDQUFBLENBQUF5QixJQUFBLENBQUFDLENBQUEsZUFBQS9CLENBQUEsQ0FBQWtELE9BQUEsQ0FBQW5CLENBQUEsQ0FBQW9CLE9BQUEsRUFBQUMsSUFBQSxXQUFBbkQsQ0FBQSxJQUFBK0MsTUFBQSxTQUFBL0MsQ0FBQSxFQUFBUyxDQUFBLEVBQUFFLENBQUEsZ0JBQUFYLENBQUEsSUFBQStDLE1BQUEsVUFBQS9DLENBQUEsRUFBQVMsQ0FBQSxFQUFBRSxDQUFBLFFBQUFaLENBQUEsQ0FBQWtELE9BQUEsQ0FBQW5CLENBQUEsRUFBQXFCLElBQUEsV0FBQW5ELENBQUEsSUFBQWUsQ0FBQSxDQUFBUCxLQUFBLEdBQUFSLENBQUEsRUFBQVMsQ0FBQSxDQUFBTSxDQUFBLGdCQUFBZixDQUFBLFdBQUErQyxNQUFBLFVBQUEvQyxDQUFBLEVBQUFTLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLENBQUFFLENBQUEsQ0FBQWUsR0FBQSxTQUFBM0IsQ0FBQSxFQUFBSyxDQUFBLG9CQUFBRSxLQUFBLFdBQUFBLE1BQUFSLENBQUEsRUFBQUksQ0FBQSxhQUFBZ0QsMkJBQUEsZUFBQXJELENBQUEsV0FBQUEsQ0FBQSxFQUFBRSxDQUFBLElBQUE4QyxNQUFBLENBQUEvQyxDQUFBLEVBQUFJLENBQUEsRUFBQUwsQ0FBQSxFQUFBRSxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQTNCLGlCQUFBMUIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsUUFBQUUsQ0FBQSxHQUFBd0IsQ0FBQSxtQkFBQXJCLENBQUEsRUFBQUUsQ0FBQSxRQUFBTCxDQUFBLEtBQUEwQixDQUFBLFlBQUFxQixLQUFBLHNDQUFBL0MsQ0FBQSxLQUFBMkIsQ0FBQSxvQkFBQXhCLENBQUEsUUFBQUUsQ0FBQSxXQUFBSCxLQUFBLEVBQUFSLENBQUEsRUFBQXNELElBQUEsZUFBQWxELENBQUEsQ0FBQW1ELE1BQUEsR0FBQTlDLENBQUEsRUFBQUwsQ0FBQSxDQUFBd0IsR0FBQSxHQUFBakIsQ0FBQSxVQUFBRSxDQUFBLEdBQUFULENBQUEsQ0FBQW9ELFFBQUEsTUFBQTNDLENBQUEsUUFBQUUsQ0FBQSxHQUFBMEMsbUJBQUEsQ0FBQTVDLENBQUEsRUFBQVQsQ0FBQSxPQUFBVyxDQUFBLFFBQUFBLENBQUEsS0FBQW1CLENBQUEsbUJBQUFuQixDQUFBLHFCQUFBWCxDQUFBLENBQUFtRCxNQUFBLEVBQUFuRCxDQUFBLENBQUFzRCxJQUFBLEdBQUF0RCxDQUFBLENBQUF1RCxLQUFBLEdBQUF2RCxDQUFBLENBQUF3QixHQUFBLHNCQUFBeEIsQ0FBQSxDQUFBbUQsTUFBQSxRQUFBakQsQ0FBQSxLQUFBd0IsQ0FBQSxRQUFBeEIsQ0FBQSxHQUFBMkIsQ0FBQSxFQUFBN0IsQ0FBQSxDQUFBd0IsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBd0QsaUJBQUEsQ0FBQXhELENBQUEsQ0FBQXdCLEdBQUEsdUJBQUF4QixDQUFBLENBQUFtRCxNQUFBLElBQUFuRCxDQUFBLENBQUF5RCxNQUFBLFdBQUF6RCxDQUFBLENBQUF3QixHQUFBLEdBQUF0QixDQUFBLEdBQUEwQixDQUFBLE1BQUFLLENBQUEsR0FBQVgsUUFBQSxDQUFBM0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsb0JBQUFpQyxDQUFBLENBQUFWLElBQUEsUUFBQXJCLENBQUEsR0FBQUYsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBckIsQ0FBQSxHQUFBRixDQUFBLEVBQUFNLENBQUEsQ0FBQVQsR0FBQSxLQUFBTSxDQUFBLHFCQUFBMUIsS0FBQSxFQUFBNkIsQ0FBQSxDQUFBVCxHQUFBLEVBQUEwQixJQUFBLEVBQUFsRCxDQUFBLENBQUFrRCxJQUFBLGtCQUFBakIsQ0FBQSxDQUFBVixJQUFBLEtBQUFyQixDQUFBLEdBQUEyQixDQUFBLEVBQUE3QixDQUFBLENBQUFtRCxNQUFBLFlBQUFuRCxDQUFBLENBQUF3QixHQUFBLEdBQUFTLENBQUEsQ0FBQVQsR0FBQSxtQkFBQTZCLG9CQUFBMUQsQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsR0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxFQUFBakQsQ0FBQSxHQUFBUCxDQUFBLENBQUFhLFFBQUEsQ0FBQVIsQ0FBQSxPQUFBRSxDQUFBLEtBQUFOLENBQUEsU0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxxQkFBQXBELENBQUEsSUFBQUwsQ0FBQSxDQUFBYSxRQUFBLGVBQUFYLENBQUEsQ0FBQXNELE1BQUEsYUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsRUFBQXlELG1CQUFBLENBQUExRCxDQUFBLEVBQUFFLENBQUEsZUFBQUEsQ0FBQSxDQUFBc0QsTUFBQSxrQkFBQW5ELENBQUEsS0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxPQUFBa0MsU0FBQSx1Q0FBQTFELENBQUEsaUJBQUE4QixDQUFBLE1BQUF6QixDQUFBLEdBQUFpQixRQUFBLENBQUFwQixDQUFBLEVBQUFQLENBQUEsQ0FBQWEsUUFBQSxFQUFBWCxDQUFBLENBQUEyQixHQUFBLG1CQUFBbkIsQ0FBQSxDQUFBa0IsSUFBQSxTQUFBMUIsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBbkIsQ0FBQSxDQUFBbUIsR0FBQSxFQUFBM0IsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBRixDQUFBLENBQUFtQixHQUFBLFNBQUFqQixDQUFBLEdBQUFBLENBQUEsQ0FBQTJDLElBQUEsSUFBQXJELENBQUEsQ0FBQUYsQ0FBQSxDQUFBZ0UsVUFBQSxJQUFBcEQsQ0FBQSxDQUFBSCxLQUFBLEVBQUFQLENBQUEsQ0FBQStELElBQUEsR0FBQWpFLENBQUEsQ0FBQWtFLE9BQUEsZUFBQWhFLENBQUEsQ0FBQXNELE1BQUEsS0FBQXRELENBQUEsQ0FBQXNELE1BQUEsV0FBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsR0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxJQUFBdkIsQ0FBQSxJQUFBVixDQUFBLENBQUFzRCxNQUFBLFlBQUF0RCxDQUFBLENBQUEyQixHQUFBLE9BQUFrQyxTQUFBLHNDQUFBN0QsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxjQUFBZ0MsYUFBQWxFLENBQUEsUUFBQUQsQ0FBQSxLQUFBb0UsTUFBQSxFQUFBbkUsQ0FBQSxZQUFBQSxDQUFBLEtBQUFELENBQUEsQ0FBQXFFLFFBQUEsR0FBQXBFLENBQUEsV0FBQUEsQ0FBQSxLQUFBRCxDQUFBLENBQUFzRSxVQUFBLEdBQUFyRSxDQUFBLEtBQUFELENBQUEsQ0FBQXVFLFFBQUEsR0FBQXRFLENBQUEsV0FBQXVFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBekUsQ0FBQSxjQUFBMEUsY0FBQXpFLENBQUEsUUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUEwRSxVQUFBLFFBQUEzRSxDQUFBLENBQUE0QixJQUFBLG9CQUFBNUIsQ0FBQSxDQUFBNkIsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBMEUsVUFBQSxHQUFBM0UsQ0FBQSxhQUFBeUIsUUFBQXhCLENBQUEsU0FBQXVFLFVBQUEsTUFBQUosTUFBQSxhQUFBbkUsQ0FBQSxDQUFBNEMsT0FBQSxDQUFBc0IsWUFBQSxjQUFBUyxLQUFBLGlCQUFBbEMsT0FBQTFDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBWSxDQUFBLE9BQUFWLENBQUEsU0FBQUEsQ0FBQSxDQUFBNEIsSUFBQSxDQUFBOUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBaUUsSUFBQSxTQUFBakUsQ0FBQSxPQUFBNkUsS0FBQSxDQUFBN0UsQ0FBQSxDQUFBOEUsTUFBQSxTQUFBdkUsQ0FBQSxPQUFBRyxDQUFBLFlBQUF1RCxLQUFBLGFBQUExRCxDQUFBLEdBQUFQLENBQUEsQ0FBQThFLE1BQUEsT0FBQXpFLENBQUEsQ0FBQXlCLElBQUEsQ0FBQTlCLENBQUEsRUFBQU8sQ0FBQSxVQUFBMEQsSUFBQSxDQUFBeEQsS0FBQSxHQUFBVCxDQUFBLENBQUFPLENBQUEsR0FBQTBELElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQXhELEtBQUEsR0FBQVIsQ0FBQSxFQUFBZ0UsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsWUFBQXZELENBQUEsQ0FBQXVELElBQUEsR0FBQXZELENBQUEsZ0JBQUFxRCxTQUFBLENBQUFkLE9BQUEsQ0FBQWpELENBQUEsa0NBQUFvQyxpQkFBQSxDQUFBaEMsU0FBQSxHQUFBaUMsMEJBQUEsRUFBQTlCLENBQUEsQ0FBQW9DLENBQUEsbUJBQUFsQyxLQUFBLEVBQUE0QiwwQkFBQSxFQUFBakIsWUFBQSxTQUFBYixDQUFBLENBQUE4QiwwQkFBQSxtQkFBQTVCLEtBQUEsRUFBQTJCLGlCQUFBLEVBQUFoQixZQUFBLFNBQUFnQixpQkFBQSxDQUFBMkMsV0FBQSxHQUFBN0QsTUFBQSxDQUFBbUIsMEJBQUEsRUFBQXJCLENBQUEsd0JBQUFoQixDQUFBLENBQUFnRixtQkFBQSxhQUFBL0UsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQWdGLFdBQUEsV0FBQWpGLENBQUEsS0FBQUEsQ0FBQSxLQUFBb0MsaUJBQUEsNkJBQUFwQyxDQUFBLENBQUErRSxXQUFBLElBQUEvRSxDQUFBLENBQUFrRixJQUFBLE9BQUFsRixDQUFBLENBQUFtRixJQUFBLGFBQUFsRixDQUFBLFdBQUFFLE1BQUEsQ0FBQWlGLGNBQUEsR0FBQWpGLE1BQUEsQ0FBQWlGLGNBQUEsQ0FBQW5GLENBQUEsRUFBQW9DLDBCQUFBLEtBQUFwQyxDQUFBLENBQUFvRixTQUFBLEdBQUFoRCwwQkFBQSxFQUFBbkIsTUFBQSxDQUFBakIsQ0FBQSxFQUFBZSxDQUFBLHlCQUFBZixDQUFBLENBQUFHLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBbUIsQ0FBQSxHQUFBMUMsQ0FBQSxLQUFBRCxDQUFBLENBQUFzRixLQUFBLGFBQUFyRixDQUFBLGFBQUFrRCxPQUFBLEVBQUFsRCxDQUFBLE9BQUEyQyxxQkFBQSxDQUFBRyxhQUFBLENBQUEzQyxTQUFBLEdBQUFjLE1BQUEsQ0FBQTZCLGFBQUEsQ0FBQTNDLFNBQUEsRUFBQVUsQ0FBQSxpQ0FBQWQsQ0FBQSxDQUFBK0MsYUFBQSxHQUFBQSxhQUFBLEVBQUEvQyxDQUFBLENBQUF1RixLQUFBLGFBQUF0RixDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsZUFBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUE4RSxPQUFBLE9BQUE1RSxDQUFBLE9BQUFtQyxhQUFBLENBQUF6QixJQUFBLENBQUFyQixDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLEdBQUFHLENBQUEsVUFBQVYsQ0FBQSxDQUFBZ0YsbUJBQUEsQ0FBQTlFLENBQUEsSUFBQVUsQ0FBQSxHQUFBQSxDQUFBLENBQUFxRCxJQUFBLEdBQUFiLElBQUEsV0FBQW5ELENBQUEsV0FBQUEsQ0FBQSxDQUFBc0QsSUFBQSxHQUFBdEQsQ0FBQSxDQUFBUSxLQUFBLEdBQUFHLENBQUEsQ0FBQXFELElBQUEsV0FBQXJCLHFCQUFBLENBQUFELENBQUEsR0FBQXpCLE1BQUEsQ0FBQXlCLENBQUEsRUFBQTNCLENBQUEsZ0JBQUFFLE1BQUEsQ0FBQXlCLENBQUEsRUFBQS9CLENBQUEsaUNBQUFNLE1BQUEsQ0FBQXlCLENBQUEsNkRBQUEzQyxDQUFBLENBQUF5RixJQUFBLGFBQUF4RixDQUFBLFFBQUFELENBQUEsR0FBQUcsTUFBQSxDQUFBRixDQUFBLEdBQUFDLENBQUEsZ0JBQUFHLENBQUEsSUFBQUwsQ0FBQSxFQUFBRSxDQUFBLENBQUF1RSxJQUFBLENBQUFwRSxDQUFBLFVBQUFILENBQUEsQ0FBQXdGLE9BQUEsYUFBQXpCLEtBQUEsV0FBQS9ELENBQUEsQ0FBQTRFLE1BQUEsU0FBQTdFLENBQUEsR0FBQUMsQ0FBQSxDQUFBeUYsR0FBQSxRQUFBMUYsQ0FBQSxJQUFBRCxDQUFBLFNBQUFpRSxJQUFBLENBQUF4RCxLQUFBLEdBQUFSLENBQUEsRUFBQWdFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFdBQUFBLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFFBQUFqRSxDQUFBLENBQUEwQyxNQUFBLEdBQUFBLE1BQUEsRUFBQWpCLE9BQUEsQ0FBQXJCLFNBQUEsS0FBQTZFLFdBQUEsRUFBQXhELE9BQUEsRUFBQW1ELEtBQUEsV0FBQUEsTUFBQTVFLENBQUEsYUFBQTRGLElBQUEsV0FBQTNCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUEzRCxDQUFBLE9BQUFzRCxJQUFBLFlBQUFFLFFBQUEsY0FBQUQsTUFBQSxnQkFBQTNCLEdBQUEsR0FBQTVCLENBQUEsT0FBQXVFLFVBQUEsQ0FBQTNCLE9BQUEsQ0FBQTZCLGFBQUEsSUFBQTFFLENBQUEsV0FBQUUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBMkYsTUFBQSxPQUFBeEYsQ0FBQSxDQUFBeUIsSUFBQSxPQUFBNUIsQ0FBQSxNQUFBMkUsS0FBQSxFQUFBM0UsQ0FBQSxDQUFBNEYsS0FBQSxjQUFBNUYsQ0FBQSxJQUFBRCxDQUFBLE1BQUE4RixJQUFBLFdBQUFBLEtBQUEsU0FBQXhDLElBQUEsV0FBQXRELENBQUEsUUFBQXVFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQTFFLENBQUEsQ0FBQTJCLElBQUEsUUFBQTNCLENBQUEsQ0FBQTRCLEdBQUEsY0FBQW1FLElBQUEsS0FBQW5DLGlCQUFBLFdBQUFBLGtCQUFBN0QsQ0FBQSxhQUFBdUQsSUFBQSxRQUFBdkQsQ0FBQSxNQUFBRSxDQUFBLGtCQUFBK0YsT0FBQTVGLENBQUEsRUFBQUUsQ0FBQSxXQUFBSyxDQUFBLENBQUFnQixJQUFBLFlBQUFoQixDQUFBLENBQUFpQixHQUFBLEdBQUE3QixDQUFBLEVBQUFFLENBQUEsQ0FBQStELElBQUEsR0FBQTVELENBQUEsRUFBQUUsQ0FBQSxLQUFBTCxDQUFBLENBQUFzRCxNQUFBLFdBQUF0RCxDQUFBLENBQUEyQixHQUFBLEdBQUE1QixDQUFBLEtBQUFNLENBQUEsYUFBQUEsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBTSxNQUFBLE1BQUF2RSxDQUFBLFNBQUFBLENBQUEsUUFBQUcsQ0FBQSxRQUFBOEQsVUFBQSxDQUFBakUsQ0FBQSxHQUFBSyxDQUFBLEdBQUFGLENBQUEsQ0FBQWlFLFVBQUEsaUJBQUFqRSxDQUFBLENBQUEwRCxNQUFBLFNBQUE2QixNQUFBLGFBQUF2RixDQUFBLENBQUEwRCxNQUFBLFNBQUF3QixJQUFBLFFBQUE5RSxDQUFBLEdBQUFULENBQUEsQ0FBQXlCLElBQUEsQ0FBQXBCLENBQUEsZUFBQU0sQ0FBQSxHQUFBWCxDQUFBLENBQUF5QixJQUFBLENBQUFwQixDQUFBLHFCQUFBSSxDQUFBLElBQUFFLENBQUEsYUFBQTRFLElBQUEsR0FBQWxGLENBQUEsQ0FBQTJELFFBQUEsU0FBQTRCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTJELFFBQUEsZ0JBQUF1QixJQUFBLEdBQUFsRixDQUFBLENBQUE0RCxVQUFBLFNBQUEyQixNQUFBLENBQUF2RixDQUFBLENBQUE0RCxVQUFBLGNBQUF4RCxDQUFBLGFBQUE4RSxJQUFBLEdBQUFsRixDQUFBLENBQUEyRCxRQUFBLFNBQUE0QixNQUFBLENBQUF2RixDQUFBLENBQUEyRCxRQUFBLHFCQUFBckQsQ0FBQSxZQUFBc0MsS0FBQSxxREFBQXNDLElBQUEsR0FBQWxGLENBQUEsQ0FBQTRELFVBQUEsU0FBQTJCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTRELFVBQUEsWUFBQVIsTUFBQSxXQUFBQSxPQUFBN0QsQ0FBQSxFQUFBRCxDQUFBLGFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBNUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFLLENBQUEsUUFBQWlFLFVBQUEsQ0FBQXRFLENBQUEsT0FBQUssQ0FBQSxDQUFBNkQsTUFBQSxTQUFBd0IsSUFBQSxJQUFBdkYsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBdkIsQ0FBQSx3QkFBQXFGLElBQUEsR0FBQXJGLENBQUEsQ0FBQStELFVBQUEsUUFBQTVELENBQUEsR0FBQUgsQ0FBQSxhQUFBRyxDQUFBLGlCQUFBVCxDQUFBLG1CQUFBQSxDQUFBLEtBQUFTLENBQUEsQ0FBQTBELE1BQUEsSUFBQXBFLENBQUEsSUFBQUEsQ0FBQSxJQUFBVSxDQUFBLENBQUE0RCxVQUFBLEtBQUE1RCxDQUFBLGNBQUFFLENBQUEsR0FBQUYsQ0FBQSxHQUFBQSxDQUFBLENBQUFpRSxVQUFBLGNBQUEvRCxDQUFBLENBQUFnQixJQUFBLEdBQUEzQixDQUFBLEVBQUFXLENBQUEsQ0FBQWlCLEdBQUEsR0FBQTdCLENBQUEsRUFBQVUsQ0FBQSxTQUFBOEMsTUFBQSxnQkFBQVMsSUFBQSxHQUFBdkQsQ0FBQSxDQUFBNEQsVUFBQSxFQUFBbkMsQ0FBQSxTQUFBK0QsUUFBQSxDQUFBdEYsQ0FBQSxNQUFBc0YsUUFBQSxXQUFBQSxTQUFBakcsQ0FBQSxFQUFBRCxDQUFBLG9CQUFBQyxDQUFBLENBQUEyQixJQUFBLFFBQUEzQixDQUFBLENBQUE0QixHQUFBLHFCQUFBNUIsQ0FBQSxDQUFBMkIsSUFBQSxtQkFBQTNCLENBQUEsQ0FBQTJCLElBQUEsUUFBQXFDLElBQUEsR0FBQWhFLENBQUEsQ0FBQTRCLEdBQUEsZ0JBQUE1QixDQUFBLENBQUEyQixJQUFBLFNBQUFvRSxJQUFBLFFBQUFuRSxHQUFBLEdBQUE1QixDQUFBLENBQUE0QixHQUFBLE9BQUEyQixNQUFBLGtCQUFBUyxJQUFBLHlCQUFBaEUsQ0FBQSxDQUFBMkIsSUFBQSxJQUFBNUIsQ0FBQSxVQUFBaUUsSUFBQSxHQUFBakUsQ0FBQSxHQUFBbUMsQ0FBQSxLQUFBZ0UsTUFBQSxXQUFBQSxPQUFBbEcsQ0FBQSxhQUFBRCxDQUFBLFFBQUF3RSxVQUFBLENBQUFNLE1BQUEsTUFBQTlFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUFzRSxVQUFBLENBQUF4RSxDQUFBLE9BQUFFLENBQUEsQ0FBQW9FLFVBQUEsS0FBQXJFLENBQUEsY0FBQWlHLFFBQUEsQ0FBQWhHLENBQUEsQ0FBQXlFLFVBQUEsRUFBQXpFLENBQUEsQ0FBQXFFLFFBQUEsR0FBQUcsYUFBQSxDQUFBeEUsQ0FBQSxHQUFBaUMsQ0FBQSx5QkFBQWlFLE9BQUFuRyxDQUFBLGFBQUFELENBQUEsUUFBQXdFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBOUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQXhFLENBQUEsT0FBQUUsQ0FBQSxDQUFBa0UsTUFBQSxLQUFBbkUsQ0FBQSxRQUFBSSxDQUFBLEdBQUFILENBQUEsQ0FBQXlFLFVBQUEsa0JBQUF0RSxDQUFBLENBQUF1QixJQUFBLFFBQUFyQixDQUFBLEdBQUFGLENBQUEsQ0FBQXdCLEdBQUEsRUFBQTZDLGFBQUEsQ0FBQXhFLENBQUEsWUFBQUssQ0FBQSxnQkFBQStDLEtBQUEsOEJBQUErQyxhQUFBLFdBQUFBLGNBQUFyRyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxnQkFBQW9ELFFBQUEsS0FBQTVDLFFBQUEsRUFBQTZCLE1BQUEsQ0FBQTFDLENBQUEsR0FBQWdFLFVBQUEsRUFBQTlELENBQUEsRUFBQWdFLE9BQUEsRUFBQTdELENBQUEsb0JBQUFtRCxNQUFBLFVBQUEzQixHQUFBLEdBQUE1QixDQUFBLEdBQUFrQyxDQUFBLE9BQUFuQyxDQUFBO0FBQUEsU0FBQXNHLG1CQUFBQyxHQUFBLEVBQUFyRCxPQUFBLEVBQUFzRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxHQUFBLEVBQUE5RSxHQUFBLGNBQUErRSxJQUFBLEdBQUFMLEdBQUEsQ0FBQUksR0FBQSxFQUFBOUUsR0FBQSxPQUFBcEIsS0FBQSxHQUFBbUcsSUFBQSxDQUFBbkcsS0FBQSxXQUFBb0csS0FBQSxJQUFBTCxNQUFBLENBQUFLLEtBQUEsaUJBQUFELElBQUEsQ0FBQXJELElBQUEsSUFBQUwsT0FBQSxDQUFBekMsS0FBQSxZQUFBK0UsT0FBQSxDQUFBdEMsT0FBQSxDQUFBekMsS0FBQSxFQUFBMkMsSUFBQSxDQUFBcUQsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUksa0JBQUFDLEVBQUEsNkJBQUFDLElBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLGFBQUExQixPQUFBLFdBQUF0QyxPQUFBLEVBQUFzRCxNQUFBLFFBQUFELEdBQUEsR0FBQVEsRUFBQSxDQUFBSSxLQUFBLENBQUFILElBQUEsRUFBQUMsSUFBQSxZQUFBUixNQUFBaEcsS0FBQSxJQUFBNkYsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBckQsT0FBQSxFQUFBc0QsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsVUFBQWpHLEtBQUEsY0FBQWlHLE9BQUFVLEdBQUEsSUFBQWQsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBckQsT0FBQSxFQUFBc0QsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQVUsR0FBQSxLQUFBWCxLQUFBLENBQUFZLFNBQUE7QUFBQSxTQUFBQywyQkFBQS9HLENBQUEsRUFBQWdILGNBQUEsUUFBQUMsRUFBQSxVQUFBN0csTUFBQSxvQkFBQUosQ0FBQSxDQUFBSSxNQUFBLENBQUFFLFFBQUEsS0FBQU4sQ0FBQSxxQkFBQWlILEVBQUEsUUFBQUMsS0FBQSxDQUFBQyxPQUFBLENBQUFuSCxDQUFBLE1BQUFpSCxFQUFBLEdBQUFHLDJCQUFBLENBQUFwSCxDQUFBLE1BQUFnSCxjQUFBLElBQUFoSCxDQUFBLFdBQUFBLENBQUEsQ0FBQXVFLE1BQUEscUJBQUEwQyxFQUFBLEVBQUFqSCxDQUFBLEdBQUFpSCxFQUFBLE1BQUE5RyxDQUFBLFVBQUFrSCxDQUFBLFlBQUFBLEVBQUEsZUFBQTFGLENBQUEsRUFBQTBGLENBQUEsRUFBQXZILENBQUEsV0FBQUEsRUFBQSxRQUFBSyxDQUFBLElBQUFILENBQUEsQ0FBQXVFLE1BQUEsV0FBQXZCLElBQUEsbUJBQUFBLElBQUEsU0FBQTlDLEtBQUEsRUFBQUYsQ0FBQSxDQUFBRyxDQUFBLFVBQUFWLENBQUEsV0FBQUEsRUFBQTZILEVBQUEsVUFBQUEsRUFBQSxLQUFBNUYsQ0FBQSxFQUFBMkYsQ0FBQSxnQkFBQTdELFNBQUEsaUpBQUErRCxnQkFBQSxTQUFBQyxNQUFBLFVBQUFYLEdBQUEsV0FBQWxGLENBQUEsV0FBQUEsRUFBQSxJQUFBc0YsRUFBQSxHQUFBQSxFQUFBLENBQUExRixJQUFBLENBQUF2QixDQUFBLE1BQUFGLENBQUEsV0FBQUEsRUFBQSxRQUFBMkgsSUFBQSxHQUFBUixFQUFBLENBQUF2RCxJQUFBLElBQUE2RCxnQkFBQSxHQUFBRSxJQUFBLENBQUF6RSxJQUFBLFNBQUF5RSxJQUFBLEtBQUFoSSxDQUFBLFdBQUFBLEVBQUFpSSxHQUFBLElBQUFGLE1BQUEsU0FBQVgsR0FBQSxHQUFBYSxHQUFBLEtBQUFoRyxDQUFBLFdBQUFBLEVBQUEsZUFBQTZGLGdCQUFBLElBQUFOLEVBQUEsb0JBQUFBLEVBQUEsOEJBQUFPLE1BQUEsUUFBQVgsR0FBQTtBQUFBLFNBQUFjLFFBQUFsSSxDQUFBLEVBQUFFLENBQUEsUUFBQUQsQ0FBQSxHQUFBRSxNQUFBLENBQUFzRixJQUFBLENBQUF6RixDQUFBLE9BQUFHLE1BQUEsQ0FBQWdJLHFCQUFBLFFBQUE1SCxDQUFBLEdBQUFKLE1BQUEsQ0FBQWdJLHFCQUFBLENBQUFuSSxDQUFBLEdBQUFFLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUE2SCxNQUFBLFdBQUFsSSxDQUFBLFdBQUFDLE1BQUEsQ0FBQWtJLHdCQUFBLENBQUFySSxDQUFBLEVBQUFFLENBQUEsRUFBQWlCLFVBQUEsT0FBQWxCLENBQUEsQ0FBQXdFLElBQUEsQ0FBQTBDLEtBQUEsQ0FBQWxILENBQUEsRUFBQU0sQ0FBQSxZQUFBTixDQUFBO0FBQUEsU0FBQXFJLGNBQUF0SSxDQUFBLGFBQUFFLENBQUEsTUFBQUEsQ0FBQSxHQUFBZ0gsU0FBQSxDQUFBcEMsTUFBQSxFQUFBNUUsQ0FBQSxVQUFBRCxDQUFBLFdBQUFpSCxTQUFBLENBQUFoSCxDQUFBLElBQUFnSCxTQUFBLENBQUFoSCxDQUFBLFFBQUFBLENBQUEsT0FBQWdJLE9BQUEsQ0FBQS9ILE1BQUEsQ0FBQUYsQ0FBQSxPQUFBNEMsT0FBQSxXQUFBM0MsQ0FBQSxJQUFBcUksZUFBQSxDQUFBdkksQ0FBQSxFQUFBRSxDQUFBLEVBQUFELENBQUEsQ0FBQUMsQ0FBQSxTQUFBQyxNQUFBLENBQUFxSSx5QkFBQSxHQUFBckksTUFBQSxDQUFBc0ksZ0JBQUEsQ0FBQXpJLENBQUEsRUFBQUcsTUFBQSxDQUFBcUkseUJBQUEsQ0FBQXZJLENBQUEsS0FBQWlJLE9BQUEsQ0FBQS9ILE1BQUEsQ0FBQUYsQ0FBQSxHQUFBNEMsT0FBQSxXQUFBM0MsQ0FBQSxJQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLE1BQUEsQ0FBQWtJLHdCQUFBLENBQUFwSSxDQUFBLEVBQUFDLENBQUEsaUJBQUFGLENBQUE7QUFBQSxTQUFBdUksZ0JBQUFHLEdBQUEsRUFBQS9CLEdBQUEsRUFBQWxHLEtBQUEsSUFBQWtHLEdBQUEsR0FBQWdDLGNBQUEsQ0FBQWhDLEdBQUEsT0FBQUEsR0FBQSxJQUFBK0IsR0FBQSxJQUFBdkksTUFBQSxDQUFBSyxjQUFBLENBQUFrSSxHQUFBLEVBQUEvQixHQUFBLElBQUFsRyxLQUFBLEVBQUFBLEtBQUEsRUFBQVUsVUFBQSxRQUFBQyxZQUFBLFFBQUFDLFFBQUEsb0JBQUFxSCxHQUFBLENBQUEvQixHQUFBLElBQUFsRyxLQUFBLFdBQUFpSSxHQUFBO0FBQUEsU0FBQUMsZUFBQTlHLEdBQUEsUUFBQThFLEdBQUEsR0FBQWlDLFlBQUEsQ0FBQS9HLEdBQUEsb0JBQUFvQixPQUFBLENBQUEwRCxHQUFBLGlCQUFBQSxHQUFBLEdBQUFrQyxNQUFBLENBQUFsQyxHQUFBO0FBQUEsU0FBQWlDLGFBQUFFLEtBQUEsRUFBQUMsSUFBQSxRQUFBOUYsT0FBQSxDQUFBNkYsS0FBQSxrQkFBQUEsS0FBQSxrQkFBQUEsS0FBQSxNQUFBRSxJQUFBLEdBQUFGLEtBQUEsQ0FBQW5JLE1BQUEsQ0FBQXNJLFdBQUEsT0FBQUQsSUFBQSxLQUFBM0IsU0FBQSxRQUFBNkIsR0FBQSxHQUFBRixJQUFBLENBQUFsSCxJQUFBLENBQUFnSCxLQUFBLEVBQUFDLElBQUEsb0JBQUE5RixPQUFBLENBQUFpRyxHQUFBLHVCQUFBQSxHQUFBLFlBQUFuRixTQUFBLDREQUFBZ0YsSUFBQSxnQkFBQUYsTUFBQSxHQUFBTSxNQUFBLEVBQUFMLEtBQUE7QUFBQSxTQUFBTSxlQUFBQyxHQUFBLEVBQUEzSSxDQUFBLFdBQUE0SSxlQUFBLENBQUFELEdBQUEsS0FBQUUscUJBQUEsQ0FBQUYsR0FBQSxFQUFBM0ksQ0FBQSxLQUFBaUgsMkJBQUEsQ0FBQTBCLEdBQUEsRUFBQTNJLENBQUEsS0FBQThJLGdCQUFBO0FBQUEsU0FBQUEsaUJBQUEsY0FBQXpGLFNBQUE7QUFBQSxTQUFBNEQsNEJBQUFwSCxDQUFBLEVBQUFrSixNQUFBLFNBQUFsSixDQUFBLHFCQUFBQSxDQUFBLHNCQUFBbUosaUJBQUEsQ0FBQW5KLENBQUEsRUFBQWtKLE1BQUEsT0FBQXBKLENBQUEsR0FBQUYsTUFBQSxDQUFBQyxTQUFBLENBQUF1SixRQUFBLENBQUE3SCxJQUFBLENBQUF2QixDQUFBLEVBQUF1RixLQUFBLGFBQUF6RixDQUFBLGlCQUFBRSxDQUFBLENBQUEwRSxXQUFBLEVBQUE1RSxDQUFBLEdBQUFFLENBQUEsQ0FBQTBFLFdBQUEsQ0FBQUMsSUFBQSxNQUFBN0UsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBb0gsS0FBQSxDQUFBbUMsSUFBQSxDQUFBckosQ0FBQSxPQUFBRixDQUFBLCtEQUFBd0osSUFBQSxDQUFBeEosQ0FBQSxVQUFBcUosaUJBQUEsQ0FBQW5KLENBQUEsRUFBQWtKLE1BQUE7QUFBQSxTQUFBQyxrQkFBQUwsR0FBQSxFQUFBUyxHQUFBLFFBQUFBLEdBQUEsWUFBQUEsR0FBQSxHQUFBVCxHQUFBLENBQUF2RSxNQUFBLEVBQUFnRixHQUFBLEdBQUFULEdBQUEsQ0FBQXZFLE1BQUEsV0FBQXBFLENBQUEsTUFBQXFKLElBQUEsT0FBQXRDLEtBQUEsQ0FBQXFDLEdBQUEsR0FBQXBKLENBQUEsR0FBQW9KLEdBQUEsRUFBQXBKLENBQUEsSUFBQXFKLElBQUEsQ0FBQXJKLENBQUEsSUFBQTJJLEdBQUEsQ0FBQTNJLENBQUEsVUFBQXFKLElBQUE7QUFBQSxTQUFBUixzQkFBQXJKLENBQUEsRUFBQThCLENBQUEsUUFBQS9CLENBQUEsV0FBQUMsQ0FBQSxnQ0FBQVMsTUFBQSxJQUFBVCxDQUFBLENBQUFTLE1BQUEsQ0FBQUUsUUFBQSxLQUFBWCxDQUFBLDRCQUFBRCxDQUFBLFFBQUFELENBQUEsRUFBQUssQ0FBQSxFQUFBSyxDQUFBLEVBQUFNLENBQUEsRUFBQUosQ0FBQSxPQUFBcUIsQ0FBQSxPQUFBMUIsQ0FBQSxpQkFBQUcsQ0FBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQTZCLElBQUEsQ0FBQTVCLENBQUEsR0FBQStELElBQUEsUUFBQWpDLENBQUEsUUFBQTdCLE1BQUEsQ0FBQUYsQ0FBQSxNQUFBQSxDQUFBLFVBQUFnQyxDQUFBLHVCQUFBQSxDQUFBLElBQUFqQyxDQUFBLEdBQUFVLENBQUEsQ0FBQW9CLElBQUEsQ0FBQTdCLENBQUEsR0FBQXNELElBQUEsTUFBQTNDLENBQUEsQ0FBQTZELElBQUEsQ0FBQXpFLENBQUEsQ0FBQVMsS0FBQSxHQUFBRyxDQUFBLENBQUFrRSxNQUFBLEtBQUE5QyxDQUFBLEdBQUFDLENBQUEsaUJBQUEvQixDQUFBLElBQUFLLENBQUEsT0FBQUYsQ0FBQSxHQUFBSCxDQUFBLHlCQUFBK0IsQ0FBQSxZQUFBaEMsQ0FBQSxlQUFBZSxDQUFBLEdBQUFmLENBQUEsY0FBQUUsTUFBQSxDQUFBYSxDQUFBLE1BQUFBLENBQUEsMkJBQUFULENBQUEsUUFBQUYsQ0FBQSxhQUFBTyxDQUFBO0FBQUEsU0FBQTBJLGdCQUFBRCxHQUFBLFFBQUE1QixLQUFBLENBQUFDLE9BQUEsQ0FBQTJCLEdBQUEsVUFBQUEsR0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBQ0EsT0FBTyxLQUFLVyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUNFQyxnQkFBZ0IsRUFDaEJDLDhCQUE4QixFQUM5QkMseUJBQXlCLEVBQ3pCQyxXQUFXLFFBQ04sa0JBQWtCO0FBQ3pCLFNBQVNDLE9BQU8sUUFBUSx5QkFBeUI7QUFDakQsU0FDRUMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGtCQUFrQixFQUNsQkMsWUFBWSxFQUNaQyxnQkFBZ0IsUUFDWCxVQUFVO0FBQ2pCLFNBQVNDLGFBQWEsRUFBRUMsNEJBQTRCLFFBQVEsNEJBQTRCO0FBQ3hGLFNBQVNDLGVBQWUsUUFBUSxVQUFVO0FBQzFDLFNBQVNDLGVBQWUsUUFBUSxnQkFBZ0I7QUFxRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQyxhQUFhQSxDQUFDQyxlQUFzQixFQUFFQyxvQkFBcUMsRUFBVTtFQUFBLElBQUFDLHFCQUFBO0VBQzVGRCxvQkFBb0IsR0FBRyxDQUFBQyxxQkFBQSxHQUFBRCxvQkFBb0IsY0FBQUMscUJBQUEsZUFBcEJBLHFCQUFBLENBQXNCcEcsTUFBTSxHQUFHbUcsb0JBQW9CLEdBQUcsSUFBSSxFQUFDO0VBQ2xGLElBQUFFLHFCQUFBLEdBQWlDbEIsZ0JBQWdCLENBQUNtQixnQ0FBZ0MsQ0FBQ0osZUFBZSxFQUFFQyxvQkFBb0IsQ0FBQztJQUFqSEksVUFBVSxHQUFBRixxQkFBQSxDQUFWRSxVQUFVO0lBQUVDLFFBQVEsR0FBQUgscUJBQUEsQ0FBUkcsUUFBUTtFQUM1QixPQUFPckIsZ0JBQWdCLENBQUNzQixvQkFBb0IsQ0FBQ0QsUUFBUSxFQUFFRCxVQUFVLENBQUM7QUFDcEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTRyxtQkFBbUJBLENBQUNDLG1CQUFvQyxFQUFFQyxtQkFBb0MsRUFBRUMsZ0JBQXlCLEVBQUVDLFlBQW1CLEVBQVM7RUFDOUosSUFBSVosZUFBZSxHQUFHLElBQUk7RUFDMUIsSUFBTWEsb0JBQW9CLEdBQUdKLG1CQUFtQixJQUFJQyxtQkFBbUI7RUFFdkUsSUFBSUMsZ0JBQWdCLElBQUlDLFlBQVksRUFBRTtJQUNwQyxJQUFBRSxxQkFBQSxHQUE0QjdCLGdCQUFnQixDQUFDOEIsNkJBQTZCLENBQUNGLG9CQUFvQixFQUFFRCxZQUFZLENBQUM7TUFBdEdJLGVBQWUsR0FBQUYscUJBQUEsQ0FBZkUsZUFBZTtJQUN2QmhCLGVBQWUsR0FBR2dCLGVBQWU7RUFDbkMsQ0FBQyxNQUFNO0lBQ0xoQixlQUFlLEdBQUdiLHlCQUF5QixDQUFDOEIsc0JBQXNCLENBQUNKLG9CQUFvQixDQUFDO0VBQzFGO0VBQ0EsT0FBT2IsZUFBZTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNrQixTQUFTQSxDQUFDQyxJQUFXLEVBQVU7RUFDdEMsS0FBSyxJQUFJekwsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHeUwsSUFBSSxDQUFDckgsTUFBTSxFQUFFcEUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsSUFBSXlMLElBQUksQ0FBQ3pMLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtNQUNuQixPQUFPLEtBQUs7SUFDZDtFQUNGO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMwTCwyQkFBMkJBLENBQUNSLFlBQW1CLEVBQUVTLGdCQUF1QixFQUFVO0VBQ3pGLElBQUlDLE9BQU8sR0FBR1YsWUFBWSxLQUFLUyxnQkFBZ0I7RUFFL0MsSUFBSUMsT0FBTyxJQUFJVixZQUFZLEVBQUU7SUFBRTtJQUM3QixJQUFNVyxnQkFBZ0IsR0FBR1gsWUFBWSxDQUFDOUcsTUFBTSxJQUFHdUgsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRXZILE1BQU07SUFDdkUsSUFBTTBILGtCQUFrQixHQUFHWixZQUFZLENBQUNhLFNBQVMsQ0FBQyxDQUFDLEVBQUVKLGdCQUFnQixDQUFDdkgsTUFBTSxDQUFDO0lBRTdFLElBQUt5SCxnQkFBZ0IsR0FBRyxDQUFDLElBQU1GLGdCQUFnQixLQUFLRyxrQkFBbUIsRUFBRTtNQUFFO01BQ3pFO01BQ0EsSUFBTUUsU0FBUyxHQUFHZCxZQUFZLENBQUNhLFNBQVMsQ0FBQ2IsWUFBWSxDQUFDOUcsTUFBTSxHQUFHeUgsZ0JBQWdCLENBQUM7TUFDaEYsSUFBTUksR0FBRyxHQUFHZixZQUFZLENBQUNnQixXQUFXLENBQUMsSUFBSSxDQUFDO01BQzFDLElBQU1DLFdBQVcsR0FBR2pCLFlBQVksQ0FBQ2UsR0FBRyxHQUFHLENBQUMsQ0FBQztNQUN6QyxJQUFNRyxhQUFhLEdBQUlILEdBQUcsR0FBRyxDQUFDLElBQU1FLFdBQVcsS0FBSyxHQUFJO01BRXhELElBQUlDLGFBQWEsSUFBSVosU0FBUyxDQUFDUSxTQUFTLENBQUMsRUFBRTtRQUN6Q0osT0FBTyxHQUFHLEtBQUs7TUFDakI7SUFDRjtFQUNGO0VBQ0EsT0FBT0EsT0FBTztBQUNoQjs7QUFFQTtBQUNBLE9BQU8sU0FBU1MseUJBQXlCQSxDQUFBQyxJQUFBLEVBb0JSO0VBQUEsSUFuQi9CQyxZQUFZLEdBQUFELElBQUEsQ0FBWkMsWUFBWTtJQUNaQyxVQUFVLEdBQUFGLElBQUEsQ0FBVkUsVUFBVTtJQUNWQyxlQUFlLEdBQUFILElBQUEsQ0FBZkcsZUFBZTtJQUNmQyxVQUFVLEdBQUFKLElBQUEsQ0FBVkksVUFBVTtJQUNWMUIsbUJBQW1CLEdBQUFzQixJQUFBLENBQW5CdEIsbUJBQW1CO0lBQ25CVyxnQkFBZ0IsR0FBQVcsSUFBQSxDQUFoQlgsZ0JBQWdCO0lBQ2hCZ0IsY0FBYyxHQUFBTCxJQUFBLENBQWRLLGNBQWM7SUFDZEMscUJBQXFCLEdBQUFOLElBQUEsQ0FBckJNLHFCQUFxQjtJQUNyQkMsNEJBQTRCLEdBQUFQLElBQUEsQ0FBNUJPLDRCQUE0QjtJQUM1QkMsZUFBZSxHQUFBUixJQUFBLENBQWZRLGVBQWU7SUFDZkMsU0FBUyxHQUFBVCxJQUFBLENBQVRTLFNBQVM7SUFDVEMsZUFBZSxHQUFBVixJQUFBLENBQWZVLGVBQWU7SUFDZkMsaUJBQWlCLEdBQUFYLElBQUEsQ0FBakJXLGlCQUFpQjtJQUNqQkMsZUFBZSxHQUFBWixJQUFBLENBQWZZLGVBQWU7SUFDZkMsY0FBYyxHQUFBYixJQUFBLENBQWRhLGNBQWM7SUFDZEMsZUFBZSxHQUFBZCxJQUFBLENBQWZjLGVBQWU7SUFDZkMsY0FBYyxHQUFBZixJQUFBLENBQWRlLGNBQWM7SUFDZEMsS0FBSyxHQUFBaEIsSUFBQSxDQUFMZ0IsS0FBSztJQUNMQyxxQkFBcUIsR0FBQWpCLElBQUEsQ0FBckJpQixxQkFBcUI7RUFZckIsSUFBQUMsZUFBQSxHQUEyQmxFLEtBQUssQ0FBQ21FLFFBQVEsQ0FBQztNQUN4Q0MsT0FBTyxFQUFFLEtBQUs7TUFDZEMsV0FBVyxFQUFFLElBQUk7TUFDakJDLE9BQU8sRUFBRSxLQUFLO01BQ2RDLGFBQWEsRUFBRSxJQUFJO01BQ25CM0MsWUFBWSxFQUFFLElBQUk7TUFDbEJILG1CQUFtQixFQUFFLElBQUk7TUFDekJFLGdCQUFnQixFQUFFO0lBQ3BCLENBQUMsQ0FBQztJQUFBNkMsZ0JBQUEsR0FBQXBGLGNBQUEsQ0FBQThFLGVBQUE7SUFSS08sS0FBSyxHQUFBRCxnQkFBQTtJQUFFRSxTQUFTLEdBQUFGLGdCQUFBO0VBVXZCLElBQU1HLE1BQWtCLEdBQUdGLEtBQUssRUFBQztFQUNqQyxJQUNFTCxPQUFPLEdBT0xPLE1BQU0sQ0FQUlAsT0FBTztJQUNQQyxXQUFXLEdBTVRNLE1BQU0sQ0FOUk4sV0FBVztJQUNYQyxPQUFPLEdBS0xLLE1BQU0sQ0FMUkwsT0FBTztJQUNQQyxhQUFhLEdBSVhJLE1BQU0sQ0FKUkosYUFBYTtJQUNiM0MsWUFBWSxHQUdWK0MsTUFBTSxDQUhSL0MsWUFBWTtJQUNaSCxtQkFBbUIsR0FFakJrRCxNQUFNLENBRlJsRCxtQkFBbUI7SUFDbkJFLGdCQUFnQixHQUNkZ0QsTUFBTSxDQURSaEQsZ0JBQWdCO0VBRWxCLElBQU1pRCxPQUFPLEdBQUduQixTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRW1CLE9BQU87RUFDbEMsSUFBTUMsS0FBSyxHQUFHcEIsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVvQixLQUFLO0VBQzlCLElBQU1DLFNBQVMsR0FBR3JCLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFcUIsU0FBUztFQUN0QyxJQUFNQyxjQUFjLEdBQUc7SUFBRTtJQUN2QkgsT0FBTyxFQUFQQSxPQUFPO0lBQ1BDLEtBQUssRUFBTEEsS0FBSztJQUNMQyxTQUFTLEVBQVRBO0VBQ0YsQ0FBQztFQUVELFNBQVNFLFFBQVFBLENBQUNDLFFBQVEsRUFBRTtJQUMxQlAsU0FBUyxDQUFDLFVBQUFRLFNBQVM7TUFBQSxPQUFBNUcsYUFBQSxDQUFBQSxhQUFBLEtBQVU0RyxTQUFTLEdBQUtELFFBQVE7SUFBQSxDQUFHLENBQUM7RUFDekQ7RUFFQSxTQUFTRSxZQUFZQSxDQUFBLEVBQUc7SUFDdEJDLE9BQU8sQ0FBQ0MsR0FBRyxxQkFBQUMsTUFBQSxDQUFxQkMsSUFBSSxDQUFDQyxTQUFTLENBQUNULGNBQWMsQ0FBQyxDQUFFLENBQUM7SUFDakUsSUFBTVUsVUFBVSxHQUFBbkgsYUFBQSxDQUFBQSxhQUFBLEtBQ1htRyxLQUFLO01BQ1JKLFdBQVcsRUFBRSxJQUFJO01BQ2pCQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxhQUFhLEVBQUUsSUFBSTtNQUNuQjNDLFlBQVksRUFBRSxJQUFJO01BQ2xCSCxtQkFBbUIsRUFBRSxJQUFJO01BQ3pCRSxnQkFBZ0IsRUFBRTtJQUFLLEVBQ3hCO0lBRUQsSUFBSSxDQUFDdEIsT0FBTyxDQUFDb0UsS0FBSyxFQUFFZ0IsVUFBVSxDQUFDLEVBQUU7TUFDL0JMLE9BQU8sQ0FBQ0MsR0FBRywyRUFBMkUsQ0FBQztNQUN2RkwsUUFBUSxDQUFDUyxVQUFVLENBQUM7SUFDdEI7RUFDRjtFQUVBLElBQU1DLDBCQUEwQixHQUFBcEgsYUFBQSxDQUFBQSxhQUFBLEtBQzNCcUYsaUJBQWlCO0lBQ3BCZ0MsVUFBVSxFQUFFOUU7RUFBZSxFQUM1Qjs7RUFFRDtFQUNBdUMsVUFBVSxHQUFHQSxVQUFVLElBQUksQ0FBQyxDQUFDO0VBQzdCLElBQU13QyxNQUFNLEdBQUdkLFNBQVM7RUFDeEIsSUFBTWUseUJBQXlCLEdBQUdqRiw0QkFBNEIsQ0FDNURnRixNQUFNLEVBQUVGLDBCQUEwQixFQUFFckMsY0FBYyxFQUFFRyxlQUN0RCxDQUFDO0VBRUQsSUFBSSxDQUFDTCxlQUFlLEVBQUU7SUFBRTtJQUN0QjBDLHlCQUF5QixDQUFDQyxZQUFZLEdBQUcsSUFBSTtFQUMvQztFQUVBLElBQU03RSxvQkFBb0IsR0FBR2pCLEtBQUssQ0FBQytGLE9BQU8sQ0FBQyxZQUFNO0lBQUU7SUFDakQsSUFBTUMsWUFBWSxHQUFHLEVBQUU7SUFFdkIsSUFBSXpDLDRCQUE0QixFQUFFO01BQ2hDO01BQ0EsSUFBTTBDLE1BQU0sR0FBR25GLGVBQWUsQ0FBQ2lFLGNBQWMsRUFBRXhCLDRCQUE0QixFQUFFQSw0QkFBNEIsYUFBNUJBLDRCQUE0Qix1QkFBNUJBLDRCQUE0QixDQUFFMkMsVUFBVSxDQUFDO01BRXRILElBQUlELE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUVuTCxNQUFNLEVBQUU7UUFBQSxJQUFBcUwsU0FBQSxHQUFBN0ksMEJBQUEsQ0FDVzJJLE1BQU07VUFBQUcsS0FBQTtRQUFBO1VBQW5DLEtBQUFELFNBQUEsQ0FBQWpPLENBQUEsTUFBQWtPLEtBQUEsR0FBQUQsU0FBQSxDQUFBOVAsQ0FBQSxJQUFBa0QsSUFBQSxHQUFxQztZQUFBLElBQUE4TSxxQkFBQTtZQUFBLElBQTFCQyxjQUFjLEdBQUFGLEtBQUEsQ0FBQTNQLEtBQUE7WUFDdkIsSUFBTThQLGdCQUFnQixHQUFHRCxjQUFjLGFBQWRBLGNBQWMsZ0JBQUFELHFCQUFBLEdBQWRDLGNBQWMsQ0FBRUUsU0FBUyxjQUFBSCxxQkFBQSx1QkFBekJBLHFCQUFBLENBQTJCTCxZQUFZO1lBRWhFLElBQUlPLGdCQUFnQixFQUFFO2NBQ3BCOUksS0FBSyxDQUFDckgsU0FBUyxDQUFDcUUsSUFBSSxDQUFDMEMsS0FBSyxDQUFDNkksWUFBWSxFQUFFTyxnQkFBZ0IsQ0FBQztZQUM1RDtVQUNGO1FBQUMsU0FBQW5KLEdBQUE7VUFBQStJLFNBQUEsQ0FBQW5RLENBQUEsQ0FBQW9ILEdBQUE7UUFBQTtVQUFBK0ksU0FBQSxDQUFBbE8sQ0FBQTtRQUFBO01BQ0g7SUFDRjtJQUNBLE9BQU8rTixZQUFZO0VBQ3JCLENBQUMsRUFBRSxDQUFDekMsNEJBQTRCLEVBQUVxQixPQUFPLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxDQUFDLENBQUM7O0VBRTdEO0FBQ0Y7QUFDQTtBQUNBO0VBQ0UsU0FBUzJCLHNCQUFzQkEsQ0FBQSxFQUErRDtJQUFBLElBQTlEQyxvQkFBc0MsR0FBQXhKLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUcsU0FBQSxHQUFBSCxTQUFBLE1BQUd1RSxtQkFBbUI7SUFDMUYsSUFBTUksb0JBQW9CLEdBQUc2RSxvQkFBb0IsSUFBSWhGLG1CQUFtQjtJQUN4RSxPQUFPRyxvQkFBb0I7RUFDN0I7RUFFQTdCLEtBQUssQ0FBQzJHLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsSUFBTUMsUUFBUSxHQUFHLENBQUMsQ0FBQ2xGLG1CQUFtQjtJQUN0QyxJQUFJbUYsUUFBUSxHQUFHLEtBQUs7SUFFcEIsSUFBSSxDQUFDeEMsV0FBVyxFQUFFO01BQUU7TUFDbEIsSUFBSXVDLFFBQVEsRUFBRTtRQUFFO1FBQ2QsSUFBTS9FLG9CQUFvQixHQUFHNEUsc0JBQXNCLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUN0RCxlQUFlLEVBQUU7VUFDcEIwRCxRQUFRLEdBQUcsSUFBSTtRQUNqQixDQUFDLE1BQU0sSUFBSWpGLFlBQVksSUFBS0EsWUFBWSxLQUFLUyxnQkFBaUIsRUFBRTtVQUM5RCxJQUFNeUUsT0FBTyxHQUFHN0csZ0JBQWdCLENBQUM4Qiw2QkFBNkIsQ0FBQ0Ysb0JBQW9CLEVBQUVELFlBQVksQ0FBQztVQUNsR2lGLFFBQVEsR0FBRzlGLGFBQWEsQ0FBQytGLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFOUUsZUFBZSxFQUFFZixvQkFBb0IsQ0FBQztRQUMxRSxDQUFDLE1BQU07VUFDTCxJQUFNRCxlQUFlLEdBQUdiLHlCQUF5QixDQUFDOEIsc0JBQXNCLENBQUNKLG9CQUFvQixDQUFDO1VBQzlGZ0YsUUFBUSxHQUFHOUYsYUFBYSxDQUFDQyxlQUFlLEVBQUVDLG9CQUFvQixDQUFDO1FBQ2pFO01BQ0Y7TUFFQSxJQUFJbUQsT0FBTyxLQUFLeUMsUUFBUSxFQUFFO1FBQ3hCN0IsUUFBUSxDQUFDO1VBQUVaLE9BQU8sRUFBRXlDO1FBQVMsQ0FBQyxDQUFDO01BQ2pDO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQ25GLG1CQUFtQixFQUFFMkMsV0FBVyxFQUFFekMsWUFBWSxFQUFFUyxnQkFBZ0IsRUFBRWMsZUFBZSxFQUFFbEMsb0JBQW9CLENBQUMsQ0FBQzs7RUFFN0c7QUFDRjtBQUNBO0FBQ0E7RUFDRSxTQUFTOEYsVUFBVUEsQ0FBQSxFQUFnQjtJQUFBLElBQWY5QixRQUFRLEdBQUEvSCxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFHLFNBQUEsR0FBQUgsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUMvQmtJLE9BQU8sQ0FBQ0MsR0FBRyx5QkFBQUMsTUFBQSxDQUF5QnJDLFlBQVksc0JBQW1CZ0MsUUFBUSxDQUFDO0lBQzVFLElBQU0rQixTQUFTLEdBQUExSSxhQUFBO01BQ2JtRyxLQUFLLEVBQUxBO0lBQUssR0FDRlEsUUFBUSxDQUNaO0lBQ0Q7SUFDQSxJQUVFVixhQUFhLEdBT1h5QyxTQUFTLENBUFh6QyxhQUFhO01BRWIzQyxZQUFZLEdBS1ZvRixTQUFTLENBTFhwRixZQUFZO01BRVpILG1CQUFtQixHQUdqQnVGLFNBQVMsQ0FIWHZGLG1CQUFtQjtNQUVuQkUsZ0JBQWdCLEdBQ2RxRixTQUFTLENBRFhyRixnQkFBZ0I7SUFFbEIsSUFBSXNGLG9CQUFvQixHQUFHeEYsbUJBQW1CO0lBRTlDLElBQUk4QyxhQUFhLEVBQUU7TUFBRTtNQUNuQmEsT0FBTyxDQUFDQyxHQUFHLDRDQUE0QyxDQUFDO01BQ3hENEIsb0JBQW9CLEdBQUdDLDRCQUE0QixDQUFDLENBQUM7SUFDdkQ7SUFFQSxJQUFJdkYsZ0JBQWdCLElBQUlDLFlBQVksRUFBRTtNQUNwQ3dELE9BQU8sQ0FBQ0MsR0FBRyxvQ0FBb0N6RCxZQUFZLENBQUM7TUFDNUQsSUFBTUMsb0JBQW9CLEdBQUc0RSxzQkFBc0IsQ0FBQ1Esb0JBQW9CLENBQUM7TUFDekVBLG9CQUFvQixJQUFJN0IsT0FBTyxDQUFDQyxHQUFHLDJDQUEyQyxDQUFDO01BQy9FLElBQUE4QixzQkFBQSxHQUErQmxILGdCQUFnQixDQUFDOEIsNkJBQTZCLENBQUNGLG9CQUFvQixFQUFFRCxZQUFZLENBQUM7UUFBekd3RixrQkFBa0IsR0FBQUQsc0JBQUEsQ0FBbEJDLGtCQUFrQjtNQUMxQkgsb0JBQW9CLEdBQUdHLGtCQUFrQjtJQUMzQyxDQUFDLE1BQU07TUFBRTtNQUNQSCxvQkFBb0IsSUFBSTdCLE9BQU8sQ0FBQ0MsR0FBRyw2Q0FBNkM7UUFBRXpELFlBQVksRUFBWkEsWUFBWTtRQUFFcUYsb0JBQW9CLEVBQXBCQTtNQUFxQixDQUFDLENBQUM7TUFDdkhBLG9CQUFvQixHQUFHQSxvQkFBb0IsSUFBSXZGLG1CQUFtQjtJQUNwRTtJQUVBLElBQUl1RixvQkFBb0IsRUFBRTtNQUFBLElBQUFJLHFCQUFBO01BQ3hCLElBQU1DLEdBQUcsR0FBRzVELGVBQWUsYUFBZkEsZUFBZSxnQkFBQTJELHFCQUFBLEdBQWYzRCxlQUFlLENBQUU2RCxZQUFZLGNBQUFGLHFCQUFBLHVCQUE3QkEscUJBQUEsQ0FBZ0NwRSxZQUFZLENBQUM7TUFDekQsT0FBTztRQUNMckIsWUFBWSxFQUFaQSxZQUFZO1FBQ1owRixHQUFHLEVBQUhBLEdBQUc7UUFDSDdGLG1CQUFtQixFQUFFd0Y7TUFDdkIsQ0FBQztJQUNIO0lBRUEsT0FBTyxDQUFDLENBQUM7RUFDWDs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLFNBQVNPLFVBQVVBLENBQUNDLE1BQWEsRUFBb0k7SUFBQSxJQUFsSWYsb0JBQXFDLEdBQUF4SixTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFHLFNBQUEsR0FBQUgsU0FBQSxNQUFHdUUsbUJBQW1CO0lBQUEsSUFBRWlHLG9CQUFxQyxHQUFBeEssU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBRyxTQUFBLEdBQUFILFNBQUEsTUFBR3dFLG1CQUFtQjtJQUN6SixJQUFNaUcsaUJBQWlCLEdBQUdoSCxhQUFhLENBQUMrRixvQkFBb0IsQ0FBQztJQUM3RCxJQUFNa0IsaUJBQWlCLEdBQUdqSCxhQUFhLENBQUMrRyxvQkFBb0IsQ0FBQztJQUM3RCxJQUFJRyxJQUFJLEdBQUdGLGlCQUFpQixDQUFDN00sTUFBTSxLQUFLOE0saUJBQWlCLENBQUM5TSxNQUFNLEVBQUM7SUFDakUsSUFBSWdOLFNBQVM7SUFFYixJQUFJRCxJQUFJLEVBQUU7TUFBRTtNQUNWLEtBQUssSUFBSW5SLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2lSLGlCQUFpQixDQUFDN00sTUFBTSxFQUFFcEUsQ0FBQyxFQUFFLEVBQUU7UUFDakQsSUFBTXFSLGdCQUFnQixHQUFHSixpQkFBaUIsQ0FBQ2pSLENBQUMsQ0FBQztRQUM3QyxJQUFNc1IsZ0JBQWdCLEdBQUdKLGlCQUFpQixDQUFDbFIsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQzJKLE9BQU8sQ0FBQzBILGdCQUFnQixFQUFFQyxnQkFBZ0IsQ0FBQyxFQUFFO1VBQ2hERixTQUFTLEdBQUdwUixDQUFDO1VBQ2JtUixJQUFJLEdBQUcsS0FBSztVQUNaO1FBQ0Y7TUFDRjtJQUNGO0lBRUEsSUFBTUksU0FBUyxHQUFHLENBQUNKLElBQUk7SUFFdkIsSUFBSUksU0FBUyxFQUFFO01BQ2I3QyxPQUFPLENBQUNDLEdBQUcsSUFBQUMsTUFBQSxDQUFJbUMsTUFBTSw2RkFBQW5DLE1BQUEsQ0FBMEZ3QyxTQUFTLEdBQUlyRyxtQkFBbUIsRUFBRUMsbUJBQW1CLENBQUM7SUFDdks7SUFFQSxPQUFPdUcsU0FBUztFQUNsQjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU0MsaUJBQWlCQSxDQUFDVCxNQUFjLEVBQWtFO0lBQUEsSUFBaEVoRyxtQkFBcUMsR0FBQXZFLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUcsU0FBQSxHQUFBSCxTQUFBLE1BQUcsSUFBSTtJQUNyRnVFLG1CQUFtQixHQUFHQSxtQkFBbUIsSUFBSWdGLHNCQUFzQixDQUFDLENBQUM7SUFDckUsSUFBTUMsb0JBQW9CLEdBQUd4Ryw4QkFBOEIsQ0FBQ2lJLGlDQUFpQyxDQUFDMUcsbUJBQW1CLEVBQUVSLG9CQUFvQixDQUFDO0lBQ3hJdUcsVUFBVSxDQUFDQyxNQUFNLEVBQUVmLG9CQUFvQixFQUFFakYsbUJBQW1CLENBQUM7SUFDN0QsT0FBT2lGLG9CQUFvQjtFQUM3Qjs7RUFFQTtBQUNGO0FBQ0E7RUFGRSxTQUdlMEIsb0JBQW9CQSxDQUFBO0lBQUEsT0FBQUMscUJBQUEsQ0FBQWxMLEtBQUEsT0FBQUQsU0FBQTtFQUFBO0VBcUNuQztBQUNGO0FBQ0E7QUFDQTtFQUhFLFNBQUFtTCxzQkFBQTtJQUFBQSxxQkFBQSxHQUFBdkwsaUJBQUEsZUFBQS9HLG1CQUFBLEdBQUFvRixJQUFBLENBckNBLFNBQUFtTixRQUFBO01BQUEsSUFBQUMsWUFBQSxFQUFBQyxpQkFBQSxFQUFBOUIsb0JBQUEsRUFBQTFGLGVBQUEsRUFBQXlILHFCQUFBLEVBQUFuSCxRQUFBLEVBQUFELFVBQUE7TUFBQSxPQUFBdEwsbUJBQUEsR0FBQXVCLElBQUEsVUFBQW9SLFNBQUFDLFFBQUE7UUFBQSxrQkFBQUEsUUFBQSxDQUFBL00sSUFBQSxHQUFBK00sUUFBQSxDQUFBMU8sSUFBQTtVQUFBO1lBQUEsS0FDTWtKLGVBQWU7Y0FBQXdGLFFBQUEsQ0FBQTFPLElBQUE7Y0FBQTtZQUFBO1lBQ2JzTyxZQUE2QixHQUFHLElBQUk7WUFBQUksUUFBQSxDQUFBMU8sSUFBQTtZQUFBLE9BQ2xDNkosZUFBZSxDQUFDLENBQUM7VUFBQTtZQUV2QixJQUFJLENBQUNPLFdBQVcsRUFBRTtjQUFFO2NBQ2xCZSxPQUFPLENBQUNDLEdBQUcsNkNBQTZDLENBQUM7Y0FDckRtRCxpQkFBaUIsR0FBRyxJQUFJO2NBQ3hCOUIsb0JBQW9CLEdBQUdqRixtQkFBbUI7Y0FFOUMsSUFBSVIsb0JBQW9CLEVBQUU7Z0JBQ3hCdUgsaUJBQWlCLEdBQUdySSx5QkFBeUIsQ0FBQzhCLHNCQUFzQixDQUFDaEIsb0JBQW9CLENBQUM7Z0JBQzFGeUYsb0JBQW9CLEdBQUd3QixpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQztjQUNwRTtjQUVNbEgsZUFBZSxHQUFHUSxtQkFBbUIsQ0FBQ2tGLG9CQUFvQixFQUFFaEYsbUJBQW1CLEVBQUVDLGdCQUFnQixFQUFFQyxZQUFZLENBQUM7Y0FBQTZHLHFCQUFBLEdBS2xIeEksZ0JBQWdCLENBQUMySSwwQkFBMEIsQ0FBQzVILGVBQWUsRUFBRXdILGlCQUFpQixDQUFDLEVBRnBFbEgsUUFBUSxHQUFBbUgscUJBQUEsQ0FBckJJLFdBQVcsRUFDTXhILFVBQVUsR0FBQW9ILHFCQUFBLENBQTNCSyxlQUFlO2NBRWpCUCxZQUFZLEdBQUc7Z0JBQUVqSCxRQUFRLEVBQVJBLFFBQVE7Z0JBQUVELFVBQVUsRUFBVkE7Y0FBVyxDQUFDO2NBRXZDLElBQUksRUFBQ0EsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRXZHLE1BQU0sR0FBRTtnQkFDdkJ5TixZQUFZLENBQUNRLFlBQVksR0FBRyxzREFBc0Q7Y0FDcEYsQ0FBQyxNQUFNLElBQUksRUFBQ3pILFFBQVEsYUFBUkEsUUFBUSxlQUFSQSxRQUFRLENBQUV4RyxNQUFNLEdBQUU7Z0JBQzVCeU4sWUFBWSxDQUFDUSxZQUFZLEdBQUcsc0VBQXNFO2NBQ3BHO1lBQ0YsQ0FBQyxNQUFNO2NBQUU7Y0FDUDNELE9BQU8sQ0FBQ0MsR0FBRyxpREFBaUQsQ0FBQztjQUM3RGtELFlBQVksR0FBR2xFLFdBQVc7WUFDNUI7WUFDQVcsUUFBUSxDQUFDO2NBQUVYLFdBQVcsRUFBRWtFO1lBQWEsQ0FBQyxDQUFDO1lBQ3ZDbkQsT0FBTyxDQUFDQyxHQUFHLENBQUNrRCxZQUFZLENBQUM7VUFBQTtVQUFBO1lBQUEsT0FBQUksUUFBQSxDQUFBNU0sSUFBQTtRQUFBO01BQUEsR0FBQXVNLE9BQUE7SUFBQSxDQUU1QjtJQUFBLE9BQUFELHFCQUFBLENBQUFsTCxLQUFBLE9BQUFELFNBQUE7RUFBQTtFQU1ELFNBQVNnSyw0QkFBNEJBLENBQUEsRUFBMEU7SUFBQSxJQUF6RThCLGNBQXNDLEdBQUE5TCxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFHLFNBQUEsR0FBQUgsU0FBQSxNQUFHcUgsYUFBYTtJQUMxRixJQUFNMUMsb0JBQW9CLEdBQUc0RSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3JELElBQU16RSxlQUFlLEdBQUdKLFlBQVksSUFBSXpCLHlCQUF5QixDQUFDOEIsc0JBQXNCLENBQUNKLG9CQUFvQixDQUFDO0lBQzlHLElBQU1vSCxTQUFTLEdBQUdoSixnQkFBZ0IsQ0FBQ2lKLHdCQUF3QixDQUFDRixjQUFjLENBQUNILFdBQVcsRUFBRUcsY0FBYyxDQUFDRixlQUFlLEVBQUU5RyxlQUFlLENBQUM7SUFDeEksSUFBTW1ILG1CQUFtQixHQUFHL0ksV0FBVyxDQUFDZ0osZUFBZSxDQUFDSCxTQUFTLENBQUM7SUFDbEUsT0FBT0UsbUJBQW1CO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ0UsU0FBU0UsYUFBYUEsQ0FBQSxFQUF5RDtJQUFBLElBQXhETCxjQUFzQyxHQUFBOUwsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBRyxTQUFBLEdBQUFILFNBQUEsTUFBR3FILGFBQWE7SUFDM0VhLE9BQU8sQ0FBQ0MsR0FBRyxvQ0FBb0MyRCxjQUFjLENBQUM7SUFFOUQsSUFBSUEsY0FBYyxFQUFFO01BQ2xCLElBQU1HLG1CQUFtQixHQUFHakMsNEJBQTRCLENBQUM4QixjQUFjLENBQUM7TUFDeEU1RCxPQUFPLENBQUNDLEdBQUcsMENBQTBDOEQsbUJBQW1CLENBQUM7TUFDekUsSUFBTWxFLFFBQVEsR0FBRztRQUNmWixXQUFXLEVBQUUsSUFBSTtRQUNqQkMsT0FBTyxFQUFFLEtBQUs7UUFDZEMsYUFBYSxFQUFFLElBQUk7UUFDbkI5QyxtQkFBbUIsRUFBRTBIO01BQ3ZCLENBQUM7TUFDRG5FLFFBQVEsQ0FBQ0MsUUFBUSxDQUFDO01BQ2xCcUUsaUJBQWlCLENBQUMsSUFBSSxFQUFFckUsUUFBUyxDQUFDO0lBQ3BDLENBQUMsTUFBTTtNQUNMRyxPQUFPLENBQUNDLEdBQUcseUNBQXlDLENBQUM7TUFDckRMLFFBQVEsQ0FBQztRQUNQWCxXQUFXLEVBQUUsSUFBSTtRQUNqQkMsT0FBTyxFQUFFO01BQ1gsQ0FBQyxDQUFDO0lBQ0o7RUFDRjs7RUFFQTtBQUNGO0FBQ0E7RUFDRSxTQUFTaUYsZUFBZUEsQ0FBQSxFQUFHO0lBQ3pCbkUsT0FBTyxDQUFDQyxHQUFHLG9CQUFvQixDQUFDO0lBQ2hDLElBQU1yRSxlQUFlLEdBQUdRLG1CQUFtQixDQUFDQyxtQkFBbUIsRUFBRUMsbUJBQW1CLEVBQUVDLGdCQUFnQixFQUFFQyxZQUFZLENBQUM7SUFDckgsSUFBTXdDLE9BQU8sR0FBR3JELGFBQWEsQ0FBQ0MsZUFBZSxFQUFFQyxvQkFBb0IsQ0FBQztJQUNwRStELFFBQVEsQ0FBQztNQUFFWCxXQUFXLEVBQUUsSUFBSTtNQUFFRCxPQUFPLEVBQVBBO0lBQVEsQ0FBQyxDQUFDO0VBQzFDOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRTtFQUFBLFNBQ2VvRixVQUFVQSxDQUFBQyxFQUFBO0lBQUEsT0FBQUMsV0FBQSxDQUFBdk0sS0FBQSxPQUFBRCxTQUFBO0VBQUE7RUE0QnpCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxFLFNBQUF3TSxZQUFBO0lBQUFBLFdBQUEsR0FBQTVNLGlCQUFBLGVBQUEvRyxtQkFBQSxHQUFBb0YsSUFBQSxDQTVCQSxTQUFBd08sU0FBMEJDLFFBQWlCO01BQUEsSUFBQUMsYUFBQTtRQUFBbkQsb0JBQUE7UUFBQW9ELGlCQUFBO1FBQUE3RSxRQUFBO1FBQUE4RSxzQkFBQTtRQUFBM0Msa0JBQUE7UUFBQTRDLGtCQUFBO1FBQUFDLE1BQUEsR0FBQS9NLFNBQUE7TUFBQSxPQUFBbkgsbUJBQUEsR0FBQXVCLElBQUEsVUFBQTRTLFVBQUFDLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBdk8sSUFBQSxHQUFBdU8sU0FBQSxDQUFBbFEsSUFBQTtVQUFBO1lBQUU0UCxhQUFxQixHQUFBSSxNQUFBLENBQUFuUCxNQUFBLFFBQUFtUCxNQUFBLFFBQUE1TSxTQUFBLEdBQUE0TSxNQUFBLE1BQUdySSxZQUFZO1lBQy9FLElBQUlzQixVQUFVLEVBQUU7Y0FDZCxJQUFJMEcsUUFBUSxLQUFLdEYsT0FBTyxFQUFFO2dCQUN4QnVGLGFBQWEsR0FBR0EsYUFBYSxJQUFJeEgsZ0JBQWdCO2dCQUM3Q3FFLG9CQUFvQixHQUFHLElBQUk7Z0JBQ3pCL0UsaUJBQWdCLEdBQUdrSSxhQUFhLEtBQUt4SCxnQkFBZ0I7Z0JBQ3JENEMsUUFBUSxHQUFHO2tCQUNmWCxPQUFPLEVBQUVzRixRQUFRO2tCQUNqQmhJLFlBQVksRUFBRWlJLGFBQWE7a0JBQzNCbEksZ0JBQWdCLEVBQWhCQTtnQkFDRixDQUFDO2dCQUVELElBQUksQ0FBQ2lJLFFBQVEsSUFBSWpJLGlCQUFnQixFQUFFO2tCQUFFO2tCQUNuQztrQkFDQStFLG9CQUFvQixHQUFHd0IsaUJBQWlCLENBQUMsY0FBYyxFQUFFekcsbUJBQW1CLElBQUkySSxtQkFBbUIsQ0FBQztrQkFDcEc7a0JBQUFMLHNCQUFBLEdBQytCOUosZ0JBQWdCLENBQUM4Qiw2QkFBNkIsQ0FBQzJFLG9CQUFvQixFQUFFbUQsYUFBYSxDQUFDLEVBQTFHekMsa0JBQWtCLEdBQUEyQyxzQkFBQSxDQUFsQjNDLGtCQUFrQjtrQkFDMUJWLG9CQUFvQixHQUFHVSxrQkFBa0IsRUFBQztrQkFDMUNuQyxRQUFRLENBQUMscUJBQXFCLENBQUMsR0FBR3lCLG9CQUFvQjtnQkFDeEQ7Z0JBRUExQixRQUFRLENBQUNDLFFBQVEsQ0FBQztnQkFDWitFLGtCQUFrQixHQUFJdEQsb0JBQW9CLElBQUksQ0FBQ3JHLE9BQU8sQ0FBQ3FCLG1CQUFtQixFQUFFZ0Ysb0JBQW9CLENBQUM7Z0JBQ3ZHNEMsaUJBQWlCLENBQUMzSCxpQkFBZ0IsSUFBSXFJLGtCQUFrQixFQUFFL0UsUUFBUyxDQUFDO2NBQ3RFO1lBQ0Y7VUFBQztVQUFBO1lBQUEsT0FBQWtGLFNBQUEsQ0FBQXBPLElBQUE7UUFBQTtNQUFBLEdBQUE0TixRQUFBO0lBQUEsQ0FDRjtJQUFBLE9BQUFELFdBQUEsQ0FBQXZNLEtBQUEsT0FBQUQsU0FBQTtFQUFBO0VBUUQsU0FBU21OLGVBQWVBLENBQUMvSCxPQUFnQixFQUFFVixZQUFvQixFQUFFMEksaUJBQXlCLEVBQUU7SUFDMUYsSUFBTUMsbUJBQW1CLEdBQUdILG1CQUFtQixJQUFJMUksbUJBQW1CO0lBQ3RFLElBQUE4SSxzQkFBQSxHQUE0QnZLLGdCQUFnQixDQUFDOEIsNkJBQTZCLENBQUN3SSxtQkFBbUIsRUFBRTNJLFlBQVksQ0FBQztNQUFyR0ksZUFBZSxHQUFBd0ksc0JBQUEsQ0FBZnhJLGVBQWU7SUFDdkIsSUFBTW9DLE9BQU8sR0FBR3JELGFBQWEsQ0FBQ2lCLGVBQWUsRUFBRWYsb0JBQW9CLENBQUM7SUFDcEUsSUFBTVUsZ0JBQWdCLEdBQUdDLFlBQVksS0FBS1MsZ0JBQWdCO0lBRTFEMkMsUUFBUSxDQUFDO01BQ1ByRCxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtNQUNoQkMsWUFBWSxFQUFaQSxZQUFZO01BQ1p3QyxPQUFPLEVBQVBBO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxJQUFNZ0csbUJBQW1CLEdBQUdwSyxLQUFLLENBQUMrRixPQUFPLENBQUUsWUFBTTtJQUFFO0lBQ2pELElBQUlyRSxtQkFBbUIsRUFBRTtNQUN2QixJQUFNVixlQUFlLEdBQUdRLG1CQUFtQixDQUFDQyxtQkFBbUIsRUFBRUMsbUJBQW1CLEVBQUVDLGdCQUFnQixFQUFFQyxZQUFZLENBQUM7TUFDckgsSUFBTUMsb0JBQW9CLEdBQUd6QixXQUFXLENBQUNnSixlQUFlLENBQUNwSSxlQUFlLENBQUM7TUFDekUsT0FBT2Esb0JBQW9CO0lBQzdCO0lBQ0EsT0FBT0gsbUJBQW1CO0VBQzVCLENBQUMsRUFBRSxDQUFDRCxtQkFBbUIsRUFBRUMsbUJBQW1CLEVBQUVDLGdCQUFnQixFQUFFQyxZQUFZLENBQUMsQ0FBQztFQUU5RSxJQUFNNkksY0FBc0IsR0FBR3pLLEtBQUssQ0FBQytGLE9BQU8sQ0FBRSxZQUFNO0lBQUU7SUFDcEQsSUFBTXpELE9BQU8sR0FBR1gsZ0JBQWdCLElBQUtGLG1CQUFtQixJQUFJLENBQUNwQixPQUFPLENBQUNxQixtQkFBbUIsRUFBRUQsbUJBQW1CLENBQUU7SUFDL0csT0FBT2EsT0FBTztFQUNoQixDQUFDLEVBQUUsQ0FBQ2IsbUJBQW1CLEVBQUVDLG1CQUFtQixFQUFFQyxnQkFBZ0IsQ0FBQyxDQUFDOztFQUVoRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBUzJILGlCQUFpQkEsQ0FBQ29CLGVBQXdCLEVBQXVCO0lBQUEsSUFBckJ6RixRQUFZLEdBQUEvSCxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFHLFNBQUEsR0FBQUgsU0FBQSxNQUFHLENBQUUsQ0FBQztJQUNyRSxJQUFNOEosU0FBUyxHQUFBMUksYUFBQSxDQUFBQSxhQUFBLEtBQ1ZtRyxLQUFLLEdBQ0xRLFFBQVEsQ0FDWjs7SUFFRDtJQUNBckIsZUFBZSxJQUFJQSxlQUFlLENBQUNYLFlBQVksRUFBRSxDQUFDeUgsZUFBZSxFQUFFO01BQ2pFM0QsVUFBVSxFQUFWQSxVQUFVO01BQ1Y1QixZQUFZLEVBQVpBLFlBQVk7TUFDWlYsS0FBSyxFQUFFdUM7SUFDVCxDQUFDLENBQUM7RUFDSjtFQUVBaEgsS0FBSyxDQUFDMkcsU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QixJQUFNK0QsZUFBZSxHQUFHRCxjQUFjLElBQUksQ0FBQyxDQUFDcEcsV0FBVztJQUN2RGlGLGlCQUFpQixDQUFDb0IsZUFBZSxDQUFDO0VBQ3BDLENBQUMsRUFBRSxDQUFDRCxjQUFjLEVBQUVwRyxXQUFXLENBQUMsQ0FBQzs7RUFFakM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFLFNBQVNzRyxrQkFBa0JBLENBQUM3RCxPQUErQixFQUFVO0lBQ25FMUIsT0FBTyxDQUFDQyxHQUFHLHNEQUFzRHlCLE9BQU8sQ0FBQyxFQUFDO0lBQzFFLElBQVErQixXQUFXLEdBQXNCL0IsT0FBTyxDQUF4QytCLFdBQVc7TUFBRUMsZUFBZSxHQUFLaEMsT0FBTyxDQUEzQmdDLGVBQWU7SUFDcEMsSUFBTThCLGlCQUFpQixHQUFHM0ssZ0JBQWdCLENBQUNzQixvQkFBb0IsQ0FBQ3NILFdBQVcsRUFBRUMsZUFBZSxDQUFDO0lBQzdGMUQsT0FBTyxDQUFDQyxHQUFHLG1CQUFBQyxNQUFBLENBQW1Cc0YsaUJBQWlCLEdBQUcsV0FBVyxHQUFHLFlBQVksQ0FBRSxDQUFDO0lBQy9FNUYsUUFBUSxDQUFDO01BQUVULGFBQWEsRUFBRXVDLE9BQU87TUFBRTFDLE9BQU8sRUFBRXdHO0lBQWtCLENBQUMsQ0FBQztJQUNoRSxPQUFPQSxpQkFBaUI7RUFDMUI7RUFFQSxPQUFPO0lBQ0xDLE9BQU8sRUFBRTtNQUNQdEIsZUFBZSxFQUFmQSxlQUFlO01BQ2ZwRSxZQUFZLEVBQVpBLFlBQVk7TUFDWjRCLFVBQVUsRUFBVkEsVUFBVTtNQUNWcUIsb0JBQW9CLEVBQXBCQSxvQkFBb0I7TUFDcEJ1QyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtNQUNsQnRCLGFBQWEsRUFBYkEsYUFBYTtNQUNiRyxVQUFVLEVBQVZBLFVBQVU7TUFDVmEsZUFBZSxFQUFmQTtJQUNGLENBQUM7SUFDRDVGLEtBQUssRUFBRTtNQUNMTCxPQUFPLEVBQVBBLE9BQU87TUFDUEMsV0FBVyxFQUFYQSxXQUFXO01BQ1grRixtQkFBbUIsRUFBbkJBLG1CQUFtQjtNQUNuQjlGLE9BQU8sRUFBUEEsT0FBTztNQUNQcEIsVUFBVSxFQUFWQSxVQUFVO01BQ1ZDLGVBQWUsRUFBZkEsZUFBZTtNQUNmZCxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtNQUNoQlgsbUJBQW1CLEVBQW5CQSxtQkFBbUI7TUFDbkJFLFlBQVksRUFBWkEsWUFBWTtNQUNaNkIsU0FBUyxFQUFFc0IsY0FBYztNQUN6QmxCLGNBQWMsRUFBZEEsY0FBYztNQUNkRSxjQUFjLEVBQWRBLGNBQWM7TUFDZEMsS0FBSyxFQUFMQSxLQUFLO01BQ0x5RyxjQUFjLEVBQWRBLGNBQWM7TUFDZDlJLGdCQUFnQixFQUFoQkE7SUFDRjtFQUNGLENBQUM7QUFDSCJ9
640
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIm1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiU2VydmVyQ29uZmlnVHlwZSIsIlZlcnNlT2JqZWN0c1R5cGUiLCJnZXRBbGlnbm1lbnRzIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9vcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9BbGlnbm1lbnRIZWxwZXJzJGV4dCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJhbGxTcGFjZXMiLCJ0ZXh0IiwiaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5IiwiaW5pdGlhbFZlcnNlVGV4dCIsImNoYW5nZWQiLCJsZW5ndGhEaWZmZXJlbmNlIiwiZmlyc3RQYXJ0T2ZJbml0aWFsIiwic3Vic3RyaW5nIiwibGFzdENoYXJzIiwicG9zIiwibGFzdEluZGV4T2YiLCJsYXN0VXNmbVRhZyIsImVuZHNXaXRoUXVvdGUiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiX3JlZiIsImN1cnJlbnRJbmRleCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJodHRwQ29uZmlnIiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwiX1JlYWN0JHVzZVN0YXRlMiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX3N0YXRlIiwiY2hhcHRlciIsInZlcnNlIiwiYm9va0lkIiwiYmFzaWNSZWZlcmVuY2UiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2xlYXJDaGFuZ2VzIiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfdmVyc2VSZWZlcmVuY2UkdmVyc2UiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJnZXRDdXJyZW50VmVyc2VPYmplY3RzIiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJfbmV3U3RhdGUiLCJ1cGRhdGVkVmVyc2VPYmplY3RzXyIsInVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQyIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyR2ZXJzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaXNNaWdyYXRlZCIsInByZWZpeCIsIl9pbml0aWFsVmVyc2VPYmplY3RzIiwidXBkYXRlZEFsaWdubWVudHMiLCJpbml0aWFsQWxpZ25tZW50cyIsInNhbWUiLCJmaXJzdERpZmYiLCJ1cGRhdGVkQWxpZ25tZW50IiwiaW5pdGlhbEFsaWdubWVudCIsImRpZmZlcmVudCIsIm1pZ3JhdGVBbGlnbm1lbnRzIiwibWlncmF0ZVRhcmdldEFsaWdubWVudHNUb09yaWdpbmFsIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfY2FsbGVlIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJfQWxpZ25tZW50SGVscGVycyRwYXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEiLCJ0YXJnZXRXb3JkcyIsInZlcnNlQWxpZ25tZW50cyIsImVycm9yTWVzc2FnZSIsIl9uZXdBbGlnbm1lbnRzIiwidmVyc2VVc2ZtIiwiYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNIiwiYWxpZ25lZFZlcnNlT2JqZWN0cyIsInVzZm1WZXJzZVRvSnNvbiIsInNhdmVBbGlnbm1lbnQiLCJjYWxsU2V0U2F2ZWRTdGF0ZSIsImNhbmNlbEFsaWdubWVudCIsInNldEVkaXRpbmciLCJfeCIsIl9zZXRFZGl0aW5nIiwiX2NhbGxlZTIiLCJlZGl0aW5nXyIsIl9uZXdWZXJzZVRleHQiLCJfdmVyc2VUZXh0Q2hhbmdlZCIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZDQiLCJfYWxpZ25tZW50c0NoYW5nZWQiLCJfYXJnczIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwic2V0VmVyc2VDaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJfdGFyZ2V0VmVyc2VPYmplY3RzIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkMyIsInVuc2F2ZWRDaGFuZ2VzIiwidW5zYXZlZENoYW5nZXNfIiwib25BbGlnbm1lbnRzQ2hhbmdlIiwiYWxpZ25tZW50Q29tcGxldGUiLCJhY3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgbWlncmF0ZU9yaWdpbmFsTGFuZ3VhZ2VIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB1c2ZtSGVscGVycyxcbn0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7XG4gIEJvb2tPYmplY3RzVHlwZSxcbiAgU2NyaXB0dXJlQ29uZmlnLFxuICBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLFxuICBTZXJ2ZXJDb25maWdUeXBlLFxuICBWZXJzZU9iamVjdHNUeXBlLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGdldEFsaWdubWVudHMsIGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG50eXBlIExhbmd1YWdlVHlwZSA9IHtcbiAgbGFuZ3VhZ2VJZDogc3RyaW5nLCAvLyBzaG9ydCBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgXCJlblwiXG4gIGRpcmVjdGlvbjogc3RyaW5nLCAvLyBsYW5ndWFnZSBkaXJlY3Rpb24gXCJsdHJcIiBvciBcInJ0bFwiXG59O1xuXG5pbnRlcmZhY2UgQWxpZ25lckRhdGFUeXBlIHtcbiAgICB3b3JkQmFuaz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmRiYW5rIHdvcmQgKHRhcmdldCBsYW5ndWFnZSB3b3JkcykgaW4gZm9ybWF0IG5lZWRlZCBieSB3b3JkLWFsaWduZXItcmNsXG4gICAgYWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIC8vIGlmIHByZXNlbnQgdGhlbiB3ZSBkb24ndCBoYXZlIG5lY2Vzc2FyeSBkYXRhIHRvIGRvIGFsaWdubWVudFxufVxuXG5pbnRlcmZhY2UgQWxpZ25lclJlc3VsdHNEYXRhVHlwZSB7XG4gICAgdGFyZ2V0V29yZHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB0YXJnZXQgbGFuZ3VhZ2Ugd29yZHMgaW4gZm9ybWF0IHVzZWQgaW4gd29yZC1hbGlnbmVyLXJjbFxuICAgIHZlcnNlQWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgdXNlZCBieSB3b3JkLWFsaWduZXItcmNsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIHtcbiAgLy8gaW5kZXggdG8gdXNlIGZvciBib29rIChlLmcuIGAwMWAgZm9yIGBHRU5gKVxuICBib29rSW5kZXg6IHN0cmluZyxcbiAgLy8gY3VycmVudCB2ZXJzZSBzZWxlY3RlZCBmcm9tIGluaXRpYWxWZXJzZU9iamVjdHNbXVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gcmVmZXJlbmNlIGZvciB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50XG4gIGN1cnJlbnRWZXJzZVJlZjogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSxcbiAgLy8gaWYgdHJ1ZSB0aGVuIGVkaXRpbmcgaXMgYWxsb3dlZFxuICBlbmFibGVFZGl0OiBib29sZWFuLFxuICAvLyBpZiB0cnVlIHRoZW4gYWxpZ25tZW50IGlzIGFsbG93ZWRcbiAgZW5hYmxlQWxpZ25tZW50OiBib29sZWFuLFxuICAvLyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaHR0cCBjb21tdW5pY2F0aW9uXG4gIGh0dHBDb25maWc6IFNlcnZlckNvbmZpZ1R5cGUsXG4gIC8vIGFycmF5IG9mIHRoZSBpbml0aWFsIHZlcnNlT2JqZWN0cyBmb3IgY3VycmVudCByZWZlcmVuY2VcbiAgaW5pdGlhbFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSxcbiAgLy8gaW5pdGlhbCB0ZXh0IGZvciB2ZXJzZVxuICBpbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcsXG4gIC8vIGZsYWcgdGhhdCB3ZSBhcmUgd29ya2luZyBvbiBOVCBib29rXG4gIGlzTmV3VGVzdGFtZW50OiBib29sZWFuLFxuICAvLyB1c2VyIG5hbWUgb2YgbG9nZ2VkIGluIHVzZXJcbiAgbG9nZ2VkSW5Vc2VyOiBzdHJpbmcsXG4gIC8vIG93bmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlc1xuICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IHN0cmluZyxcbiAgLy8gdXJsIGZvciB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVwb1xuICBvcmlnaW5hbFJlcG9Vcmw6IHN0cmluZyxcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogQm9va09iamVjdHNUeXBlLFxuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZTtcbiAgLy8gZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBzY3JpcHR1cmUgbG9hZGVkXG4gIHNjcmlwdHVyZUNvbmZpZzogU2NyaXB0dXJlQ29uZmlnLFxuICAvLyBzZXR0aW5ncyB0byBiZSB1c2VkIGZvciBzY3JpcHR1cmVcbiAgc2NyaXB0dXJlU2V0dGluZ3M6IHsgfSxcbiAgLy8gY2FsbGJhY2sgdG8gc2F2ZSBjdXJyZW50IHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBjaGFuZ2VzXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb24sXG4gIC8vIHNvdXJjZSBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgYGhib2BcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZVR5cGUsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gb3JpZ2luYWxWZXJzZU9iamVjdHNcbiAqL1xuZnVuY3Rpb24gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk06c3RyaW5nLCBvcmlnaW5hbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlKTpib29sZWFuIHtcbiAgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gb3JpZ2luYWxWZXJzZU9iamVjdHMgOiBudWxsIC8vIG1ha2Ugc3VyZSBub3QgcGFzc2luZyBlbXB0eSBBcnJheVxuICBjb25zdCB7IGFsaWdubWVudHMsIHdvcmRCYW5rIH0gPSBBbGlnbm1lbnRIZWxwZXJzLmV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxufVxuXG4vKipcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IGluaXRpYWxWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyc2VUZXh0Q2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICovXG5mdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgaW5pdGlhbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQ6c3RyaW5nKTpzdHJpbmcge1xuICBsZXQgdGFyZ2V0VmVyc2VVU0ZNID0gbnVsbFxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gdGFyZ2V0VmVyc2VUZXh0XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICB9XG4gIHJldHVybiB0YXJnZXRWZXJzZVVTRk1cbn1cblxuLyoqXG4gKiByZXR1cm4gdHJ1ZSBpZiBvbmx5IHNwYWNlcyBpbiBjb250ZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICovXG5mdW5jdGlvbiBhbGxTcGFjZXModGV4dDpzdHJpbmcpOmJvb2xlYW4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGV4dFtpXSAhPT0gJyAnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIHRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbml0aWFsVmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseShuZXdWZXJzZVRleHQ6c3RyaW5nLCBpbml0aWFsVmVyc2VUZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGxldCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgaWYgKGNoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7IC8vIG1ha2Ugc3VyZSBpdCdzIHNpZ25pZmljYW50XG4gICAgY29uc3QgbGVuZ3RoRGlmZmVyZW5jZSA9IG5ld1ZlcnNlVGV4dC5sZW5ndGggLSBpbml0aWFsVmVyc2VUZXh0Py5sZW5ndGhcbiAgICBjb25zdCBmaXJzdFBhcnRPZkluaXRpYWwgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKDAsIGluaXRpYWxWZXJzZVRleHQubGVuZ3RoKVxuXG4gICAgaWYgKChsZW5ndGhEaWZmZXJlbmNlID4gMCkgJiYgKGluaXRpYWxWZXJzZVRleHQgPT09IGZpcnN0UGFydE9mSW5pdGlhbCkpIHsgLy8gaWYgaW5pdGlhbCBwYXJ0cyBtYXRjaFxuICAgICAgLy8gYWRkIGV4ZW1wdGlvbiBpZiB0aGUgdXNmbSBlbmRzIHdpdGggYSBxdW90ZSB0YWdcbiAgICAgIGNvbnN0IGxhc3RDaGFycyA9IG5ld1ZlcnNlVGV4dC5zdWJzdHJpbmcobmV3VmVyc2VUZXh0Lmxlbmd0aCAtIGxlbmd0aERpZmZlcmVuY2UpXG4gICAgICBjb25zdCBwb3MgPSBuZXdWZXJzZVRleHQubGFzdEluZGV4T2YoJ1xcXFwnKVxuICAgICAgY29uc3QgbGFzdFVzZm1UYWcgPSBuZXdWZXJzZVRleHRbcG9zICsgMV1cbiAgICAgIGNvbnN0IGVuZHNXaXRoUXVvdGUgPSAocG9zID4gMCkgJiYgKGxhc3RVc2ZtVGFnID09PSAncScpXG5cbiAgICAgIGlmIChlbmRzV2l0aFF1b3RlICYmIGFsbFNwYWNlcyhsYXN0Q2hhcnMpKSB7XG4gICAgICAgIGNoYW5nZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hhbmdlZFxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIHR5cGUgU3RhdGVUeXBlcyA9IHtcbiAgICBhbGlnbmVkOiBib29sZWFuLFxuICAgIGFsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUsXG4gICAgZWRpdGluZzogYm9vbGVhbixcbiAgICBuZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlLFxuICAgIG5ld1ZlcnNlVGV4dDogc3RyaW5nLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbixcbiAgfVxuXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IF9zdGF0ZTogU3RhdGVUeXBlcyA9IHN0YXRlIC8vIFRyaWNreTogd29yay1hcm91bmQgZm9yIGJ1ZyB0aGF0IHN0YW5kYXJkIHR5cGVzY3JpcHQgdHlwZSBjYXN0aW5nIGRvZXMgbm90IHdvcmsgaW4gLnRzeCBmaWxlc1xuICBjb25zdCB7XG4gICAgYWxpZ25lZCxcbiAgICBhbGlnbmVyRGF0YSxcbiAgICBlZGl0aW5nLFxuICAgIG5ld0FsaWdubWVudHMsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgfSA9IF9zdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LmJvb2tJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgYm9va0lkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzID0gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgICBib29rSWQsIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCwgb3JpZ2luYWxSZXBvVXJsLFxuICApXG5cbiAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHsgLy8gaWYgbm90IGVuYWJsZWQsIHRoZW4gd2UgZG9uJ3QgZmV0Y2ggcmVzb3VyY2VcbiAgICBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsVmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7IC8vIGdldCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2VPYmplY3RzXG4gICAgY29uc3QgdmVyc2VPYmplY3RzID0gW11cblxuICAgIGlmIChvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXNGb3JSZWYoYmFzaWNSZWZlcmVuY2UsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/Lmxhbmd1YWdlSWQpXG5cbiAgICAgIGlmICh2ZXJzZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmZXJlbmNlIG9mIHZlcnNlcykge1xuICAgICAgICAgIGNvbnN0IG9yaWdWZXJzZU9iamVjdHMgPSB2ZXJzZVJlZmVyZW5jZT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcblxuICAgICAgICAgIGlmIChvcmlnVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh2ZXJzZU9iamVjdHMsIG9yaWdWZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNcbiAgfSwgW29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIGNoYXB0ZXIsIHZlcnNlLCBib29rSWRdKVxuXG4gIC8qKlxuICAgKiBnZXQgY3VycmVudCB2ZXJzZU9iamVjdHNcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBfdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG9wdGlvbmFsIG92ZXJyaWRlcyB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VPYmplY3RzKF91cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlID0gdXBkYXRlZFZlcnNlT2JqZWN0cykge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gX3VwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIHJldHVybiBjdXJyZW50VmVyc2VPYmplY3RzX1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxuICAgIGNvbnN0IG5vdEVtcHR5ID0gISFpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgbGV0IGFsaWduZWRfID0gZmFsc2VcblxuICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gc2tpcCBpZiBhbGlnbmVyIGlzIGJlaW5nIHNob3duXG4gICAgICBpZiAobm90RW1wdHkpIHsgLy8gc2tpcCBpZiBlbXB0eVxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxuXG4gICAgICAgIGlmICghZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmVyc2VUZXh0ICYmIChuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduZWQgIT09IGFsaWduZWRfKSB7XG4gICAgICAgIHNldFN0YXRlKHsgYWxpZ25lZDogYWxpZ25lZF8gfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbml0aWFsVmVyc2VPYmplY3RzLCBhbGlnbmVyRGF0YSwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0LCBlbmFibGVBbGlnbm1lbnQsIG9yaWdpbmFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZ2V0IGNoYW5nZXMgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcbiAgICovXG4gIGZ1bmN0aW9uIGdldENoYW5nZXMobmV3U3RhdGUgPSB7fSkge1xuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICBzdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3QWxpZ25tZW50cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0gPSBfbmV3U3RhdGVcbiAgICBsZXQgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVuc2F2ZWQgYWxpZ25tZW50c31gKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKClcbiAgICB9XG5cbiAgICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgbmV3IHRleHQ6YCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSBnZXRDdXJyZW50VmVyc2VPYmplY3RzKHVwZGF0ZWRWZXJzZU9iamVjdHNfKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gJiYgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1cGRhdGVkIGFsaWdubWVudHNgKVxuICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgfSBlbHNlIHsgLy8gb25seSBhbGlnbm1lbnQgY2hhbmdlcyB0byB1cGxvYWRcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYCwgeyBuZXdWZXJzZVRleHQsIHVwZGF0ZWRWZXJzZU9iamVjdHNfIH0pXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0c18pIHtcbiAgICAgIGNvbnN0IHJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5bY3VycmVudEluZGV4XVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICByZWYsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IHVwZGF0ZWRWZXJzZU9iamVjdHNfLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fVxuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhcmUgaW5pdGlhbCBhbGlnbm1lbnRzIHdpdGggZmluYWwgdG8gc2VlIGlmIGNoYW5nZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeFxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gX2luaXRpYWxWZXJzZU9iamVjdHNcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY2hhbmdlZFxuICAgKi9cbiAgZnVuY3Rpb24gaXNNaWdyYXRlZChwcmVmaXg6c3RyaW5nLCBfdXBkYXRlZFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlID0gdXBkYXRlZFZlcnNlT2JqZWN0cywgX2luaXRpYWxWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSA9IGluaXRpYWxWZXJzZU9iamVjdHMpOmJvb2xlYW4ge1xuICAgIGNvbnN0IHVwZGF0ZWRBbGlnbm1lbnRzID0gZ2V0QWxpZ25tZW50cyhfdXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICBjb25zdCBpbml0aWFsQWxpZ25tZW50cyA9IGdldEFsaWdubWVudHMoX2luaXRpYWxWZXJzZU9iamVjdHMpXG4gICAgbGV0IHNhbWUgPSB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGggPT09IGluaXRpYWxBbGlnbm1lbnRzLmxlbmd0aCAvLyBmaXJzdCBtYWtlIHN1cmUgbGVuZ3RocyBhcmUgdGhlIHNhbWVcbiAgICBsZXQgZmlyc3REaWZmXG5cbiAgICBpZiAoc2FtZSkgeyAvLyBldmVuIGlmIGxlbmd0aHMgYXJlIHRoZSBzYW1lIGRvdWJsZSBjaGVjayBlYWNoIGFsaWdubWVudFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB1cGRhdGVkQWxpZ25tZW50ID0gdXBkYXRlZEFsaWdubWVudHNbaV1cbiAgICAgICAgY29uc3QgaW5pdGlhbEFsaWdubWVudCA9IGluaXRpYWxBbGlnbm1lbnRzW2ldXG5cbiAgICAgICAgaWYgKCFpc0VxdWFsKHVwZGF0ZWRBbGlnbm1lbnQsIGluaXRpYWxBbGlnbm1lbnQpKSB7XG4gICAgICAgICAgZmlyc3REaWZmID0gaVxuICAgICAgICAgIHNhbWUgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaWZmZXJlbnQgPSAhc2FtZVxuXG4gICAgaWYgKGRpZmZlcmVudCkge1xuICAgICAgY29uc29sZS5sb2coYCR7cHJlZml4fSAtIHRhcmdldCB2ZXJzZSBhbGlnbm1lbnRzIG1pZ3JhdGVkIHRvIG1hdGNoIG9yaWdpbmFsIGxhbmd1YWdlLCBmaXJzdCBkaWZmZXJlbmNlIGlzIGF0ICR7Zmlyc3REaWZmfWAsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZlcmVudFxuICB9XG5cbiAgLyoqXG4gICAqIGRvIGFsaWdubWVudHMgbWlncmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBtaWdyYXRlQWxpZ25tZW50cyhwcmVmaXg6IHN0cmluZywgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSA9IG51bGwpOiBWZXJzZU9iamVjdHNUeXBlIHtcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBnZXRDdXJyZW50VmVyc2VPYmplY3RzKClcbiAgICBjb25zdCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycy5taWdyYXRlVGFyZ2V0QWxpZ25tZW50c1RvT3JpZ2luYWwodXBkYXRlZFZlcnNlT2JqZWN0cywgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgaXNNaWdyYXRlZChwcmVmaXgsIF91cGRhdGVkVmVyc2VPYmplY3RzLCB1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgIHJldHVybiBfdXBkYXRlZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBhbGlnbm1lbnQgYnV0dG9uIC0gd2lsbCBzaG93IGlmIG5vdCBhbHJlYWR5IHNob3duXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBbGlnbm1lbnRDbGljaygpIHtcbiAgICBpZiAoZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICBsZXQgX2FsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUgPSBudWxsXG4gICAgICBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIGlmIHdvcmQgYWxpZ25lciBub3Qgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gdG9nZ2xlIE9OIGFsaWdubWVudGApXG4gICAgICAgIGxldCBvcmlnaW5hbFZlcnNlVXNmbSA9IG51bGxcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmIChvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIG9yaWdpbmFsVmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gbWlncmF0ZUFsaWdubWVudHMoJ2hhbmRsZUFsaWdubWVudENsaWNrKCknKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbShfdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0YXJnZXRXb3Jkczogd29yZEJhbmssXG4gICAgICAgICAgdmVyc2VBbGlnbm1lbnRzOiBhbGlnbm1lbnRzLFxuICAgICAgICB9ID0gQWxpZ25tZW50SGVscGVycy5wYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VVc2ZtKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSB7IHdvcmRCYW5rLCBhbGlnbm1lbnRzIH1cblxuICAgICAgICBpZiAoIWFsaWdubWVudHM/Lmxlbmd0aCkge1xuICAgICAgICAgIF9hbGlnbmVyRGF0YS5lcnJvck1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIHdvcmRzIHRvIGFsaWduIGluIHRoZSBPcmlnaW5hbCBsYW5ndWFnZSdcbiAgICAgICAgfSBlbHNlIGlmICghd29yZEJhbms/Lmxlbmd0aCkge1xuICAgICAgICAgIF9hbGlnbmVyRGF0YS5lcnJvck1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIHdvcmRzIHRvIGFsaWduIGluIHRoZSBMaXRlcmFsL1NpbXBsaWZpZWQgU2NyaXB0dXJlIFRleHQnXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7IC8vIHdvcmQgYWxpZ25lciBjdXJyZW50bHkgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gYWxpZ25tZW50IGFscmVhZHkgc2hvd25gKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSBhbGlnbmVyRGF0YVxuICAgICAgfVxuICAgICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogX2FsaWduZXJEYXRhIH0pXG4gICAgICBjb25zb2xlLmxvZyhfYWxpZ25lckRhdGEpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYWZ0ZXIgYWxpZ25tZW50cyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7QWxpZ25lclJlc3VsdHNEYXRhVHlwZX0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHM6IEFsaWduZXJSZXN1bHRzRGF0YVR5cGUgPSBuZXdBbGlnbm1lbnRzKTpWZXJzZU9iamVjdHNUeXBlIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVGV4dCA9IG5ld1ZlcnNlVGV4dCB8fCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgY29uc3QgdmVyc2VVc2ZtID0gQWxpZ25tZW50SGVscGVycy5hZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0oX25ld0FsaWdubWVudHMudGFyZ2V0V29yZHMsIF9uZXdBbGlnbm1lbnRzLnZlcnNlQWxpZ25tZW50cywgdGFyZ2V0VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odmVyc2VVc2ZtKVxuICAgIHJldHVybiBhbGlnbmVkVmVyc2VPYmplY3RzXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBzYXZlIGN1cnJlbnQgYWxpZ25tZW50cyBpbiB3b3JkIGFsaWduZXIuICBHZW5lcmF0ZXMgbmV3IHZlcnNlIGNvbnRlbnQgYW5kIHNhdmVzIGluIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqIEBwYXJhbSB7QWxpZ25lclJlc3VsdHNEYXRhVHlwZX0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVBbGlnbm1lbnQoX25ld0FsaWdubWVudHM6IEFsaWduZXJSZXN1bHRzRGF0YVR5cGUgPSBuZXdBbGlnbm1lbnRzKSB7XG4gICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5ld0FsaWdubWVudHNgLCBfbmV3QWxpZ25tZW50cylcblxuICAgIGlmIChfbmV3QWxpZ25tZW50cykge1xuICAgICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMpXG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gYWxpZ25lZFZlcnNlT2JqZWN0c2AsIGFsaWduZWRWZXJzZU9iamVjdHMpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBhbGlnbmVkVmVyc2VPYmplY3RzLFxuICAgICAgfVxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh0cnVlLCBuZXdTdGF0ZSApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBubyBhbGlnbm1lbnQgY2hhbmdlc2ApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gY2FuY2VsIHdvcmsgaW4gd29yZCBhbGlnbmVyLiAgQ2FsY3VsYXRlcyBhbmQgZGlzcGxheXMgY3VycmVudCBhbGlnbm1lbnQgdmFsaWQgc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICovXG4gIGZ1bmN0aW9uIGNhbmNlbEFsaWdubWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyhgY2FuY2VsQWxpZ25tZW50KClgKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogbnVsbCwgYWxpZ25lZCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciBidXR0b24gdG8gc2V0IGVkaXRpbmcgc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nXyAtIGlmIHRydWUsIGVkaXRvciBpcyBzaG93biwgb3RoZXJ3aXNlIGVkaXRvciBpcyBoaWRkZW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9uZXdWZXJzZVRleHQgLSBvcHRpb25hbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuICBhc3luYyBmdW5jdGlvbiBzZXRFZGl0aW5nKGVkaXRpbmdfOiBib29sZWFuLCBfbmV3VmVyc2VUZXh0OiBzdHJpbmcgPSBuZXdWZXJzZVRleHQpIHtcbiAgICBpZiAoZW5hYmxlRWRpdCkge1xuICAgICAgaWYgKGVkaXRpbmdfICE9PSBlZGl0aW5nKSB7XG4gICAgICAgIF9uZXdWZXJzZVRleHQgPSBfbmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gbnVsbFxuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gX25ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nXyxcbiAgICAgICAgICBuZXdWZXJzZVRleHQ6IF9uZXdWZXJzZVRleHQsXG4gICAgICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZWRpdGluZ18gJiYgdmVyc2VUZXh0Q2hhbmdlZCkgeyAvLyBpZiBkb25lIGVkaXRpbmcgYW5kIHZlcnNlIGhhcyBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZlcnNlIG9iamVjdHNcbiAgICAgICAgICAvLyBkbyBtaWdyYXRpb24gb2YgYWxpZ25tZW50cyB0byBtYXRjaCBsYXRlc3Qgb3JpZ2luYWwgbGFuZ3VhZ2VcbiAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVBbGlnbm1lbnRzKCdzZXRFZGl0aW5nKCknLCB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGN1cnJlbnRWZXJzZU9iamVjdHMpXG4gICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50cyBmcm9tIHVwZGF0ZWQgdmVyc2VPYmplY3RzIHRvIGVkaXRlZCB2ZXJzZSB0ZXh0XG4gICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoX3VwZGF0ZWRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXG4gICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB0YXJnZXRWZXJzZU9iamVjdHMgLy8gdXBkYXRlIHZlcnNlT2JqZWN0cyB0byBtYXRjaCBjdXJyZW50IHRleHRcbiAgICAgICAgICBuZXdTdGF0ZVsndXBkYXRlZFZlcnNlT2JqZWN0cyddID0gX3VwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgICBjb25zdCBfYWxpZ25tZW50c0NoYW5nZWQgPSAoX3VwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpKVxuICAgICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh2ZXJzZVRleHRDaGFuZ2VkIHx8IF9hbGlnbm1lbnRzQ2hhbmdlZCwgbmV3U3RhdGUgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmcm9tIHRoZSBlZGl0IG9uQ2hhbmdlIGV2ZW50IHRvIHVwZGF0ZSBlZGl0IHN0YXRlIHZhcmlhYmxlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoYW5nZWQgLSB0cnVlIGlmIHRoZSBuZXdWZXJzZVRleHQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGluaXRpYWxWZXJzZVRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dCAtIGN1cnJlbnQgY2hhbmdlZCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfaW5pdGlhbFZlcnNlVGV4dCAtIGluaXRpYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dDogc3RyaW5nLCBfaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgX3RhcmdldFZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKF90YXJnZXRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc186IGJvb2xlYW4sIG5ld1N0YXRlOiB7fSA9IHsgfSApIHtcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcbiAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgIXVuc2F2ZWRDaGFuZ2VzXywge1xuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIHN0YXRlOiBfbmV3U3RhdGUsXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCAhIWFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IHJlc3VsdHNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGVcbiAgICovXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlKTpib29sZWFuIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgZW5hYmxlRWRpdCxcbiAgICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcbiAgICAgIHNvdXJjZUxhbmd1YWdlLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIs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
@@ -30,7 +30,7 @@ import { getScriptureResourceSettings } from '../utils/ScriptureSettings';
30
30
  /**
31
31
  * hook to get a scripture resource
32
32
  * @param {object} scriptureSettings - info about the scripture being referenced
33
- * @param {object} reference
33
+ * @param {ScriptureReferenceType} reference
34
34
  * @param {boolean} isNewTestament
35
35
  * @param {string} originalRepoUrl - optional path to repo for original language
36
36
  * @param {string} currentLanguageId - optional over-ride for transient case where language in scripture settings have not yet updated
@@ -57,7 +57,7 @@ export function useScriptureResources(_ref) {
57
57
  scriptureSettings = _ref.scriptureSettings,
58
58
  _ref$wholeBook = _ref.wholeBook,
59
59
  wholeBook = _ref$wholeBook === void 0 ? false : _ref$wholeBook;
60
- var bookId = reference === null || reference === void 0 ? void 0 : reference.projectId;
60
+ var bookId = reference === null || reference === void 0 ? void 0 : reference.bookId;
61
61
  if (appRef !== scriptureSettings.ref) {
62
62
  scriptureSettings = _objectSpread(_objectSpread({}, scriptureSettings), {}, {
63
63
  ref: appRef
@@ -96,4 +96,4 @@ export function useScriptureResources(_ref) {
96
96
  return scriptureResource;
97
97
  }
98
98
  export default useScriptureResources;
99
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTY3JpcHR1cmUiLCJnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzIiwidXNlU2NyaXB0dXJlUmVzb3VyY2VzIiwiX3JlZiIsIl9yZWYkYXBwUmVmIiwiYXBwUmVmIiwiX3JlZiRjdXJyZW50TGFuZ3VhZ2VJIiwiY3VycmVudExhbmd1YWdlSWQiLCJfcmVmJGN1cnJlbnRPd25lciIsImN1cnJlbnRPd25lciIsIl9yZWYkaHR0cENvbmZpZyIsImh0dHBDb25maWciLCJpc05ld1Rlc3RhbWVudCIsIm9yaWdpbmFsUmVwb1VybCIsIl9yZWYkcmVhZHlGb3JGZXRjaCIsInJlYWR5Rm9yRmV0Y2giLCJyZWZlcmVuY2UiLCJzY3JpcHR1cmVTZXR0aW5ncyIsIl9yZWYkd2hvbGVCb29rIiwid2hvbGVCb29rIiwiYm9va0lkIiwicHJvamVjdElkIiwicmVmIiwiX29iamVjdFNwcmVhZCIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJzY3JpcHR1cmVTZXR0aW5nc18iLCJzY3JpcHR1cmVDb25maWdfIiwicmVzb3VyY2UiLCJsYW5ndWFnZUlkIiwicmVzb3VyY2VJZCIsIm93bmVyIiwiYnJhbmNoIiwicmVzb3VyY2VMaW5rIiwiY29uZmlnIiwic2VydmVyIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwic2NyaXB0dXJlUmVzb3VyY2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlUmVzb3VyY2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVNjcmlwdHVyZSB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyB9IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuXG4vKipcbiAqIGhvb2sgdG8gZ2V0IGEgc2NyaXB0dXJlIHJlc291cmNlXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlU2V0dGluZ3MgLSBpbmZvIGFib3V0IHRoZSBzY3JpcHR1cmUgYmVpbmcgcmVmZXJlbmNlZFxuICogQHBhcmFtIHtvYmplY3R9IHJlZmVyZW5jZVxuICogQHBhcmFtIHtib29sZWFufSBpc05ld1Rlc3RhbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybCAtIG9wdGlvbmFsIHBhdGggdG8gcmVwbyBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7b2JqZWN0fSBodHRwQ29uZmlnIC0gb3B0aW9uYWwgY29uZmlnIHNldHRpbmdzIGZvciBmZXRjaGVzICh0aW1lb3V0LCBjYWNoZSwgZXRjLilcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBSZWYgLSBhcHAgZGVmYXVsdCwgcG9pbnRzIHRvIHNwZWNpZmljIHJlZiB0aGF0IGNvdWxkIGJlIGEgYnJhbmNoIG9yIHRhZ1xuICogQHBhcmFtIHtib29sZWFufSB3aG9sZUJvb2sgLSBpZiB0cnVlIHRoZW4gZmV0Y2ggdGhlIGVudGlyZSBib29rXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJlYWR5Rm9yRmV0Y2ggLSB0cnVlIGlmIHJlYWR5IGZvciBmZXRjaGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlUmVzb3VyY2VzKHtcbiAgYXBwUmVmID0gJ21hc3RlcicsXG4gIGN1cnJlbnRMYW5ndWFnZUlkID0gbnVsbCxcbiAgY3VycmVudE93bmVyID0gbnVsbCxcbiAgaHR0cENvbmZpZyA9IHt9LFxuICBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWFkeUZvckZldGNoID0gZmFsc2UsXG4gIHJlZmVyZW5jZSxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHdob2xlQm9vayA9IGZhbHNlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIGlmIChhcHBSZWYgIT09IHNjcmlwdHVyZVNldHRpbmdzLnJlZikge1xuICAgIHNjcmlwdHVyZVNldHRpbmdzID0geyAuLi5zY3JpcHR1cmVTZXR0aW5ncywgcmVmOiBhcHBSZWYgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlUmVzb3VyY2VzOiBhcHBSZWYgY2hhbmdlZCB0byBzY3JpcHR1cmVTZXR0aW5ncy5yZWY9JHtzY3JpcHR1cmVTZXR0aW5ncy5yZWZ9IGFuZCBhcHBSZWY9JHthcHBSZWZ9YClcbiAgfSwgW2FwcFJlZiwgc2NyaXB0dXJlU2V0dGluZ3MucmVmXSlcblxuICBjb25zdCBzY3JpcHR1cmVTZXR0aW5nc18gPSBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzKGJvb2tJZCwgc2NyaXB0dXJlU2V0dGluZ3MsIGlzTmV3VGVzdGFtZW50LFxuICAgIG9yaWdpbmFsUmVwb1VybCwgY3VycmVudExhbmd1YWdlSWQsIGN1cnJlbnRPd25lcikgLy8gY29udmVydCBhbnkgZGVmYXVsdCBzZXR0aW5ncyBzdHJpbmdzXG5cbiAgY29uc3Qgc2NyaXB0dXJlQ29uZmlnXyA9IHtcbiAgICByZWZlcmVuY2UsXG4gICAgcmVzb3VyY2U6IHtcbiAgICAgIGxhbmd1YWdlSWQ6IHNjcmlwdHVyZVNldHRpbmdzXy5sYW5ndWFnZUlkLFxuICAgICAgcHJvamVjdElkOiBzY3JpcHR1cmVTZXR0aW5nc18ucmVzb3VyY2VJZCxcbiAgICAgIG93bmVyOiBzY3JpcHR1cmVTZXR0aW5nc18ub3duZXIsXG4gICAgICByZWY6IHNjcmlwdHVyZVNldHRpbmdzXy5yZWYgfHwgc2NyaXB0dXJlU2V0dGluZ3NfLmJyYW5jaCB8fCBhcHBSZWYsXG4gICAgfSxcbiAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZVNldHRpbmdzXy5yZXNvdXJjZUxpbmssXG4gICAgY29uZmlnOiB7XG4gICAgICBzZXJ2ZXI6IHNjcmlwdHVyZVNldHRpbmdzXy5zZXJ2ZXIsXG4gICAgICAuLi5odHRwQ29uZmlnLFxuICAgIH0sXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyOiBzY3JpcHR1cmVTZXR0aW5nc18uZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIHdob2xlQm9vayxcbiAgICByZWFkeUZvckZldGNoLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBzY3JpcHR1cmVSZXNvdXJjZSA9IHVzZVNjcmlwdHVyZShzY3JpcHR1cmVDb25maWdfKVxuICAvLyByZXN0b3JlIGFueSBkZWZhdWx0IHNldHRpbmdzXG4gIHNjcmlwdHVyZVJlc291cmNlLnJlc291cmNlTGluayA9IHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGlua1xuXG4gIGlmICghc2NyaXB0dXJlUmVzb3VyY2VbJ3Jlc291cmNlJ10pIHsgLy8ga2VlcCByZXNvdXJjZSBpZiBub3QgcmV0dXJuZWRcbiAgICBzY3JpcHR1cmVSZXNvdXJjZVsncmVzb3VyY2UnXSA9IHNjcmlwdHVyZUNvbmZpZ18ucmVzb3VyY2VcbiAgfVxuXG4gIHJldHVybiBzY3JpcHR1cmVSZXNvdXJjZVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JpcHR1cmVSZXNvdXJjZXNcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFNBQVMsUUFBUSxPQUFPO0FBQ2pDLFNBQVNDLFlBQVksUUFBUSxJQUFJO0FBQ2pDLFNBQVNDLDRCQUE0QixRQUFRLDRCQUE0Qjs7QUFFekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTY3JpcHR1cmUiLCJnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzIiwidXNlU2NyaXB0dXJlUmVzb3VyY2VzIiwiX3JlZiIsIl9yZWYkYXBwUmVmIiwiYXBwUmVmIiwiX3JlZiRjdXJyZW50TGFuZ3VhZ2VJIiwiY3VycmVudExhbmd1YWdlSWQiLCJfcmVmJGN1cnJlbnRPd25lciIsImN1cnJlbnRPd25lciIsIl9yZWYkaHR0cENvbmZpZyIsImh0dHBDb25maWciLCJpc05ld1Rlc3RhbWVudCIsIm9yaWdpbmFsUmVwb1VybCIsIl9yZWYkcmVhZHlGb3JGZXRjaCIsInJlYWR5Rm9yRmV0Y2giLCJyZWZlcmVuY2UiLCJzY3JpcHR1cmVTZXR0aW5ncyIsIl9yZWYkd2hvbGVCb29rIiwid2hvbGVCb29rIiwiYm9va0lkIiwicmVmIiwiX29iamVjdFNwcmVhZCIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJzY3JpcHR1cmVTZXR0aW5nc18iLCJzY3JpcHR1cmVDb25maWdfIiwicmVzb3VyY2UiLCJsYW5ndWFnZUlkIiwicHJvamVjdElkIiwicmVzb3VyY2VJZCIsIm93bmVyIiwiYnJhbmNoIiwicmVzb3VyY2VMaW5rIiwiY29uZmlnIiwic2VydmVyIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwic2NyaXB0dXJlUmVzb3VyY2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlUmVzb3VyY2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVNjcmlwdHVyZSB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyB9IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuXG4vKipcbiAqIGhvb2sgdG8gZ2V0IGEgc2NyaXB0dXJlIHJlc291cmNlXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlU2V0dGluZ3MgLSBpbmZvIGFib3V0IHRoZSBzY3JpcHR1cmUgYmVpbmcgcmVmZXJlbmNlZFxuICogQHBhcmFtIHtTY3JpcHR1cmVSZWZlcmVuY2VUeXBlfSByZWZlcmVuY2VcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNOZXdUZXN0YW1lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFJlcG9VcmwgLSBvcHRpb25hbCBwYXRoIHRvIHJlcG8gZm9yIG9yaWdpbmFsIGxhbmd1YWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudExhbmd1YWdlSWQgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIGxhbmd1YWdlIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRPd25lciAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgb3duZXIgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge29iamVjdH0gaHR0cENvbmZpZyAtIG9wdGlvbmFsIGNvbmZpZyBzZXR0aW5ncyBmb3IgZmV0Y2hlcyAodGltZW91dCwgY2FjaGUsIGV0Yy4pXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUmVmIC0gYXBwIGRlZmF1bHQsIHBvaW50cyB0byBzcGVjaWZpYyByZWYgdGhhdCBjb3VsZCBiZSBhIGJyYW5jaCBvciB0YWdcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gd2hvbGVCb29rIC0gaWYgdHJ1ZSB0aGVuIGZldGNoIHRoZSBlbnRpcmUgYm9va1xuICogQHBhcmFtIHtib29sZWFufSByZWFkeUZvckZldGNoIC0gdHJ1ZSBpZiByZWFkeSBmb3IgZmV0Y2hpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZVJlc291cmNlcyh7XG4gIGFwcFJlZiA9ICdtYXN0ZXInLFxuICBjdXJyZW50TGFuZ3VhZ2VJZCA9IG51bGwsXG4gIGN1cnJlbnRPd25lciA9IG51bGwsXG4gIGh0dHBDb25maWcgPSB7fSxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsUmVwb1VybCxcbiAgcmVhZHlGb3JGZXRjaCA9IGZhbHNlLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZVNldHRpbmdzLFxuICB3aG9sZUJvb2sgPSBmYWxzZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlPy5ib29rSWRcblxuICBpZiAoYXBwUmVmICE9PSBzY3JpcHR1cmVTZXR0aW5ncy5yZWYpIHtcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyA9IHsgLi4uc2NyaXB0dXJlU2V0dGluZ3MsIHJlZjogYXBwUmVmIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZVJlc291cmNlczogYXBwUmVmIGNoYW5nZWQgdG8gc2NyaXB0dXJlU2V0dGluZ3MucmVmPSR7c2NyaXB0dXJlU2V0dGluZ3MucmVmfSBhbmQgYXBwUmVmPSR7YXBwUmVmfWApXG4gIH0sIFthcHBSZWYsIHNjcmlwdHVyZVNldHRpbmdzLnJlZl0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlU2V0dGluZ3NfID0gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhib29rSWQsIHNjcmlwdHVyZVNldHRpbmdzLCBpc05ld1Rlc3RhbWVudCxcbiAgICBvcmlnaW5hbFJlcG9VcmwsIGN1cnJlbnRMYW5ndWFnZUlkLCBjdXJyZW50T3duZXIpIC8vIGNvbnZlcnQgYW55IGRlZmF1bHQgc2V0dGluZ3Mgc3RyaW5nc1xuXG4gIGNvbnN0IHNjcmlwdHVyZUNvbmZpZ18gPSB7XG4gICAgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlOiB7XG4gICAgICBsYW5ndWFnZUlkOiBzY3JpcHR1cmVTZXR0aW5nc18ubGFuZ3VhZ2VJZCxcbiAgICAgIHByb2plY3RJZDogc2NyaXB0dXJlU2V0dGluZ3NfLnJlc291cmNlSWQsXG4gICAgICBvd25lcjogc2NyaXB0dXJlU2V0dGluZ3NfLm93bmVyLFxuICAgICAgcmVmOiBzY3JpcHR1cmVTZXR0aW5nc18ucmVmIHx8IHNjcmlwdHVyZVNldHRpbmdzXy5icmFuY2ggfHwgYXBwUmVmLFxuICAgIH0sXG4gICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVTZXR0aW5nc18ucmVzb3VyY2VMaW5rLFxuICAgIGNvbmZpZzoge1xuICAgICAgc2VydmVyOiBzY3JpcHR1cmVTZXR0aW5nc18uc2VydmVyLFxuICAgICAgLi4uaHR0cENvbmZpZyxcbiAgICB9LFxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcjogc2NyaXB0dXJlU2V0dGluZ3NfLmRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICB3aG9sZUJvb2ssXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3Qgc2NyaXB0dXJlUmVzb3VyY2UgPSB1c2VTY3JpcHR1cmUoc2NyaXB0dXJlQ29uZmlnXylcbiAgLy8gcmVzdG9yZSBhbnkgZGVmYXVsdCBzZXR0aW5nc1xuICBzY3JpcHR1cmVSZXNvdXJjZS5yZXNvdXJjZUxpbmsgPSBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmtcblxuICBpZiAoIXNjcmlwdHVyZVJlc291cmNlWydyZXNvdXJjZSddKSB7IC8vIGtlZXAgcmVzb3VyY2UgaWYgbm90IHJldHVybmVkXG4gICAgc2NyaXB0dXJlUmVzb3VyY2VbJ3Jlc291cmNlJ10gPSBzY3JpcHR1cmVDb25maWdfLnJlc291cmNlXG4gIH1cblxuICByZXR1cm4gc2NyaXB0dXJlUmVzb3VyY2Vcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlU2NyaXB0dXJlUmVzb3VyY2VzXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxTQUFTLFFBQVEsT0FBTztBQUNqQyxTQUFTQyxZQUFZLFFBQVEsSUFBSTtBQUNqQyxTQUFTQyw0QkFBNEIsUUFBUSw0QkFBNEI7O0FBRXpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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