@gravitee/ui-components 3.17.5 → 3.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravitee/ui-components",
3
- "version": "3.17.5",
3
+ "version": "3.18.1",
4
4
  "description": "Gravitee.io UI Components library, based on Web Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@formatjs/intl-locale": "^2.4.37",
53
- "@formatjs/intl-relativetimeformat": "^9.0.0",
53
+ "@formatjs/intl-relativetimeformat": "^9.3.1",
54
54
  "clipboard-copy": "^4.0.0",
55
55
  "codemirror": "^5.63.0",
56
56
  "date-fns": "^2.24.0",
@@ -413,13 +413,8 @@ export class GvInput extends InputElement(LitElement) {
413
413
  }
414
414
 
415
415
  _onIconClick() {
416
- if (this._type === 'search') {
417
- this.value = '';
418
- dispatchCustomEvent(this, 'input', this.value);
419
- } else {
420
- dispatchCustomEvent(this, 'icon-click', this.value);
421
- dispatchCustomEvent(this, 'submit', this.value);
422
- }
416
+ dispatchCustomEvent(this, 'icon-click', this.value);
417
+ dispatchCustomEvent(this, 'submit', this.value);
423
418
  }
424
419
 
425
420
  _onIconVisibleClick(e) {
@@ -528,4 +523,4 @@ export class GvInput extends InputElement(LitElement) {
528
523
 
529
524
  }
530
525
  window.customElements.define('gv-input', GvInput);
531
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2F0b21zL2d2LWlucHV0LmpzIl0sIm5hbWVzIjpbImNsYXNzTWFwIiwiTGl0RWxlbWVudCIsImh0bWwiLCJjc3MiLCJza2VsZXRvbiIsImlucHV0IiwibGluayIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJpMThuIiwiSW5wdXRFbGVtZW50Iiwic2hhcGVDbGlwYm9hcmQiLCJzaGFwZUNvcGllZCIsIkd2SW5wdXQiLCJwcm9wZXJ0aWVzIiwidHlwZSIsIlN0cmluZyIsInJlZmxlY3QiLCJsYXJnZSIsIkJvb2xlYW4iLCJtZWRpdW0iLCJzbWFsbCIsImljb24iLCJpY29uTGVmdCIsImF0dHJpYnV0ZSIsImxvYWRpbmciLCJtaW4iLCJOdW1iZXIiLCJtYXgiLCJhdXRvY29tcGxldGUiLCJjbGlwYm9hcmQiLCJjbGlja2FibGUiLCJjbGVhcmFibGUiLCJub1N1Ym1pdCIsInBhdHRlcm4iLCJkZXNjcmlwdGlvbiIsIl90eXBlIiwic3R5bGVzIiwic2hhcGVTZWFyY2giLCJzaGFwZUNsZWFyIiwic2hhcGVJbnZpc2libGUiLCJzaGFwZVZpc2libGUiLCJjb25zdHJ1Y3RvciIsIl9zaG93UGFzc3dvcmQiLCJ2YWx1ZSIsInJlc2V0IiwiZ2V0SW5wdXRFbGVtZW50IiwiYmx1ciIsImZvY3VzIiwiX2lucHV0IiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwibmFtZSIsInJlcXVpcmVkIiwidHJpbSIsImludmFsaWQiLCJyZWFkb25seSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInRpdGxlIiwibGFiZWwiLCJfcmVnZXhQYXR0ZXJuIiwiUmVnRXhwIiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsInVwZGF0ZVN0YXRlIiwiX3NldENsaXBib2FyZEljb24iLCJzaGFwZSIsImZpcnN0VXBkYXRlZCIsImRlZmF1bHRJbnB1dEVsZW1lbnQiLCJub2RlIiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiY2hpbGQiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicXVlcnlTZWxlY3RvciIsInJlbW92ZSIsInRoZW4iLCJtb2QiLCJjb3B5IiwiZGVmYXVsdCIsIl9jb3BpZWQiLCJzZXRUaW1lb3V0IiwiY2xpcGJvYXJkUG9wb3ZlciIsInNoYWRvd1Jvb3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2xpY2siLCJjbGlja2FibGVJY29uIiwiX29uSWNvbkNsaWNrIiwiYmluZCIsImlkIiwiX2lkIiwiX29uSW5wdXQiLCJfb25LZXlVcCIsIl9vbktleVByZXNzIiwidmFsaWQiLCJtYXRjaCIsInNldFZhbGlkaXR5IiwiX3ZhbHVlIiwidmFsdWVPZiIsImlzTmFOIiwidGFyZ2V0Iiwia2V5IiwiY2xpcGJvYXJkRGF0YSIsImdldERhdGEiLCJmcm9tQ2hhckNvZGUiLCJrZXlDb2RlIiwicmVnZXgiLCJ0ZXN0IiwiZm9ybSIsImNsb3Nlc3QiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImlzQ2xlYXJhYmxlIiwiaW5jbHVkZXMiLCJfb25JY29uVmlzaWJsZUNsaWNrIiwiaXNQYXNzd29yZCIsImhhc0NsaWNrYWJsZUljb24iLCJoYXNDbGlwYm9hcmQiLCJjbGVhciIsIl9yZW5kZXJDbGVhckljb24iLCJfcmVuZGVyUGFzc3dvcmRJY29uIiwiaGFzQmFja2dyb3VuZCIsIl9yZW5kZXJJY29uIiwiY2xhc3NlcyIsImNvcGllZCIsImljb25DbGFzc2VzIiwicmVuZGVyIiwicmVuZGVyTGFiZWwiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBVCxRQUF5QiwrQkFBekI7QUFFQSxT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SSxXQUFMLEVBRkssMEJBS0wsS0FBS1IsZ0JBQUwsRUFMSyxJQUtzQixLQUFLRyxXQUFMLEVBTHRCLElBSzRDLEtBQUtGLG1CQUFMLEVBTDVDLFdBT1AsS0FBSzdGLFdBQUwsSUFBb0IsSUFBcEIsR0FBMkJoQyxJQUFJLHdDQUF3QyxLQUFLZ0MsV0FBN0MsVUFBL0IsR0FBb0csRUFQN0YsR0FBWDtBQVNEOztBQXJlbUQ7QUF3ZXREcUcsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixVQUE3QixFQUF5QzdILE9BQXpDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQtZWxlbWVudCc7XG5pbXBvcnQgeyBza2VsZXRvbiB9IGZyb20gJy4uL3N0eWxlcy9za2VsZXRvbic7XG5pbXBvcnQgeyBpbnB1dCB9IGZyb20gJy4uL3N0eWxlcy9pbnB1dCc7XG5pbXBvcnQgeyBsaW5rIH0gZnJvbSAnLi4vc3R5bGVzL2xpbmsnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0ICcuL2d2LWljb24nO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtcG9wb3Zlcic7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vbGliL2kxOG4nO1xuaW1wb3J0IHsgSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vbWl4aW5zL2lucHV0LWVsZW1lbnQnO1xuaW1wb3J0IHsgc2hhcGVDbGlwYm9hcmQsIHNoYXBlQ29waWVkIH0gZnJvbSAnLi4vc3R5bGVzL3NoYXBlcyc7XG5cbi8qKlxuICpcbiAqICMjIERldGFpbHNcbiAqICogaGFzIEB0aGVtZSBmYWNldFxuICpcbiAqIEBmaXJlcyBndi1pbnB1dDppbnB1dCAtIG1pcnJvcnMgbmF0aXZlIGlucHV0IGV2ZW50cyB3aXRoIHRoZSBgdmFsdWVgIG9uIGBkZXRhaWxgXG4gKiBAZmlyZXMgZ3YtaW5wdXQ6Y2xlYXIgLSBldmVudCB3aGVuIHVzZXIgY2xlYXIgYSBjbGVhcmFibGUgaW5wdXRcbiAqXG4gKiBAYXR0ciB7Qm9vbGVhbn0gZGlzYWJsZWQgLSBzYW1lIGFzIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGBkaXNhYmxlZGAgYXR0cmlidXRlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gcmVxdWlyZWQgLSBzYW1lIGFzIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGByZXF1aXJlZGAgYXR0cmlidXRlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gc2tlbGV0b24gLSBlbmFibGUgc2tlbGV0b24gc2NyZWVuIFVJIHBhdHRlcm4gKGxvYWRpbmcgaGludClcbiAqIEBhdHRyIHtTdHJpbmd9IHZhbHVlIC0gdGhlIHZhbHVlIG9mIHRoZSBpbnB1dFxuICogQGF0dHIge1N0cmluZ30gbGFiZWwgLSBsYWJlbCBvZiB0aGUgaW5wdXRcbiAqIEBhdHRyIHtTdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIGlucHV0XG4gKiBAYXR0ciB7U3RyaW5nfSBuYW1lIC0gbmFtZSBvZiB0aGUgaW5wdXRcbiAqIEBhdHRyIHtTdHJpbmd9IHBsYWNlaG9sZGVyIC0gYW4gZXhhbXBsZSB2YWx1ZSB0byBkaXNwbGF5IGluIHRoZSBpbnB1dCB3aGVuIGVtcHR5XG4gKiBAYXR0ciB7U3RyaW5nfSBkZXNjcmlwdGlvbiAtIGEgZGVzY3JpcHRpb25cbiAqIEBhdHRyIHtTdHJpbmd9IHR5cGUgLSB0eXBlIG9mIHRoZSBpbnB1dCwgY2FuIGJlIHRleHQgKERlZmF1bHQpLCBwYXNzd29yZCwgZW1haWwsIHNlYXJjaCwgbnVtYmVyLCB1cmwuXG4gKiBAYXR0ciB7Qm9vbGVhbn0gY2xpcGJvYXJkIC0gZm9yIHJlYWRvbmx5IGlucHV0IHdpdGggY2xpcGJvYXJkXG4gKiBAYXR0ciB7Qm9vbGVhbn0gbGFyZ2UgLSBmb3IgYSBsYXJnZSBpbnB1dFxuICogQGF0dHIge0Jvb2xlYW59IG1lZGl1bSAtIGZvciBhIG1lZGl1bSBpbnB1dCAoRGVmYXVsdClcbiAqIEBhdHRyIHtCb29sZWFufSBzbWFsbCAtIGZvciBhIHNtYWxsIGlucHV0XG4gKiBAYXR0ciB7U3RyaW5nfSBpY29uIC0gaWNvbiBvZiB0aGUgaW5wdXRcbiAqIEBhdHRyIHtTdHJpbmd9IGljb24tbGVmdCAtIGljb24gb2YgdGhlIGlucHV0IHRvIGRpc3BsYXkgYXQgbGVmdFxuICogQGF0dHIge0Jvb2xlYW59IHZhbGlkIC0gaWYgdmFsdWUgaXMgdmFsaWRcbiAqIEBhdHRyIHtCb29sZWFufSBpbnZhbGlkIC0gaWYgdmFsdWUgaXMgaW52YWxpZFxuICogQGF0dHIge0Jvb2xlYW59IFtsb2FkaW5nPWZhbHNlXSAtIHRydWUgdG8gZGlzcGxheSBhIGxvYWRpbmcgaWNvblxuICogQGF0dHIge0Jvb2xlYW59IFthdXRvZm9jdXM9ZmFsc2VdIC0gdHJ1ZSB0byBwdXQgdGhlIGZvY3VzIG9uIHRoZSBpbnB1dFxuICogQGF0dHIge0Jvb2xlYW59IFtyZWFkb25seT1mYWxzZV0gLSB0cnVlIGlmIGZpZWxkIGlzIHJlYWRvbmx5IG1vZGVcbiAqIEBhdHRyIHtTdHJpbmd9IFthdXRvY29tcGxldGU9J29mZiddIC0gc3RhbmRhcmQgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZVxuICogQGF0dHIge0Jvb2xlYW59IFtjbGlja2FibGU9ZmFsc2VdIC0gSWYgdHJ1ZSwgaWNvbiBoYXMgbGluayBzdHlsZVxuICogQGF0dHIge0Jvb2xlYW59IFtjbGVhcmFibGU9ZmFsc2VdIC0gSWYgdHJ1ZSwgaW5wdXQgY2FuIGJlIGNsZWFyIHdpdGggYnV0dG9uXG4gKiBAYXR0ciB7Qm9vbGVhbn0gW25vLXN1Ym1pdD1mYWxzZV0gLSBJZiB0cnVlLCBpbnB1dCBjYW5ub3QgZGlzcGF0Y2ggbmF0aXZlIHN1Ym1pdCBldmVudCBvbiBlbnRlciBrZXkgcHJlc3MgdG8gY2xvc2VzdCBmb3JtXG4gKiBAYXR0ciB7U3RyaW5nfSBbcGF0dGVybj1udWxsXSAtIFBhdHRlcm4gZm9yIGlucHV0IHZhbGlkYXRpb24uIElmIHR5cGUgaXMgdXJsLCBkZWZhdWx0IHBhdHRlcm4gaXMgXihodHRwfGh0dHBzKTovL1xuICpcbiAqIEBjc3Nwcm9wIHtTdHJpbmd9IFstLWd2LWlucHV0LS1iZGM9dmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvciwgI0Y1RjVGNSldIC0gQm9yZGVyIGNvbG9yXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LWlucHV0LS1iZHM9c29saWRdIC0gQm9yZGVyIHN0eWxlXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LWlucHV0LWljb24tLWJnYz12YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLCAjRjVGNUY1KV0gLSBJY29uIGJhY2tncm91bmQgY29sb3JcbiAqL1xuZXhwb3J0IGNsYXNzIEd2SW5wdXQgZXh0ZW5kcyBJbnB1dEVsZW1lbnQoTGl0RWxlbWVudCkge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnByb3BlcnRpZXMsXG4gICAgICB0eXBlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbGFyZ2U6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgbWVkaXVtOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIHNtYWxsOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIGljb246IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBpY29uTGVmdDogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ2ljb24tbGVmdCcgfSxcbiAgICAgIGxvYWRpbmc6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgbWluOiB7IHR5cGU6IE51bWJlciB9LFxuICAgICAgbWF4OiB7IHR5cGU6IE51bWJlciB9LFxuICAgICAgYXV0b2NvbXBsZXRlOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgY2xpcGJvYXJkOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIGNsaWNrYWJsZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBjbGVhcmFibGU6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgbm9TdWJtaXQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnbm8tc3VibWl0JyB9LFxuICAgICAgcGF0dGVybjogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgX3R5cGU6IHsgdHlwZTogU3RyaW5nLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5zdXBlci5zdHlsZXMsXG4gICAgICBza2VsZXRvbixcbiAgICAgIGlucHV0LFxuICAgICAgbGluayxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICAuY2xpY2thYmxlIGlucHV0LFxuICAgICAgICAuY2xpY2thYmxlIDo6c2xvdHRlZChpbnB1dCkge1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jbGlja2FibGUgaW5wdXQ6aG92ZXIsXG4gICAgICAgIC5jbGlja2FibGUgOjpzbG90dGVkKGlucHV0OmhvdmVyKSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3ItZGFyaywgI2JmYmZiZik7XG4gICAgICAgIH1cblxuICAgICAgICBndi1pY29uIHtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDIycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYm94LWljb24uY29waWVkIGd2LWljb24ge1xuICAgICAgICAgIC0tZ3YtaWNvbi0tYzogIzMzOTkwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpdi5ib3gtaWNvbiBndi1pY29uLmxvYWRpbmcsXG4gICAgICAgIC5sb2FkaW5nIDo6c2xvdHRlZChpbnB1dCkge1xuICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbm5lciAxLjZzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubG9hZGluZy5zbWFsbCBndi1pY29uIHtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDE4cHg7XG4gICAgICAgIH1cblxuICAgICAgICBAa2V5ZnJhbWVzIHNwaW5uZXIge1xuICAgICAgICAgIHRvIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNsaXBib2FyZCBpbnB1dCxcbiAgICAgICAgLmNsaXBib2FyZCA6OnNsb3R0ZWQoaW5wdXQpIHtcbiAgICAgICAgICBjdXJzb3I6IGNvcHk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2xpcGJvYXJkIGlucHV0OnJlYWQtb25seTpob3ZlcixcbiAgICAgICAgLmNsaXBib2FyZCA6OnNsb3R0ZWQoaW5wdXQ6cmVhZC1vbmx5OmhvdmVyKSB7XG4gICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jbGlwYm9hcmRfX3BvcG92ZXIge1xuICAgICAgICAgIC0tZ3YtcG9wb3Zlci0tYmdjOiB2YXIoLS1ndi10aGVtZS1jb2xvci1kYXJrZXIsICMzODNlM2YpO1xuICAgICAgICAgIC0tZ3YtcG9wb3Zlci0tYzogdmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1saWdodCwgI2ZmZmZmZik7XG4gICAgICAgICAgLS1ndi1wb3BvdmVyLS1wOiAwcmVtIDAuNHJlbSAwcmVtIDAuMnJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2xpcGJvYXJkX19wb3BvdmVyLWNvbnRlbnQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAtLWd2LWljb24tLWM6IHZhcigtLWd2LXRoZW1lLWZvbnQtY29sb3ItbGlnaHQsICNmZmZmZmYpO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYXBlU2VhcmNoKCkge1xuICAgIHJldHVybiAnZ2VuZXJhbDpzZWFyY2gnO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFwZUNsZWFyKCkge1xuICAgIHJldHVybiAnY29kZTplcnJvcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYXBlSW52aXNpYmxlKCkge1xuICAgIHJldHVybiAnZ2VuZXJhbDppbnZpc2libGUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFwZVZpc2libGUoKSB7XG4gICAgcmV0dXJuICdnZW5lcmFsOnZpc2libGUnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl90eXBlID0gJ3RleHQnO1xuICAgIHRoaXMuX3Nob3dQYXNzd29yZCA9IGZhbHNlO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZSA9ICdvZmYnO1xuICAgIHRoaXMubm9TdWJtaXQgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmJsdXIoKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkuZm9jdXMoKTtcbiAgfVxuXG4gIGdldElucHV0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXQgfHwgc3VwZXIuZ2V0SW5wdXRFbGVtZW50KCk7XG4gIH1cblxuICB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKSB7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX3R5cGUnKSkge1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS50eXBlID0gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdhdXRvY29tcGxldGUnKSkge1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5hdXRvY29tcGxldGUgPSB0aGlzLmF1dG9jb21wbGV0ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduYW1lJykgJiYgdGhpcy5uYW1lICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkubmFtZSA9IHRoaXMubmFtZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnJlcXVpcmVkID0gdGhpcy5yZXF1aXJlZDtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KClbJ2FyaWEtcmVxdWlyZWQnXSA9ICEhdGhpcy5yZXF1aXJlZDtcbiAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHRoaXMuaW52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkuc2V0QXR0cmlidXRlKCdyZWFkb25seScsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnJlbW92ZUF0dHJpYnV0ZSgncmVhZG9ubHknKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsYWJlbCcpIHx8IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygndGl0bGUnKSkge1xuICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlIHx8IHRoaXMubGFiZWw7XG4gICAgICBpZiAodGl0bGUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnRpdGxlID0gdGl0bGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGFiZWwnKSAmJiB0aGlzLmxhYmVsKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpWydhcmlhLWxhYmVsJ10gPSB0aGlzLmxhYmVsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3BhdHRlcm4nKSkge1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5wYXR0ZXJuID0gdGhpcy5wYXR0ZXJuO1xuICAgICAgdGhpcy5fcmVnZXhQYXR0ZXJuID0gbmV3IFJlZ0V4cCh0aGlzLnBhdHRlcm4pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykgfHwgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdza2VsZXRvbicpKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNrZWxldG9uO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3BsYWNlaG9sZGVyJykgJiYgdGhpcy5wbGFjZWhvbGRlciAhPSBudWxsKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd2YWx1ZScpKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbWluJykgJiYgdGhpcy5taW4gIT0gbnVsbCkge1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5taW4gPSB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdtYXgnKSAmJiB0aGlzLm1heCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLm1heCA9IHRoaXMubWF4O1xuICAgIH1cbiAgfVxuXG4gIF9zZXRDbGlwYm9hcmRJY29uKHNoYXBlKSB7XG4gICAgaWYgKHRoaXMuaWNvbiAhPSBudWxsICYmIHRoaXMuaWNvbiAhPT0gc2hhcGVDb3BpZWQgJiYgdGhpcy5pY29uICE9PSBzaGFwZUNsaXBib2FyZCkge1xuICAgICAgdGhpcy5pY29uTGVmdCA9IHNoYXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmljb24gPSBzaGFwZTtcbiAgICB9XG4gIH1cblxuICBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgZGVmYXVsdElucHV0RWxlbWVudCA9IHRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgPyBub2RlIDogbm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgICB0aGlzLl9pbnB1dCA9IGNoaWxkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl9pbnB1dCkge1xuICAgICAgZGVmYXVsdElucHV0RWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlwYm9hcmQpIHtcbiAgICAgIGltcG9ydCgnY2xpcGJvYXJkLWNvcHknKS50aGVuKFxuICAgICAgICAobW9kKSA9PlxuICAgICAgICAgICh0aGlzLmNvcHkgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb3B5ID0gbW9kLmRlZmF1bHQ7XG4gICAgICAgICAgICBjb3B5KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY29waWVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENsaXBib2FyZEljb24oc2hhcGVDb3BpZWQpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2NvcGllZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLl9zZXRDbGlwYm9hcmRJY29uKHNoYXBlQ2xpcGJvYXJkKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIHRoaXMuX3NldENsaXBib2FyZEljb24oc2hhcGVDbGlwYm9hcmQpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgY2xpcGJvYXJkUG9wb3ZlciA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuY2xpcGJvYXJkX19wb3BvdmVyJyk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgY2xpcGJvYXJkUG9wb3Zlci5jbGljaygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNsaXBib2FyZFBvcG92ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuY29weSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpY2thYmxlSWNvbiA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1pY29uLmxpbmsnKTtcbiAgICAgIGlmIChjbGlja2FibGVJY29uKSB7XG4gICAgICAgIGNsaWNrYWJsZUljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9vbkljb25DbGljay5iaW5kKHRoaXMpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmlkID0gdGhpcy5faWQ7XG4gICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX29uS2V5VXAuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIHRoaXMuX29uS2V5UHJlc3MuYmluZCh0aGlzKSk7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh2YWx1ZSkge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHZhbHVlKTtcbiAgICBpZiAodGhpcy52YWxpZCA9PT0gdHJ1ZSAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgaWYgKHRoaXMuX3JlZ2V4UGF0dGVybikge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkgIT09ICcnKSB7XG4gICAgICAgICAgY29uc3QgdmFsaWQgPSB2YWx1ZS5tYXRjaCh0aGlzLl9yZWdleFBhdHRlcm4pO1xuICAgICAgICAgIHRoaXMuc2V0VmFsaWRpdHkodmFsaWQgPT0gbnVsbCwgYGZpZWxkIG5vdCByZXNwZWN0IHRoZSBwYXR0ZXJuICR7dGhpcy5fcmVnZXhQYXR0ZXJufWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09ICdudW1iZXInICYmIHZhbHVlICE9IG51bGwgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdmFsdWUudHJpbSgpICE9PSAnJykpIHtcbiAgICAgICAgY29uc3QgX3ZhbHVlID0gTnVtYmVyKHZhbHVlKS52YWx1ZU9mKCk7XG4gICAgICAgIGlmIChpc05hTihfdmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGl0eSh0cnVlLCBgZmllbGQgaXMgbm90IG51bWJlcmApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5taW4gPiBfdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkaXR5KHRydWUsIGBmaWVsZCBpcyA8ICR7dGhpcy5taW59YCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXggIT0gbnVsbCAmJiB0aGlzLm1heCA8IF92YWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsaWRpdHkodHJ1ZSwgYGZpZWxkIGlzID4gJHt0aGlzLm1heH1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkaXR5KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vbklucHV0KGUpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICB0aGlzLnZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnaW5wdXQnLCB0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIF9vbktleVByZXNzKGUpIHtcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGxldCBrZXk7XG4gICAgICBpZiAoZS50eXBlID09PSAncGFzdGUnKSB7XG4gICAgICAgIGtleSA9IGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXkgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZWdleCA9IC9bMC05XS87XG4gICAgICBpZiAodGhpcy5taW4gPT0gbnVsbCB8fCB0aGlzLm1pbiA8IDApIHtcbiAgICAgICAgcmVnZXggPSAvWzAtOS1dLztcbiAgICAgIH1cbiAgICAgIGlmICghcmVnZXgudGVzdChrZXkpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfb25LZXlVcChlKSB7XG4gICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIGlmICghdGhpcy5ub1N1Ym1pdCkge1xuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5jbG9zZXN0KCdmb3JtJyk7XG4gICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgZm9ybS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnc3VibWl0JywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc3VibWl0JywgdGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzQ2xlYXJhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmNsZWFyYWJsZSAmJiAhdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5sb2FkaW5nICYmIHRoaXMudmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSAnJztcbiAgfVxuXG4gIHNldCB0eXBlKHZhbHVlKSB7XG4gICAgaWYgKFsndGV4dCcsICdwYXNzd29yZCcsICdlbWFpbCcsICdzZWFyY2gnLCAnbnVtYmVyJywgJ3VybCddLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3VybCcpIHtcbiAgICAgIHRoaXMucGF0dGVybiA9ICcoaHR0cHM/Oi8vLncqKSg6XFxcXGQqKT9cXFxcLz8oLiopJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ2VtYWlsJykge1xuICAgICAgdGhpcy5wYXR0ZXJuID1cbiAgICAgICAgL14oKFtePD4oKVxcXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC87XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09ICdzZWFyY2gnICYmIHRoaXMuaWNvbiA9PSBudWxsICYmIHRoaXMuaWNvbkxlZnQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5pY29uID0gR3ZJbnB1dC5zaGFwZVNlYXJjaDtcbiAgICAgIHRoaXMuY2xlYXJhYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgdGhpcy5pY29uID0gR3ZJbnB1dC5zaGFwZVNlYXJjaDtcbiAgICB9XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIF9vbkljb25DbGljaygpIHtcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3NlYXJjaCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2lucHV0JywgdGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2ljb24tY2xpY2snLCB0aGlzLnZhbHVlKTtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3N1Ym1pdCcsIHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIF9vbkljb25WaXNpYmxlQ2xpY2soZSkge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLl9zaG93UGFzc3dvcmQgPSAhdGhpcy5fc2hvd1Bhc3N3b3JkO1xuICAgICAgdGhpcy5fdHlwZSA9IHRoaXMuX3Nob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzUGFzc3dvcmQoKSB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmICh0aGlzLl90eXBlID09PSAncGFzc3dvcmQnIHx8ICh0aGlzLl90eXBlID09PSAndGV4dCcgJiYgdGhpcy5fc2hvd1Bhc3N3b3JkKSk7XG4gIH1cblxuICBnZXQgaGFzQ2xpY2thYmxlSWNvbigpIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgKHRoaXMuY2xpY2thYmxlIHx8IHRoaXMuX3R5cGUgPT09ICdzZWFyY2gnIHx8IHRoaXMuY2xpcGJvYXJkKTtcbiAgfVxuXG4gIGdldCBoYXNDbGlwYm9hcmQoKSB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpcGJvYXJkO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5mb2N1cygpO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjbGVhcicsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX3JlbmRlckNsZWFySWNvbigpIHtcbiAgICBpZiAodGhpcy5pc0NsZWFyYWJsZSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImJveC1pY29uIGJveC1pY29uLWNsZWFyXCI+XG4gICAgICAgIDxndi1pY29uIGNsYXNzPVwibGlua1wiIHNoYXBlPVwiY29kZTplcnJvclwiIHRpdGxlPVwiJHtpMThuKCdndi1pbnB1dC5jbGVhcicpfVwiIEBjbGljaz1cIiR7dGhpcy5jbGVhcn1cIj48L2d2LWljb24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBfcmVuZGVyUGFzc3dvcmRJY29uKCkge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fc2hvd1Bhc3N3b3JkID8gJ2dlbmVyYWw6dmlzaWJsZScgOiAnZ2VuZXJhbDpoaWRkZW4nO1xuICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLl9zaG93UGFzc3dvcmQgPyAnU2hvdycgOiAnSGlkZSc7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiYm94LWljb25cIj5cbiAgICAgICAgPGd2LWljb24gY2xhc3M9XCJsaW5rXCIgc2hhcGU9XCIke3NoYXBlfVwiIHRpdGxlPVwiJHt0aXRsZX1cIiBAY2xpY2s9XCIke3RoaXMuX29uSWNvblZpc2libGVDbGlja31cIj48L2d2LWljb24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXQgaGFzQmFja2dyb3VuZCgpIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZztcbiAgfVxuXG4gIF9yZW5kZXJJY29uKCkge1xuICAgIGxldCBzaGFwZSA9IG51bGw7XG4gICAgaWYgKCghdGhpcy5pc1Bhc3N3b3JkICYmIHRoaXMuaWNvbikgfHwgdGhpcy5pY29uTGVmdCkge1xuICAgICAgc2hhcGUgPSAoIXRoaXMuaXNQYXNzd29yZCAmJiB0aGlzLmljb24pIHx8IHRoaXMuaWNvbkxlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHNoYXBlID0gJ25hdmlnYXRpb246d2FpdGluZyc7XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlKSB7XG4gICAgICBjb25zdCBjbGFzc2VzID0ge1xuICAgICAgICAnYm94LWljb24nOiB0cnVlLFxuICAgICAgICAnYm94LWljb24tbGVmdCc6IHRoaXMuaWNvbkxlZnQgIT0gbnVsbCB8fCB0aGlzLmNsZWFyYWJsZSxcbiAgICAgICAgJ2JveC1pY29uLWJnYyc6IHRoaXMuaGFzQmFja2dyb3VuZCxcbiAgICAgICAgY29waWVkOiB0aGlzLmhhc0NsaXBib2FyZCAmJiB0aGlzLl9jb3BpZWQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpY29uQ2xhc3NlcyA9IHtcbiAgICAgICAgbGluazogdGhpcy5oYXNDbGlja2FibGVJY29uLFxuICAgICAgICBsb2FkaW5nOiB0aGlzLmxvYWRpbmcsXG4gICAgICB9O1xuICAgICAgbGV0IHRpdGxlID0gJyc7XG4gICAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3NlYXJjaCcpIHtcbiAgICAgICAgdGl0bGUgPSBpMThuKCdndi1pbnB1dC5zZWFyY2gnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNDbGlwYm9hcmQpIHtcbiAgICAgICAgdGl0bGUgPSBpMThuKCdndi1pbnB1dC5jb3B5Jyk7XG4gICAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKGNsYXNzZXMpfVwiPlxuICAgICAgICAgIDxndi1wb3BvdmVyIGNsYXNzPVwiY2xpcGJvYXJkX19wb3BvdmVyXCIgZXZlbnQ9XCJjbGlja1wiIGRlbGF5PVwiNzUwXCIgLmFycm93PVwiJHtmYWxzZX1cIj5cbiAgICAgICAgICAgIDxndi1pY29uIGNsYXNzPVwiJHtjbGFzc01hcChpY29uQ2xhc3Nlcyl9XCIgc2hhcGU9XCIke3NoYXBlfVwiIHRpdGxlPVwiJHt0aXRsZX1cIj48L2d2LWljb24+XG4gICAgICAgICAgICA8ZGl2IHNsb3Q9XCJwb3BvdmVyXCIgY2xhc3M9XCJjbGlwYm9hcmRfX3BvcG92ZXItY29udGVudFwiPlxuICAgICAgICAgICAgICA8Z3YtaWNvbiBzaGFwZT1cImNvZGU6Y2hlY2tcIj48L2d2LWljb24+XG4gICAgICAgICAgICAgIDxkaXY+Q29waWVkPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2d2LXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PmA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgdGl0bGUgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+XG4gICAgICAgIDxndi1pY29uIGNsYXNzPVwiJHtjbGFzc01hcChpY29uQ2xhc3Nlcyl9XCIgc2hhcGU9XCIke3NoYXBlfVwiIHRpdGxlPVwiJHt0aXRsZX1cIj48L2d2LWljb24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICdib3gtaW5wdXQnOiB0cnVlLFxuICAgICAgc2tlbGV0b246IHRoaXMuc2tlbGV0b24sXG4gICAgICBsYXJnZTogdGhpcy5sYXJnZSxcbiAgICAgIG1lZGl1bTogdGhpcy5tZWRpdW0gfHwgKCF0aGlzLmxhcmdlICYmICF0aGlzLnNtYWxsKSxcbiAgICAgIHNtYWxsOiB0aGlzLnNtYWxsLFxuICAgICAgaWNvbjogISF0aGlzLmljb24gJiYgIXRoaXMuY2xlYXJhYmxlLFxuICAgICAgY2xlYXJhYmxlOiB0aGlzLmNsZWFyYWJsZSxcbiAgICAgICdpY29uLWxlZnQnOiAhIXRoaXMuaWNvbkxlZnQgfHwgKCEhdGhpcy5pY29uICYmIHRoaXMuY2xlYXJhYmxlKSxcbiAgICAgIGNsaXBib2FyZDogdGhpcy5oYXNDbGlwYm9hcmQsXG4gICAgICByZXF1aXJlZDogdGhpcy5yZXF1aXJlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckxhYmVsKCl9XG4gICAgICAgIDxpbnB1dCAvPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyQ2xlYXJJY29uKCl9ICR7dGhpcy5fcmVuZGVySWNvbigpfSAke3RoaXMuX3JlbmRlclBhc3N3b3JkSWNvbigpfVxuICAgICAgPC9kaXY+XG4gICAgICAke3RoaXMuZGVzY3JpcHRpb24gIT0gbnVsbCA/IGh0bWxgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgLmlubmVySFRNTD1cIiR7dGhpcy5kZXNjcmlwdGlvbn1cIj48L2Rpdj5gIDogJyd9XG4gICAgYDtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1pbnB1dCcsIEd2SW5wdXQpO1xuIl19
526
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2F0b21zL2d2LWlucHV0LmpzIl0sIm5hbWVzIjpbImNsYXNzTWFwIiwiTGl0RWxlbWVudCIsImh0bWwiLCJjc3MiLCJza2VsZXRvbiIsImlucHV0IiwibGluayIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJpMThuIiwiSW5wdXRFbGVtZW50Iiwic2hhcGVDbGlwYm9hcmQiLCJzaGFwZUNvcGllZCIsIkd2SW5wdXQiLCJwcm9wZXJ0aWVzIiwidHlwZSIsIlN0cmluZyIsInJlZmxlY3QiLCJsYXJnZSIsIkJvb2xlYW4iLCJtZWRpdW0iLCJzbWFsbCIsImljb24iLCJpY29uTGVmdCIsImF0dHJpYnV0ZSIsImxvYWRpbmciLCJtaW4iLCJOdW1iZXIiLCJtYXgiLCJhdXRvY29tcGxldGUiLCJjbGlwYm9hcmQiLCJjbGlja2FibGUiLCJjbGVhcmFibGUiLCJub1N1Ym1pdCIsInBhdHRlcm4iLCJkZXNjcmlwdGlvbiIsIl90eXBlIiwic3R5bGVzIiwic2hhcGVTZWFyY2giLCJzaGFwZUNsZWFyIiwic2hhcGVJbnZpc2libGUiLCJzaGFwZVZpc2libGUiLCJjb25zdHJ1Y3RvciIsIl9zaG93UGFzc3dvcmQiLCJ2YWx1ZSIsInJlc2V0IiwiZ2V0SW5wdXRFbGVtZW50IiwiYmx1ciIsImZvY3VzIiwiX2lucHV0IiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwibmFtZSIsInJlcXVpcmVkIiwidHJpbSIsImludmFsaWQiLCJyZWFkb25seSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInRpdGxlIiwibGFiZWwiLCJfcmVnZXhQYXR0ZXJuIiwiUmVnRXhwIiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsInVwZGF0ZVN0YXRlIiwiX3NldENsaXBib2FyZEljb24iLCJzaGFwZSIsImZpcnN0VXBkYXRlZCIsImRlZmF1bHRJbnB1dEVsZW1lbnQiLCJub2RlIiwiY2hpbGROb2RlcyIsIm5vZGVUeXBlIiwiY2hpbGQiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwicXVlcnlTZWxlY3RvciIsInJlbW92ZSIsInRoZW4iLCJtb2QiLCJjb3B5IiwiZGVmYXVsdCIsIl9jb3BpZWQiLCJzZXRUaW1lb3V0IiwiY2xpcGJvYXJkUG9wb3ZlciIsInNoYWRvd1Jvb3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2xpY2siLCJjbGlja2FibGVJY29uIiwiX29uSWNvbkNsaWNrIiwiYmluZCIsImlkIiwiX2lkIiwiX29uSW5wdXQiLCJfb25LZXlVcCIsIl9vbktleVByZXNzIiwidmFsaWQiLCJtYXRjaCIsInNldFZhbGlkaXR5IiwiX3ZhbHVlIiwidmFsdWVPZiIsImlzTmFOIiwidGFyZ2V0Iiwia2V5IiwiY2xpcGJvYXJkRGF0YSIsImdldERhdGEiLCJmcm9tQ2hhckNvZGUiLCJrZXlDb2RlIiwicmVnZXgiLCJ0ZXN0IiwiZm9ybSIsImNsb3Nlc3QiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImlzQ2xlYXJhYmxlIiwiaW5jbHVkZXMiLCJfb25JY29uVmlzaWJsZUNsaWNrIiwiaXNQYXNzd29yZCIsImhhc0NsaWNrYWJsZUljb24iLCJoYXNDbGlwYm9hcmQiLCJjbGVhciIsIl9yZW5kZXJDbGVhckljb24iLCJfcmVuZGVyUGFzc3dvcmRJY29uIiwiaGFzQmFja2dyb3VuZCIsIl9yZW5kZXJJY29uIiwiY2xhc3NlcyIsImNvcGllZCIsImljb25DbGFzc2VzIiwicmVuZGVyIiwicmVuZGVyTGFiZWwiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBVCxRQUF5QiwrQkFBekI7QUFFQSxTQUFTQyxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxRQUFULFFBQXlCLG9CQUF6QjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IsaUJBQXRCO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixnQkFBckI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLE9BQU8sV0FBUDtBQUNBLE9BQU8seUJBQVA7QUFDQSxTQUFTQyxJQUFULFFBQXFCLGFBQXJCO0FBQ0EsU0FBU0MsWUFBVCxRQUE2Qix5QkFBN0I7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxXQUF6QixRQUE0QyxrQkFBNUM7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxPQUFOLFNBQXNCSCxZQUFZLENBQUNSLFVBQUQsQ0FBbEMsQ0FBK0M7QUFDL0IsYUFBVlksVUFBVSxHQUFHO0FBQ3RCLFdBQU8sRUFDTCxHQUFHLE1BQU1BLFVBREo7QUFFTEMsTUFBQUEsSUFBSSxFQUFFO0FBQUVBLFFBQUFBLElBQUksRUFBRUMsTUFBUjtBQUFnQkMsUUFBQUEsT0FBTyxFQUFFO0FBQXpCLE9BRkQ7QUFHTEMsTUFBQUEsS0FBSyxFQUFFO0FBQUVILFFBQUFBLElBQUksRUFBRUk7QUFBUixPQUhGO0FBSUxDLE1BQUFBLE1BQU0sRUFBRTtBQUFFTCxRQUFBQSxJQUFJLEVBQUVJO0FBQVIsT0FKSDtBQUtMRSxNQUFBQSxLQUFLLEVBQUU7QUFBRU4sUUFBQUEsSUFBSSxFQUFFSTtBQUFSLE9BTEY7QUFNTEcsTUFBQUEsSUFBSSxFQUFFO0FBQUVQLFFBQUFBLElBQUksRUFBRUM7QUFBUixPQU5EO0FBT0xPLE1BQUFBLFFBQVEsRUFBRTtBQUFFUixRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JRLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQVBMO0FBUUxDLE1BQUFBLE9BQU8sRUFBRTtBQUFFVixRQUFBQSxJQUFJLEVBQUVJO0FBQVIsT0FSSjtBQVNMTyxNQUFBQSxHQUFHLEVBQUU7QUFBRVgsUUFBQUEsSUFBSSxFQUFFWTtBQUFSLE9BVEE7QUFVTEMsTUFBQUEsR0FBRyxFQUFFO0FBQUViLFFBQUFBLElBQUksRUFBRVk7QUFBUixPQVZBO0FBV0xFLE1BQUFBLFlBQVksRUFBRTtBQUFFZCxRQUFBQSxJQUFJLEVBQUVDO0FBQVIsT0FYVDtBQVlMYyxNQUFBQSxTQUFTLEVBQUU7QUFBRWYsUUFBQUEsSUFBSSxFQUFFSTtBQUFSLE9BWk47QUFhTFksTUFBQUEsU0FBUyxFQUFFO0FBQUVoQixRQUFBQSxJQUFJLEVBQUVJO0FBQVIsT0FiTjtBQWNMYSxNQUFBQSxTQUFTLEVBQUU7QUFBRWpCLFFBQUFBLElBQUksRUFBRUk7QUFBUixPQWROO0FBZUxjLE1BQUFBLFFBQVEsRUFBRTtBQUFFbEIsUUFBQUEsSUFBSSxFQUFFSSxPQUFSO0FBQWlCSyxRQUFBQSxTQUFTLEVBQUU7QUFBNUIsT0FmTDtBQWdCTFUsTUFBQUEsT0FBTyxFQUFFO0FBQUVuQixRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JDLFFBQUFBLE9BQU8sRUFBRTtBQUF6QixPQWhCSjtBQWlCTGtCLE1BQUFBLFdBQVcsRUFBRTtBQUFFcEIsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BakJSO0FBa0JMb0IsTUFBQUEsS0FBSyxFQUFFO0FBQUVyQixRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JRLFFBQUFBLFNBQVMsRUFBRTtBQUEzQjtBQWxCRixLQUFQO0FBb0JEOztBQUVnQixhQUFOYSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMLEdBQUcsTUFBTUEsTUFESixFQUVMaEMsUUFGSyxFQUdMQyxLQUhLLEVBSUxDLElBSkssRUFLTDtBQUNBSCxJQUFBQSxHQUFHLHc2QkFORSxDQUFQO0FBa0VEOztBQUVxQixhQUFYa0MsV0FBVyxHQUFHO0FBQ3ZCLFdBQU8sZ0JBQVA7QUFDRDs7QUFFb0IsYUFBVkMsVUFBVSxHQUFHO0FBQ3RCLFdBQU8sWUFBUDtBQUNEOztBQUV3QixhQUFkQyxjQUFjLEdBQUc7QUFDMUIsV0FBTyxtQkFBUDtBQUNEOztBQUVzQixhQUFaQyxZQUFZLEdBQUc7QUFDeEIsV0FBTyxpQkFBUDtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtOLEtBQUwsR0FBYSxNQUFiO0FBQ0EsU0FBS08sYUFBTCxHQUFxQixLQUFyQjtBQUNBLFNBQUtDLEtBQUwsR0FBYSxFQUFiO0FBQ0EsU0FBS2YsWUFBTCxHQUFvQixLQUFwQjtBQUNBLFNBQUtJLFFBQUwsR0FBZ0IsS0FBaEI7QUFDRDs7QUFFRFksRUFBQUEsS0FBSyxHQUFHO0FBQ04sU0FBS0QsS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLRSxlQUFMLEdBQXVCQyxJQUF2QjtBQUNEOztBQUVEQyxFQUFBQSxLQUFLLEdBQUc7QUFDTixTQUFLRixlQUFMLEdBQXVCRSxLQUF2QjtBQUNEOztBQUVERixFQUFBQSxlQUFlLEdBQUc7QUFDaEIsV0FBTyxLQUFLRyxNQUFMLElBQWUsTUFBTUgsZUFBTixFQUF0QjtBQUNEOztBQUVESSxFQUFBQSxPQUFPLENBQUNDLGlCQUFELEVBQW9CO0FBQ3pCLFFBQUlBLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixPQUF0QixDQUFKLEVBQW9DO0FBQ2xDLFdBQUtOLGVBQUwsR0FBdUIvQixJQUF2QixHQUE4QixLQUFLcUIsS0FBbkM7QUFDRDs7QUFFRCxRQUFJZSxpQkFBaUIsQ0FBQ0MsR0FBbEIsQ0FBc0IsY0FBdEIsQ0FBSixFQUEyQztBQUN6QyxXQUFLTixlQUFMLEdBQXVCakIsWUFBdkIsR0FBc0MsS0FBS0EsWUFBM0M7QUFDRDs7QUFFRCxRQUFJc0IsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLE1BQXRCLEtBQWlDLEtBQUtDLElBQUwsSUFBYSxJQUFsRCxFQUF3RDtBQUN0RCxXQUFLUCxlQUFMLEdBQXVCTyxJQUF2QixHQUE4QixLQUFLQSxJQUFuQztBQUNEOztBQUVELFFBQUlGLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixVQUF0QixDQUFKLEVBQXVDO0FBQ3JDLFdBQUtOLGVBQUwsR0FBdUJRLFFBQXZCLEdBQWtDLEtBQUtBLFFBQXZDO0FBQ0EsV0FBS1IsZUFBTCxHQUF1QixlQUF2QixJQUEwQyxDQUFDLENBQUMsS0FBS1EsUUFBakQ7O0FBQ0EsVUFBSSxLQUFLVixLQUFMLElBQWMsSUFBZCxJQUFzQixLQUFLQSxLQUFMLENBQVdXLElBQVgsT0FBc0IsRUFBaEQsRUFBb0Q7QUFDbEQsYUFBS0MsT0FBTCxHQUFlLElBQWY7QUFDRDtBQUNGOztBQUVELFFBQUksS0FBS0MsUUFBVCxFQUFtQjtBQUNqQixXQUFLWCxlQUFMLEdBQXVCWSxZQUF2QixDQUFvQyxVQUFwQyxFQUFnRCxJQUFoRDtBQUNELEtBRkQsTUFFTztBQUNMLFdBQUtaLGVBQUwsR0FBdUJhLGVBQXZCLENBQXVDLFVBQXZDO0FBQ0Q7O0FBRUQsUUFBSVIsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLE9BQXRCLEtBQWtDRCxpQkFBaUIsQ0FBQ0MsR0FBbEIsQ0FBc0IsT0FBdEIsQ0FBdEMsRUFBc0U7QUFDcEUsWUFBTVEsS0FBSyxHQUFHLEtBQUtBLEtBQUwsSUFBYyxLQUFLQyxLQUFqQzs7QUFDQSxVQUFJRCxLQUFLLElBQUksSUFBYixFQUFtQjtBQUNqQixhQUFLZCxlQUFMLEdBQXVCYyxLQUF2QixHQUErQkEsS0FBL0I7QUFDRDtBQUNGOztBQUVELFFBQUlULGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixPQUF0QixLQUFrQyxLQUFLUyxLQUEzQyxFQUFrRDtBQUNoRCxXQUFLZixlQUFMLEdBQXVCLFlBQXZCLElBQXVDLEtBQUtlLEtBQTVDO0FBQ0Q7O0FBRUQsUUFBSVYsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLFNBQXRCLENBQUosRUFBc0M7QUFDcEMsV0FBS04sZUFBTCxHQUF1QlosT0FBdkIsR0FBaUMsS0FBS0EsT0FBdEM7QUFDQSxXQUFLNEIsYUFBTCxHQUFxQixJQUFJQyxNQUFKLENBQVcsS0FBSzdCLE9BQWhCLENBQXJCO0FBQ0Q7O0FBRUQsUUFBSWlCLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixVQUF0QixLQUFxQ0QsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLFVBQXRCLENBQXpDLEVBQTRFO0FBQzFFLFdBQUtOLGVBQUwsR0FBdUJrQixRQUF2QixHQUFrQyxLQUFLQSxRQUFMLElBQWlCLEtBQUszRCxRQUF4RDtBQUNEOztBQUVELFFBQUk4QyxpQkFBaUIsQ0FBQ0MsR0FBbEIsQ0FBc0IsYUFBdEIsS0FBd0MsS0FBS2EsV0FBTCxJQUFvQixJQUFoRSxFQUFzRTtBQUNwRSxXQUFLbkIsZUFBTCxHQUF1Qm1CLFdBQXZCLEdBQXFDLEtBQUtBLFdBQTFDO0FBQ0Q7O0FBRUQsUUFBSWQsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLE9BQXRCLENBQUosRUFBb0M7QUFDbEMsV0FBS04sZUFBTCxHQUF1QkYsS0FBdkIsR0FBK0IsS0FBS0EsS0FBcEM7QUFDQSxXQUFLc0IsV0FBTCxDQUFpQixLQUFLdEIsS0FBdEI7QUFDRDs7QUFFRCxRQUFJTyxpQkFBaUIsQ0FBQ0MsR0FBbEIsQ0FBc0IsS0FBdEIsS0FBZ0MsS0FBSzFCLEdBQUwsSUFBWSxJQUFoRCxFQUFzRDtBQUNwRCxXQUFLb0IsZUFBTCxHQUF1QnBCLEdBQXZCLEdBQTZCLEtBQUtBLEdBQWxDO0FBQ0Q7O0FBRUQsUUFBSXlCLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixLQUF0QixLQUFnQyxLQUFLeEIsR0FBTCxJQUFZLElBQWhELEVBQXNEO0FBQ3BELFdBQUtrQixlQUFMLEdBQXVCbEIsR0FBdkIsR0FBNkIsS0FBS0EsR0FBbEM7QUFDRDtBQUNGOztBQUVEdUMsRUFBQUEsaUJBQWlCLENBQUNDLEtBQUQsRUFBUTtBQUN2QixRQUFJLEtBQUs5QyxJQUFMLElBQWEsSUFBYixJQUFxQixLQUFLQSxJQUFMLEtBQWNWLFdBQW5DLElBQWtELEtBQUtVLElBQUwsS0FBY1gsY0FBcEUsRUFBb0Y7QUFDbEYsV0FBS1ksUUFBTCxHQUFnQjZDLEtBQWhCO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBSzlDLElBQUwsR0FBWThDLEtBQVo7QUFDRDtBQUNGOztBQUVEQyxFQUFBQSxZQUFZLENBQUNsQixpQkFBRCxFQUFvQjtBQUM5QixVQUFNa0IsWUFBTixDQUFtQmxCLGlCQUFuQjtBQUVBLFVBQU1tQixtQkFBbUIsR0FBRyxLQUFLeEIsZUFBTCxFQUE1Qjs7QUFDQSxTQUFLLE1BQU15QixJQUFYLElBQW1CLEtBQUtDLFVBQXhCLEVBQW9DO0FBQ2xDLFVBQUlELElBQUksQ0FBQ0UsUUFBTCxLQUFrQixDQUF0QixFQUF5QjtBQUN2QixjQUFNQyxLQUFLLEdBQUdILElBQUksQ0FBQ0ksUUFBTCxDQUFjQyxXQUFkLE9BQWdDLE9BQWhDLEdBQTBDTCxJQUExQyxHQUFpREEsSUFBSSxDQUFDTSxhQUFMLENBQW1CLE9BQW5CLENBQS9EOztBQUNBLFlBQUlILEtBQUosRUFBVztBQUNULGVBQUt6QixNQUFMLEdBQWN5QixLQUFkO0FBQ0E7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsUUFBSSxLQUFLekIsTUFBVCxFQUFpQjtBQUNmcUIsTUFBQUEsbUJBQW1CLENBQUNRLE1BQXBCO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLaEQsU0FBVCxFQUFvQjtBQUNsQixhQUFPLGdCQUFQLEVBQXlCaUQsSUFBekIsQ0FDR0MsR0FBRCxJQUNHLEtBQUtDLElBQUwsR0FBWSxNQUFNO0FBQ2pCLGNBQU1BLElBQUksR0FBR0QsR0FBRyxDQUFDRSxPQUFqQjtBQUNBRCxRQUFBQSxJQUFJLENBQUMsS0FBS3JDLEtBQU4sQ0FBSjtBQUNBLGFBQUt1QyxPQUFMLEdBQWUsSUFBZjs7QUFDQSxhQUFLaEIsaUJBQUwsQ0FBdUJ2RCxXQUF2Qjs7QUFDQXdFLFFBQUFBLFVBQVUsQ0FBQyxNQUFNO0FBQ2YsZUFBS0QsT0FBTCxHQUFlLEtBQWY7O0FBQ0EsZUFBS2hCLGlCQUFMLENBQXVCeEQsY0FBdkI7QUFDRCxTQUhTLEVBR1AsSUFITyxDQUFWO0FBSUQsT0FYTDs7QUFhQSxXQUFLd0QsaUJBQUwsQ0FBdUJ4RCxjQUF2Qjs7QUFFQXlFLE1BQUFBLFVBQVUsQ0FBQyxNQUFNO0FBQ2YsY0FBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsVUFBTCxDQUFnQlQsYUFBaEIsQ0FBOEIscUJBQTlCLENBQXpCOztBQUNBLFlBQUksS0FBS3BCLFFBQVQsRUFBbUI7QUFDakIsZUFBS1gsZUFBTCxHQUF1QnlDLGdCQUF2QixDQUF3QyxPQUF4QyxFQUFrREMsQ0FBRCxJQUFPO0FBQ3REQSxZQUFBQSxDQUFDLENBQUNDLGNBQUY7QUFDQUQsWUFBQUEsQ0FBQyxDQUFDRSxlQUFGO0FBQ0FMLFlBQUFBLGdCQUFnQixDQUFDTSxLQUFqQjtBQUNELFdBSkQ7QUFLRDs7QUFDRE4sUUFBQUEsZ0JBQWdCLENBQUNFLGdCQUFqQixDQUFrQyxPQUFsQyxFQUE0Q0MsQ0FBRCxJQUFPO0FBQ2hEQSxVQUFBQSxDQUFDLENBQUNDLGNBQUY7QUFDQUQsVUFBQUEsQ0FBQyxDQUFDRSxlQUFGO0FBQ0EsZUFBS1QsSUFBTCxDQUFVLEtBQUtyQyxLQUFmO0FBQ0QsU0FKRDtBQUtELE9BZFMsRUFjUCxDQWRPLENBQVY7QUFlRCxLQS9CRCxNQStCTztBQUNMLFlBQU1nRCxhQUFhLEdBQUcsS0FBS04sVUFBTCxDQUFnQlQsYUFBaEIsQ0FBOEIsY0FBOUIsQ0FBdEI7O0FBQ0EsVUFBSWUsYUFBSixFQUFtQjtBQUNqQkEsUUFBQUEsYUFBYSxDQUFDTCxnQkFBZCxDQUErQixPQUEvQixFQUF3QyxLQUFLTSxZQUFMLENBQWtCQyxJQUFsQixDQUF1QixJQUF2QixDQUF4QztBQUNEO0FBQ0Y7O0FBRUQsU0FBS2hELGVBQUwsR0FBdUJpRCxFQUF2QixHQUE0QixLQUFLQyxHQUFqQztBQUNBLFNBQUtsRCxlQUFMLEdBQXVCeUMsZ0JBQXZCLENBQXdDLE9BQXhDLEVBQWlELEtBQUtVLFFBQUwsQ0FBY0gsSUFBZCxDQUFtQixJQUFuQixDQUFqRDtBQUNBLFNBQUtoRCxlQUFMLEdBQXVCeUMsZ0JBQXZCLENBQXdDLE9BQXhDLEVBQWlELEtBQUtXLFFBQUwsQ0FBY0osSUFBZCxDQUFtQixJQUFuQixDQUFqRDtBQUNBLFNBQUtoRCxlQUFMLEdBQXVCeUMsZ0JBQXZCLENBQXdDLFVBQXhDLEVBQW9ELEtBQUtZLFdBQUwsQ0FBaUJMLElBQWpCLENBQXNCLElBQXRCLENBQXBEO0FBQ0Q7O0FBRUQ1QixFQUFBQSxXQUFXLENBQUN0QixLQUFELEVBQVE7QUFDakIsVUFBTXNCLFdBQU4sQ0FBa0J0QixLQUFsQjs7QUFDQSxRQUFJLEtBQUt3RCxLQUFMLEtBQWUsSUFBZixJQUF1QixDQUFDLEtBQUszQyxRQUFqQyxFQUEyQztBQUN6QyxVQUFJLEtBQUtLLGFBQVQsRUFBd0I7QUFDdEIsWUFBSWxCLEtBQUssSUFBSSxJQUFULElBQWlCQSxLQUFLLENBQUNXLElBQU4sT0FBaUIsRUFBdEMsRUFBMEM7QUFDeEMsZ0JBQU02QyxLQUFLLEdBQUd4RCxLQUFLLENBQUN5RCxLQUFOLENBQVksS0FBS3ZDLGFBQWpCLENBQWQ7QUFDQSxlQUFLd0MsV0FBTCxDQUFpQkYsS0FBSyxJQUFJLElBQTFCLEVBQWlDLGlDQUFnQyxLQUFLdEMsYUFBYyxFQUFwRjtBQUNEO0FBQ0YsT0FMRCxNQUtPLElBQUksS0FBSzFCLEtBQUwsS0FBZSxRQUFmLElBQTJCUSxLQUFLLElBQUksSUFBcEMsS0FBNkMsT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsS0FBSyxDQUFDVyxJQUFOLE9BQWlCLEVBQTNGLENBQUosRUFBb0c7QUFDekcsY0FBTWdELE1BQU0sR0FBRzVFLE1BQU0sQ0FBQ2lCLEtBQUQsQ0FBTixDQUFjNEQsT0FBZCxFQUFmOztBQUNBLFlBQUlDLEtBQUssQ0FBQ0YsTUFBRCxDQUFULEVBQW1CO0FBQ2pCLGVBQUtELFdBQUwsQ0FBaUIsSUFBakIsRUFBd0IscUJBQXhCO0FBQ0QsU0FGRCxNQUVPLElBQUksS0FBSzVFLEdBQUwsSUFBWSxJQUFaLElBQW9CLEtBQUtBLEdBQUwsR0FBVzZFLE1BQW5DLEVBQTJDO0FBQ2hELGVBQUtELFdBQUwsQ0FBaUIsSUFBakIsRUFBd0IsY0FBYSxLQUFLNUUsR0FBSSxFQUE5QztBQUNELFNBRk0sTUFFQSxJQUFJLEtBQUtFLEdBQUwsSUFBWSxJQUFaLElBQW9CLEtBQUtBLEdBQUwsR0FBVzJFLE1BQW5DLEVBQTJDO0FBQ2hELGVBQUtELFdBQUwsQ0FBaUIsSUFBakIsRUFBd0IsY0FBYSxLQUFLMUUsR0FBSSxFQUE5QztBQUNELFNBRk0sTUFFQTtBQUNMLGVBQUswRSxXQUFMLENBQWlCLEtBQWpCO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBRURMLEVBQUFBLFFBQVEsQ0FBQ1QsQ0FBRCxFQUFJO0FBQ1YsU0FBS3RCLFdBQUwsQ0FBaUJzQixDQUFDLENBQUNrQixNQUFGLENBQVM5RCxLQUExQjtBQUNBLFNBQUtBLEtBQUwsR0FBYTRDLENBQUMsQ0FBQ2tCLE1BQUYsQ0FBUzlELEtBQXRCO0FBQ0FwQyxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sT0FBUCxFQUFnQixLQUFLb0MsS0FBckIsQ0FBbkI7QUFDRDs7QUFFRHVELEVBQUFBLFdBQVcsQ0FBQ1gsQ0FBRCxFQUFJO0FBQ2IsUUFBSSxLQUFLcEQsS0FBTCxLQUFlLFFBQW5CLEVBQTZCO0FBQzNCLFVBQUl1RSxHQUFKOztBQUNBLFVBQUluQixDQUFDLENBQUN6RSxJQUFGLEtBQVcsT0FBZixFQUF3QjtBQUN0QjRGLFFBQUFBLEdBQUcsR0FBR25CLENBQUMsQ0FBQ29CLGFBQUYsQ0FBZ0JDLE9BQWhCLENBQXdCLFlBQXhCLENBQU47QUFDRCxPQUZELE1BRU87QUFDTEYsUUFBQUEsR0FBRyxHQUFHM0YsTUFBTSxDQUFDOEYsWUFBUCxDQUFvQnRCLENBQUMsQ0FBQ3VCLE9BQXRCLENBQU47QUFDRDs7QUFFRCxVQUFJQyxLQUFLLEdBQUcsT0FBWjs7QUFDQSxVQUFJLEtBQUt0RixHQUFMLElBQVksSUFBWixJQUFvQixLQUFLQSxHQUFMLEdBQVcsQ0FBbkMsRUFBc0M7QUFDcENzRixRQUFBQSxLQUFLLEdBQUcsUUFBUjtBQUNEOztBQUNELFVBQUksQ0FBQ0EsS0FBSyxDQUFDQyxJQUFOLENBQVdOLEdBQVgsQ0FBTCxFQUFzQjtBQUNwQm5CLFFBQUFBLENBQUMsQ0FBQ0MsY0FBRjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRFMsRUFBQUEsUUFBUSxDQUFDVixDQUFELEVBQUk7QUFDVixRQUFJQSxDQUFDLENBQUN1QixPQUFGLEtBQWMsRUFBbEIsRUFBc0I7QUFDcEIsVUFBSSxDQUFDLEtBQUs5RSxRQUFWLEVBQW9CO0FBQ2xCLGNBQU1pRixJQUFJLEdBQUcsS0FBS0MsT0FBTCxDQUFhLE1BQWIsQ0FBYjs7QUFDQSxZQUFJRCxJQUFKLEVBQVU7QUFDUkEsVUFBQUEsSUFBSSxDQUFDRSxhQUFMLENBQW1CLElBQUlDLEtBQUosQ0FBVSxRQUFWLEVBQW9CO0FBQUVDLFlBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxZQUFBQSxVQUFVLEVBQUU7QUFBN0IsV0FBcEIsQ0FBbkI7QUFDRDtBQUNGOztBQUNEL0csTUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUIsS0FBS29DLEtBQXRCLENBQW5CO0FBQ0Q7QUFDRjs7QUFFYyxNQUFYNEUsV0FBVyxHQUFHO0FBQ2hCLFdBQU8sS0FBS3hGLFNBQUwsSUFBa0IsQ0FBQyxLQUFLZ0MsUUFBeEIsSUFBb0MsQ0FBQyxLQUFLUCxRQUExQyxJQUFzRCxDQUFDLEtBQUtoQyxPQUE1RCxJQUF1RSxLQUFLbUIsS0FBTCxJQUFjLElBQXJGLElBQTZGLEtBQUtBLEtBQUwsS0FBZSxFQUFuSDtBQUNEOztBQUVPLE1BQUo3QixJQUFJLENBQUM2QixLQUFELEVBQVE7QUFDZCxRQUFJLENBQUMsTUFBRCxFQUFTLFVBQVQsRUFBcUIsT0FBckIsRUFBOEIsUUFBOUIsRUFBd0MsUUFBeEMsRUFBa0QsS0FBbEQsRUFBeUQ2RSxRQUF6RCxDQUFrRTdFLEtBQWxFLENBQUosRUFBOEU7QUFDNUUsV0FBS1IsS0FBTCxHQUFhUSxLQUFiO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLUixLQUFMLEtBQWUsS0FBbkIsRUFBMEI7QUFDeEIsV0FBS0YsT0FBTCxHQUFlLGdDQUFmO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLRSxLQUFMLEtBQWUsT0FBbkIsRUFBNEI7QUFDMUIsV0FBS0YsT0FBTCxHQUNFLDJKQURGO0FBRUQ7O0FBRUQsUUFBSSxLQUFLRSxLQUFMLEtBQWUsUUFBZixJQUEyQixLQUFLZCxJQUFMLElBQWEsSUFBeEMsSUFBZ0QsS0FBS0MsUUFBTCxJQUFpQixJQUFyRSxFQUEyRTtBQUN6RSxXQUFLRCxJQUFMLEdBQVlULE9BQU8sQ0FBQ3lCLFdBQXBCO0FBQ0EsV0FBS04sU0FBTCxHQUFpQixJQUFqQjtBQUNEOztBQUVELFFBQUksS0FBS0ksS0FBTCxLQUFlLFVBQW5CLEVBQStCO0FBQzdCLFdBQUtkLElBQUwsR0FBWVQsT0FBTyxDQUFDeUIsV0FBcEI7QUFDRDtBQUNGOztBQUVPLE1BQUp2QixJQUFJLEdBQUc7QUFDVCxXQUFPLEtBQUtxQixLQUFaO0FBQ0Q7O0FBRUR5RCxFQUFBQSxZQUFZLEdBQUc7QUFDYnJGLElBQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxZQUFQLEVBQXFCLEtBQUtvQyxLQUExQixDQUFuQjtBQUNBcEMsSUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUIsS0FBS29DLEtBQXRCLENBQW5CO0FBQ0Q7O0FBRUQ4RSxFQUFBQSxtQkFBbUIsQ0FBQ2xDLENBQUQsRUFBSTtBQUNyQixRQUFJLEtBQUttQyxVQUFULEVBQXFCO0FBQ25CbkMsTUFBQUEsQ0FBQyxDQUFDQyxjQUFGO0FBQ0FELE1BQUFBLENBQUMsQ0FBQ0UsZUFBRjtBQUNBLFdBQUsvQyxhQUFMLEdBQXFCLENBQUMsS0FBS0EsYUFBM0I7QUFDQSxXQUFLUCxLQUFMLEdBQWEsS0FBS08sYUFBTCxHQUFxQixNQUFyQixHQUE4QixVQUEzQztBQUNEO0FBQ0Y7O0FBRWEsTUFBVmdGLFVBQVUsR0FBRztBQUNmLFdBQU8sQ0FBQyxLQUFLM0QsUUFBTixLQUFtQixLQUFLNUIsS0FBTCxLQUFlLFVBQWYsSUFBOEIsS0FBS0EsS0FBTCxLQUFlLE1BQWYsSUFBeUIsS0FBS08sYUFBL0UsQ0FBUDtBQUNEOztBQUVtQixNQUFoQmlGLGdCQUFnQixHQUFHO0FBQ3JCLFdBQU8sQ0FBQyxLQUFLNUQsUUFBTixJQUFrQixDQUFDLEtBQUtQLFFBQXhCLEtBQXFDLEtBQUsxQixTQUFMLElBQWtCLEtBQUtLLEtBQUwsS0FBZSxRQUFqQyxJQUE2QyxLQUFLTixTQUF2RixDQUFQO0FBQ0Q7O0FBRWUsTUFBWitGLFlBQVksR0FBRztBQUNqQixXQUFPLENBQUMsS0FBSzdELFFBQU4sSUFBa0IsS0FBS2xDLFNBQTlCO0FBQ0Q7O0FBRURnRyxFQUFBQSxLQUFLLEdBQUc7QUFDTixTQUFLOUUsS0FBTDtBQUNBLFNBQUtKLEtBQUwsR0FBYSxFQUFiO0FBQ0FwQyxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sT0FBUCxFQUFnQixLQUFLb0MsS0FBckIsQ0FBbkI7QUFDRDs7QUFFRG1GLEVBQUFBLGdCQUFnQixHQUFHO0FBQ2pCLFFBQUksS0FBS1AsV0FBVCxFQUFzQjtBQUNwQixhQUFPckgsSUFBSSx5RkFDeUNNLElBQUksQ0FBQyxnQkFBRCxDQUQ3QyxhQUM0RSxLQUFLcUgsS0FEakYscUJBQVg7QUFHRDs7QUFDRCxXQUFPLEVBQVA7QUFDRDs7QUFFREUsRUFBQUEsbUJBQW1CLEdBQUc7QUFDcEIsUUFBSSxLQUFLTCxVQUFULEVBQXFCO0FBQ25CLFlBQU12RCxLQUFLLEdBQUcsS0FBS3pCLGFBQUwsR0FBcUIsaUJBQXJCLEdBQXlDLGdCQUF2RDtBQUNBLFlBQU1pQixLQUFLLEdBQUcsS0FBS2pCLGFBQUwsR0FBcUIsTUFBckIsR0FBOEIsTUFBNUM7QUFDQSxhQUFPeEMsSUFBSSx1REFDc0JpRSxLQUR0QixZQUN1Q1IsS0FEdkMsYUFDeUQsS0FBSzhELG1CQUQ5RCxxQkFBWDtBQUdEOztBQUNELFdBQU8sRUFBUDtBQUNEOztBQUVnQixNQUFiTyxhQUFhLEdBQUc7QUFDbEIsV0FBTyxDQUFDLEtBQUt4RyxPQUFiO0FBQ0Q7O0FBRUR5RyxFQUFBQSxXQUFXLEdBQUc7QUFDWixRQUFJOUQsS0FBSyxHQUFHLElBQVo7O0FBQ0EsUUFBSyxDQUFDLEtBQUt1RCxVQUFOLElBQW9CLEtBQUtyRyxJQUExQixJQUFtQyxLQUFLQyxRQUE1QyxFQUFzRDtBQUNwRDZDLE1BQUFBLEtBQUssR0FBSSxDQUFDLEtBQUt1RCxVQUFOLElBQW9CLEtBQUtyRyxJQUExQixJQUFtQyxLQUFLQyxRQUFoRDtBQUNEOztBQUNELFFBQUksS0FBS0UsT0FBVCxFQUFrQjtBQUNoQjJDLE1BQUFBLEtBQUssR0FBRyxvQkFBUjtBQUNEOztBQUVELFFBQUlBLEtBQUosRUFBVztBQUNULFlBQU0rRCxPQUFPLEdBQUc7QUFDZCxvQkFBWSxJQURFO0FBRWQseUJBQWlCLEtBQUs1RyxRQUFMLElBQWlCLElBQWpCLElBQXlCLEtBQUtTLFNBRmpDO0FBR2Qsd0JBQWdCLEtBQUtpRyxhQUhQO0FBSWRHLFFBQUFBLE1BQU0sRUFBRSxLQUFLUCxZQUFMLElBQXFCLEtBQUsxQztBQUpwQixPQUFoQjtBQU9BLFlBQU1rRCxXQUFXLEdBQUc7QUFDbEI5SCxRQUFBQSxJQUFJLEVBQUUsS0FBS3FILGdCQURPO0FBRWxCbkcsUUFBQUEsT0FBTyxFQUFFLEtBQUtBO0FBRkksT0FBcEI7QUFJQSxVQUFJbUMsS0FBSyxHQUFHLEVBQVo7O0FBQ0EsVUFBSSxLQUFLeEIsS0FBTCxLQUFlLFFBQW5CLEVBQTZCO0FBQzNCd0IsUUFBQUEsS0FBSyxHQUFHbkQsSUFBSSxDQUFDLGlCQUFELENBQVo7QUFDRCxPQUZELE1BRU8sSUFBSSxLQUFLb0gsWUFBVCxFQUF1QjtBQUM1QmpFLFFBQUFBLEtBQUssR0FBR25ELElBQUksQ0FBQyxlQUFELENBQVo7QUFDQSxlQUFPTixJQUFJLGVBQWVGLFFBQVEsQ0FBQ2tJLE9BQUQsQ0FBdkIsK0VBQ2tFLEtBRGxFLHNCQUVXbEksUUFBUSxDQUFDb0ksV0FBRCxDQUZuQixZQUU0Q2pFLEtBRjVDLFlBRTZEUixLQUY3RCwySkFBWDtBQVNELE9BWE0sTUFXQSxJQUFJLEtBQUtLLFdBQVQsRUFBc0I7QUFDM0JMLFFBQUFBLEtBQUssR0FBRyxLQUFLSyxXQUFiO0FBQ0Q7O0FBQ0QsYUFBTzlELElBQUksZUFBZUYsUUFBUSxDQUFDa0ksT0FBRCxDQUF2QixzQkFDU2xJLFFBQVEsQ0FBQ29JLFdBQUQsQ0FEakIsWUFDMENqRSxLQUQxQyxZQUMyRFIsS0FEM0QscUJBQVg7QUFHRDs7QUFDRCxXQUFPLEVBQVA7QUFDRDs7QUFFRDBFLEVBQUFBLE1BQU0sR0FBRztBQUNQLFVBQU1ILE9BQU8sR0FBRztBQUNkLG1CQUFhLElBREM7QUFFZDlILE1BQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUZEO0FBR2RhLE1BQUFBLEtBQUssRUFBRSxLQUFLQSxLQUhFO0FBSWRFLE1BQUFBLE1BQU0sRUFBRSxLQUFLQSxNQUFMLElBQWdCLENBQUMsS0FBS0YsS0FBTixJQUFlLENBQUMsS0FBS0csS0FKL0I7QUFLZEEsTUFBQUEsS0FBSyxFQUFFLEtBQUtBLEtBTEU7QUFNZEMsTUFBQUEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLQSxJQUFQLElBQWUsQ0FBQyxLQUFLVSxTQU5iO0FBT2RBLE1BQUFBLFNBQVMsRUFBRSxLQUFLQSxTQVBGO0FBUWQsbUJBQWEsQ0FBQyxDQUFDLEtBQUtULFFBQVAsSUFBb0IsQ0FBQyxDQUFDLEtBQUtELElBQVAsSUFBZSxLQUFLVSxTQVJ2QztBQVNkRixNQUFBQSxTQUFTLEVBQUUsS0FBSytGLFlBVEY7QUFVZHZFLE1BQUFBLFFBQVEsRUFBRSxLQUFLQTtBQVZELEtBQWhCO0FBYUEsV0FBT25ELElBQUksZ0JBQ0tGLFFBQVEsQ0FBQ2tJLE9BQUQsQ0FEYixNQUVMLEtBQUtJLFdBQUwsRUFGSywwQkFLTCxLQUFLUixnQkFBTCxFQUxLLElBS3NCLEtBQUtHLFdBQUwsRUFMdEIsSUFLNEMsS0FBS0YsbUJBQUwsRUFMNUMsV0FPUCxLQUFLN0YsV0FBTCxJQUFvQixJQUFwQixHQUEyQmhDLElBQUksd0NBQXdDLEtBQUtnQyxXQUE3QyxVQUEvQixHQUFvRyxFQVA3RixHQUFYO0FBU0Q7O0FBaGVtRDtBQW1ldERxRyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLFVBQTdCLEVBQXlDN0gsT0FBekMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5cbmltcG9ydCB7IExpdEVsZW1lbnQsIGh0bWwsIGNzcyB9IGZyb20gJ2xpdC1lbGVtZW50JztcbmltcG9ydCB7IHNrZWxldG9uIH0gZnJvbSAnLi4vc3R5bGVzL3NrZWxldG9uJztcbmltcG9ydCB7IGlucHV0IH0gZnJvbSAnLi4vc3R5bGVzL2lucHV0JztcbmltcG9ydCB7IGxpbmsgfSBmcm9tICcuLi9zdHlsZXMvbGluayc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgJy4vZ3YtaWNvbic7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1wb3BvdmVyJztcbmltcG9ydCB7IGkxOG4gfSBmcm9tICcuLi9saWIvaTE4bic7XG5pbXBvcnQgeyBJbnB1dEVsZW1lbnQgfSBmcm9tICcuLi9taXhpbnMvaW5wdXQtZWxlbWVudCc7XG5pbXBvcnQgeyBzaGFwZUNsaXBib2FyZCwgc2hhcGVDb3BpZWQgfSBmcm9tICcuLi9zdHlsZXMvc2hhcGVzJztcblxuLyoqXG4gKlxuICogIyMgRGV0YWlsc1xuICogKiBoYXMgQHRoZW1lIGZhY2V0XG4gKlxuICogQGZpcmVzIGd2LWlucHV0OmlucHV0IC0gbWlycm9ycyBuYXRpdmUgaW5wdXQgZXZlbnRzIHdpdGggdGhlIGB2YWx1ZWAgb24gYGRldGFpbGBcbiAqIEBmaXJlcyBndi1pbnB1dDpjbGVhciAtIGV2ZW50IHdoZW4gdXNlciBjbGVhciBhIGNsZWFyYWJsZSBpbnB1dFxuICpcbiAqIEBhdHRyIHtCb29sZWFufSBkaXNhYmxlZCAtIHNhbWUgYXMgbmF0aXZlIGlucHV0IGVsZW1lbnQgYGRpc2FibGVkYCBhdHRyaWJ1dGVcbiAqIEBhdHRyIHtCb29sZWFufSByZXF1aXJlZCAtIHNhbWUgYXMgbmF0aXZlIGlucHV0IGVsZW1lbnQgYHJlcXVpcmVkYCBhdHRyaWJ1dGVcbiAqIEBhdHRyIHtCb29sZWFufSBza2VsZXRvbiAtIGVuYWJsZSBza2VsZXRvbiBzY3JlZW4gVUkgcGF0dGVybiAobG9hZGluZyBoaW50KVxuICogQGF0dHIge1N0cmluZ30gdmFsdWUgLSB0aGUgdmFsdWUgb2YgdGhlIGlucHV0XG4gKiBAYXR0ciB7U3RyaW5nfSBsYWJlbCAtIGxhYmVsIG9mIHRoZSBpbnB1dFxuICogQGF0dHIge1N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgaW5wdXRcbiAqIEBhdHRyIHtTdHJpbmd9IG5hbWUgLSBuYW1lIG9mIHRoZSBpbnB1dFxuICogQGF0dHIge1N0cmluZ30gcGxhY2Vob2xkZXIgLSBhbiBleGFtcGxlIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGlucHV0IHdoZW4gZW1wdHlcbiAqIEBhdHRyIHtTdHJpbmd9IGRlc2NyaXB0aW9uIC0gYSBkZXNjcmlwdGlvblxuICogQGF0dHIge1N0cmluZ30gdHlwZSAtIHR5cGUgb2YgdGhlIGlucHV0LCBjYW4gYmUgdGV4dCAoRGVmYXVsdCksIHBhc3N3b3JkLCBlbWFpbCwgc2VhcmNoLCBudW1iZXIsIHVybC5cbiAqIEBhdHRyIHtCb29sZWFufSBjbGlwYm9hcmQgLSBmb3IgcmVhZG9ubHkgaW5wdXQgd2l0aCBjbGlwYm9hcmRcbiAqIEBhdHRyIHtCb29sZWFufSBsYXJnZSAtIGZvciBhIGxhcmdlIGlucHV0XG4gKiBAYXR0ciB7Qm9vbGVhbn0gbWVkaXVtIC0gZm9yIGEgbWVkaXVtIGlucHV0IChEZWZhdWx0KVxuICogQGF0dHIge0Jvb2xlYW59IHNtYWxsIC0gZm9yIGEgc21hbGwgaW5wdXRcbiAqIEBhdHRyIHtTdHJpbmd9IGljb24gLSBpY29uIG9mIHRoZSBpbnB1dFxuICogQGF0dHIge1N0cmluZ30gaWNvbi1sZWZ0IC0gaWNvbiBvZiB0aGUgaW5wdXQgdG8gZGlzcGxheSBhdCBsZWZ0XG4gKiBAYXR0ciB7Qm9vbGVhbn0gdmFsaWQgLSBpZiB2YWx1ZSBpcyB2YWxpZFxuICogQGF0dHIge0Jvb2xlYW59IGludmFsaWQgLSBpZiB2YWx1ZSBpcyBpbnZhbGlkXG4gKiBAYXR0ciB7Qm9vbGVhbn0gW2xvYWRpbmc9ZmFsc2VdIC0gdHJ1ZSB0byBkaXNwbGF5IGEgbG9hZGluZyBpY29uXG4gKiBAYXR0ciB7Qm9vbGVhbn0gW2F1dG9mb2N1cz1mYWxzZV0gLSB0cnVlIHRvIHB1dCB0aGUgZm9jdXMgb24gdGhlIGlucHV0XG4gKiBAYXR0ciB7Qm9vbGVhbn0gW3JlYWRvbmx5PWZhbHNlXSAtIHRydWUgaWYgZmllbGQgaXMgcmVhZG9ubHkgbW9kZVxuICogQGF0dHIge1N0cmluZ30gW2F1dG9jb21wbGV0ZT0nb2ZmJ10gLSBzdGFuZGFyZCBhdXRvY29tcGxldGUgYXR0cmlidXRlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gW2NsaWNrYWJsZT1mYWxzZV0gLSBJZiB0cnVlLCBpY29uIGhhcyBsaW5rIHN0eWxlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gW2NsZWFyYWJsZT1mYWxzZV0gLSBJZiB0cnVlLCBpbnB1dCBjYW4gYmUgY2xlYXIgd2l0aCBidXR0b25cbiAqIEBhdHRyIHtCb29sZWFufSBbbm8tc3VibWl0PWZhbHNlXSAtIElmIHRydWUsIGlucHV0IGNhbm5vdCBkaXNwYXRjaCBuYXRpdmUgc3VibWl0IGV2ZW50IG9uIGVudGVyIGtleSBwcmVzcyB0byBjbG9zZXN0IGZvcm1cbiAqIEBhdHRyIHtTdHJpbmd9IFtwYXR0ZXJuPW51bGxdIC0gUGF0dGVybiBmb3IgaW5wdXQgdmFsaWRhdGlvbi4gSWYgdHlwZSBpcyB1cmwsIGRlZmF1bHQgcGF0dGVybiBpcyBeKGh0dHB8aHR0cHMpOi8vXG4gKlxuICogQGNzc3Byb3Age1N0cmluZ30gWy0tZ3YtaW5wdXQtLWJkYz12YXIoLS1ndi10aGVtZS1uZXV0cmFsLWNvbG9yLCAjRjVGNUY1KV0gLSBCb3JkZXIgY29sb3JcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtaW5wdXQtLWJkcz1zb2xpZF0gLSBCb3JkZXIgc3R5bGVcbiAqIEBjc3Nwcm9wIHtDb2xvcn0gWy0tZ3YtaW5wdXQtaWNvbi0tYmdjPXZhcigtLWd2LXRoZW1lLW5ldXRyYWwtY29sb3IsICNGNUY1RjUpXSAtIEljb24gYmFja2dyb3VuZCBjb2xvclxuICovXG5leHBvcnQgY2xhc3MgR3ZJbnB1dCBleHRlbmRzIElucHV0RWxlbWVudChMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIucHJvcGVydGllcyxcbiAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBsYXJnZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBtZWRpdW06IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgc21hbGw6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgaWNvbjogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGljb25MZWZ0OiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnaWNvbi1sZWZ0JyB9LFxuICAgICAgbG9hZGluZzogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBtaW46IHsgdHlwZTogTnVtYmVyIH0sXG4gICAgICBtYXg6IHsgdHlwZTogTnVtYmVyIH0sXG4gICAgICBhdXRvY29tcGxldGU6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBjbGlwYm9hcmQ6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgY2xpY2thYmxlOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIGNsZWFyYWJsZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBub1N1Ym1pdDogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICduby1zdWJtaXQnIH0sXG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBfdHlwZTogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnN1cGVyLnN0eWxlcyxcbiAgICAgIHNrZWxldG9uLFxuICAgICAgaW5wdXQsXG4gICAgICBsaW5rLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIC5jbGlja2FibGUgaW5wdXQsXG4gICAgICAgIC5jbGlja2FibGUgOjpzbG90dGVkKGlucHV0KSB7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNsaWNrYWJsZSBpbnB1dDpob3ZlcixcbiAgICAgICAgLmNsaWNrYWJsZSA6OnNsb3R0ZWQoaW5wdXQ6aG92ZXIpIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggdmFyKC0tZ3YtdGhlbWUtbmV1dHJhbC1jb2xvci1kYXJrLCAjYmZiZmJmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWljb24ge1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMjJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gtaWNvbi5jb3BpZWQgZ3YtaWNvbiB7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiAjMzM5OTAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZGl2LmJveC1pY29uIGd2LWljb24ubG9hZGluZyxcbiAgICAgICAgLmxvYWRpbmcgOjpzbG90dGVkKGlucHV0KSB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBzcGlubmVyIDEuNnMgbGluZWFyIGluZmluaXRlO1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sb2FkaW5nLnNtYWxsIGd2LWljb24ge1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMThweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBrZXlmcmFtZXMgc3Bpbm5lciB7XG4gICAgICAgICAgdG8ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY2xpcGJvYXJkIGlucHV0LFxuICAgICAgICAuY2xpcGJvYXJkIDo6c2xvdHRlZChpbnB1dCkge1xuICAgICAgICAgIGN1cnNvcjogY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jbGlwYm9hcmQgaW5wdXQ6cmVhZC1vbmx5OmhvdmVyLFxuICAgICAgICAuY2xpcGJvYXJkIDo6c2xvdHRlZChpbnB1dDpyZWFkLW9ubHk6aG92ZXIpIHtcbiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNsaXBib2FyZF9fcG9wb3ZlciB7XG4gICAgICAgICAgLS1ndi1wb3BvdmVyLS1iZ2M6IHZhcigtLWd2LXRoZW1lLWNvbG9yLWRhcmtlciwgIzM4M2UzZik7XG4gICAgICAgICAgLS1ndi1wb3BvdmVyLS1jOiB2YXIoLS1ndi10aGVtZS1mb250LWNvbG9yLWxpZ2h0LCAjZmZmZmZmKTtcbiAgICAgICAgICAtLWd2LXBvcG92ZXItLXA6IDByZW0gMC40cmVtIDByZW0gMC4ycmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jbGlwYm9hcmRfX3BvcG92ZXItY29udGVudCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIC0tZ3YtaWNvbi0tYzogdmFyKC0tZ3YtdGhlbWUtZm9udC1jb2xvci1saWdodCwgI2ZmZmZmZik7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hhcGVTZWFyY2goKSB7XG4gICAgcmV0dXJuICdnZW5lcmFsOnNlYXJjaCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYXBlQ2xlYXIoKSB7XG4gICAgcmV0dXJuICdjb2RlOmVycm9yJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hhcGVJbnZpc2libGUoKSB7XG4gICAgcmV0dXJuICdnZW5lcmFsOmludmlzaWJsZSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYXBlVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gJ2dlbmVyYWw6dmlzaWJsZSc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3R5cGUgPSAndGV4dCc7XG4gICAgdGhpcy5fc2hvd1Bhc3N3b3JkID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gJ29mZic7XG4gICAgdGhpcy5ub1N1Ym1pdCA9IGZhbHNlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkuYmx1cigpO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5mb2N1cygpO1xuICB9XG5cbiAgZ2V0SW5wdXRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dCB8fCBzdXBlci5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgfVxuXG4gIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdfdHlwZScpKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnR5cGUgPSB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2F1dG9jb21wbGV0ZScpKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmF1dG9jb21wbGV0ZSA9IHRoaXMuYXV0b2NvbXBsZXRlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25hbWUnKSAmJiB0aGlzLm5hbWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5uYW1lID0gdGhpcy5uYW1lO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3JlcXVpcmVkJykpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkucmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkO1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKVsnYXJpYS1yZXF1aXJlZCddID0gISF0aGlzLnJlcXVpcmVkO1xuICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCB8fCB0aGlzLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xhYmVsJykgfHwgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd0aXRsZScpKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IHRoaXMudGl0bGUgfHwgdGhpcy5sYWJlbDtcbiAgICAgIGlmICh0aXRsZSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkudGl0bGUgPSB0aXRsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsYWJlbCcpICYmIHRoaXMubGFiZWwpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KClbJ2FyaWEtbGFiZWwnXSA9IHRoaXMubGFiZWw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncGF0dGVybicpKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLnBhdHRlcm4gPSB0aGlzLnBhdHRlcm47XG4gICAgICB0aGlzLl9yZWdleFBhdHRlcm4gPSBuZXcgUmVnRXhwKHRoaXMucGF0dGVybik7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NrZWxldG9uJykpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IHRoaXMuc2tlbGV0b247XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncGxhY2Vob2xkZXInKSAmJiB0aGlzLnBsYWNlaG9sZGVyICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdtaW4nKSAmJiB0aGlzLm1pbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLm1pbiA9IHRoaXMubWluO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ21heCcpICYmIHRoaXMubWF4ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkubWF4ID0gdGhpcy5tYXg7XG4gICAgfVxuICB9XG5cbiAgX3NldENsaXBib2FyZEljb24oc2hhcGUpIHtcbiAgICBpZiAodGhpcy5pY29uICE9IG51bGwgJiYgdGhpcy5pY29uICE9PSBzaGFwZUNvcGllZCAmJiB0aGlzLmljb24gIT09IHNoYXBlQ2xpcGJvYXJkKSB7XG4gICAgICB0aGlzLmljb25MZWZ0ID0gc2hhcGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWNvbiA9IHNoYXBlO1xuICAgIH1cbiAgfVxuXG4gIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBkZWZhdWx0SW5wdXRFbGVtZW50ID0gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyA/IG5vZGUgOiBub2RlLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIHRoaXMuX2lucHV0ID0gY2hpbGQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBkZWZhdWx0SW5wdXRFbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaXBib2FyZCkge1xuICAgICAgaW1wb3J0KCdjbGlwYm9hcmQtY29weScpLnRoZW4oXG4gICAgICAgIChtb2QpID0+XG4gICAgICAgICAgKHRoaXMuY29weSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHkgPSBtb2QuZGVmYXVsdDtcbiAgICAgICAgICAgIGNvcHkodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9jb3BpZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2xpcGJvYXJkSWNvbihzaGFwZUNvcGllZCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fY29waWVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuX3NldENsaXBib2FyZEljb24oc2hhcGVDbGlwYm9hcmQpO1xuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdGhpcy5fc2V0Q2xpcGJvYXJkSWNvbihzaGFwZUNsaXBib2FyZCk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjbGlwYm9hcmRQb3BvdmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5jbGlwYm9hcmRfX3BvcG92ZXInKTtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBjbGlwYm9hcmRQb3BvdmVyLmNsaWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2xpcGJvYXJkUG9wb3Zlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5jb3B5KHRoaXMudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbGlja2FibGVJY29uID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LWljb24ubGluaycpO1xuICAgICAgaWYgKGNsaWNrYWJsZUljb24pIHtcbiAgICAgICAgY2xpY2thYmxlSWNvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX29uSWNvbkNsaWNrLmJpbmQodGhpcykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkuaWQgPSB0aGlzLl9pZDtcbiAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fb25LZXlVcC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmdldElucHV0RWxlbWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgdGhpcy5fb25LZXlQcmVzcy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHZhbHVlKSB7XG4gICAgc3VwZXIudXBkYXRlU3RhdGUodmFsdWUpO1xuICAgIGlmICh0aGlzLnZhbGlkID09PSB0cnVlICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICBpZiAodGhpcy5fcmVnZXhQYXR0ZXJuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgICBjb25zdCB2YWxpZCA9IHZhbHVlLm1hdGNoKHRoaXMuX3JlZ2V4UGF0dGVybik7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGl0eSh2YWxpZCA9PSBudWxsLCBgZmllbGQgbm90IHJlc3BlY3QgdGhlIHBhdHRlcm4gJHt0aGlzLl9yZWdleFBhdHRlcm59YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT0gbnVsbCAmJiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB2YWx1ZS50cmltKCkgIT09ICcnKSkge1xuICAgICAgICBjb25zdCBfdmFsdWUgPSBOdW1iZXIodmFsdWUpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKGlzTmFOKF92YWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkaXR5KHRydWUsIGBmaWVsZCBpcyBub3QgbnVtYmVyYCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLm1pbiA+IF92YWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsaWRpdHkodHJ1ZSwgYGZpZWxkIGlzIDwgJHt0aGlzLm1pbn1gKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPSBudWxsICYmIHRoaXMubWF4IDwgX3ZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGl0eSh0cnVlLCBgZmllbGQgaXMgPiAke3RoaXMubWF4fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0VmFsaWRpdHkoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX29uSW5wdXQoZSkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoZS50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMudmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdpbnB1dCcsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX29uS2V5UHJlc3MoZSkge1xuICAgIGlmICh0aGlzLl90eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgbGV0IGtleTtcbiAgICAgIGlmIChlLnR5cGUgPT09ICdwYXN0ZScpIHtcbiAgICAgICAga2V5ID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlZ2V4ID0gL1swLTldLztcbiAgICAgIGlmICh0aGlzLm1pbiA9PSBudWxsIHx8IHRoaXMubWluIDwgMCkge1xuICAgICAgICByZWdleCA9IC9bMC05LV0vO1xuICAgICAgfVxuICAgICAgaWYgKCFyZWdleC50ZXN0KGtleSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vbktleVVwKGUpIHtcbiAgICBpZiAoZS5rZXlDb2RlID09PSAxMykge1xuICAgICAgaWYgKCF0aGlzLm5vU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICBmb3JtLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzdWJtaXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzdWJtaXQnLCB0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNDbGVhcmFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xlYXJhYmxlICYmICF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLmxvYWRpbmcgJiYgdGhpcy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnO1xuICB9XG5cbiAgc2V0IHR5cGUodmFsdWUpIHtcbiAgICBpZiAoWyd0ZXh0JywgJ3Bhc3N3b3JkJywgJ2VtYWlsJywgJ3NlYXJjaCcsICdudW1iZXInLCAndXJsJ10uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSAndXJsJykge1xuICAgICAgdGhpcy5wYXR0ZXJuID0gJyhodHRwcz86Ly8udyopKDpcXFxcZCopP1xcXFwvPyguKiknO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90eXBlID09PSAnZW1haWwnKSB7XG4gICAgICB0aGlzLnBhdHRlcm4gPVxuICAgICAgICAvXigoW148PigpXFxcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3NlYXJjaCcgJiYgdGhpcy5pY29uID09IG51bGwgJiYgdGhpcy5pY29uTGVmdCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmljb24gPSBHdklucHV0LnNoYXBlU2VhcmNoO1xuICAgICAgdGhpcy5jbGVhcmFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLmljb24gPSBHdklucHV0LnNoYXBlU2VhcmNoO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgX29uSWNvbkNsaWNrKCkge1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2ljb24tY2xpY2snLCB0aGlzLnZhbHVlKTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzdWJtaXQnLCB0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIF9vbkljb25WaXNpYmxlQ2xpY2soZSkge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLl9zaG93UGFzc3dvcmQgPSAhdGhpcy5fc2hvd1Bhc3N3b3JkO1xuICAgICAgdGhpcy5fdHlwZSA9IHRoaXMuX3Nob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzUGFzc3dvcmQoKSB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmICh0aGlzLl90eXBlID09PSAncGFzc3dvcmQnIHx8ICh0aGlzLl90eXBlID09PSAndGV4dCcgJiYgdGhpcy5fc2hvd1Bhc3N3b3JkKSk7XG4gIH1cblxuICBnZXQgaGFzQ2xpY2thYmxlSWNvbigpIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiYgKHRoaXMuY2xpY2thYmxlIHx8IHRoaXMuX3R5cGUgPT09ICdzZWFyY2gnIHx8IHRoaXMuY2xpcGJvYXJkKTtcbiAgfVxuXG4gIGdldCBoYXNDbGlwYm9hcmQoKSB7XG4gICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpcGJvYXJkO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5mb2N1cygpO1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjbGVhcicsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX3JlbmRlckNsZWFySWNvbigpIHtcbiAgICBpZiAodGhpcy5pc0NsZWFyYWJsZSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImJveC1pY29uIGJveC1pY29uLWNsZWFyXCI+XG4gICAgICAgIDxndi1pY29uIGNsYXNzPVwibGlua1wiIHNoYXBlPVwiY29kZTplcnJvclwiIHRpdGxlPVwiJHtpMThuKCdndi1pbnB1dC5jbGVhcicpfVwiIEBjbGljaz1cIiR7dGhpcy5jbGVhcn1cIj48L2d2LWljb24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBfcmVuZGVyUGFzc3dvcmRJY29uKCkge1xuICAgIGlmICh0aGlzLmlzUGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fc2hvd1Bhc3N3b3JkID8gJ2dlbmVyYWw6dmlzaWJsZScgOiAnZ2VuZXJhbDpoaWRkZW4nO1xuICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLl9zaG93UGFzc3dvcmQgPyAnU2hvdycgOiAnSGlkZSc7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiYm94LWljb25cIj5cbiAgICAgICAgPGd2LWljb24gY2xhc3M9XCJsaW5rXCIgc2hhcGU9XCIke3NoYXBlfVwiIHRpdGxlPVwiJHt0aXRsZX1cIiBAY2xpY2s9XCIke3RoaXMuX29uSWNvblZpc2libGVDbGlja31cIj48L2d2LWljb24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXQgaGFzQmFja2dyb3VuZCgpIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZztcbiAgfVxuXG4gIF9yZW5kZXJJY29uKCkge1xuICAgIGxldCBzaGFwZSA9IG51bGw7XG4gICAgaWYgKCghdGhpcy5pc1Bhc3N3b3JkICYmIHRoaXMuaWNvbikgfHwgdGhpcy5pY29uTGVmdCkge1xuICAgICAgc2hhcGUgPSAoIXRoaXMuaXNQYXNzd29yZCAmJiB0aGlzLmljb24pIHx8IHRoaXMuaWNvbkxlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHNoYXBlID0gJ25hdmlnYXRpb246d2FpdGluZyc7XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlKSB7XG4gICAgICBjb25zdCBjbGFzc2VzID0ge1xuICAgICAgICAnYm94LWljb24nOiB0cnVlLFxuICAgICAgICAnYm94LWljb24tbGVmdCc6IHRoaXMuaWNvbkxlZnQgIT0gbnVsbCB8fCB0aGlzLmNsZWFyYWJsZSxcbiAgICAgICAgJ2JveC1pY29uLWJnYyc6IHRoaXMuaGFzQmFja2dyb3VuZCxcbiAgICAgICAgY29waWVkOiB0aGlzLmhhc0NsaXBib2FyZCAmJiB0aGlzLl9jb3BpZWQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpY29uQ2xhc3NlcyA9IHtcbiAgICAgICAgbGluazogdGhpcy5oYXNDbGlja2FibGVJY29uLFxuICAgICAgICBsb2FkaW5nOiB0aGlzLmxvYWRpbmcsXG4gICAgICB9O1xuICAgICAgbGV0IHRpdGxlID0gJyc7XG4gICAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3NlYXJjaCcpIHtcbiAgICAgICAgdGl0bGUgPSBpMThuKCdndi1pbnB1dC5zZWFyY2gnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNDbGlwYm9hcmQpIHtcbiAgICAgICAgdGl0bGUgPSBpMThuKCdndi1pbnB1dC5jb3B5Jyk7XG4gICAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKGNsYXNzZXMpfVwiPlxuICAgICAgICAgIDxndi1wb3BvdmVyIGNsYXNzPVwiY2xpcGJvYXJkX19wb3BvdmVyXCIgZXZlbnQ9XCJjbGlja1wiIGRlbGF5PVwiNzUwXCIgLmFycm93PVwiJHtmYWxzZX1cIj5cbiAgICAgICAgICAgIDxndi1pY29uIGNsYXNzPVwiJHtjbGFzc01hcChpY29uQ2xhc3Nlcyl9XCIgc2hhcGU9XCIke3NoYXBlfVwiIHRpdGxlPVwiJHt0aXRsZX1cIj48L2d2LWljb24+XG4gICAgICAgICAgICA8ZGl2IHNsb3Q9XCJwb3BvdmVyXCIgY2xhc3M9XCJjbGlwYm9hcmRfX3BvcG92ZXItY29udGVudFwiPlxuICAgICAgICAgICAgICA8Z3YtaWNvbiBzaGFwZT1cImNvZGU6Y2hlY2tcIj48L2d2LWljb24+XG4gICAgICAgICAgICAgIDxkaXY+Q29waWVkPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2d2LXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PmA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgdGl0bGUgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+XG4gICAgICAgIDxndi1pY29uIGNsYXNzPVwiJHtjbGFzc01hcChpY29uQ2xhc3Nlcyl9XCIgc2hhcGU9XCIke3NoYXBlfVwiIHRpdGxlPVwiJHt0aXRsZX1cIj48L2d2LWljb24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICdib3gtaW5wdXQnOiB0cnVlLFxuICAgICAgc2tlbGV0b246IHRoaXMuc2tlbGV0b24sXG4gICAgICBsYXJnZTogdGhpcy5sYXJnZSxcbiAgICAgIG1lZGl1bTogdGhpcy5tZWRpdW0gfHwgKCF0aGlzLmxhcmdlICYmICF0aGlzLnNtYWxsKSxcbiAgICAgIHNtYWxsOiB0aGlzLnNtYWxsLFxuICAgICAgaWNvbjogISF0aGlzLmljb24gJiYgIXRoaXMuY2xlYXJhYmxlLFxuICAgICAgY2xlYXJhYmxlOiB0aGlzLmNsZWFyYWJsZSxcbiAgICAgICdpY29uLWxlZnQnOiAhIXRoaXMuaWNvbkxlZnQgfHwgKCEhdGhpcy5pY29uICYmIHRoaXMuY2xlYXJhYmxlKSxcbiAgICAgIGNsaXBib2FyZDogdGhpcy5oYXNDbGlwYm9hcmQsXG4gICAgICByZXF1aXJlZDogdGhpcy5yZXF1aXJlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckxhYmVsKCl9XG4gICAgICAgIDxpbnB1dCAvPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyQ2xlYXJJY29uKCl9ICR7dGhpcy5fcmVuZGVySWNvbigpfSAke3RoaXMuX3JlbmRlclBhc3N3b3JkSWNvbigpfVxuICAgICAgPC9kaXY+XG4gICAgICAke3RoaXMuZGVzY3JpcHRpb24gIT0gbnVsbCA/IGh0bWxgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgLmlubmVySFRNTD1cIiR7dGhpcy5kZXNjcmlwdGlvbn1cIj48L2Rpdj5gIDogJyd9XG4gICAgYDtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1pbnB1dCcsIEd2SW5wdXQpO1xuIl19
@@ -16,4 +16,7 @@
16
16
  export function isCodemirror(control) {
17
17
  return control['x-schema-form'] && control['x-schema-form'].type === 'codemirror';
18
18
  }
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2xpYi9zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJpc0NvZGVtaXJyb3IiLCJjb250cm9sIiwidHlwZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQSxZQUFULENBQXNCQyxPQUF0QixFQUErQjtBQUNwQyxTQUFPQSxPQUFPLENBQUMsZUFBRCxDQUFQLElBQTRCQSxPQUFPLENBQUMsZUFBRCxDQUFQLENBQXlCQyxJQUF6QixLQUFrQyxZQUFyRTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvZGVtaXJyb3IoY29udHJvbCkge1xuICByZXR1cm4gY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlID09PSAnY29kZW1pcnJvcic7XG59XG4iXX0=
19
+ export function isObject(control) {
20
+ return control.type === 'object';
21
+ }
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL2xpYi9zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJpc0NvZGVtaXJyb3IiLCJjb250cm9sIiwidHlwZSIsImlzT2JqZWN0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNBLFlBQVQsQ0FBc0JDLE9BQXRCLEVBQStCO0FBQ3BDLFNBQU9BLE9BQU8sQ0FBQyxlQUFELENBQVAsSUFBNEJBLE9BQU8sQ0FBQyxlQUFELENBQVAsQ0FBeUJDLElBQXpCLEtBQWtDLFlBQXJFO0FBQ0Q7QUFFRCxPQUFPLFNBQVNDLFFBQVQsQ0FBa0JGLE9BQWxCLEVBQTJCO0FBQ2hDLFNBQU9BLE9BQU8sQ0FBQ0MsSUFBUixLQUFpQixRQUF4QjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvZGVtaXJyb3IoY29udHJvbCkge1xuICByZXR1cm4gY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlID09PSAnY29kZW1pcnJvcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChjb250cm9sKSB7XG4gIHJldHVybiBjb250cm9sLnR5cGUgPT09ICdvYmplY3QnO1xufVxuIl19
@@ -60,7 +60,7 @@ export class GvExpandable extends LitElement {
60
60
 
61
61
  static get styles() {
62
62
  return [link, // language=CSS
63
- css`:host{box-sizing:border-box}.box{padding:.2rem;line-height:23px;border-bottom:var(--gv-expandable--bdb,thin solid var(--gv-theme-color,#5a7684))}:host([open]) .details{visibility:visible;opacity:1;height:auto}.details{display:block;overflow:hidden;opacity:0;visibility:hidden;transition:all 150ms ease-in-out;height:0}.summary{display:flex;flex-direction:row;align-content:center;justify-content:space-between}.expand{align-self:center;margin-left:5px;--gv-icon--s:16px}`];
63
+ css`:host{box-sizing:border-box}.box{padding:.2rem;line-height:23px;border-bottom:var(--gv-expandable--bdb,thin solid var(--gv-theme-color,#5a7684))}:host([open]) .details{visibility:visible;opacity:1;height:auto;overflow:visible}.details{display:block;overflow:hidden;opacity:0;visibility:hidden;transition:all 150ms ease-in-out;height:0}.summary{display:flex;flex-direction:row;align-content:center;justify-content:space-between}.expand{align-self:center;margin-left:5px;--gv-icon--s:16px}`];
64
64
  }
65
65
 
66
66
  _onClick(event) {
@@ -91,4 +91,4 @@ export class GvExpandable extends LitElement {
91
91
 
92
92
  }
93
93
  window.customElements.define('gv-expandable', GvExpandable);
94
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1leHBhbmRhYmxlLmpzIl0sIm5hbWVzIjpbImNzcyIsImh0bWwiLCJMaXRFbGVtZW50IiwibGluayIsImNsYXNzTWFwIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkd2RXhwYW5kYWJsZSIsImNvbnN0cnVjdG9yIiwib3BlbiIsImljb24iLCJpY29uT3BlbmVkIiwiY2xpY2thYmxlIiwicHJvcGVydGllcyIsInR5cGUiLCJCb29sZWFuIiwicmVmbGVjdCIsIlN0cmluZyIsImF0dHJpYnV0ZSIsInN0eWxlcyIsIl9vbkNsaWNrIiwiZXZlbnQiLCJzdW1tYXJ5Iiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250YWlucyIsInRhcmdldCIsInNsb3QiLCJyZW5kZXIiLCJib3giLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxJQUFkLEVBQW9CQyxVQUFwQixRQUFzQyxhQUF0QztBQUNBLFNBQVNDLElBQVQsUUFBcUIsZ0JBQXJCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwrQkFBekI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFlBQU4sU0FBMkJKLFVBQTNCLENBQXNDO0FBQzNDSyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLHVCQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQix1QkFBbEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLEtBQWpCO0FBQ0Q7O0FBRW9CLGFBQVZDLFVBQVUsR0FBRztBQUN0QixXQUFPO0FBQ0xKLE1BQUFBLElBQUksRUFBRTtBQUFFSyxRQUFBQSxJQUFJLEVBQUVDLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUREO0FBRUxOLE1BQUFBLElBQUksRUFBRTtBQUFFSSxRQUFBQSxJQUFJLEVBQUVHO0FBQVIsT0FGRDtBQUdMTixNQUFBQSxVQUFVLEVBQUU7QUFBRUcsUUFBQUEsSUFBSSxFQUFFRyxNQUFSO0FBQWdCQyxRQUFBQSxTQUFTLEVBQUU7QUFBM0IsT0FIUDtBQUlMTixNQUFBQSxTQUFTLEVBQUU7QUFBRUUsUUFBQUEsSUFBSSxFQUFFQztBQUFSO0FBSk4sS0FBUDtBQU1EOztBQUVnQixhQUFOSSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMZixJQURLLEVBRUw7QUFDQUgsSUFBQUEsR0FBRyx3ZEFIRSxDQUFQO0FBMkNEOztBQUVEbUIsRUFBQUEsUUFBUSxDQUFDQyxLQUFELEVBQVE7QUFDZCxRQUFJLENBQUMsS0FBS1QsU0FBVixFQUFxQjtBQUNuQixZQUFNVSxPQUFPLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsVUFBOUIsQ0FBaEI7O0FBQ0EsVUFBSSxDQUFDRixPQUFPLENBQUNHLFFBQVIsQ0FBaUJKLEtBQUssQ0FBQ0ssTUFBdkIsQ0FBRCxJQUFtQ0wsS0FBSyxDQUFDSyxNQUFOLENBQWFDLElBQWIsS0FBc0IsU0FBN0QsRUFBd0U7QUFDdEU7QUFDRDtBQUNGOztBQUNELFNBQUtsQixJQUFMLEdBQVksQ0FBQyxLQUFLQSxJQUFsQjtBQUNBSCxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sUUFBUCxFQUFpQjtBQUFFRyxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFBYixLQUFqQixDQUFuQjtBQUNEOztBQUVEbUIsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsVUFBTWxCLElBQUksR0FBRyxLQUFLRCxJQUFMLEdBQVksS0FBS0UsVUFBakIsR0FBOEIsS0FBS0QsSUFBaEQ7QUFDQSxXQUFPUixJQUFJLGVBQWVHLFFBQVEsQ0FBQztBQUFFd0IsTUFBQUEsR0FBRyxFQUFFLElBQVA7QUFBYXpCLE1BQUFBLElBQUksRUFBRSxLQUFLUTtBQUF4QixLQUFELENBQXZCLGFBQXdFLEtBQUtRLFFBQTdFLGtCQUNLZixRQUFRLENBQUM7QUFBRWlCLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCbEIsTUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBS1E7QUFBN0IsS0FBRCxDQURiLG1EQUlXRixJQUpYLHdGQUFYO0FBUUQ7O0FBckYwQztBQXdGN0NvQixNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLGVBQTdCLEVBQThDekIsWUFBOUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgbGluayB9IGZyb20gJy4uL3N0eWxlcy9saW5rJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuXG4vKipcbiAqIEV4cGFuZGFibGUgY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LWV4cGFuZGFibGU6dG9nZ2xlIC0gV2hlbiB1c2VyIHRvZ2dsZVxuICpcbiAqIEBhdHRyIHtCb29sZWFufSBvcGVuIC0gV2hlbiB0cnVlLCBvcGVucyBkZXRhaWxzIGJ5IGRlZmF1bHRcbiAqIEBhdHRyIHtTdHJpbmd9IGljb24gLSBBbiBpY29uIHRvIHNob3cgb3BlbiBmZWF0dXJlXG4gKiBAYXR0ciB7U3RyaW5nfSBpY29uLW9wZW5lZCAtICBBbiBpY29uIHRvIHNob3cgY2xvc2UgZmVhdHVyZVxuICogQGF0dHIge0Jvb2xlYW59IGNsaWNrYWJsZSAtIFdoZW4gdHJ1ZSwgZGV0YWlscyBpcyBjbGlja2FibGUgbGlrZSBzdW1tYXJ5XG4gKlxuICogQGNzc3Byb3Age1N0cmluZ30gWy0tZ3YtZXhwYW5kYWJsZS0tYmRiPXZhcigtLWd2LWV4cGFuZGFibGUtLWJkYiwgdGhpbiBzb2xpZCB2YXIoLS1ndi10aGVtZS1jb2xvciwgIzVhNzY4NCldIC0gQm9yZGVyIGJvdHRvbVxuICovXG5leHBvcnQgY2xhc3MgR3ZFeHBhbmRhYmxlIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pY29uID0gJ25hdmlnYXRpb246YW5nbGUtbGVmdCc7XG4gICAgdGhpcy5pY29uT3BlbmVkID0gJ25hdmlnYXRpb246YW5nbGUtZG93bic7XG4gICAgdGhpcy5jbGlja2FibGUgPSBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBpY29uOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgaWNvbk9wZW5lZDogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ2ljb24tb3BlbmVkJyB9LFxuICAgICAgY2xpY2thYmxlOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGxpbmssXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICAuYm94IHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjJyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIzcHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tZ3YtZXhwYW5kYWJsZS0tYmRiLCB0aGluIHNvbGlkIHZhcigtLWd2LXRoZW1lLWNvbG9yLCAjNWE3Njg0KSk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbb3Blbl0pIC5kZXRhaWxzIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRldGFpbHMge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdW1tYXJ5IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5leHBhbmQge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMTZweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX29uQ2xpY2soZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY2xpY2thYmxlKSB7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5zdW1tYXJ5Jyk7XG4gICAgICBpZiAoIXN1bW1hcnkuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBldmVudC50YXJnZXQuc2xvdCAhPT0gJ3N1bW1hcnknKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICd0b2dnbGUnLCB7IG9wZW46IHRoaXMub3BlbiB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBpY29uID0gdGhpcy5vcGVuID8gdGhpcy5pY29uT3BlbmVkIDogdGhpcy5pY29uO1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgYm94OiB0cnVlLCBsaW5rOiB0aGlzLmNsaWNrYWJsZSB9KX1cIiBAY2xpY2s9JHt0aGlzLl9vbkNsaWNrfT5cbiAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgc3VtbWFyeTogdHJ1ZSwgbGluazogIXRoaXMuY2xpY2thYmxlIH0pfVwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic3VtbWFyeVwiPjwvc2xvdD5cblxuICAgICAgICA8Z3YtaWNvbiBzaGFwZT1cIiR7aWNvbn1cIiBjbGFzcz1cImV4cGFuZFwiPjwvZ3YtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cImRldGFpbHNcIiBjbGFzcz1cImRldGFpbHNcIj48L3Nsb3Q+XG4gICAgPC9kaXY+YDtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1leHBhbmRhYmxlJywgR3ZFeHBhbmRhYmxlKTtcbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL21vbGVjdWxlcy9ndi1leHBhbmRhYmxlLmpzIl0sIm5hbWVzIjpbImNzcyIsImh0bWwiLCJMaXRFbGVtZW50IiwibGluayIsImNsYXNzTWFwIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsIkd2RXhwYW5kYWJsZSIsImNvbnN0cnVjdG9yIiwib3BlbiIsImljb24iLCJpY29uT3BlbmVkIiwiY2xpY2thYmxlIiwicHJvcGVydGllcyIsInR5cGUiLCJCb29sZWFuIiwicmVmbGVjdCIsIlN0cmluZyIsImF0dHJpYnV0ZSIsInN0eWxlcyIsIl9vbkNsaWNrIiwiZXZlbnQiLCJzdW1tYXJ5Iiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250YWlucyIsInRhcmdldCIsInNsb3QiLCJyZW5kZXIiLCJib3giLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxJQUFkLEVBQW9CQyxVQUFwQixRQUFzQyxhQUF0QztBQUNBLFNBQVNDLElBQVQsUUFBcUIsZ0JBQXJCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QiwrQkFBekI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLE1BQU1DLFlBQU4sU0FBMkJKLFVBQTNCLENBQXNDO0FBQzNDSyxFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLHVCQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQix1QkFBbEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLEtBQWpCO0FBQ0Q7O0FBRW9CLGFBQVZDLFVBQVUsR0FBRztBQUN0QixXQUFPO0FBQ0xKLE1BQUFBLElBQUksRUFBRTtBQUFFSyxRQUFBQSxJQUFJLEVBQUVDLE9BQVI7QUFBaUJDLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUREO0FBRUxOLE1BQUFBLElBQUksRUFBRTtBQUFFSSxRQUFBQSxJQUFJLEVBQUVHO0FBQVIsT0FGRDtBQUdMTixNQUFBQSxVQUFVLEVBQUU7QUFBRUcsUUFBQUEsSUFBSSxFQUFFRyxNQUFSO0FBQWdCQyxRQUFBQSxTQUFTLEVBQUU7QUFBM0IsT0FIUDtBQUlMTixNQUFBQSxTQUFTLEVBQUU7QUFBRUUsUUFBQUEsSUFBSSxFQUFFQztBQUFSO0FBSk4sS0FBUDtBQU1EOztBQUVnQixhQUFOSSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMZixJQURLLEVBRUw7QUFDQUgsSUFBQUEsR0FBRyx5ZUFIRSxDQUFQO0FBNENEOztBQUVEbUIsRUFBQUEsUUFBUSxDQUFDQyxLQUFELEVBQVE7QUFDZCxRQUFJLENBQUMsS0FBS1QsU0FBVixFQUFxQjtBQUNuQixZQUFNVSxPQUFPLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsVUFBOUIsQ0FBaEI7O0FBQ0EsVUFBSSxDQUFDRixPQUFPLENBQUNHLFFBQVIsQ0FBaUJKLEtBQUssQ0FBQ0ssTUFBdkIsQ0FBRCxJQUFtQ0wsS0FBSyxDQUFDSyxNQUFOLENBQWFDLElBQWIsS0FBc0IsU0FBN0QsRUFBd0U7QUFDdEU7QUFDRDtBQUNGOztBQUNELFNBQUtsQixJQUFMLEdBQVksQ0FBQyxLQUFLQSxJQUFsQjtBQUNBSCxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sUUFBUCxFQUFpQjtBQUFFRyxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFBYixLQUFqQixDQUFuQjtBQUNEOztBQUVEbUIsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsVUFBTWxCLElBQUksR0FBRyxLQUFLRCxJQUFMLEdBQVksS0FBS0UsVUFBakIsR0FBOEIsS0FBS0QsSUFBaEQ7QUFDQSxXQUFPUixJQUFJLGVBQWVHLFFBQVEsQ0FBQztBQUFFd0IsTUFBQUEsR0FBRyxFQUFFLElBQVA7QUFBYXpCLE1BQUFBLElBQUksRUFBRSxLQUFLUTtBQUF4QixLQUFELENBQXZCLGFBQXdFLEtBQUtRLFFBQTdFLGtCQUNLZixRQUFRLENBQUM7QUFBRWlCLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCbEIsTUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBS1E7QUFBN0IsS0FBRCxDQURiLG1EQUlXRixJQUpYLHdGQUFYO0FBUUQ7O0FBdEYwQztBQXlGN0NvQixNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLGVBQTdCLEVBQThDekIsWUFBOUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgbGluayB9IGZyb20gJy4uL3N0eWxlcy9saW5rJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuXG4vKipcbiAqIEV4cGFuZGFibGUgY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LWV4cGFuZGFibGU6dG9nZ2xlIC0gV2hlbiB1c2VyIHRvZ2dsZVxuICpcbiAqIEBhdHRyIHtCb29sZWFufSBvcGVuIC0gV2hlbiB0cnVlLCBvcGVucyBkZXRhaWxzIGJ5IGRlZmF1bHRcbiAqIEBhdHRyIHtTdHJpbmd9IGljb24gLSBBbiBpY29uIHRvIHNob3cgb3BlbiBmZWF0dXJlXG4gKiBAYXR0ciB7U3RyaW5nfSBpY29uLW9wZW5lZCAtICBBbiBpY29uIHRvIHNob3cgY2xvc2UgZmVhdHVyZVxuICogQGF0dHIge0Jvb2xlYW59IGNsaWNrYWJsZSAtIFdoZW4gdHJ1ZSwgZGV0YWlscyBpcyBjbGlja2FibGUgbGlrZSBzdW1tYXJ5XG4gKlxuICogQGNzc3Byb3Age1N0cmluZ30gWy0tZ3YtZXhwYW5kYWJsZS0tYmRiPXZhcigtLWd2LWV4cGFuZGFibGUtLWJkYiwgdGhpbiBzb2xpZCB2YXIoLS1ndi10aGVtZS1jb2xvciwgIzVhNzY4NCldIC0gQm9yZGVyIGJvdHRvbVxuICovXG5leHBvcnQgY2xhc3MgR3ZFeHBhbmRhYmxlIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5pY29uID0gJ25hdmlnYXRpb246YW5nbGUtbGVmdCc7XG4gICAgdGhpcy5pY29uT3BlbmVkID0gJ25hdmlnYXRpb246YW5nbGUtZG93bic7XG4gICAgdGhpcy5jbGlja2FibGUgPSBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBpY29uOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgaWNvbk9wZW5lZDogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ2ljb24tb3BlbmVkJyB9LFxuICAgICAgY2xpY2thYmxlOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGxpbmssXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICAuYm94IHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjJyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIzcHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tZ3YtZXhwYW5kYWJsZS0tYmRiLCB0aGluIHNvbGlkIHZhcigtLWd2LXRoZW1lLWNvbG9yLCAjNWE3Njg0KSk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbb3Blbl0pIC5kZXRhaWxzIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRldGFpbHMge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdW1tYXJ5IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5leHBhbmQge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMTZweDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgX29uQ2xpY2soZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY2xpY2thYmxlKSB7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5zdW1tYXJ5Jyk7XG4gICAgICBpZiAoIXN1bW1hcnkuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBldmVudC50YXJnZXQuc2xvdCAhPT0gJ3N1bW1hcnknKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICd0b2dnbGUnLCB7IG9wZW46IHRoaXMub3BlbiB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBpY29uID0gdGhpcy5vcGVuID8gdGhpcy5pY29uT3BlbmVkIDogdGhpcy5pY29uO1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgYm94OiB0cnVlLCBsaW5rOiB0aGlzLmNsaWNrYWJsZSB9KX1cIiBAY2xpY2s9JHt0aGlzLl9vbkNsaWNrfT5cbiAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgc3VtbWFyeTogdHJ1ZSwgbGluazogIXRoaXMuY2xpY2thYmxlIH0pfVwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic3VtbWFyeVwiPjwvc2xvdD5cblxuICAgICAgICA8Z3YtaWNvbiBzaGFwZT1cIiR7aWNvbn1cIiBjbGFzcz1cImV4cGFuZFwiPjwvZ3YtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cImRldGFpbHNcIiBjbGFzcz1cImRldGFpbHNcIj48L3Nsb3Q+XG4gICAgPC9kaXY+YDtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1leHBhbmRhYmxlJywgR3ZFeHBhbmRhYmxlKTtcbiJdfQ==
@@ -124,9 +124,9 @@ export class GvSchemaFormArray extends LitElement {
124
124
 
125
125
  static get styles() {
126
126
  return [skeleton, // language=CSS
127
- css`.form__item-length{font-size:12px;color:#bfbfbf;margin:0 .2rem}.form__item-group{position:relative;transition:all .3s ease-in-out}.form__item-group:hover{background-color:#efefef}.form__item-group-header:after,.form__item-group-header:before{content:'';position:absolute;bottom:0;height:calc(100% - 35px);border-left:3px dotted #d9d9d9}.form__item-group-required>.form__item-group-header:after,.form__item-group-required>.form__item-group-header:before{border-color:var(--gv-theme-color-error-dark,#d32f2f)}.form__item-group-header:before{left:0}.form__item-group-header:after{right:0}.form__item-group-header{display:flex;padding-bottom:.2rem;margin-bottom:.2rem;align-items:center;transition:all .3s ease-in-out;background-color:#fff}.form__item-group-header label{flex:1;margin:0}.form__item-group,.form__item-group-header{border-bottom:1px solid #d9d9d9}.form__item{border:1px solid #d9d9d9;border-radius:4px;margin:.5rem;background-color:#fff;transition:all .3s ease-in-out;z-index:50}.form__item:hover{transform:translateY(-2px);box-shadow:0 10px 20px -10px #bfbfbf;z-index:60}.form__item-label{font-style:italic;display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9;padding:.5rem}.form__item-label>label{flex:1}.form__item .form_control-inline>*{margin-left:0}.form__item .form_control-inline>:first-child{margin-left:.5rem}`];
127
+ css`.form__item-length{font-size:12px;color:#bfbfbf;margin:0 .2rem}.form__item-group{position:relative;transition:all .3s ease-in-out}.form__item-group:hover{background-color:#efefef}.form__item-group-header:after,.form__item-group-header:before{content:'';position:absolute;bottom:0;height:calc(100% - 35px);border-left:3px dotted #d9d9d9}.form__item-group-required>.form__item-group-header:after,.form__item-group-required>.form__item-group-header:before{border-color:var(--gv-theme-color-error-dark,#d32f2f)}.form__item-group-header:before{left:0}.form__item-group-header:after{right:0}.form__item-group-header{display:flex;padding-bottom:.2rem;margin-bottom:.2rem;align-items:center;transition:all .3s ease-in-out;background-color:var(--gv-schema-form--bgc,#fff)}.form__item-group-header label{flex:1;margin:0}.form__item-group,.form__item-group-header{border-bottom:1px solid #d9d9d9}.form__item{border:1px solid #d9d9d9;border-radius:4px;margin:.5rem;background-color:#fff;transition:all .3s ease-in-out;z-index:50}.form__item:hover{transform:translateY(-2px);box-shadow:0 10px 20px -10px #bfbfbf;z-index:60}.form__item-label{font-style:italic;display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9;padding:.5rem}.form__item-label>label{flex:1}.form__item .form_control-inline>*{margin-left:0}.form__item .form_control-inline>:first-child{margin-left:.5rem}`];
128
128
  }
129
129
 
130
130
  }
131
131
  window.customElements.define('gv-schema-form-array', GvSchemaFormArray);
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1hcnJheS5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJjbGFzc01hcCIsInNrZWxldG9uIiwiR3ZTY2hlbWFGb3JtQXJyYXkiLCJwcm9wZXJ0aWVzIiwic2NoZW1hIiwidHlwZSIsIk9iamVjdCIsInZhbHVlIiwiQXJyYXkiLCJpZCIsIlN0cmluZyIsInJlZmxlY3QiLCJ0aXRsZSIsIkJvb2xlYW4iLCJlcnJvcnMiLCJyZWFkb25seSIsImNvbnN0cnVjdG9yIiwiX29uTmV3IiwibmV3VmFsdWUiLCJfb25SZW1vdmUiLCJpbmRleCIsInNwbGljZSIsImZpbHRlciIsImUiLCJfcmVuZGVyVmFsdWUiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiLCJpc0Rpc2FibGVkIiwiZGlzYWJsZWQiLCJjb250cm9sIiwiX29uTW91c2VMZWF2ZSIsImJpbmQiLCJzZWxlY3QiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzIiwiY2xvc2UiLCJnZXRDb250cm9scyIsImZyb20iLCJnZXRDb250cm9sIiwicXVlcnlTZWxlY3RvciIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJ1cGRhdGVDb21wbGV0ZSIsInNob3VsZFVwZGF0ZSIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwicmVuZGVyIiwibGVuZ3RoIiwiaXNBcnJheSIsInN0eWxlcyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLElBQWQsRUFBb0JDLFVBQXBC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QXJEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdC1lbGVtZW50JztcblxuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBza2VsZXRvbiB9IGZyb20gJy4uL3N0eWxlcy9za2VsZXRvbic7XG5cbi8qKlxuICogU2NoZW1hIGZvcm0gYXJyYXkgY29tcG9uZW50XG4gKlxuICovXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtQXJyYXkgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICB2YWx1ZTogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgaWQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGVycm9yczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgfVxuXG4gIF9vbk5ldygpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnID8ge30gOiAnJztcbiAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIG5ld1ZhbHVlXTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdpbnB1dCcsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX29uUmVtb3ZlKGluZGV4KSB7XG4gICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEsIG51bGwpO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigoZSkgPT4gZSAhPSBudWxsKTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdpbnB1dCcsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX3JlbmRlclZhbHVlKHZhbHVlLCBpbmRleCkge1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSB0aGlzLnNjaGVtYS5yZXF1aXJlZDtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5zY2hlbWEuZGlzYWJsZWQ7XG4gICAgY29uc3QgaWQgPSBgJHt0aGlzLmlkfS4ke2luZGV4fWA7XG4gICAgY29uc3QgY29udHJvbCA9IHsgLi4udGhpcy5zY2hlbWEsIHRpdGxlOiBudWxsIH07XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImZvcm1fX2l0ZW1cIiBAbW91c2VsZWF2ZT1cIiR7dGhpcy5fb25Nb3VzZUxlYXZlfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnZm9ybV9faXRlbS1sYWJlbCc6IHRydWUsIHNrZWxldG9uOiB0aGlzLnNrZWxldG9uIH0pfVwiPlxuICAgICAgICA8bGFiZWw+JHt0aGlzLnNjaGVtYS50aXRsZX08L2xhYmVsPlxuICAgICAgICAke3RoaXMucmVhZG9ubHkgIT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICBsaW5rXG4gICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uUmVtb3ZlLmJpbmQodGhpcywgaW5kZXgpfVwiXG4gICAgICAgICAgICAgIGljb249XCJnZW5lcmFsOmNsb3NlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmVcIlxuICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPmBcbiAgICAgICAgICA6ICcnfVxuICAgICAgPC9kaXY+XG4gICAgICA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgICAuaWQ9XCIke2lkfVwiXG4gICAgICAgIC5za2VsZXRvbj1cIiR7dGhpcy5za2VsZXRvbn1cIlxuICAgICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgICAudmFsdWU9XCIke3ZhbHVlfVwiXG4gICAgICAgID9yZXF1aXJlZD1cIiR7aXNSZXF1aXJlZH1cIlxuICAgICAgICA/ZGlzYWJsZWQ9XCIke2lzRGlzYWJsZWR9XCJcbiAgICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPlxuICAgIDwvZGl2PiBgO1xuICB9XG5cbiAgX29uTW91c2VMZWF2ZSgpIHtcbiAgICBjb25zdCBzZWxlY3QgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbChgZ3Ytc2VsZWN0YCk7XG4gICAgc2VsZWN0LmZvckVhY2goKHMpID0+IHMuY2xvc2UoKSk7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdlcnJvcnMnKSkge1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGh0bWxgYDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtYXJyYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19pdGVtLWdyb3VwXCIgaWQ9XCIke3RoaXMuaWR9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgJ2Zvcm1fX2l0ZW0tZ3JvdXAtaGVhZGVyJzogdHJ1ZSwgc2tlbGV0b246IHRoaXMuc2tlbGV0b24gfSl9XCI+XG4gICAgICAgICAgPGxhYmVsPjxzcGFuPiR7dGhpcy50aXRsZSB8fCB0aGlzLmlkfTwvc3Bhbj48c3BhbiBjbGFzcz1cImZvcm1fX2l0ZW0tbGVuZ3RoXCI+KCR7dGhpcy52YWx1ZS5sZW5ndGh9KTwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICR7dGhpcy5yZWFkb25seSAhPT0gdHJ1ZVxuICAgICAgICAgICAgPyBodG1sYDxndi1idXR0b24gb3V0bGluZWQgc21hbGwgaWNvbj1cImNvZGU6cGx1c1wiIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uTmV3fVwiPk5ldyAke3RoaXMuc2NoZW1hLnRpdGxlfTwvZ3YtYnV0dG9uPmBcbiAgICAgICAgICAgIDogJyd9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke3RoaXMudmFsdWUgIT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZS5tYXAoKHZhbHVlLCBpbmRleCkgPT4gdGhpcy5fcmVuZGVyVmFsdWUodmFsdWUsIGluZGV4KSkgOiAnJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PmA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgc2tlbGV0b24sXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgLmZvcm1fX2l0ZW0tbGVuZ3RoIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgY29sb3I6ICNiZmJmYmY7XG4gICAgICAgICAgbWFyZ2luOiAwIDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cDpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjpiZWZvcmUsXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDM1cHgpO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAzcHggZG90dGVkICNkOWQ5ZDk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cC1yZXF1aXJlZCA+IC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjpiZWZvcmUsXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLXJlcXVpcmVkID4gLmZvcm1fX2l0ZW0tZ3JvdXAtaGVhZGVyOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWd2LXRoZW1lLWNvbG9yLWVycm9yLWRhcmssICNkMzJmMmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2l0ZW0tZ3JvdXAtaGVhZGVyOmJlZm9yZSB7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjphZnRlciB7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cC1oZWFkZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDAuMnJlbTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjJyZW07XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlciBsYWJlbCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cC1oZWFkZXIsXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtIHtcbiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICB6LWluZGV4OiA1MDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtOmhvdmVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggLTEwcHggI2JmYmZiZjtcbiAgICAgICAgICB6LWluZGV4OiA2MDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWxhYmVsIHtcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWxhYmVsID4gbGFiZWwge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbSAuZm9ybV9jb250cm9sLWlubGluZSA+ICoge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2l0ZW0gLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tYXJyYXknLCBHdlNjaGVtYUZvcm1BcnJheSk7XG4iXX0=
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1hcnJheS5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJjbGFzc01hcCIsInNrZWxldG9uIiwiR3ZTY2hlbWFGb3JtQXJyYXkiLCJwcm9wZXJ0aWVzIiwic2NoZW1hIiwidHlwZSIsIk9iamVjdCIsInZhbHVlIiwiQXJyYXkiLCJpZCIsIlN0cmluZyIsInJlZmxlY3QiLCJ0aXRsZSIsIkJvb2xlYW4iLCJlcnJvcnMiLCJyZWFkb25seSIsImNvbnN0cnVjdG9yIiwiX29uTmV3IiwibmV3VmFsdWUiLCJfb25SZW1vdmUiLCJpbmRleCIsInNwbGljZSIsImZpbHRlciIsImUiLCJfcmVuZGVyVmFsdWUiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiLCJpc0Rpc2FibGVkIiwiZGlzYWJsZWQiLCJjb250cm9sIiwiX29uTW91c2VMZWF2ZSIsImJpbmQiLCJzZWxlY3QiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzIiwiY2xvc2UiLCJnZXRDb250cm9scyIsImZyb20iLCJnZXRDb250cm9sIiwicXVlcnlTZWxlY3RvciIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJ1cGRhdGVDb21wbGV0ZSIsInNob3VsZFVwZGF0ZSIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwicmVuZGVyIiwibGVuZ3RoIiwiaXNBcnJheSIsInN0eWxlcyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLElBQWQsRUFBb0JDLFVBQXBC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QXJEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdC1lbGVtZW50JztcblxuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBza2VsZXRvbiB9IGZyb20gJy4uL3N0eWxlcy9za2VsZXRvbic7XG5cbi8qKlxuICogU2NoZW1hIGZvcm0gYXJyYXkgY29tcG9uZW50XG4gKlxuICovXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtQXJyYXkgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICB2YWx1ZTogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgaWQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGVycm9yczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgfVxuXG4gIF9vbk5ldygpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnID8ge30gOiAnJztcbiAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIG5ld1ZhbHVlXTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdpbnB1dCcsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX29uUmVtb3ZlKGluZGV4KSB7XG4gICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEsIG51bGwpO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcigoZSkgPT4gZSAhPSBudWxsKTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdpbnB1dCcsIHRoaXMudmFsdWUpO1xuICB9XG5cbiAgX3JlbmRlclZhbHVlKHZhbHVlLCBpbmRleCkge1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSB0aGlzLnNjaGVtYS5yZXF1aXJlZDtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5zY2hlbWEuZGlzYWJsZWQ7XG4gICAgY29uc3QgaWQgPSBgJHt0aGlzLmlkfS4ke2luZGV4fWA7XG4gICAgY29uc3QgY29udHJvbCA9IHsgLi4udGhpcy5zY2hlbWEsIHRpdGxlOiBudWxsIH07XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImZvcm1fX2l0ZW1cIiBAbW91c2VsZWF2ZT1cIiR7dGhpcy5fb25Nb3VzZUxlYXZlfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnZm9ybV9faXRlbS1sYWJlbCc6IHRydWUsIHNrZWxldG9uOiB0aGlzLnNrZWxldG9uIH0pfVwiPlxuICAgICAgICA8bGFiZWw+JHt0aGlzLnNjaGVtYS50aXRsZX08L2xhYmVsPlxuICAgICAgICAke3RoaXMucmVhZG9ubHkgIT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICBsaW5rXG4gICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uUmVtb3ZlLmJpbmQodGhpcywgaW5kZXgpfVwiXG4gICAgICAgICAgICAgIGljb249XCJnZW5lcmFsOmNsb3NlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJSZW1vdmVcIlxuICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPmBcbiAgICAgICAgICA6ICcnfVxuICAgICAgPC9kaXY+XG4gICAgICA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgICAuaWQ9XCIke2lkfVwiXG4gICAgICAgIC5za2VsZXRvbj1cIiR7dGhpcy5za2VsZXRvbn1cIlxuICAgICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgICAudmFsdWU9XCIke3ZhbHVlfVwiXG4gICAgICAgID9yZXF1aXJlZD1cIiR7aXNSZXF1aXJlZH1cIlxuICAgICAgICA/ZGlzYWJsZWQ9XCIke2lzRGlzYWJsZWR9XCJcbiAgICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPlxuICAgIDwvZGl2PiBgO1xuICB9XG5cbiAgX29uTW91c2VMZWF2ZSgpIHtcbiAgICBjb25zdCBzZWxlY3QgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbChgZ3Ytc2VsZWN0YCk7XG4gICAgc2VsZWN0LmZvckVhY2goKHMpID0+IHMuY2xvc2UoKSk7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdlcnJvcnMnKSkge1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGh0bWxgYDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtYXJyYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19pdGVtLWdyb3VwXCIgaWQ9XCIke3RoaXMuaWR9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgJ2Zvcm1fX2l0ZW0tZ3JvdXAtaGVhZGVyJzogdHJ1ZSwgc2tlbGV0b246IHRoaXMuc2tlbGV0b24gfSl9XCI+XG4gICAgICAgICAgPGxhYmVsPjxzcGFuPiR7dGhpcy50aXRsZSB8fCB0aGlzLmlkfTwvc3Bhbj48c3BhbiBjbGFzcz1cImZvcm1fX2l0ZW0tbGVuZ3RoXCI+KCR7dGhpcy52YWx1ZS5sZW5ndGh9KTwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICR7dGhpcy5yZWFkb25seSAhPT0gdHJ1ZVxuICAgICAgICAgICAgPyBodG1sYDxndi1idXR0b24gb3V0bGluZWQgc21hbGwgaWNvbj1cImNvZGU6cGx1c1wiIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uTmV3fVwiPk5ldyAke3RoaXMuc2NoZW1hLnRpdGxlfTwvZ3YtYnV0dG9uPmBcbiAgICAgICAgICAgIDogJyd9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke3RoaXMudmFsdWUgIT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZS5tYXAoKHZhbHVlLCBpbmRleCkgPT4gdGhpcy5fcmVuZGVyVmFsdWUodmFsdWUsIGluZGV4KSkgOiAnJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PmA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgc2tlbGV0b24sXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgLmZvcm1fX2l0ZW0tbGVuZ3RoIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgY29sb3I6ICNiZmJmYmY7XG4gICAgICAgICAgbWFyZ2luOiAwIDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cDpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjpiZWZvcmUsXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDM1cHgpO1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAzcHggZG90dGVkICNkOWQ5ZDk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cC1yZXF1aXJlZCA+IC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjpiZWZvcmUsXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLXJlcXVpcmVkID4gLmZvcm1fX2l0ZW0tZ3JvdXAtaGVhZGVyOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWd2LXRoZW1lLWNvbG9yLWVycm9yLWRhcmssICNkMzJmMmYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2l0ZW0tZ3JvdXAtaGVhZGVyOmJlZm9yZSB7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlcjphZnRlciB7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cC1oZWFkZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDAuMnJlbTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjJyZW07XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ndi1zY2hlbWEtZm9ybS0tYmdjLCAjZmZmZmZmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwLWhlYWRlciBsYWJlbCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbS1ncm91cC1oZWFkZXIsXG4gICAgICAgIC5mb3JtX19pdGVtLWdyb3VwIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtIHtcbiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICB6LWluZGV4OiA1MDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtOmhvdmVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggLTEwcHggI2JmYmZiZjtcbiAgICAgICAgICB6LWluZGV4OiA2MDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWxhYmVsIHtcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19pdGVtLWxhYmVsID4gbGFiZWwge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9faXRlbSAuZm9ybV9jb250cm9sLWlubGluZSA+ICoge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2l0ZW0gLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tYXJyYXknLCBHdlNjaGVtYUZvcm1BcnJheSk7XG4iXX0=
@@ -14,9 +14,10 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { css, html, LitElement } from 'lit-element';
17
- import { isCodemirror } from '../lib/schema-form';
17
+ import { isCodemirror, isObject } from '../lib/schema-form';
18
18
  import { classMap } from 'lit-html/directives/class-map';
19
19
  import { skeleton } from '../styles/skeleton';
20
+ import '../molecules/gv-expandable';
20
21
  /**
21
22
  * Schema form control object component
22
23
  */
@@ -49,6 +50,18 @@ export class GvSchemaFormControlObject extends LitElement {
49
50
  readonly: {
50
51
  type: Boolean,
51
52
  reflect: true
53
+ },
54
+ disabled: {
55
+ type: Boolean,
56
+ reflect: true
57
+ },
58
+ required: {
59
+ type: Boolean,
60
+ reflect: true
61
+ },
62
+ hidden: {
63
+ type: Boolean,
64
+ reflect: true
52
65
  }
53
66
  };
54
67
  }
@@ -59,13 +72,13 @@ export class GvSchemaFormControlObject extends LitElement {
59
72
  }
60
73
 
61
74
  _renderPart(subKey) {
62
- const isRequired = this.schema.required && this.schema.required.includes(subKey);
63
- const isDisabled = this.schema.disabled && this.schema.disabled.includes(subKey);
75
+ const isRequired = this.required || this.schema.required && this.schema.required.includes(subKey);
76
+ const isDisabled = this.disabled || this.schema.disabled && this.schema.disabled.includes(subKey);
64
77
  const fullKey = this.id != null ? `${this.id}.${subKey}` : subKey;
65
78
  const control = { ...this.schema.properties[subKey]
66
79
  };
67
80
  const value = this.value != null ? this.value[subKey] : null;
68
- return html`<gv-schema-form-control .id="${fullKey}" .control="${control}" .value="${value}" .skeleton="${this.skeleton}" ?required="${isRequired}" ?disabled="${isDisabled}" ?readonly="${this.readonly}" class="control"></gv-schema-form-control>`;
81
+ return html`<gv-schema-form-control .id="${fullKey}" .control="${control}" .value="${value}" .skeleton="${this.skeleton}" ?required="${isRequired}" ?disabled="${isDisabled}" ?readonly="${this.readonly}" ?hidden="${this.hidden}" class="control"></gv-schema-form-control>`;
69
82
  }
70
83
 
71
84
  getControls() {
@@ -91,24 +104,35 @@ export class GvSchemaFormControlObject extends LitElement {
91
104
  return super.shouldUpdate(changedProperties);
92
105
  }
93
106
 
107
+ canInline(key) {
108
+ const property = this.schema.properties[key];
109
+ return !isCodemirror(property) && !isObject(property);
110
+ }
111
+
94
112
  render() {
95
113
  const keys = Object.keys(this.schema.properties);
96
114
  const classes = {
97
- 'form__control-object': true,
98
- 'form_control-inline': keys.length <= 2 && keys.find(key => isCodemirror(this.schema.properties[key])) == null
115
+ 'form_control-inline': keys.length <= 2 && keys.filter(key => this.canInline(key)).length === keys.length
99
116
  };
100
117
  const titleClasses = {
101
118
  'form__control-group-title': true,
102
119
  skeleton: this.skeleton
103
120
  };
104
- return html`<div class="${classMap(classes)}"> ${this.title ? html`<div class="${classMap(titleClasses)}" title="${this.title}">${this.title}</div>` : ''} ${keys.map(key => this._renderPart(key))} </div>`;
121
+ const details = keys.map(key => this._renderPart(key));
122
+
123
+ if (this.title) {
124
+ const isOpen = this.required || this.schema.required != null;
125
+ return html`<gv-expandable ?open="${isOpen}"> <div slot="summary" class="${classMap(titleClasses)}" title="${this.title}">${this.title}</div> <div slot="details" class="${classMap(classes)}">${details}</div> </gv-expandable>`;
126
+ } else {
127
+ return html`<div class="${classMap(classes)}">${details}</div>`;
128
+ }
105
129
  }
106
130
 
107
131
  static get styles() {
108
132
  return [skeleton, // language=CSS
109
- css`.form__control-group-title{border-bottom:1px solid #bfbfbf;padding:.5rem 0}`];
133
+ css`.form__control-group-title{padding:.5rem 0}.form_control-inline{display:flex;flex-direction:row;margin:0}.form_control-inline>*{flex:1;--gv-schema-form-control--m:0 0.2rem 0 0}.form_control-inline>:last-child{--gv-schema-form-control--m:0 0 0 0.2rem}`];
110
134
  }
111
135
 
112
136
  }
113
137
  window.customElements.define('gv-schema-form-control-object', GvSchemaFormControlObject);
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdC5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImlzQ29kZW1pcnJvciIsImNsYXNzTWFwIiwic2tlbGV0b24iLCJHdlNjaGVtYUZvcm1Db250cm9sT2JqZWN0IiwicHJvcGVydGllcyIsInNjaGVtYSIsInR5cGUiLCJPYmplY3QiLCJ2YWx1ZSIsInJlZmxlY3QiLCJpZCIsIlN0cmluZyIsInRpdGxlIiwiZXJyb3JzIiwiQXJyYXkiLCJCb29sZWFuIiwicmVhZG9ubHkiLCJjb25zdHJ1Y3RvciIsIl9yZW5kZXJQYXJ0Iiwic3ViS2V5IiwiaXNSZXF1aXJlZCIsInJlcXVpcmVkIiwiaW5jbHVkZXMiLCJpc0Rpc2FibGVkIiwiZGlzYWJsZWQiLCJmdWxsS2V5IiwiY29udHJvbCIsImdldENvbnRyb2xzIiwiZnJvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJfZ2V0VXBkYXRlQ29tcGxldGUiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiZSIsInVwZGF0ZUNvbXBsZXRlIiwic2hvdWxkVXBkYXRlIiwiY2hhbmdlZFByb3BlcnRpZXMiLCJoYXMiLCJmb3JFYWNoIiwicmVuZGVyIiwia2V5cyIsImNsYXNzZXMiLCJsZW5ndGgiLCJmaW5kIiwia2V5IiwidGl0bGVDbGFzc2VzIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsRUFBY0MsSUFBZCxFQUFvQkMsVUFBcEIsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxZQUFU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QUFqQixHQUFzRyxFQUQvRixJQUVQZ0MsSUFBSSxDQUFDUixHQUFMLENBQVVZLEdBQUQsSUFBUyxLQUFLOUIsV0FBTCxDQUFpQjhCLEdBQWpCLENBQWxCLENBRk8sU0FBWDtBQUlEOztBQUVnQixhQUFORSxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMaEQsUUFESyxFQUVMO0FBQ0FMLElBQUFBLEdBQUcsNkVBSEUsQ0FBUDtBQVVEOztBQTNGdUQ7QUE4RjFEc0QsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QiwrQkFBN0IsRUFBOERsRCx5QkFBOUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgaXNDb2RlbWlycm9yIH0gZnJvbSAnLi4vbGliL3NjaGVtYS1mb3JtJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgc2tlbGV0b24gfSBmcm9tICcuLi9zdHlsZXMvc2tlbGV0b24nO1xuXG4vKipcbiAqIFNjaGVtYSBmb3JtIGNvbnRyb2wgb2JqZWN0IGNvbXBvbmVudFxuICovXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtQ29udHJvbE9iamVjdCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtYTogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IE9iamVjdCwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaWQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGVycm9yczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgc2tlbGV0b246IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgfVxuXG4gIF9yZW5kZXJQYXJ0KHN1YktleSkge1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSB0aGlzLnNjaGVtYS5yZXF1aXJlZCAmJiB0aGlzLnNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhzdWJLZXkpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLnNjaGVtYS5kaXNhYmxlZCAmJiB0aGlzLnNjaGVtYS5kaXNhYmxlZC5pbmNsdWRlcyhzdWJLZXkpO1xuXG4gICAgY29uc3QgZnVsbEtleSA9IHRoaXMuaWQgIT0gbnVsbCA/IGAke3RoaXMuaWR9LiR7c3ViS2V5fWAgOiBzdWJLZXk7XG4gICAgY29uc3QgY29udHJvbCA9IHsgLi4udGhpcy5zY2hlbWEucHJvcGVydGllc1tzdWJLZXldIH07XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlICE9IG51bGwgPyB0aGlzLnZhbHVlW3N1YktleV0gOiBudWxsO1xuICAgIHJldHVybiBodG1sYDxndi1zY2hlbWEtZm9ybS1jb250cm9sXG4gICAgICAuaWQ9XCIke2Z1bGxLZXl9XCJcbiAgICAgIC5jb250cm9sPVwiJHtjb250cm9sfVwiXG4gICAgICAudmFsdWU9XCIke3ZhbHVlfVwiXG4gICAgICAuc2tlbGV0b249XCIke3RoaXMuc2tlbGV0b259XCJcbiAgICAgID9yZXF1aXJlZD1cIiR7aXNSZXF1aXJlZH1cIlxuICAgICAgP2Rpc2FibGVkPVwiJHtpc0Rpc2FibGVkfVwiXG4gICAgICA/cmVhZG9ubHk9XCIke3RoaXMucmVhZG9ubHl9XCJcbiAgICAgIGNsYXNzPVwiY29udHJvbFwiXG4gICAgPjwvZ3Ytc2NoZW1hLWZvcm0tY29udHJvbD5gO1xuICB9XG5cbiAgZ2V0Q29udHJvbHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wnKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLWFycmF5JykpLFxuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnKSksXG4gICAgXTtcbiAgfVxuXG4gIGdldENvbnRyb2woaWQpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIH1cblxuICBhc3luYyBfZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuX2dldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoZSkgPT4gZS51cGRhdGVDb21wbGV0ZSkpO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKSB7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZXJyb3JzJykpIHtcbiAgICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICAgIGNvbnRyb2wuZXJyb3JzID0gdGhpcy5lcnJvcnM7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpO1xuICAgIGNvbnN0IGNsYXNzZXMgPSB7XG4gICAgICAnZm9ybV9fY29udHJvbC1vYmplY3QnOiB0cnVlLFxuICAgICAgJ2Zvcm1fY29udHJvbC1pbmxpbmUnOiBrZXlzLmxlbmd0aCA8PSAyICYmIGtleXMuZmluZCgoa2V5KSA9PiBpc0NvZGVtaXJyb3IodGhpcy5zY2hlbWEucHJvcGVydGllc1trZXldKSkgPT0gbnVsbCxcbiAgICB9O1xuXG4gICAgY29uc3QgdGl0bGVDbGFzc2VzID0ge1xuICAgICAgJ2Zvcm1fX2NvbnRyb2wtZ3JvdXAtdGl0bGUnOiB0cnVlLFxuICAgICAgc2tlbGV0b246IHRoaXMuc2tlbGV0b24sXG4gICAgfTtcbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIj5cbiAgICAgICR7dGhpcy50aXRsZSA/IGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAodGl0bGVDbGFzc2VzKX1cIiB0aXRsZT1cIiR7dGhpcy50aXRsZX1cIj4ke3RoaXMudGl0bGV9PC9kaXY+YCA6ICcnfVxuICAgICAgJHtrZXlzLm1hcCgoa2V5KSA9PiB0aGlzLl9yZW5kZXJQYXJ0KGtleSkpfVxuICAgIDwvZGl2PmA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgc2tlbGV0b24sXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZ3JvdXAtdGl0bGUge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmZiZmJmO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnLCBHdlNjaGVtYUZvcm1Db250cm9sT2JqZWN0KTtcbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdC5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiY2xhc3NNYXAiLCJza2VsZXRvbiIsIkd2U2NoZW1hRm9ybUNvbnRyb2xPYmplY3QiLCJwcm9wZXJ0aWVzIiwic2NoZW1hIiwidHlwZSIsIk9iamVjdCIsInZhbHVlIiwicmVmbGVjdCIsImlkIiwiU3RyaW5nIiwidGl0bGUiLCJlcnJvcnMiLCJBcnJheSIsIkJvb2xlYW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJoaWRkZW4iLCJjb25zdHJ1Y3RvciIsIl9yZW5kZXJQYXJ0Iiwic3ViS2V5IiwiaXNSZXF1aXJlZCIsImluY2x1ZGVzIiwiaXNEaXNhYmxlZCIsImZ1bGxLZXkiLCJjb250cm9sIiwiZ2V0Q29udHJvbHMiLCJmcm9tIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJnZXRDb250cm9sIiwicXVlcnlTZWxlY3RvciIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJlIiwidXBkYXRlQ29tcGxldGUiLCJzaG91bGRVcGRhdGUiLCJjaGFuZ2VkUHJvcGVydGllcyIsImhhcyIsImZvckVhY2giLCJjYW5JbmxpbmUiLCJrZXkiLCJwcm9wZXJ0eSIsInJlbmRlciIsImtleXMiLCJjbGFzc2VzIiwibGVuZ3RoIiwiZmlsdGVyIiwidGl0bGVDbGFzc2VzIiwiZGV0YWlscyIsImlzT3BlbiIsInN0eWxlcyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUFBLEdBQUcsNFBBSEUsQ0FBUDtBQXdCRDs7QUF6SHVEO0FBNEgxRDRELE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsK0JBQTdCLEVBQThEdkQseUJBQTlEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdC1lbGVtZW50JztcbmltcG9ydCB7IGlzQ29kZW1pcnJvciwgaXNPYmplY3QgfSBmcm9tICcuLi9saWIvc2NoZW1hLWZvcm0nO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBza2VsZXRvbiB9IGZyb20gJy4uL3N0eWxlcy9za2VsZXRvbic7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1leHBhbmRhYmxlJztcblxuLyoqXG4gKiBTY2hlbWEgZm9ybSBjb250cm9sIG9iamVjdCBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEd2U2NoZW1hRm9ybUNvbnRyb2xPYmplY3QgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICB2YWx1ZTogeyB0eXBlOiBPYmplY3QsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGlkOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBlcnJvcnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlcXVpcmVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGhpZGRlbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICB9XG5cbiAgX3JlbmRlclBhcnQoc3ViS2V5KSB7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQgfHwgKHRoaXMuc2NoZW1hLnJlcXVpcmVkICYmIHRoaXMuc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKHN1YktleSkpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLnNjaGVtYS5kaXNhYmxlZCAmJiB0aGlzLnNjaGVtYS5kaXNhYmxlZC5pbmNsdWRlcyhzdWJLZXkpKTtcblxuICAgIGNvbnN0IGZ1bGxLZXkgPSB0aGlzLmlkICE9IG51bGwgPyBgJHt0aGlzLmlkfS4ke3N1YktleX1gIDogc3ViS2V5O1xuICAgIGNvbnN0IGNvbnRyb2wgPSB7IC4uLnRoaXMuc2NoZW1hLnByb3BlcnRpZXNbc3ViS2V5XSB9O1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSAhPSBudWxsID8gdGhpcy52YWx1ZVtzdWJLZXldIDogbnVsbDtcbiAgICByZXR1cm4gaHRtbGA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgLmlkPVwiJHtmdWxsS2V5fVwiXG4gICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgLnZhbHVlPVwiJHt2YWx1ZX1cIlxuICAgICAgLnNrZWxldG9uPVwiJHt0aGlzLnNrZWxldG9ufVwiXG4gICAgICA/cmVxdWlyZWQ9XCIke2lzUmVxdWlyZWR9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7aXNEaXNhYmxlZH1cIlxuICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICA/aGlkZGVuPVwiJHt0aGlzLmhpZGRlbn1cIlxuICAgICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPmA7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdlcnJvcnMnKSkge1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGNhbklubGluZShrZXkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICByZXR1cm4gIWlzQ29kZW1pcnJvcihwcm9wZXJ0eSkgJiYgIWlzT2JqZWN0KHByb3BlcnR5KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvcGVydGllcyk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICdmb3JtX2NvbnRyb2wtaW5saW5lJzoga2V5cy5sZW5ndGggPD0gMiAmJiBrZXlzLmZpbHRlcigoa2V5KSA9PiB0aGlzLmNhbklubGluZShrZXkpKS5sZW5ndGggPT09IGtleXMubGVuZ3RoLFxuICAgIH07XG5cbiAgICBjb25zdCB0aXRsZUNsYXNzZXMgPSB7XG4gICAgICAnZm9ybV9fY29udHJvbC1ncm91cC10aXRsZSc6IHRydWUsXG4gICAgICBza2VsZXRvbjogdGhpcy5za2VsZXRvbixcbiAgICB9O1xuXG4gICAgY29uc3QgZGV0YWlscyA9IGtleXMubWFwKChrZXkpID0+IHRoaXMuX3JlbmRlclBhcnQoa2V5KSk7XG5cbiAgICBpZiAodGhpcy50aXRsZSkge1xuICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5yZXF1aXJlZCB8fCB0aGlzLnNjaGVtYS5yZXF1aXJlZCAhPSBudWxsO1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LWV4cGFuZGFibGUgP29wZW49XCIke2lzT3Blbn1cIj5cbiAgICAgICAgPGRpdiBzbG90PVwic3VtbWFyeVwiIGNsYXNzPVwiJHtjbGFzc01hcCh0aXRsZUNsYXNzZXMpfVwiIHRpdGxlPVwiJHt0aGlzLnRpdGxlfVwiPiR7dGhpcy50aXRsZX08L2Rpdj5cbiAgICAgICAgPGRpdiBzbG90PVwiZGV0YWlsc1wiIGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIj4ke2RldGFpbHN9PC9kaXY+XG4gICAgICA8L2d2LWV4cGFuZGFibGU+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+JHtkZXRhaWxzfTwvZGl2PmA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHNrZWxldG9uLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIC5mb3JtX19jb250cm9sLWdyb3VwLXRpdGxlIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX2NvbnRyb2wtaW5saW5lIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbTogMCAwLjJyZW0gMCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqOmxhc3QtY2hpbGQge1xuICAgICAgICAgIC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbTogMCAwIDAgMC4ycmVtO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnLCBHdlNjaGVtYUZvcm1Db250cm9sT2JqZWN0KTtcbiJdfQ==
@@ -18,6 +18,7 @@ import { html } from 'lit-html';
18
18
  import { dispatchCustomEvent } from '../lib/events';
19
19
  import '../atoms/gv-input';
20
20
  import '../atoms/gv-input-message';
21
+ import '../atoms/gv-text';
21
22
  import '../atoms/gv-select';
22
23
  import '../atoms/gv-switch';
23
24
  import '../molecules/gv-code';
@@ -26,7 +27,7 @@ import '../molecules/gv-cron-editor';
26
27
  import '../atoms/gv-autocomplete';
27
28
  import '../organisms/gv-schema-form-array';
28
29
  import '../organisms/gv-schema-form-control-object';
29
- import { isCodemirror } from '../lib/schema-form';
30
+ import { isCodemirror, isObject } from '../lib/schema-form';
30
31
  export class GvSchemaFormControl extends LitElement {
31
32
  static get properties() {
32
33
  return {
@@ -112,12 +113,20 @@ export class GvSchemaFormControl extends LitElement {
112
113
  return isCodemirror(this.control);
113
114
  }
114
115
 
116
+ isObject() {
117
+ return isObject(this.control);
118
+ }
119
+
115
120
  isAutocomplete() {
116
121
  return this.control['x-schema-form'] && this.control['x-schema-form'].event != null && this.control.type === 'string';
117
122
  }
118
123
 
124
+ isText() {
125
+ return this.control['x-schema-form'] && this.control['x-schema-form'].type === 'text' && this.control.type === 'string';
126
+ }
127
+
119
128
  getElementName() {
120
- if (this.control.type === 'object') {
129
+ if (this.isObject()) {
121
130
  return 'gv-schema-form-control-object';
122
131
  }
123
132
 
@@ -135,6 +144,8 @@ export class GvSchemaFormControl extends LitElement {
135
144
  return 'gv-code';
136
145
  } else if (this.isCronExpression()) {
137
146
  return 'gv-cron-editor';
147
+ } else if (this.isText()) {
148
+ return 'gv-text';
138
149
  }
139
150
 
140
151
  return 'gv-input';
@@ -267,12 +278,10 @@ export class GvSchemaFormControl extends LitElement {
267
278
  currentTarget = element;
268
279
  }
269
280
 
270
- if (this.control['x-schema-form'] != null && this.control['x-schema-form'].event != null) {
271
- const name = this.control['x-schema-form'].event.name;
272
- dispatchCustomEvent(this, 'control-ready', { ...this.control['x-schema-form'].event,
281
+ if (this.control['x-schema-form'] != null) {
282
+ dispatchCustomEvent(this, 'control-ready', {
273
283
  currentTarget,
274
- eventName: name,
275
- control: this.control
284
+ control: this
276
285
  });
277
286
  }
278
287
 
@@ -382,9 +391,9 @@ export class GvSchemaFormControl extends LitElement {
382
391
 
383
392
  static get styles() {
384
393
  return [// language=CSS
385
- css`:host{box-sizing:border-box;margin:.4rem;display:block}:host([hidden]){visibility:hidden;height:0;margin:0;padding:0;overflow:hidden}.form__control-description,.form__control-error{font-size:12px}.form__control-description{opacity:.8}.form__control-label{display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9}label{margin:.2rem}.form__control-label label{flex:1;text-transform:capitalize}.form__control-array,.form__control-object{display:flex;flex-direction:column}.form__control-enum{display:flex}.form__control-array gv-button{align-self:flex-end}.form__control{position:relative}.form_control-inline{display:flex;flex-direction:row;margin:0}.form_control-inline>*{flex:1}.content>.form_control-inline>*{margin-left:0}.content>.form_control-inline>:last-child{margin-right:0}gv-code,gv-expression-language,gv-input,gv-select,gv-switch{width:100%;margin:.2rem 0}gv-autocomplete:hover,gv-select:hover{z-index:70}`];
394
+ css`:host{box-sizing:border-box;margin:var(--gv-schema-form-control--m,.4rem);display:block}:host([hidden]){visibility:hidden;height:0;margin:0;padding:0;overflow:hidden}.form__control-description,.form__control-error{font-size:12px}.form__control-description{opacity:.8}.form__control-label{display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9}label{margin:.2rem}.form__control-label label{flex:1;text-transform:capitalize}.form__control-array,.form__control-object{display:flex;flex-direction:column}.form__control-enum{display:flex}.form__control-array gv-button{align-self:flex-end}.form__control{position:relative}gv-code,gv-expression-language,gv-input,gv-select,gv-switch{width:100%;margin:.2rem 0}gv-autocomplete:hover,gv-select:hover{z-index:70}`];
386
395
  }
387
396
 
388
397
  }
389
398
  window.customElements.define('gv-schema-form-control', GvSchemaFormControl);
390
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImlzQ29kZW1pcnJvciIsIkd2U2NoZW1hRm9ybUNvbnRyb2wiLCJwcm9wZXJ0aWVzIiwidHlwZSIsIlN0cmluZyIsImlkIiwicmVmbGVjdCIsIm5hbWUiLCJyZXF1aXJlZCIsIkJvb2xlYW4iLCJkaXNhYmxlZCIsInJlYWRvbmx5IiwidGl0bGUiLCJwYXR0ZXJuIiwiY29udHJvbCIsIk9iamVjdCIsImVycm9ycyIsIkFycmF5IiwidmFsdWUiLCJza2VsZXRvbiIsImhpZGRlbiIsIndyaXRlT25seSIsImNvbnN0cnVjdG9yIiwiX29ic2VydmVkUHJvcGVydGllcyIsImlzRXhwcmVzc2lvbkxhbmd1YWdlIiwiaXNDcm9uRXhwcmVzc2lvbiIsImlzUGFzc3dvcmQiLCJnZXRQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiaXNBdXRvY29tcGxldGUiLCJldmVudCIsImdldEVsZW1lbnROYW1lIiwiZW51bSIsIml0ZW1zIiwiaXNDb21wbGV4QXJyYXkiLCJfdXBkYXRlUHJvcGVydGllcyIsImVsZW1lbnQiLCJmb3JFYWNoIiwicHJvcGVydHkiLCJfcmVuZGVyQ29udHJvbCIsImVsZW1lbnROYW1lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiX3NldFZhbHVlIiwiZGVmYXVsdCIsImN1cnJlbnRUYXJnZXQiLCJzY2hlbWEiLCJsYWJlbCIsInRtcCIsInNwbGl0IiwibGVuZ3RoIiwiaXNOYU4iLCJwYXJzZUludCIsIm9wdGlvbnMiLCJ0aXRsZU1hcCIsIm1hcCIsIm11bHRpcGxlIiwiY29kZW1pcnJvck9wdGlvbnMiLCJyb3dzIiwiZGVzY3JpcHRpb24iLCJhZGRFdmVudExpc3RlbmVyIiwiX29uSW5wdXQiLCJiaW5kIiwiYXV0b2NvbXBsZXRlIiwibWluQ2hhcnMiLCJmaWx0ZXIiLCJjbGVhcmFibGUiLCJhcHBlbmRDaGlsZCIsImV2ZW50TmFtZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInRhcmdldCIsInRhZ05hbWUiLCJkZXRhaWwiLCJnZXRDb250cm9scyIsImZyb20iLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvckFsbCIsImdldENvbnRyb2wiLCJxdWVyeVNlbGVjdG9yIiwiY29udHJvbEVsZW1lbnQiLCJ0b1N0cmluZyIsInVwZGF0ZWQiLCJjaGFuZ2VkUHJvcGVydGllcyIsImhhcyIsIlByb21pc2UiLCJhbGwiLCJ1cGRhdGVDb21wbGV0ZSIsInRoZW4iLCJnZXRVcGRhdGVDb21wbGV0ZSIsImZvcm1hdEVycm9yTWVzc2FnZSIsImVycm9yIiwiYXJndW1lbnQiLCJtZXNzYWdlIiwicmVwbGFjZSIsInNob3VsZFVwZGF0ZSIsImZpbmQiLCJlcnJvckNvbnRhaW5lciIsImNvbnRhaW5lciIsImlubmVySFRNTCIsImtleSIsImxldmVsIiwicmVuZGVyIiwic3R5bGVzIiwid2luZG93IiwiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLEdBQVQsRUFBY0MsVUFBZCxRQUFnQyxhQUFoQztBQUNBLFNBQVNDLElBQVQsUUFBcUIsVUFBckI7QUFDQSxTQUFTQyxtQkFBVCxRQUFvQyxlQUFwQztBQUNBLE9BQU8sbUJBQVA7QUFDQSxPQUFPLDJCQUFQO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxPQUFPLHNCQUFQO0FBQ0EsT0FBTyxxQ0FBUDtBQUNBLE9BQU8sNkJBQVA7QUFDQSxPQUFPLDBCQUFQO0FBQ0EsT0FBTyxtQ0FBUDtBQUNBLE9BQU8sNENBQVA7QUFDQSxTQUFTQyxZQUFULFFBQTZCLG9CQUE3QjtBQUVBLE9BQU8sTUFBTUMsbUJBQU4sU0FBa0NKLFVBQWxDLENBQTZDO0FBQzdCLGFBQVZLLFVBQVUsR0FBRztBQUN0QixXQUFPO0FBQ0xDLE1BQUFBLElBQUksRUFBRTtBQUFFQSxRQUFBQSxJQUFJLEVBQUVDO0FBQVIsT0FERDtBQUVMQyxNQUFBQSxFQUFFLEVBQUU7QUFBRUYsUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCRSxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FGQztBQUdMQyxNQUFBQSxJQUFJLEVBQUU7QUFBRUosUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCRSxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FIRDtBQUlMRSxNQUFBQSxRQUFRLEVBQUU7QUFBRUwsUUFBQUEsSUFBSSxFQUFFTSxPQUFSO0FBQWlCSCxRQUFBQSxPQUFPLEVBQUU7QUFBMUIsT0FKTDtBQUtMSSxNQUFBQSxRQUFRLEVBQUU7QUFBRVAsUUFBQUEsSUFBSSxFQUFFTSxPQUFSO0FBQWlCSCxRQUFBQSxPQUFPLEVBQUU7QUFBMUIsT0FMTDtBQU1MSyxNQUFBQSxRQUFRLEVBQUU7QUFBRVIsUUFBQUEsSUFBSSxFQUFFTSxPQUFSO0FBQWlCSCxRQUFBQSxPQUFPLEVBQUU7QUFBMUIsT0FOTDtBQU9MTSxNQUFBQSxLQUFLLEVBQUU7QUFBRVQsUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCRSxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FQRjtBQVFMTyxNQUFBQSxPQUFPLEVBQUU7QUFBRVYsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BUko7QUFTTFUsTUFBQUEsT0FBTyxFQUFFO0FBQUVYLFFBQUFBLElBQUksRUFBRVk7QUFBUixPQVRKO0FBVUxDLE1BQUFBLE1BQU0sRUFBRTtBQUFFYixRQUFBQSxJQUFJLEVBQUVjO0FBQVIsT0FWSDtBQVdMQyxNQUFBQSxLQUFLLEVBQUU7QUFBRWYsUUFBQUEsSUFBSSxFQUFFWSxNQUFSO0FBQWdCVCxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FYRjtBQVlMYSxNQUFBQSxRQUFRLEVBQUU7QUFBRWhCLFFBQUFBLElBQUksRUFBRU0sT0FBUjtBQUFpQkgsUUFBQUEsT0FBTyxFQUFFO0FBQTFCLE9BWkw7QUFhTGMsTUFBQUEsTUFBTSxFQUFFO0FBQUVqQixRQUFBQSxJQUFJLEVBQUVNLE9BQVI7QUFBaUJILFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQWJIO0FBY0xlLE1BQUFBLFNBQVMsRUFBRTtBQUFFbEIsUUFBQUEsSUFBSSxFQUFFTSxPQUFSO0FBQWlCSCxRQUFBQSxPQUFPLEVBQUU7QUFBMUI7QUFkTixLQUFQO0FBZ0JEOztBQUVEZ0IsRUFBQUEsV0FBVyxHQUFHO0FBQ1osWUFEWSxDQUVaO0FBQ0E7O0FBQ0EsU0FBS0MsbUJBQUwsR0FBMkIsQ0FBQyxVQUFELEVBQWEsVUFBYixFQUF5QixVQUF6QixDQUEzQjtBQUNEOztBQUVEQyxFQUFBQSxvQkFBb0IsR0FBRztBQUNyQixXQUFPLEtBQUtWLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCLHFCQUE5QixLQUF3RCxJQUFoRztBQUNEOztBQUVEVyxFQUFBQSxnQkFBZ0IsR0FBRztBQUNqQixXQUFPLEtBQUtYLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCLGlCQUE5QixNQUFxRCxJQUE3RjtBQUNEOztBQUVEWSxFQUFBQSxVQUFVLEdBQUc7QUFDWCxXQUNFLEtBQUtaLE9BQUwsQ0FBYU8sU0FBYixLQUEyQixJQUEzQixJQUNDLEtBQUtQLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCWCxJQUE5QixJQUFzQyxJQUF2RSxJQUErRSxLQUFLVyxPQUFMLENBQWEsZUFBYixFQUE4QlgsSUFBOUIsS0FBdUMsVUFGekg7QUFJRDs7QUFFRHdCLEVBQUFBLGNBQWMsR0FBRztBQUNmLFdBQU8sS0FBS2IsT0FBTCxDQUFhLGVBQWIsS0FBaUMsS0FBS0EsT0FBTCxDQUFhLGVBQWIsRUFBOEJjLFdBQS9ELEdBQTZFLEtBQUtkLE9BQUwsQ0FBYSxlQUFiLEVBQThCYyxXQUEzRyxHQUF5SCxJQUFoSTtBQUNEOztBQUVENUIsRUFBQUEsWUFBWSxHQUFHO0FBQ2IsV0FBT0EsWUFBWSxDQUFDLEtBQUtjLE9BQU4sQ0FBbkI7QUFDRDs7QUFFRGUsRUFBQUEsY0FBYyxHQUFHO0FBQ2YsV0FBTyxLQUFLZixPQUFMLENBQWEsZUFBYixLQUFpQyxLQUFLQSxPQUFMLENBQWEsZUFBYixFQUE4QmdCLEtBQTlCLElBQXVDLElBQXhFLElBQWdGLEtBQUtoQixPQUFMLENBQWFYLElBQWIsS0FBc0IsUUFBN0c7QUFDRDs7QUFFRDRCLEVBQUFBLGNBQWMsR0FBRztBQUNmLFFBQUksS0FBS2pCLE9BQUwsQ0FBYVgsSUFBYixLQUFzQixRQUExQixFQUFvQztBQUNsQyxhQUFPLCtCQUFQO0FBQ0Q7O0FBQ0QsUUFBSSxDQUFDLEtBQUtXLE9BQUwsQ0FBYWtCLElBQWIsSUFBc0IsS0FBS2xCLE9BQUwsQ0FBYW1CLEtBQWIsSUFBc0IsS0FBS25CLE9BQUwsQ0FBYW1CLEtBQWIsQ0FBbUJELElBQWhFLEtBQTBFLENBQUMsS0FBS0gsY0FBTCxFQUEvRSxFQUFzRztBQUNwRyxhQUFPLFdBQVA7QUFDRCxLQUZELE1BRU8sSUFBSSxLQUFLSyxjQUFMLEVBQUosRUFBMkI7QUFDaEMsYUFBTyxzQkFBUDtBQUNELEtBRk0sTUFFQSxJQUFJLEtBQUtwQixPQUFMLENBQWFYLElBQWIsS0FBc0IsT0FBMUIsRUFBbUM7QUFDeEMsYUFBTyxXQUFQO0FBQ0QsS0FGTSxNQUVBLElBQUksS0FBS1csT0FBTCxDQUFhWCxJQUFiLEtBQXNCLFNBQTFCLEVBQXFDO0FBQzFDLGFBQU8sV0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLEtBQUtxQixvQkFBTCxFQUFKLEVBQWlDO0FBQ3RDLGFBQU8sd0JBQVA7QUFDRCxLQUZNLE1BRUEsSUFBSSxLQUFLeEIsWUFBTCxFQUFKLEVBQXlCO0FBQzlCLGFBQU8sU0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLEtBQUt5QixnQkFBTCxFQUFKLEVBQTZCO0FBQ2xDLGFBQU8sZ0JBQVA7QUFDRDs7QUFFRCxXQUFPLFVBQVA7QUFDRDs7QUFFRFMsRUFBQUEsY0FBYyxHQUFHO0FBQ2YsV0FBTyxLQUFLcEIsT0FBTCxDQUFhWCxJQUFiLEtBQXNCLE9BQXRCLElBQWlDLENBQUMsS0FBS1csT0FBTCxDQUFhbUIsS0FBYixDQUFtQkQsSUFBNUQ7QUFDRDs7QUFFREcsRUFBQUEsaUJBQWlCLENBQUNDLE9BQUQsRUFBVTtBQUN6QixRQUFJQSxPQUFPLElBQUksSUFBZixFQUFxQjtBQUNuQixXQUFLYixtQkFBTCxDQUF5QmMsT0FBekIsQ0FBa0NDLFFBQUQsSUFBYztBQUM3QyxZQUFJLEtBQUtBLFFBQUwsS0FBa0IsSUFBdEIsRUFBNEI7QUFDMUJGLFVBQUFBLE9BQU8sQ0FBQ0UsUUFBRCxDQUFQLEdBQW9CLEtBQUtBLFFBQUwsQ0FBcEI7QUFDRDtBQUNGLE9BSkQ7QUFLRDtBQUNGOztBQUVEQyxFQUFBQSxjQUFjLEdBQUc7QUFDZixVQUFNQyxXQUFXLEdBQUcsS0FBS1QsY0FBTCxFQUFwQjtBQUNBLFVBQU1LLE9BQU8sR0FBR0ssUUFBUSxDQUFDQyxhQUFULENBQXVCRixXQUF2QixDQUFoQjtBQUNBSixJQUFBQSxPQUFPLENBQUMvQixFQUFSLEdBQWEsS0FBS0EsRUFBbEI7QUFDQStCLElBQUFBLE9BQU8sQ0FBQzdCLElBQVIsR0FBZSxLQUFLRixFQUFwQjtBQUNBK0IsSUFBQUEsT0FBTyxDQUFDakIsUUFBUixHQUFtQixLQUFLQSxRQUF4QjtBQUNBaUIsSUFBQUEsT0FBTyxDQUFDTyxTQUFSLENBQWtCQyxHQUFsQixDQUFzQixlQUF0Qjs7QUFFQSxRQUFJLEtBQUsxQixLQUFMLElBQWMsSUFBbEIsRUFBd0I7QUFDdEIsV0FBSzJCLFNBQUwsQ0FBZVQsT0FBZjtBQUNEOztBQUNELFFBQUksS0FBS2xCLEtBQUwsSUFBYyxJQUFkLElBQXNCLEtBQUtKLE9BQUwsQ0FBYWdDLE9BQWIsSUFBd0IsSUFBbEQsRUFBd0Q7QUFDdEQsV0FBSzVCLEtBQUwsR0FBYSxLQUFLSixPQUFMLENBQWFnQyxPQUExQjtBQUNBL0MsTUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLGVBQVAsRUFBd0I7QUFBRW1CLFFBQUFBLEtBQUssRUFBRSxLQUFLQSxLQUFkO0FBQXFCNkIsUUFBQUEsYUFBYSxFQUFFWCxPQUFwQztBQUE2Q3RCLFFBQUFBLE9BQU8sRUFBRSxLQUFLQTtBQUEzRCxPQUF4QixDQUFuQjtBQUNEOztBQUNELFFBQUksS0FBS0ksS0FBTCxJQUFjLElBQWxCLEVBQXdCO0FBQ3RCLFdBQUsyQixTQUFMLENBQWVULE9BQWY7QUFDRDs7QUFFRCxRQUFJLEtBQUt0QixPQUFMLENBQWFYLElBQWIsS0FBc0IsUUFBMUIsRUFBb0M7QUFDbENpQyxNQUFBQSxPQUFPLENBQUNZLE1BQVIsR0FBaUIsS0FBS2xDLE9BQXRCO0FBQ0QsS0FGRCxNQUVPLElBQUksS0FBS29CLGNBQUwsRUFBSixFQUEyQjtBQUNoQ0UsTUFBQUEsT0FBTyxDQUFDWSxNQUFSLEdBQWlCLEtBQUtsQyxPQUFMLENBQWFtQixLQUE5QjtBQUNEOztBQUVELFNBQUtFLGlCQUFMLENBQXVCQyxPQUF2Qjs7QUFFQSxRQUFJLEtBQUt0QixPQUFMLENBQWFGLEtBQWpCLEVBQXdCO0FBQ3RCd0IsTUFBQUEsT0FBTyxDQUFDYSxLQUFSLEdBQWdCLEtBQUtuQyxPQUFMLENBQWFGLEtBQTdCO0FBQ0F3QixNQUFBQSxPQUFPLENBQUN4QixLQUFSLEdBQWdCLEtBQUtFLE9BQUwsQ0FBYUYsS0FBN0I7QUFDRCxLQUhELE1BR087QUFDTCxZQUFNc0MsR0FBRyxHQUFHLEtBQUs3QyxFQUFMLENBQVE4QyxLQUFSLENBQWMsR0FBZCxDQUFaO0FBQ0EsWUFBTXZDLEtBQUssR0FBR3NDLEdBQUcsQ0FBQ0EsR0FBRyxDQUFDRSxNQUFKLEdBQWEsQ0FBZCxDQUFqQjs7QUFDQSxVQUFJQyxLQUFLLENBQUNDLFFBQVEsQ0FBQzFDLEtBQUQsRUFBUSxFQUFSLENBQVQsQ0FBVCxFQUFnQztBQUM5QndCLFFBQUFBLE9BQU8sQ0FBQ2EsS0FBUixHQUFnQnJDLEtBQWhCO0FBQ0F3QixRQUFBQSxPQUFPLENBQUN4QixLQUFSLEdBQWdCQSxLQUFoQjtBQUNEO0FBQ0Y7O0FBRUQsUUFBSSxLQUFLRSxPQUFMLENBQWFELE9BQWpCLEVBQTBCO0FBQ3hCdUIsTUFBQUEsT0FBTyxDQUFDdkIsT0FBUixHQUFrQixLQUFLQyxPQUFMLENBQWFELE9BQS9CO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLQyxPQUFMLENBQWFYLElBQWIsS0FBc0IsU0FBMUIsRUFBcUM7QUFDbkNpQyxNQUFBQSxPQUFPLENBQUNqQyxJQUFSLEdBQWUsUUFBZjtBQUNEOztBQUVELFVBQU15QixXQUFXLEdBQUcsS0FBS0QsY0FBTCxFQUFwQjs7QUFFQSxRQUFJLEtBQUtiLE9BQUwsQ0FBYWtCLElBQWIsSUFBc0IsS0FBS2xCLE9BQUwsQ0FBYW1CLEtBQWIsSUFBc0IsS0FBS25CLE9BQUwsQ0FBYW1CLEtBQWIsQ0FBbUJELElBQW5FLEVBQTBFO0FBQ3hFLFlBQU11QixPQUFPLEdBQUcsS0FBS3pDLE9BQUwsQ0FBYWtCLElBQWIsSUFBcUIsS0FBS2xCLE9BQUwsQ0FBYW1CLEtBQWIsQ0FBbUJELElBQXhEOztBQUNBLFVBQUksS0FBS2xCLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCMEMsUUFBbkUsRUFBNkU7QUFDM0VwQixRQUFBQSxPQUFPLENBQUNtQixPQUFSLEdBQWtCQSxPQUFPLENBQUNFLEdBQVIsQ0FBYXZDLEtBQUQsS0FBWTtBQUN4Q0EsVUFBQUEsS0FEd0M7QUFFeEMrQixVQUFBQSxLQUFLLEVBQUUsS0FBS25DLE9BQUwsQ0FBYSxlQUFiLEVBQThCMEMsUUFBOUIsQ0FBdUN0QyxLQUF2QyxLQUFpREE7QUFGaEIsU0FBWixDQUFaLENBQWxCO0FBSUQsT0FMRCxNQUtPO0FBQ0xrQixRQUFBQSxPQUFPLENBQUNtQixPQUFSLEdBQWtCQSxPQUFsQjtBQUNEOztBQUNELFVBQUksS0FBS3pDLE9BQUwsQ0FBYVgsSUFBYixLQUFzQixPQUExQixFQUFtQztBQUNqQ2lDLFFBQUFBLE9BQU8sQ0FBQ3NCLFFBQVIsR0FBbUIsSUFBbkI7QUFDRDtBQUNGLEtBYkQsTUFhTyxJQUFJLEtBQUsxRCxZQUFMLEVBQUosRUFBeUI7QUFDOUJvQyxNQUFBQSxPQUFPLENBQUNtQixPQUFSLEdBQWtCLEtBQUt6QyxPQUFMLENBQWEsZUFBYixFQUE4QjZDLGlCQUFoRDs7QUFDQSxVQUFJLEtBQUs3QyxPQUFMLENBQWFnQyxPQUFiLElBQXdCLElBQXhCLElBQWdDVixPQUFPLENBQUNtQixPQUFSLENBQWdCckMsS0FBaEIsSUFBeUIsSUFBN0QsRUFBbUU7QUFDakVrQixRQUFBQSxPQUFPLENBQUNtQixPQUFSLENBQWdCckMsS0FBaEIsR0FBd0IsS0FBS0osT0FBTCxDQUFhZ0MsT0FBckM7QUFDRDtBQUNGLEtBTE0sTUFLQSxJQUFJLEtBQUt0QixvQkFBTCxFQUFKLEVBQWlDO0FBQ3RDWSxNQUFBQSxPQUFPLENBQUNtQixPQUFSLEdBQWtCLEVBQWxCO0FBQ0FuQixNQUFBQSxPQUFPLENBQUN3QixJQUFSLEdBQWUsQ0FBZjtBQUNELEtBSE0sTUFHQSxJQUFJLEtBQUtsQyxVQUFMLEVBQUosRUFBdUI7QUFDNUJVLE1BQUFBLE9BQU8sQ0FBQ2pDLElBQVIsR0FBZSxVQUFmO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLVyxPQUFMLENBQWErQyxXQUFqQixFQUE4QjtBQUM1QnpCLE1BQUFBLE9BQU8sQ0FBQ3lCLFdBQVIsR0FBc0IsS0FBSy9DLE9BQUwsQ0FBYStDLFdBQW5DO0FBQ0Q7O0FBRUQsUUFBSWpDLFdBQVcsSUFBSSxJQUFuQixFQUF5QjtBQUN2QixVQUFJLEtBQUtKLG9CQUFMLE1BQStCLEtBQUt4QixZQUFMLEVBQW5DLEVBQXdEO0FBQ3REb0MsUUFBQUEsT0FBTyxDQUFDbUIsT0FBUixDQUFnQjNCLFdBQWhCLEdBQThCQSxXQUE5QjtBQUNELE9BRkQsTUFFTztBQUNMUSxRQUFBQSxPQUFPLENBQUNSLFdBQVIsR0FBc0JBLFdBQXRCO0FBQ0Q7QUFDRjs7QUFFRFEsSUFBQUEsT0FBTyxDQUFDMEIsZ0JBQVIsQ0FBMEIsR0FBRXRCLFdBQVksUUFBeEMsRUFBaUQsS0FBS3VCLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFqRDtBQUVBLFFBQUlqQixhQUFKOztBQUNBLFFBQUksS0FBS2xCLGNBQUwsRUFBSixFQUEyQjtBQUN6QixZQUFNb0MsWUFBWSxHQUFHeEIsUUFBUSxDQUFDQyxhQUFULENBQXVCLGlCQUF2QixDQUFyQjtBQUNBdUIsTUFBQUEsWUFBWSxDQUFDQyxRQUFiLEdBQXdCLENBQXhCO0FBQ0FELE1BQUFBLFlBQVksQ0FBQ0UsTUFBYixHQUFzQixJQUF0QjtBQUNBL0IsTUFBQUEsT0FBTyxDQUFDZ0MsU0FBUixHQUFvQixJQUFwQjtBQUNBSCxNQUFBQSxZQUFZLENBQUM1RCxFQUFiLEdBQWtCLEtBQUtBLEVBQXZCO0FBQ0E0RCxNQUFBQSxZQUFZLENBQUNJLFdBQWIsQ0FBeUJqQyxPQUF6QjtBQUNBNkIsTUFBQUEsWUFBWSxDQUFDSCxnQkFBYixDQUErQix3QkFBL0IsRUFBd0QsS0FBS0MsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQXhEO0FBQ0E1QixNQUFBQSxPQUFPLENBQUMwQixnQkFBUixDQUEwQixnQkFBMUIsRUFBMkMsS0FBS0MsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQTNDO0FBQ0FqQixNQUFBQSxhQUFhLEdBQUdrQixZQUFoQjtBQUNELEtBVkQsTUFVTztBQUNMbEIsTUFBQUEsYUFBYSxHQUFHWCxPQUFoQjtBQUNEOztBQUNELFFBQUksS0FBS3RCLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLElBQWpDLElBQXlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCZ0IsS0FBOUIsSUFBdUMsSUFBcEYsRUFBMEY7QUFDeEYsWUFBTXZCLElBQUksR0FBRyxLQUFLTyxPQUFMLENBQWEsZUFBYixFQUE4QmdCLEtBQTlCLENBQW9DdkIsSUFBakQ7QUFDQVIsTUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLGVBQVAsRUFBd0IsRUFDekMsR0FBRyxLQUFLZSxPQUFMLENBQWEsZUFBYixFQUE4QmdCLEtBRFE7QUFFekNpQixRQUFBQSxhQUZ5QztBQUd6Q3VCLFFBQUFBLFNBQVMsRUFBRS9ELElBSDhCO0FBSXpDTyxRQUFBQSxPQUFPLEVBQUUsS0FBS0E7QUFKMkIsT0FBeEIsQ0FBbkI7QUFNRDs7QUFDRCxXQUFPaUMsYUFBUDtBQUNEOztBQUVEZ0IsRUFBQUEsUUFBUSxDQUFDUSxDQUFELEVBQUk7QUFDVkEsSUFBQUEsQ0FBQyxDQUFDQyxjQUFGO0FBQ0FELElBQUFBLENBQUMsQ0FBQ0UsZUFBRjtBQUNBLFFBQUl2RCxLQUFLLEdBQUcsSUFBWjs7QUFDQSxRQUFJcUQsQ0FBQyxDQUFDRyxNQUFGLENBQVNDLE9BQVQsS0FBcUIsaUJBQXpCLEVBQTRDO0FBQzFDekQsTUFBQUEsS0FBSyxHQUFHcUQsQ0FBQyxDQUFDSyxNQUFGLENBQVMxRCxLQUFqQjtBQUNELEtBRkQsTUFFTztBQUNMQSxNQUFBQSxLQUFLLEdBQUdxRCxDQUFDLENBQUNLLE1BQVY7QUFDRDs7QUFDRDdFLElBQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxRQUFQLEVBQWlCO0FBQUVtQixNQUFBQSxLQUFGO0FBQVM2QixNQUFBQSxhQUFhLEVBQUV3QixDQUFDLENBQUNHLE1BQTFCO0FBQWtDNUQsTUFBQUEsT0FBTyxFQUFFLEtBQUtBO0FBQWhELEtBQWpCLENBQW5CO0FBQ0Q7O0FBRUQrRCxFQUFBQSxXQUFXLEdBQUc7QUFDWixXQUFPLENBQ0wsR0FBRzVELEtBQUssQ0FBQzZELElBQU4sQ0FBVyxLQUFLQyxVQUFMLENBQWdCQyxnQkFBaEIsQ0FBaUMsd0JBQWpDLENBQVgsQ0FERSxFQUVMLEdBQUcvRCxLQUFLLENBQUM2RCxJQUFOLENBQVcsS0FBS0MsVUFBTCxDQUFnQkMsZ0JBQWhCLENBQWlDLDhCQUFqQyxDQUFYLENBRkUsRUFHTCxHQUFHL0QsS0FBSyxDQUFDNkQsSUFBTixDQUFXLEtBQUtDLFVBQUwsQ0FBZ0JDLGdCQUFoQixDQUFpQywrQkFBakMsQ0FBWCxDQUhFLENBQVA7QUFLRDs7QUFFREMsRUFBQUEsVUFBVSxDQUFDNUUsRUFBRCxFQUFLO0FBQ2IsUUFBSUEsRUFBRSxJQUFJLElBQVYsRUFBZ0I7QUFDZEEsTUFBQUEsRUFBRSxHQUFHLEtBQUtBLEVBQVY7QUFDRDs7QUFDRCxXQUFPLEtBQUswRSxVQUFMLENBQWdCRyxhQUFoQixDQUErQixRQUFPN0UsRUFBRyxJQUF6QyxDQUFQO0FBQ0Q7O0FBRUR3QyxFQUFBQSxTQUFTLENBQUNzQyxjQUFELEVBQWlCO0FBQ3hCLFFBQUksS0FBS2pFLEtBQUwsSUFBYyxJQUFkLElBQXNCaUUsY0FBYyxJQUFJLElBQTVDLEVBQWtEO0FBQ2hELFVBQUksS0FBS3JFLE9BQUwsQ0FBYVgsSUFBYixLQUFzQixTQUF0QixJQUFtQyxLQUFLVyxPQUFMLENBQWFYLElBQWIsS0FBc0IsT0FBekQsSUFBb0UsS0FBS1csT0FBTCxDQUFhWCxJQUFiLEtBQXNCLFFBQTlGLEVBQXdHO0FBQ3RHZ0YsUUFBQUEsY0FBYyxDQUFDakUsS0FBZixHQUF1QixLQUFLQSxLQUE1QjtBQUNELE9BRkQsTUFFTztBQUNMaUUsUUFBQUEsY0FBYyxDQUFDakUsS0FBZixHQUF1QixLQUFLQSxLQUFMLENBQVdrRSxRQUFYLEdBQXNCLEtBQUtsRSxLQUFMLENBQVdrRSxRQUFYLEVBQXRCLEdBQThDLEtBQUtsRSxLQUExRTtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT2lFLGNBQVA7QUFDRDs7QUFFWSxRQUFQRSxPQUFPLENBQUNDLGlCQUFELEVBQW9CO0FBQy9CLFFBQUlBLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixPQUF0QixDQUFKLEVBQW9DO0FBQ2xDQyxNQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxLQUFLWixXQUFMLEdBQW1CcEIsR0FBbkIsQ0FBd0IzQyxPQUFELElBQWFBLE9BQU8sQ0FBQzRFLGNBQTVDLENBQVosRUFBeUVDLElBQXpFLENBQThFLE1BQU07QUFDbEYsYUFBSzlDLFNBQUwsQ0FBZSxLQUFLb0MsVUFBTCxFQUFmO0FBQ0QsT0FGRDtBQUdEO0FBQ0Y7O0FBRXNCLFFBQWpCVyxpQkFBaUIsR0FBRztBQUN4QixVQUFNLE1BQU1BLGlCQUFOLEVBQU47QUFDQSxVQUFNSixPQUFPLENBQUNDLEdBQVIsQ0FBWSxLQUFLWixXQUFMLEdBQW1CcEIsR0FBbkIsQ0FBd0JjLENBQUQsSUFBT0EsQ0FBQyxDQUFDbUIsY0FBaEMsQ0FBWixDQUFOO0FBQ0Q7O0FBRURHLEVBQUFBLGtCQUFrQixDQUFDQyxLQUFELEVBQVE7QUFDeEIsUUFBSUEsS0FBSyxDQUFDOUMsTUFBTixDQUFhOUMsVUFBYixJQUEyQixJQUEzQixJQUFtQzRGLEtBQUssQ0FBQzlDLE1BQU4sQ0FBYTlDLFVBQWIsQ0FBd0I0RixLQUFLLENBQUNDLFFBQTlCLEtBQTJDLElBQWxGLEVBQXdGO0FBQ3RGLFlBQU1uRixLQUFLLEdBQUdrRixLQUFLLENBQUM5QyxNQUFOLENBQWE5QyxVQUFiLENBQXdCNEYsS0FBSyxDQUFDQyxRQUE5QixFQUF3Q25GLEtBQXREOztBQUNBLFVBQUlBLEtBQUosRUFBVztBQUNULGVBQU9rRixLQUFLLENBQUNFLE9BQU4sQ0FBY0MsT0FBZCxDQUFzQkgsS0FBSyxDQUFDQyxRQUE1QixFQUFzQ25GLEtBQXRDLENBQVA7QUFDRDtBQUNGOztBQUNELFdBQU9rRixLQUFLLENBQUNFLE9BQWI7QUFDRDs7QUFFREUsRUFBQUEsWUFBWSxDQUFDWixpQkFBRCxFQUFvQjtBQUM5QixRQUFJLEtBQUsvRCxtQkFBTCxDQUF5QjRFLElBQXpCLENBQStCN0QsUUFBRCxJQUFjZ0QsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCakQsUUFBdEIsQ0FBNUMsS0FBZ0YsSUFBcEYsRUFBMEY7QUFDeEYsV0FBS0gsaUJBQUwsQ0FBdUIsS0FBSzhDLFVBQUwsRUFBdkI7QUFDRDs7QUFFRCxRQUFJSyxpQkFBaUIsQ0FBQ0MsR0FBbEIsQ0FBc0IsUUFBdEIsS0FBbUMsS0FBS3ZFLE1BQUwsSUFBZSxJQUF0RCxFQUE0RDtBQUMxRDtBQUNBLFdBQUs2RCxXQUFMLEdBQW1CeEMsT0FBbkIsQ0FBNEJ2QixPQUFELElBQWE7QUFDdENBLFFBQUFBLE9BQU8sQ0FBQ0UsTUFBUixHQUFpQixLQUFLQSxNQUF0QjtBQUNELE9BRkQsRUFGMEQsQ0FNMUQ7O0FBQ0EsWUFBTW9GLGNBQWMsR0FBRyxLQUFLckIsVUFBTCxDQUFnQkMsZ0JBQWhCLENBQWlDLHNCQUFqQyxDQUF2QjtBQUNBb0IsTUFBQUEsY0FBYyxDQUFDL0QsT0FBZixDQUF3QmdFLFNBQUQsSUFBZ0JBLFNBQVMsQ0FBQ0MsU0FBVixHQUFzQixFQUE3RDtBQUNBLFdBQUt0RixNQUFMLENBQVlxQixPQUFaLENBQXFCeUQsS0FBRCxJQUFXO0FBQzdCLGNBQU1TLEdBQUcsR0FBR1QsS0FBSyxDQUFDeEQsUUFBTixLQUFtQixVQUFuQixHQUFnQ3dELEtBQUssQ0FBQ0MsUUFBdEMsR0FBaURELEtBQUssQ0FBQ3hELFFBQU4sQ0FBZTJELE9BQWYsQ0FBdUIsV0FBdkIsRUFBb0MsRUFBcEMsQ0FBN0Q7QUFDQSxjQUFNRyxjQUFjLEdBQUcsS0FBS3JCLFVBQUwsQ0FBZ0JHLGFBQWhCLENBQStCLFFBQU9xQixHQUFJLFVBQTFDLENBQXZCOztBQUNBLFlBQUlILGNBQUosRUFBb0I7QUFDbEIsZ0JBQU1KLE9BQU8sR0FBR3ZELFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixrQkFBdkIsQ0FBaEI7QUFDQXNELFVBQUFBLE9BQU8sQ0FBQ00sU0FBUixHQUFvQixLQUFLVCxrQkFBTCxDQUF3QkMsS0FBeEIsQ0FBcEI7QUFDQUUsVUFBQUEsT0FBTyxDQUFDUSxLQUFSLEdBQWdCLE1BQWhCO0FBQ0FKLFVBQUFBLGNBQWMsQ0FBQy9CLFdBQWYsQ0FBMkIyQixPQUEzQjtBQUNEO0FBQ0YsT0FURDtBQVVBLGFBQU8sS0FBUDtBQUNEOztBQUNELFdBQU8sTUFBTUUsWUFBTixDQUFtQlosaUJBQW5CLENBQVA7QUFDRDs7QUFFRG1CLEVBQUFBLE1BQU0sR0FBRztBQUNQLFdBQU8zRyxJQUFJLElBQ1AsS0FBS3lDLGNBQUwsRUFETyx5Q0FFOEIsS0FBS2xDLEVBQUwsR0FBVSxRQUZ4QyxXQUFYO0FBSUQ7O0FBRWdCLGFBQU5xRyxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0E5RyxJQUFBQSxHQUFHLDY1QkFGRSxDQUFQO0FBNkZEOztBQTVZaUQ7QUErWXBEK0csTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2Qix3QkFBN0IsRUFBdUQ1RyxtQkFBdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC1odG1sJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW5wdXQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dC1tZXNzYWdlJztcbmltcG9ydCAnLi4vYXRvbXMvZ3Ytc2VsZWN0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3Ytc3dpdGNoJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWNvZGUnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZSc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1jcm9uLWVkaXRvcic7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWF1dG9jb21wbGV0ZSc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1hcnJheSc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCc7XG5pbXBvcnQgeyBpc0NvZGVtaXJyb3IgfSBmcm9tICcuLi9saWIvc2NoZW1hLWZvcm0nO1xuXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtQ29udHJvbCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBpZDogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIG5hbWU6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICByZXF1aXJlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBjb250cm9sOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgZXJyb3JzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgICB2YWx1ZTogeyB0eXBlOiBPYmplY3QsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGhpZGRlbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICB3cml0ZU9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIFdoZW4gZm9ybSBoYXMgZXJyb3JzLCB0aGUgY29udHJvbCBpcyBub3QgdXBkYXRlIHRvIGNvbnNlcnZlIHRoZSBlcnJvciBzdGF0ZS5cbiAgICAvLyBUaGlzIGxpc3QgaXMgdXNlZCB0byBmb3JjZSB0aGUgdXBkYXRlIG9mIHByb3BlcnRpZXMgZXZlbiBpbiBlcnJvciBjYXNlLlxuICAgIHRoaXMuX29ic2VydmVkUHJvcGVydGllcyA9IFsnZGlzYWJsZWQnLCAncmVhZG9ubHknLCAncmVxdWlyZWQnXTtcbiAgfVxuXG4gIGlzRXhwcmVzc2lvbkxhbmd1YWdlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVsnZXhwcmVzc2lvbi1sYW5ndWFnZSddICE9IG51bGw7XG4gIH1cblxuICBpc0Nyb25FeHByZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVsnY3Jvbi1leHByZXNzaW9uJ10gPT09IHRydWU7XG4gIH1cblxuICBpc1Bhc3N3b3JkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbnRyb2wud3JpdGVPbmx5ID09PSB0cnVlIHx8XG4gICAgICAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSAhPSBudWxsICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnR5cGUgPT09ICdwYXNzd29yZCcpXG4gICAgKTtcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5wbGFjZWhvbGRlciA/IHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnBsYWNlaG9sZGVyIDogbnVsbDtcbiAgfVxuXG4gIGlzQ29kZW1pcnJvcigpIHtcbiAgICByZXR1cm4gaXNDb2RlbWlycm9yKHRoaXMuY29udHJvbCk7XG4gIH1cblxuICBpc0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10uZXZlbnQgIT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBnZXRFbGVtZW50TmFtZSgpIHtcbiAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKCh0aGlzLmNvbnRyb2wuZW51bSB8fCAodGhpcy5jb250cm9sLml0ZW1zICYmIHRoaXMuY29udHJvbC5pdGVtcy5lbnVtKSkgJiYgIXRoaXMuaXNBdXRvY29tcGxldGUoKSkge1xuICAgICAgcmV0dXJuICdndi1zZWxlY3QnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXhBcnJheSgpKSB7XG4gICAgICByZXR1cm4gJ2d2LXNjaGVtYS1mb3JtLWFycmF5JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICByZXR1cm4gJ2d2LWJ1dHRvbic7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gJ2d2LXN3aXRjaCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRXhwcmVzc2lvbkxhbmd1YWdlKCkpIHtcbiAgICAgIHJldHVybiAnZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICByZXR1cm4gJ2d2LWNvZGUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0Nyb25FeHByZXNzaW9uKCkpIHtcbiAgICAgIHJldHVybiAnZ3YtY3Jvbi1lZGl0b3InO1xuICAgIH1cblxuICAgIHJldHVybiAnZ3YtaW5wdXQnO1xuICB9XG5cbiAgaXNDb21wbGV4QXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC50eXBlID09PSAnYXJyYXknICYmICF0aGlzLmNvbnRyb2wuaXRlbXMuZW51bTtcbiAgfVxuXG4gIF91cGRhdGVQcm9wZXJ0aWVzKGVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgaWYgKHRoaXNbcHJvcGVydHldICE9IG51bGwpIHtcbiAgICAgICAgICBlbGVtZW50W3Byb3BlcnR5XSA9IHRoaXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyQ29udHJvbCgpIHtcbiAgICBjb25zdCBlbGVtZW50TmFtZSA9IHRoaXMuZ2V0RWxlbWVudE5hbWUoKTtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TmFtZSk7XG4gICAgZWxlbWVudC5pZCA9IHRoaXMuaWQ7XG4gICAgZWxlbWVudC5uYW1lID0gdGhpcy5pZDtcbiAgICBlbGVtZW50LnNrZWxldG9uID0gdGhpcy5za2VsZXRvbjtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Zvcm1fX2NvbnRyb2wnKTtcblxuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3NldFZhbHVlKGVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsICYmIHRoaXMuY29udHJvbC5kZWZhdWx0ICE9IG51bGwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvbnRyb2wuZGVmYXVsdDtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2RlZmF1bHQtdmFsdWUnLCB7IHZhbHVlOiB0aGlzLnZhbHVlLCBjdXJyZW50VGFyZ2V0OiBlbGVtZW50LCBjb250cm9sOiB0aGlzLmNvbnRyb2wgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3NldFZhbHVlKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGVsZW1lbnQuc2NoZW1hID0gdGhpcy5jb250cm9sO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXhBcnJheSgpKSB7XG4gICAgICBlbGVtZW50LnNjaGVtYSA9IHRoaXMuY29udHJvbC5pdGVtcztcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKGVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC50aXRsZSkge1xuICAgICAgZWxlbWVudC5sYWJlbCA9IHRoaXMuY29udHJvbC50aXRsZTtcbiAgICAgIGVsZW1lbnQudGl0bGUgPSB0aGlzLmNvbnRyb2wudGl0bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRtcCA9IHRoaXMuaWQuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gdG1wW3RtcC5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChpc05hTihwYXJzZUludCh0aXRsZSwgMTApKSkge1xuICAgICAgICBlbGVtZW50LmxhYmVsID0gdGl0bGU7XG4gICAgICAgIGVsZW1lbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnBhdHRlcm4pIHtcbiAgICAgIGVsZW1lbnQucGF0dGVybiA9IHRoaXMuY29udHJvbC5wYXR0ZXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2ludGVnZXInKSB7XG4gICAgICBlbGVtZW50LnR5cGUgPSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wuZW51bSB8fCAodGhpcy5jb250cm9sLml0ZW1zICYmIHRoaXMuY29udHJvbC5pdGVtcy5lbnVtKSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY29udHJvbC5lbnVtIHx8IHRoaXMuY29udHJvbC5pdGVtcy5lbnVtO1xuICAgICAgaWYgKHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnRpdGxlTWFwKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucyA9IG9wdGlvbnMubWFwKCh2YWx1ZSkgPT4gKHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBsYWJlbDogdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udGl0bGVNYXBbdmFsdWVdIHx8IHZhbHVlLFxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGVsZW1lbnQubXVsdGlwbGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvZGVtaXJyb3IoKSkge1xuICAgICAgZWxlbWVudC5vcHRpb25zID0gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10uY29kZW1pcnJvck9wdGlvbnM7XG4gICAgICBpZiAodGhpcy5jb250cm9sLmRlZmF1bHQgIT0gbnVsbCAmJiBlbGVtZW50Lm9wdGlvbnMudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBlbGVtZW50Lm9wdGlvbnMudmFsdWUgPSB0aGlzLmNvbnRyb2wuZGVmYXVsdDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSkge1xuICAgICAgZWxlbWVudC5vcHRpb25zID0ge307XG4gICAgICBlbGVtZW50LnJvd3MgPSAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1Bhc3N3b3JkKCkpIHtcbiAgICAgIGVsZW1lbnQudHlwZSA9ICdwYXNzd29yZCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC5kZXNjcmlwdGlvbikge1xuICAgICAgZWxlbWVudC5kZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbC5kZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpZiAocGxhY2Vob2xkZXIgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSB8fCB0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucy5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihgJHtlbGVtZW50TmFtZX06aW5wdXRgLCB0aGlzLl9vbklucHV0LmJpbmQodGhpcykpO1xuXG4gICAgbGV0IGN1cnJlbnRUYXJnZXQ7XG4gICAgaWYgKHRoaXMuaXNBdXRvY29tcGxldGUoKSkge1xuICAgICAgY29uc3QgYXV0b2NvbXBsZXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtYXV0b2NvbXBsZXRlJyk7XG4gICAgICBhdXRvY29tcGxldGUubWluQ2hhcnMgPSAwO1xuICAgICAgYXV0b2NvbXBsZXRlLmZpbHRlciA9IHRydWU7XG4gICAgICBlbGVtZW50LmNsZWFyYWJsZSA9IHRydWU7XG4gICAgICBhdXRvY29tcGxldGUuaWQgPSB0aGlzLmlkO1xuICAgICAgYXV0b2NvbXBsZXRlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgYXV0b2NvbXBsZXRlLmFkZEV2ZW50TGlzdGVuZXIoYGd2LWF1dG9jb21wbGV0ZTpzZWxlY3RgLCB0aGlzLl9vbklucHV0LmJpbmQodGhpcykpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGBndi1pbnB1dDpjbGVhcmAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG4gICAgICBjdXJyZW50VGFyZ2V0ID0gYXV0b2NvbXBsZXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VGFyZ2V0ID0gZWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICE9IG51bGwgJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10uZXZlbnQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLmV2ZW50Lm5hbWU7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjb250cm9sLXJlYWR5Jywge1xuICAgICAgICAuLi50aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudCxcbiAgICAgICAgY3VycmVudFRhcmdldCxcbiAgICAgICAgZXZlbnROYW1lOiBuYW1lLFxuICAgICAgICBjb250cm9sOiB0aGlzLmNvbnRyb2wsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRUYXJnZXQ7XG4gIH1cblxuICBfb25JbnB1dChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0dWLUFVVE9DT01QTEVURScpIHtcbiAgICAgIHZhbHVlID0gZS5kZXRhaWwudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZS5kZXRhaWw7XG4gICAgfVxuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZScsIHsgdmFsdWUsIGN1cnJlbnRUYXJnZXQ6IGUudGFyZ2V0LCBjb250cm9sOiB0aGlzLmNvbnRyb2wgfSk7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIGlmIChpZCA9PSBudWxsKSB7XG4gICAgICBpZCA9IHRoaXMuaWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIF9zZXRWYWx1ZShjb250cm9sRWxlbWVudCkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwgJiYgY29udHJvbEVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnYm9vbGVhbicgfHwgdGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScgfHwgdGhpcy5jb250cm9sLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnRyb2xFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2xFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZS50b1N0cmluZyA/IHRoaXMudmFsdWUudG9TdHJpbmcoKSA6IHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb250cm9sRWxlbWVudDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd2YWx1ZScpKSB7XG4gICAgICBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChjb250cm9sKSA9PiBjb250cm9sLnVwZGF0ZUNvbXBsZXRlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuZ2V0Q29udHJvbCgpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFVwZGF0ZUNvbXBsZXRlKCkge1xuICAgIGF3YWl0IHN1cGVyLmdldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoZSkgPT4gZS51cGRhdGVDb21wbGV0ZSkpO1xuICB9XG5cbiAgZm9ybWF0RXJyb3JNZXNzYWdlKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLnNjaGVtYS5wcm9wZXJ0aWVzICE9IG51bGwgJiYgZXJyb3Iuc2NoZW1hLnByb3BlcnRpZXNbZXJyb3IuYXJndW1lbnRdICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gZXJyb3Iuc2NoZW1hLnByb3BlcnRpZXNbZXJyb3IuYXJndW1lbnRdLnRpdGxlO1xuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlLnJlcGxhY2UoZXJyb3IuYXJndW1lbnQsIHRpdGxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVycm9yLm1lc3NhZ2U7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAodGhpcy5fb2JzZXJ2ZWRQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBjaGFuZ2VkUHJvcGVydGllcy5oYXMocHJvcGVydHkpKSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKHRoaXMuZ2V0Q29udHJvbCgpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdlcnJvcnMnKSAmJiB0aGlzLmVycm9ycyAhPSBudWxsKSB7XG4gICAgICAvLyBTZXQgZXJyb3JzIHRvIGNvbXBsZXggY29udHJvbHNcbiAgICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICAgIGNvbnRyb2wuZXJyb3JzID0gdGhpcy5lcnJvcnM7XG4gICAgICB9KTtcblxuICAgICAgLy8gRmluZCBzaW1wbGUgY29udHJvbHMgYW5kIGFwcGVuZCBlcnJvciBtZXNzYWdlXG4gICAgICBjb25zdCBlcnJvckNvbnRhaW5lciA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCcuZm9ybV9fY29udHJvbC1lcnJvcicpO1xuICAgICAgZXJyb3JDb250YWluZXIuZm9yRWFjaCgoY29udGFpbmVyKSA9PiAoY29udGFpbmVyLmlubmVySFRNTCA9ICcnKSk7XG4gICAgICB0aGlzLmVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBlcnJvci5wcm9wZXJ0eSA9PT0gJ2luc3RhbmNlJyA/IGVycm9yLmFyZ3VtZW50IDogZXJyb3IucHJvcGVydHkucmVwbGFjZSgnaW5zdGFuY2UuJywgJycpO1xuICAgICAgICBjb25zdCBlcnJvckNvbnRhaW5lciA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2tleX0tZXJyb3JcIl1gKTtcbiAgICAgICAgaWYgKGVycm9yQ29udGFpbmVyKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2d2LWlucHV0LW1lc3NhZ2UnKTtcbiAgICAgICAgICBtZXNzYWdlLmlubmVySFRNTCA9IHRoaXMuZm9ybWF0RXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgICAgICAgICBtZXNzYWdlLmxldmVsID0gJ3dhcm4nO1xuICAgICAgICAgIGVycm9yQ29udGFpbmVyLmFwcGVuZENoaWxkKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke3RoaXMuX3JlbmRlckNvbnRyb2woKX1cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX19jb250cm9sLWVycm9yXCIgaWQ9XCIke3RoaXMuaWQgKyAnLWVycm9yJ31cIj48L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBtYXJnaW46IDAuNHJlbTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtoaWRkZW5dKSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZGVzY3JpcHRpb24sXG4gICAgICAgIC5mb3JtX19jb250cm9sLWVycm9yIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sLWxhYmVsIGxhYmVsIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXksXG4gICAgICAgIC5mb3JtX19jb250cm9sLW9iamVjdCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZW51bSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAvKmFsaWduLWl0ZW1zOiBmbGV4LWVuZDsqL1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXkgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9jb250cm9sLWlubGluZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX2NvbnRyb2wtaW5saW5lID4gKiB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50ID4gLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50ID4gLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqOmxhc3QtY2hpbGQge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXNlbGVjdCxcbiAgICAgICAgZ3YtaW5wdXQsXG4gICAgICAgIGd2LWNvZGUsXG4gICAgICAgIGd2LXN3aXRjaCxcbiAgICAgICAgZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXNlbGVjdDpob3ZlcixcbiAgICAgICAgZ3YtYXV0b2NvbXBsZXRlOmhvdmVyIHtcbiAgICAgICAgICB6LWluZGV4OiA3MDtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wnLCBHdlNjaGVtYUZvcm1Db250cm9sKTtcbiJdfQ==
399
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiR3ZTY2hlbWFGb3JtQ29udHJvbCIsInByb3BlcnRpZXMiLCJ0eXBlIiwiU3RyaW5nIiwiaWQiLCJyZWZsZWN0IiwibmFtZSIsInJlcXVpcmVkIiwiQm9vbGVhbiIsImRpc2FibGVkIiwicmVhZG9ubHkiLCJ0aXRsZSIsInBhdHRlcm4iLCJjb250cm9sIiwiT2JqZWN0IiwiZXJyb3JzIiwiQXJyYXkiLCJ2YWx1ZSIsInNrZWxldG9uIiwiaGlkZGVuIiwid3JpdGVPbmx5IiwiY29uc3RydWN0b3IiLCJfb2JzZXJ2ZWRQcm9wZXJ0aWVzIiwiaXNFeHByZXNzaW9uTGFuZ3VhZ2UiLCJpc0Nyb25FeHByZXNzaW9uIiwiaXNQYXNzd29yZCIsImdldFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJpc0F1dG9jb21wbGV0ZSIsImV2ZW50IiwiaXNUZXh0IiwiZ2V0RWxlbWVudE5hbWUiLCJlbnVtIiwiaXRlbXMiLCJpc0NvbXBsZXhBcnJheSIsIl91cGRhdGVQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImZvckVhY2giLCJwcm9wZXJ0eSIsIl9yZW5kZXJDb250cm9sIiwiZWxlbWVudE5hbWUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJfc2V0VmFsdWUiLCJkZWZhdWx0IiwiY3VycmVudFRhcmdldCIsInNjaGVtYSIsImxhYmVsIiwidG1wIiwic3BsaXQiLCJsZW5ndGgiLCJpc05hTiIsInBhcnNlSW50Iiwib3B0aW9ucyIsInRpdGxlTWFwIiwibWFwIiwibXVsdGlwbGUiLCJjb2RlbWlycm9yT3B0aW9ucyIsInJvd3MiLCJkZXNjcmlwdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25JbnB1dCIsImJpbmQiLCJhdXRvY29tcGxldGUiLCJtaW5DaGFycyIsImZpbHRlciIsImNsZWFyYWJsZSIsImFwcGVuZENoaWxkIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsImRldGFpbCIsImdldENvbnRyb2xzIiwiZnJvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250cm9sRWxlbWVudCIsInRvU3RyaW5nIiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiUHJvbWlzZSIsImFsbCIsInVwZGF0ZUNvbXBsZXRlIiwidGhlbiIsImdldFVwZGF0ZUNvbXBsZXRlIiwiZm9ybWF0RXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJhcmd1bWVudCIsIm1lc3NhZ2UiLCJyZXBsYWNlIiwic2hvdWxkVXBkYXRlIiwiZmluZCIsImVycm9yQ29udGFpbmVyIiwiY29udGFpbmVyIiwiaW5uZXJIVE1MIiwia2V5IiwibGV2ZWwiLCJyZW5kZXIiLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxVQUFkLFFBQWdDLGFBQWhDO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixVQUFyQjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sMkJBQVA7QUFDQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxPQUFPLHNCQUFQO0FBQ0EsT0FBTyxxQ0FBUDtBQUNBLE9BQU8sNkJBQVA7QUFDQSxPQUFPLDBCQUFQO0FBQ0EsT0FB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QUFFRG1CLEVBQUFBLE1BQU0sR0FBRztBQUNQLFdBQU81RyxJQUFJLElBQ1AsS0FBSzJDLGNBQUwsRUFETyx5Q0FFOEIsS0FBS25DLEVBQUwsR0FBVSxRQUZ4QyxXQUFYO0FBSUQ7O0FBRWdCLGFBQU5xRyxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0EvRyxJQUFBQSxHQUFHLDJ2QkFGRSxDQUFQO0FBMkVEOztBQWpZaUQ7QUFvWXBEZ0gsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2Qix3QkFBN0IsRUFBdUQ1RyxtQkFBdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC1odG1sJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW5wdXQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dC1tZXNzYWdlJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtdGV4dCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXNlbGVjdCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXN3aXRjaCc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1jb2RlJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWV4cHJlc3Npb24tbGFuZ3VhZ2UnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtY3Jvbi1lZGl0b3InO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1hdXRvY29tcGxldGUnO1xuaW1wb3J0ICcuLi9vcmdhbmlzbXMvZ3Ytc2NoZW1hLWZvcm0tYXJyYXknO1xuaW1wb3J0ICcuLi9vcmdhbmlzbXMvZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnO1xuaW1wb3J0IHsgaXNDb2RlbWlycm9yLCBpc09iamVjdCB9IGZyb20gJy4uL2xpYi9zY2hlbWEtZm9ybSc7XG5cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm1Db250cm9sIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGlkOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlcXVpcmVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcGF0dGVybjogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGNvbnRyb2w6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBlcnJvcnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IE9iamVjdCwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgc2tlbGV0b246IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGlkZGVuOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHdyaXRlT25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gV2hlbiBmb3JtIGhhcyBlcnJvcnMsIHRoZSBjb250cm9sIGlzIG5vdCB1cGRhdGUgdG8gY29uc2VydmUgdGhlIGVycm9yIHN0YXRlLlxuICAgIC8vIFRoaXMgbGlzdCBpcyB1c2VkIHRvIGZvcmNlIHRoZSB1cGRhdGUgb2YgcHJvcGVydGllcyBldmVuIGluIGVycm9yIGNhc2UuXG4gICAgdGhpcy5fb2JzZXJ2ZWRQcm9wZXJ0aWVzID0gWydkaXNhYmxlZCcsICdyZWFkb25seScsICdyZXF1aXJlZCddO1xuICB9XG5cbiAgaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddWydleHByZXNzaW9uLWxhbmd1YWdlJ10gIT0gbnVsbDtcbiAgfVxuXG4gIGlzQ3JvbkV4cHJlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddWydjcm9uLWV4cHJlc3Npb24nXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIGlzUGFzc3dvcmQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29udHJvbC53cml0ZU9ubHkgPT09IHRydWUgfHxcbiAgICAgICh0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlICE9IG51bGwgJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSA9PT0gJ3Bhc3N3b3JkJylcbiAgICApO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnBsYWNlaG9sZGVyID8gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10ucGxhY2Vob2xkZXIgOiBudWxsO1xuICB9XG5cbiAgaXNDb2RlbWlycm9yKCkge1xuICAgIHJldHVybiBpc0NvZGVtaXJyb3IodGhpcy5jb250cm9sKTtcbiAgfVxuXG4gIGlzT2JqZWN0KCkge1xuICAgIHJldHVybiBpc09iamVjdCh0aGlzLmNvbnRyb2wpO1xuICB9XG5cbiAgaXNBdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLmV2ZW50ICE9IG51bGwgJiYgdGhpcy5jb250cm9sLnR5cGUgPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgaXNUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlID09PSAndGV4dCcgJiYgdGhpcy5jb250cm9sLnR5cGUgPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgZ2V0RWxlbWVudE5hbWUoKSB7XG4gICAgaWYgKHRoaXMuaXNPYmplY3QoKSkge1xuICAgICAgcmV0dXJuICdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCc7XG4gICAgfVxuICAgIGlmICgodGhpcy5jb250cm9sLmVudW0gfHwgKHRoaXMuY29udHJvbC5pdGVtcyAmJiB0aGlzLmNvbnRyb2wuaXRlbXMuZW51bSkpICYmICF0aGlzLmlzQXV0b2NvbXBsZXRlKCkpIHtcbiAgICAgIHJldHVybiAnZ3Ytc2VsZWN0JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb21wbGV4QXJyYXkoKSkge1xuICAgICAgcmV0dXJuICdndi1zY2hlbWEtZm9ybS1hcnJheSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuICdndi1idXR0b24nO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuICdndi1zd2l0Y2gnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpKSB7XG4gICAgICByZXR1cm4gJ2d2LWV4cHJlc3Npb24tbGFuZ3VhZ2UnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvZGVtaXJyb3IoKSkge1xuICAgICAgcmV0dXJuICdndi1jb2RlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDcm9uRXhwcmVzc2lvbigpKSB7XG4gICAgICByZXR1cm4gJ2d2LWNyb24tZWRpdG9yJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZXh0KCkpIHtcbiAgICAgIHJldHVybiAnZ3YtdGV4dCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdndi1pbnB1dCc7XG4gIH1cblxuICBpc0NvbXBsZXhBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScgJiYgIXRoaXMuY29udHJvbC5pdGVtcy5lbnVtO1xuICB9XG5cbiAgX3VwZGF0ZVByb3BlcnRpZXMoZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX29ic2VydmVkUHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAodGhpc1twcm9wZXJ0eV0gIT0gbnVsbCkge1xuICAgICAgICAgIGVsZW1lbnRbcHJvcGVydHldID0gdGhpc1twcm9wZXJ0eV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9yZW5kZXJDb250cm9sKCkge1xuICAgIGNvbnN0IGVsZW1lbnROYW1lID0gdGhpcy5nZXRFbGVtZW50TmFtZSgpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTtcbiAgICBlbGVtZW50LmlkID0gdGhpcy5pZDtcbiAgICBlbGVtZW50Lm5hbWUgPSB0aGlzLmlkO1xuICAgIGVsZW1lbnQuc2tlbGV0b24gPSB0aGlzLnNrZWxldG9uO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZm9ybV9fY29udHJvbCcpO1xuXG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgJiYgdGhpcy5jb250cm9sLmRlZmF1bHQgIT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udHJvbC5kZWZhdWx0O1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZGVmYXVsdC12YWx1ZScsIHsgdmFsdWU6IHRoaXMudmFsdWUsIGN1cnJlbnRUYXJnZXQ6IGVsZW1lbnQsIGNvbnRyb2w6IHRoaXMuY29udHJvbCB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgZWxlbWVudC5zY2hlbWEgPSB0aGlzLmNvbnRyb2w7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29tcGxleEFycmF5KCkpIHtcbiAgICAgIGVsZW1lbnQuc2NoZW1hID0gdGhpcy5jb250cm9sLml0ZW1zO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMoZWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnRpdGxlKSB7XG4gICAgICBlbGVtZW50LmxhYmVsID0gdGhpcy5jb250cm9sLnRpdGxlO1xuICAgICAgZWxlbWVudC50aXRsZSA9IHRoaXMuY29udHJvbC50aXRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG1wID0gdGhpcy5pZC5zcGxpdCgnLicpO1xuICAgICAgY29uc3QgdGl0bGUgPSB0bXBbdG1wLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KHRpdGxlLCAxMCkpKSB7XG4gICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aXRsZTtcbiAgICAgICAgZWxlbWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wucGF0dGVybikge1xuICAgICAgZWxlbWVudC5wYXR0ZXJuID0gdGhpcy5jb250cm9sLnBhdHRlcm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIGVsZW1lbnQudHlwZSA9ICdudW1iZXInO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlcigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC5lbnVtIHx8ICh0aGlzLmNvbnRyb2wuaXRlbXMgJiYgdGhpcy5jb250cm9sLml0ZW1zLmVudW0pKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb250cm9sLmVudW0gfHwgdGhpcy5jb250cm9sLml0ZW1zLmVudW07XG4gICAgICBpZiAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udGl0bGVNYXApIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gb3B0aW9ucy5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50aXRsZU1hcFt2YWx1ZV0gfHwgdmFsdWUsXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgZWxlbWVudC5tdWx0aXBsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5jb2RlbWlycm9yT3B0aW9ucztcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuZGVmYXVsdCAhPSBudWxsICYmIGVsZW1lbnQub3B0aW9ucy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucy52YWx1ZSA9IHRoaXMuY29udHJvbC5kZWZhdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSB7fTtcbiAgICAgIGVsZW1lbnQucm93cyA9IDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUGFzc3dvcmQoKSkge1xuICAgICAgZWxlbWVudC50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLmRlc2NyaXB0aW9uKSB7XG4gICAgICBlbGVtZW50LmRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9sLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGlmIChwbGFjZWhvbGRlciAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpIHx8IHRoaXMuaXNDb2RlbWlycm9yKCkpIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGAke2VsZW1lbnROYW1lfTppbnB1dGAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG5cbiAgICBsZXQgY3VycmVudFRhcmdldDtcbiAgICBpZiAodGhpcy5pc0F1dG9jb21wbGV0ZSgpKSB7XG4gICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdndi1hdXRvY29tcGxldGUnKTtcbiAgICAgIGF1dG9jb21wbGV0ZS5taW5DaGFycyA9IDA7XG4gICAgICBhdXRvY29tcGxldGUuZmlsdGVyID0gdHJ1ZTtcbiAgICAgIGVsZW1lbnQuY2xlYXJhYmxlID0gdHJ1ZTtcbiAgICAgIGF1dG9jb21wbGV0ZS5pZCA9IHRoaXMuaWQ7XG4gICAgICBhdXRvY29tcGxldGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICBhdXRvY29tcGxldGUuYWRkRXZlbnRMaXN0ZW5lcihgZ3YtYXV0b2NvbXBsZXRlOnNlbGVjdGAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGd2LWlucHV0OmNsZWFyYCwgdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpKTtcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBhdXRvY29tcGxldGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBlbGVtZW50O1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY29udHJvbC1yZWFkeScsIHtcbiAgICAgICAgY3VycmVudFRhcmdldCxcbiAgICAgICAgY29udHJvbDogdGhpcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFRhcmdldDtcbiAgfVxuXG4gIF9vbklucHV0KGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnR1YtQVVUT0NPTVBMRVRFJykge1xuICAgICAgdmFsdWUgPSBlLmRldGFpbC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBlLmRldGFpbDtcbiAgICB9XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyB2YWx1ZSwgY3VycmVudFRhcmdldDogZS50YXJnZXQsIGNvbnRyb2w6IHRoaXMuY29udHJvbCB9KTtcbiAgfVxuXG4gIGdldENvbnRyb2xzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJykpLFxuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1hcnJheScpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JykpLFxuICAgIF07XG4gIH1cblxuICBnZXRDb250cm9sKGlkKSB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIGlkID0gdGhpcy5pZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2lkfVwiXWApO1xuICB9XG5cbiAgX3NldFZhbHVlKGNvbnRyb2xFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCAmJiBjb250cm9sRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdib29sZWFuJyB8fCB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5JyB8fCB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29udHJvbEVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbEVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlLnRvU3RyaW5nID8gdGhpcy52YWx1ZS50b1N0cmluZygpIDogdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnRyb2xFbGVtZW50O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykpIHtcbiAgICAgIFByb21pc2UuYWxsKHRoaXMuZ2V0Q29udHJvbHMoKS5tYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudXBkYXRlQ29tcGxldGUpKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5nZXRDb250cm9sKCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBmb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3Iuc2NoZW1hLnByb3BlcnRpZXMgIT0gbnVsbCAmJiBlcnJvci5zY2hlbWEucHJvcGVydGllc1tlcnJvci5hcmd1bWVudF0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBlcnJvci5zY2hlbWEucHJvcGVydGllc1tlcnJvci5hcmd1bWVudF0udGl0bGU7XG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UucmVwbGFjZShlcnJvci5hcmd1bWVudCwgdGl0bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmICh0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eSkpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5nZXRDb250cm9sKCkpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Vycm9ycycpICYmIHRoaXMuZXJyb3JzICE9IG51bGwpIHtcbiAgICAgIC8vIFNldCBlcnJvcnMgdG8gY29tcGxleCBjb250cm9sc1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5kIHNpbXBsZSBjb250cm9scyBhbmQgYXBwZW5kIGVycm9yIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtX19jb250cm9sLWVycm9yJyk7XG4gICAgICBlcnJvckNvbnRhaW5lci5mb3JFYWNoKChjb250YWluZXIpID0+IChjb250YWluZXIuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgIHRoaXMuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGVycm9yLnByb3BlcnR5ID09PSAnaW5zdGFuY2UnID8gZXJyb3IuYXJndW1lbnQgOiBlcnJvci5wcm9wZXJ0eS5yZXBsYWNlKCdpbnN0YW5jZS4nLCAnJyk7XG4gICAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7a2V5fS1lcnJvclwiXWApO1xuICAgICAgICBpZiAoZXJyb3JDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtaW5wdXQtbWVzc2FnZScpO1xuICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gdGhpcy5mb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgIG1lc3NhZ2UubGV2ZWwgPSAnd2Fybic7XG4gICAgICAgICAgZXJyb3JDb250YWluZXIuYXBwZW5kQ2hpbGQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5fcmVuZGVyQ29udHJvbCgpfVxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtZXJyb3JcIiBpZD1cIiR7dGhpcy5pZCArICctZXJyb3InfVwiPjwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbSwgMC40cmVtKTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtoaWRkZW5dKSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZGVzY3JpcHRpb24sXG4gICAgICAgIC5mb3JtX19jb250cm9sLWVycm9yIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sLWxhYmVsIGxhYmVsIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXksXG4gICAgICAgIC5mb3JtX19jb250cm9sLW9iamVjdCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZW51bSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAvKmFsaWduLWl0ZW1zOiBmbGV4LWVuZDsqL1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXkgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3QsXG4gICAgICAgIGd2LWlucHV0LFxuICAgICAgICBndi1jb2RlLFxuICAgICAgICBndi1zd2l0Y2gsXG4gICAgICAgIGd2LWV4cHJlc3Npb24tbGFuZ3VhZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3Q6aG92ZXIsXG4gICAgICAgIGd2LWF1dG9jb21wbGV0ZTpob3ZlciB7XG4gICAgICAgICAgei1pbmRleDogNzA7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJywgR3ZTY2hlbWFGb3JtQ29udHJvbCk7XG4iXX0=
@@ -35,6 +35,9 @@ import './gv-schema-form-control';
35
35
  * @attr {Boolean} validate - to force validation on first render
36
36
  * @attr {Boolean} readonly - true if readonly
37
37
  * @attr {Boolean} scrollable - useful for making content scrollable with fixed headers / footers
38
+ *
39
+ * @cssprop {Color} [--gv-schema-form--bgc=#ffffff] - Background color
40
+ * @cssprop {Length} [--gv-schema-form-control--m=0.4rem] - Control margin
38
41
  */
39
42
 
40
43
  export class GvSchemaForm extends LitElement {
@@ -111,6 +114,8 @@ export class GvSchemaForm extends LitElement {
111
114
  this._validator = new Validator();
112
115
  this._validatorResults = {};
113
116
  this._ignoreProperties = [];
117
+ this._dynamicControls = [];
118
+ this._dynamicAttributes = ['disabled', 'required', 'hidden'];
114
119
  this.addEventListener('gv-schema-form-control:default-value', this._onDefaultValue.bind(this));
115
120
  this.addEventListener('gv-schema-form-control:change', this._onChange.bind(this));
116
121
  this.addEventListener('gv-schema-form-control:control-ready', this._onControlReady.bind(this));
@@ -300,6 +305,8 @@ export class GvSchemaForm extends LitElement {
300
305
  this._validatorResults = this.validate();
301
306
  this.dirty = true;
302
307
 
308
+ this._updateDynamicControls();
309
+
303
310
  this._updateActions();
304
311
 
305
312
  this._dispatchChange();
@@ -308,7 +315,45 @@ export class GvSchemaForm extends LitElement {
308
315
  _onControlReady(e) {
309
316
  e.stopPropagation();
310
317
  e.preventDefault();
311
- dispatchCustomEvent(this, e.detail.eventName, e.detail);
318
+ const controlElement = e.detail.control;
319
+ const control = controlElement.control;
320
+
321
+ if (control['x-schema-form']) {
322
+ if (control['x-schema-form'].event) {
323
+ const event = control['x-schema-form'].event;
324
+ dispatchCustomEvent(this, event.name, { ...event,
325
+ ...e.detail
326
+ });
327
+ } else if (this._hasCondition(control)) {
328
+ this._dynamicControls.push(controlElement);
329
+
330
+ this._updateDynamicControl(controlElement);
331
+ }
332
+ }
333
+ }
334
+
335
+ _updateDynamicControls() {
336
+ this._dynamicControls.forEach(controlElement => {
337
+ this._updateDynamicControl(controlElement);
338
+ });
339
+ }
340
+
341
+ _updateDynamicControl(controlElement) {
342
+ const control = controlElement.control;
343
+
344
+ if (control['x-schema-form']) {
345
+ this._dynamicAttributes.forEach(attribute => {
346
+ const is = this._evaluateCondition(control, attribute);
347
+
348
+ if (is) {
349
+ controlElement.setAttribute(attribute, '');
350
+ } else {
351
+ controlElement.removeAttribute(attribute);
352
+ }
353
+ });
354
+ }
355
+
356
+ return null;
312
357
  }
313
358
 
314
359
  async performUpdate() {
@@ -322,7 +367,8 @@ export class GvSchemaForm extends LitElement {
322
367
  // This is require to clean cache of <gv-schema-form-control>
323
368
  const control = { ...this.schema.properties[key]
324
369
  };
325
- const isRequired = this.schema.required && this.schema.required.includes(key);
370
+
371
+ const isRequired = this.schema.required && this.schema.required.includes(key) || this._evaluateCondition(control, 'required');
326
372
 
327
373
  const isDisabled = this.schema.disabled && this.schema.disabled.includes(key) || this._evaluateCondition(control, 'disabled');
328
374
 
@@ -338,6 +384,14 @@ export class GvSchemaForm extends LitElement {
338
384
  return html`<gv-schema-form-control .id="${key}" .errors="${this.errors}" .control="${control}" .skeleton="${this.skeleton}" .value="${value}" ?readonly="${isReadonly}" ?writeonly="${isWriteOnly}" ?required="${isRequired}" ?disabled="${isDisabled}" ?hidden="${isHidden}"></gv-schema-form-control>`;
339
385
  }
340
386
 
387
+ _hasCondition(control) {
388
+ if (control['x-schema-form']) {
389
+ return this._dynamicAttributes.find(condition => control['x-schema-form'][condition] != null) != null;
390
+ }
391
+
392
+ return false;
393
+ }
394
+
341
395
  _evaluateCondition(control, conditionKey) {
342
396
  if (control['x-schema-form'] == null || control['x-schema-form'][conditionKey] == null) {
343
397
  return false;
@@ -526,9 +580,9 @@ export class GvSchemaForm extends LitElement {
526
580
 
527
581
  static get styles() {
528
582
  return [empty, // language=CSS
529
- css`:host{box-sizing:border-box;margin:.2rem}form{display:flex;flex-direction:column}form.scrollable{position:absolute;width:100%;top:0;bottom:0;left:0}.container{flex-grow:1;background-color:#fafafa;display:flex;flex-direction:column;min-height:0}.content,.footer,.header{background-color:#fff}.content{flex-grow:1;display:flex;flex-direction:column;align-self:center;width:100%;min-height:0}.content>gv-schema-form-control{align-self:center;width:100%}form.scrollable .content{overflow:auto}form.scrollable .content>gv-schema-form-control{max-width:775px;width:95%}.footer,.header{display:flex;box-sizing:border-box;min-height:45px;--gv-icon--s:26px;--gv-icon--c:#bfbfbf;align-items:center;padding:0 .5rem;position:relative}.header{border-bottom:1px solid #d9d9d9}.footer{display:flex;justify-content:space-between;padding:1rem;border-top:1px solid #d9d9d9}form.scrollable .footer{justify-content:center}.footer .left,.footer .right{max-width:400px}.footer .left,.footer .right,.header .left,.header .right{display:flex;flex:1;z-index:10;align-items:center}.footer .right,.header .right{justify-content:flex-end}.header .title{color:#28444f;font-size:18px;display:flex;width:100%;align-items:center}.header .title.center{position:absolute;top:0;left:0;bottom:0;justify-content:center}.confirm-box{height:100%;padding:1rem;font-style:italic;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.confirm-box_actions{padding:1rem 0}.confirm .footer .left,.confirm .footer .right,.confirm .header .left,.confirm .header .right{display:none}`];
583
+ css`:host{box-sizing:border-box;margin:.2rem;--bgc:var(--gv-schema-form--bgc, #ffffff)}form{display:flex;flex-direction:column}form.scrollable{position:absolute;width:100%;top:0;bottom:0;left:0}.container{flex-grow:1;background-color:var(--bgc);display:flex;flex-direction:column;min-height:0}.content,.footer,.header{background-color:var(--bgc)}.content{flex-grow:1;display:flex;flex-direction:column;align-self:center;width:100%;min-height:0}.content>gv-schema-form-control{align-self:center;width:100%}form.scrollable .content{overflow:auto}form.scrollable .content>gv-schema-form-control{max-width:775px;width:95%}.footer,.header{display:flex;box-sizing:border-box;min-height:45px;--gv-icon--s:26px;--gv-icon--c:#bfbfbf;align-items:center;padding:0 .5rem;position:relative}.header{border-bottom:1px solid #d9d9d9}.footer{display:flex;justify-content:space-between;padding:1rem;border-top:1px solid #d9d9d9}form.scrollable .footer{justify-content:center}.footer .left,.footer .right{max-width:400px}.footer .left,.footer .right,.header .left,.header .right{display:flex;flex:1;z-index:10;align-items:center}.footer .right,.header .right{justify-content:flex-end}.header .title{color:#28444f;font-size:18px;display:flex;width:100%;align-items:center}.header .title.center{position:absolute;top:0;left:0;bottom:0;justify-content:center}.confirm-box{height:100%;padding:1rem;font-style:italic;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.confirm-box_actions{padding:1rem 0}.confirm .footer .left,.confirm .footer .right,.confirm .header .left,.confirm .header .right{display:none}`];
530
584
  }
531
585
 
532
586
  }
533
587
  window.customElements.define('gv-schema-form', GvSchemaForm);
534
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImdldCIsInNldCIsImRlbCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkZWVwQ2xvbmUiLCJkZWVwRXF1YWwiLCJjbGFzc01hcCIsIlZhbGlkYXRvciIsImVtcHR5IiwiR3ZTY2hlbWFGb3JtIiwicHJvcGVydGllcyIsInNjaGVtYSIsInR5cGUiLCJPYmplY3QiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJzdWJtaXRMYWJlbCIsIlN0cmluZyIsImhhc0Zvb3RlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJoYXNIZWFkZXIiLCJfY29uZmlybSIsIl92YWx1ZXMiLCJkaXJ0eSIsInJlZmxlY3QiLCJoaWRlRGVwcmVjYXRlZCIsInZhbGlkYXRlT25SZW5kZXIiLCJfdmFsaWRhdG9yUmVzdWx0cyIsInNrZWxldG9uIiwiX3RvdWNoIiwicmVhZG9ubHkiLCJzY3JvbGxhYmxlIiwiY29uc3RydWN0b3IiLCJfdmFsaWRhdG9yIiwiX2lnbm9yZVByb3BlcnRpZXMiLCJhZGRFdmVudExpc3RlbmVyIiwiX29uRGVmYXVsdFZhbHVlIiwiYmluZCIsIl9vbkNoYW5nZSIsIl9vbkNvbnRyb2xSZWFkeSIsIl9pbml0aWFsVmFsdWVzIiwicmVzZXQiLCJfc2V0RGlydHkiLCJnZXRDb250cm9scyIsImZvckVhY2giLCJzIiwicmVxdWVzdFVwZGF0ZSIsIl9vblJlc2V0IiwicmVxdWVzdFZhbGlkYXRpb24iLCJjbGVhclRpbWVvdXQiLCJfdmFsaWRhdGVUaW1lb3V0Iiwic2V0VGltZW91dCIsInZhbGlkYXRlIiwiX3VwZGF0ZUFjdGlvbnMiLCJzdWJtaXQiLCJfb25TdWJtaXQiLCJ2YWxpZGF0b3JSZXN1bHRzIiwiaXNWYWxpZCIsIl9zZXRUb3VjaCIsInRvdWNoIiwiY29uZmlybSIsImlzVG91Y2giLCJwcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJfb25Db25maXJtUmVzZXQiLCJ0aGVuIiwiX29uQ29uZmlybUVkaXQiLCJfdXBkYXRlQ2hpbGRyZW4iLCJfZ2V0U3VibWl0QnRuIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJfZ2V0UmVzZXRCdG4iLCJfZGlzcGF0Y2hDaGFuZ2UiLCJfY2hhbmdlVGltZW91dCIsInRhcmdldCIsInZhbGlkYXRpb24iLCJkZXRhaWwiLCJjdXJyZW50VGFyZ2V0IiwidmFsdWUiLCJjb250cm9sIiwidHJpbSIsImxlbmd0aCIsInBhcnNlSW50IiwiaWQiLCJpbnRWYWx1ZSIsIk51bWJlciIsInZhbHVlT2YiLCJpc05hTiIsImtleXMiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJldmVudE5hbWUiLCJwZXJmb3JtVXBkYXRlIiwiX3JlbmRlckNvbnRyb2wiLCJrZXkiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiLCJpbmNsdWRlcyIsImlzRGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9ldmFsdWF0ZUNvbmRpdGlvbiIsImlzSGlkZGVuIiwicHVzaCIsImlzUmVhZG9ubHkiLCJyZWFkT25seSIsImlzV3JpdGVPbmx5Iiwid3JpdGVPbmx5IiwiY29uZGl0aW9uS2V5IiwiY29uZGl0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiY29uc29sZSIsIndhcm4iLCJyZXN1bHQiLCJvcGVyYXRpb24iLCJvcGVyYXRvciIsIl9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbiIsIl9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbiIsIl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbiIsIl9ldmFsdWF0ZURlZkNvbmRpdGlvbiIsIm9wZXJhbmRzIiwibW9kZWxBdHRyaWJ1dGVzIiwibWFwIiwibW9kZWxBdHRyaWJ1dGUiLCJ0ZXN0VmFsdWUiLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwiX3JlbmRlclBhcnQiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImdldENvbnRyb2wiLCJ2YWxpZCIsImZpbHRlciIsImVycm9yIiwicHJvcGVydHkiLCJyZXBsYWNlIiwiY2FuU3VibWl0Iiwic3VibWl0QnRuIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwicmVzZXRCdG4iLCJ3aXRoVmFsaWRhdGlvbiIsIl91cGRhdGVBY3Rpb25zVGltZW91dCIsInVwZGF0ZWQiLCJjaGFuZ2VkUHJvcGVydGllcyIsImhhcyIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsImFsbCIsInVwZGF0ZUNvbXBsZXRlIiwicmVuZGVyIiwiY29udGFpbmVyIiwidGl0bGUiLCJjZW50ZXIiLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsVUFBVCxFQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLFFBQXNDLGFBQXRDO0FBQ0EsU0FBU0MsR0FBVCxFQUFjQyxHQUFkLEVBQW1CQyxHQUFuQixRQUE4QixhQUE5QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsU0FBcEIsUUFBcUMsY0FBckM7QUFDQSxTQUFTQyxRQUFULFFBQXlCLCtCQUF6QjtBQUNBLFNBQVNDLFNBQVQsUUFBMEIsWUFBMUI7QUFDQSxTQUFTQyxLQUFULFFBQXNCLGlCQUF0QjtBQUNBLE9BQU8sMEJBQVA7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxZQUFOLFNBQTJCWixVQUEzQixDQUFzQztBQUN0QixhQUFWYSxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxNQUFNLEVBQUU7QUFBRUMsUUFBQUEsSUFB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TlosNkJBRE4sR0FZRSxFQTlDRyxpQkFBWDtBQWlERDs7QUFFZ0IsYUFBTitJLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0x2SixLQURLLEVBRUw7QUFDQVQsSUFBQUEsR0FBRywwaURBSEUsQ0FBUDtBQXVKRDs7QUEva0IwQztBQWtsQjdDaUssTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixnQkFBN0IsRUFBK0N6SixZQUEvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQtZWxlbWVudCc7XG5pbXBvcnQgeyBnZXQsIHNldCwgZGVsIH0gZnJvbSAnb2JqZWN0LXBhdGgnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0IHsgZGVlcENsb25lLCBkZWVwRXF1YWwgfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICdqc29uc2NoZW1hJztcbmltcG9ydCB7IGVtcHR5IH0gZnJvbSAnLi4vc3R5bGVzL2VtcHR5JztcbmltcG9ydCAnLi9ndi1zY2hlbWEtZm9ybS1jb250cm9sJztcblxuLyoqXG4gKiBTY2hlbWEgZm9ybSBjb21wb25lbnRcbiAqXG4gKiBAZmlyZXMgZ3Ytc2NoZW1hLWZvcm06c3VibWl0IC0gZXZlbnQgd2hlbiB1c2VyIHN1Ym1pdCB2YWxpZCBmb3JtXG4gKiBAZmlyZXMgZ3Ytc2NoZW1hLWZvcm06ZXJyb3IgLSBldmVudCB3aGVuIHVzZXIgc3VibWl0IGludmFsaWQgZm9ybVxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOmNoYW5nZSAtIGV2ZW50IHdoZW4gd2hlbiBmb3JtIGNoYW5nZVxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOmNhbmNlbCAtIGV2ZW50IHdoZW4gdXNlciBjYW5jZWwgZm9ybVxuICpcbiAqIEBhdHRyIHtPYmplY3R9IHNjaGVtYSAtIHRoZSBzY2hlbWEgZm9ybSBjb25maWd1cmF0aW9uXG4gKiBAYXR0ciB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIG9mIGZpZWxkc1xuICogQGF0dHIge09iamVjdH0gZXJyb3JzIC0gdGhlIG1hcCBvZiBlcnJvcnMgYnkgaW5wdXQga2V5XG4gKiBAYXR0ciB7Qm9vbGVhbn0gdmFsaWRhdGUgLSB0byBmb3JjZSB2YWxpZGF0aW9uIG9uIGZpcnN0IHJlbmRlclxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5IC0gdHJ1ZSBpZiByZWFkb25seVxuICogQGF0dHIge0Jvb2xlYW59IHNjcm9sbGFibGUgLSB1c2VmdWwgZm9yIG1ha2luZyBjb250ZW50IHNjcm9sbGFibGUgd2l0aCBmaXhlZCBoZWFkZXJzIC8gZm9vdGVyc1xuICovXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgdmFsdWVzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgc3VibWl0TGFiZWw6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBoYXNGb290ZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGFzLWZvb3RlcicgfSxcbiAgICAgIGhhc0hlYWRlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoYXMtaGVhZGVyJyB9LFxuICAgICAgX2NvbmZpcm06IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBfdmFsdWVzOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZGlydHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGlkZURlcHJlY2F0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGlkZS1kZXByZWNhdGVkJyB9LFxuICAgICAgdmFsaWRhdGVPblJlbmRlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICd2YWxpZGF0ZS1vbi1yZW5kZXInIH0sXG4gICAgICBfdmFsaWRhdG9yUmVzdWx0czogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIF90b3VjaDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBzY3JvbGxhYmxlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmhpZGVEZXByZWNhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWVzID0ge307XG4gICAgdGhpcy5zdWJtaXRMYWJlbCA9ICdPayc7XG4gICAgdGhpcy5oYXNIZWFkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmhhc0Zvb3RlciA9IGZhbHNlO1xuICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcigpO1xuICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzID0gW107XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdndi1zY2hlbWEtZm9ybS1jb250cm9sOmRlZmF1bHQtdmFsdWUnLCB0aGlzLl9vbkRlZmF1bHRWYWx1ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2w6Y2hhbmdlJywgdGhpcy5fb25DaGFuZ2UuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdndi1zY2hlbWEtZm9ybS1jb250cm9sOmNvbnRyb2wtcmVhZHknLCB0aGlzLl9vbkNvbnRyb2xSZWFkeS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHNldCB2YWx1ZXModmFsdWVzKSB7XG4gICAgaWYgKCFkZWVwRXF1YWwodGhpcy5fdmFsdWVzLCB2YWx1ZXMpKSB7XG4gICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxWYWx1ZXMgPSB7IC4uLnZhbHVlcyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFZhbHVlcyA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5fdmFsdWVzID0gZGVlcENsb25lKHRoaXMuX2luaXRpYWxWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcbiAgfVxuXG4gIHJlc2V0KHZhbHVlcyA9IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZXMgPSBkZWVwQ2xvbmUodmFsdWVzIHx8IHRoaXMuX2luaXRpYWxWYWx1ZXMpO1xuICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XG4gICAgdGhpcy5fc2V0RGlydHkoZmFsc2UpO1xuICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vblJlc2V0KCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdyZXNldCcpO1xuICB9XG5cbiAgcmVxdWVzdFZhbGlkYXRpb24oKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3ZhbGlkYXRlVGltZW91dCk7XG4gICAgdGhpcy5fdmFsaWRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICB0aGlzLl91cGRhdGVBY3Rpb25zKCk7XG4gICAgfSwgMzUwKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLl9vblN1Ym1pdCgpO1xuICB9XG5cbiAgX29uU3VibWl0KCkge1xuICAgIGNvbnN0IHZhbGlkYXRvclJlc3VsdHMgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLl9pbml0aWFsVmFsdWVzID0gZGVlcENsb25lKHRoaXMuX3ZhbHVlcyk7XG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLl90b3VjaCA9IGZhbHNlO1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc3VibWl0JywgeyB2YWx1ZXM6IHRoaXMuX3ZhbHVlcywgdmFsaWRhdG9yUmVzdWx0cyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZXJyb3InLCB7IHZhbHVlczogdGhpcy5fdmFsdWVzLCB2YWxpZGF0b3JSZXN1bHRzIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9zZXREaXJ0eShkaXJ0eSA9IHRydWUpIHtcbiAgICB0aGlzLmRpcnR5ID0gISFkaXJ0eTtcbiAgfVxuXG4gIF9zZXRUb3VjaCh0b3VjaCA9IHRydWUpIHtcbiAgICB0aGlzLl90b3VjaCA9ICEhdG91Y2g7XG4gIH1cblxuICBjb25maXJtKCkge1xuICAgIGlmICh0aGlzLmlzVG91Y2goKSkge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpcm0gJiYgdGhpcy5fY29uZmlybS5wcm9taXNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maXJtLnByb21pc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gKHRoaXMuX2NvbmZpcm0gPSB7IHJlc29sdmUsIHJlamVjdCB9KSk7XG4gICAgICB0aGlzLl9jb25maXJtLnByb21pc2UgPSBwcm9taXNlO1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIF9vbkNvbmZpcm1SZXNldCgpIHtcbiAgICBjb25zdCB7IHJlc29sdmUgfSA9IHRoaXMuX2NvbmZpcm07XG4gICAgdGhpcy5fY29uZmlybSA9IG51bGw7XG4gICAgdGhpcy5fb25SZXNldCgpO1xuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgcmVzb2x2ZSh0aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vbkNvbmZpcm1FZGl0KCkge1xuICAgIHRoaXMuX2NvbmZpcm0ucmVqZWN0KHRoaXMpO1xuICAgIHRoaXMuX2NvbmZpcm0gPSBudWxsO1xuICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuKHRoaXMudmFsaWRhdGVPblJlbmRlcik7XG4gIH1cblxuICBfZ2V0U3VibWl0QnRuKCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignI3N1Ym1pdCcpO1xuICB9XG5cbiAgX2dldFJlc2V0QnRuKCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignI3Jlc2V0Jyk7XG4gIH1cblxuICBfZGlzcGF0Y2hDaGFuZ2UoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2NoYW5nZVRpbWVvdXQpO1xuICAgIHRoaXMuX2NoYW5nZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZScsIHsgdGFyZ2V0OiB0aGlzLCB2YWx1ZXM6IHRoaXMuX3ZhbHVlcywgdmFsaWRhdGlvbjogdGhpcy5fdmFsaWRhdG9yUmVzdWx0cyB9KTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBfb25EZWZhdWx0VmFsdWUoeyBkZXRhaWw6IHsgY3VycmVudFRhcmdldCwgdmFsdWUsIGNvbnRyb2wgfSB9KSB7XG4gICAgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ2ludGVnZXInICYmIHZhbHVlICE9IG51bGwgJiYgKCh2YWx1ZS50cmltICYmIHZhbHVlLmxlbmd0aCA+IDApIHx8IHZhbHVlLmxlbmd0aCA+IDApKSB7XG4gICAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgfVxuICAgIHNldCh0aGlzLl92YWx1ZXMsIGN1cnJlbnRUYXJnZXQuaWQsIHZhbHVlKTtcbiAgfVxuXG4gIF9vbkNoYW5nZSh7IGRldGFpbDogeyBjdXJyZW50VGFyZ2V0LCB2YWx1ZSwgY29udHJvbCB9IH0pIHtcbiAgICB0aGlzLl9zZXRUb3VjaCh0cnVlKTtcbiAgICBpZiAoY29udHJvbC50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW50VmFsdWUgPSBOdW1iZXIodmFsdWUpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKCFpc05hTihpbnRWYWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZSA9IGludFZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udHJvbC50eXBlID09PSAnYXJyYXknICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbC50eXBlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChjb250cm9sLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBkZWwodGhpcy5fdmFsdWVzLCBjdXJyZW50VGFyZ2V0LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0KHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5fdXBkYXRlQWN0aW9ucygpO1xuICAgIHRoaXMuX2Rpc3BhdGNoQ2hhbmdlKCk7XG4gIH1cblxuICBfb25Db250cm9sUmVhZHkoZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgZS5kZXRhaWwuZXZlbnROYW1lLCBlLmRldGFpbCk7XG4gIH1cblxuICBhc3luYyBwZXJmb3JtVXBkYXRlKCkge1xuICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9KTtcbiAgICBzdXBlci5wZXJmb3JtVXBkYXRlKCk7XG4gIH1cblxuICBfcmVuZGVyQ29udHJvbChrZXkpIHtcbiAgICAvLyBUaGlzIGlzIHJlcXVpcmUgdG8gY2xlYW4gY2FjaGUgb2YgPGd2LXNjaGVtYS1mb3JtLWNvbnRyb2w+XG4gICAgY29uc3QgY29udHJvbCA9IHsgLi4udGhpcy5zY2hlbWEucHJvcGVydGllc1trZXldIH07XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IHRoaXMuc2NoZW1hLnJlcXVpcmVkICYmIHRoaXMuc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKGtleSk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9ICh0aGlzLnNjaGVtYS5kaXNhYmxlZCAmJiB0aGlzLnNjaGVtYS5kaXNhYmxlZC5pbmNsdWRlcyhrZXkpKSB8fCB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCAnZGlzYWJsZWQnKTtcbiAgICBjb25zdCBpc0hpZGRlbiA9IHRoaXMuX2V2YWx1YXRlQ29uZGl0aW9uKGNvbnRyb2wsICdoaWRkZW4nKTtcbiAgICBpZiAoaXNIaWRkZW4pIHtcbiAgICAgIHRoaXMuX2lnbm9yZVByb3BlcnRpZXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBjb25zdCBpc1JlYWRvbmx5ID0gdGhpcy5yZWFkb25seSB8fCBjb250cm9sLnJlYWRPbmx5ID09PSB0cnVlO1xuICAgIGNvbnN0IGlzV3JpdGVPbmx5ID0gY29udHJvbC53cml0ZU9ubHkgPT09IHRydWU7XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5fdmFsdWVzLCBrZXkpO1xuICAgIHJldHVybiBodG1sYDxndi1zY2hlbWEtZm9ybS1jb250cm9sXG4gICAgICAuaWQ9XCIke2tleX1cIlxuICAgICAgLmVycm9ycz1cIiR7dGhpcy5lcnJvcnN9XCJcbiAgICAgIC5jb250cm9sPVwiJHtjb250cm9sfVwiXG4gICAgICAuc2tlbGV0b249XCIke3RoaXMuc2tlbGV0b259XCJcbiAgICAgIC52YWx1ZT1cIiR7dmFsdWV9XCJcbiAgICAgID9yZWFkb25seT1cIiR7aXNSZWFkb25seX1cIlxuICAgICAgP3dyaXRlb25seT1cIiR7aXNXcml0ZU9ubHl9XCJcbiAgICAgID9yZXF1aXJlZD1cIiR7aXNSZXF1aXJlZH1cIlxuICAgICAgP2Rpc2FibGVkPVwiJHtpc0Rpc2FibGVkfVwiXG4gICAgICA/aGlkZGVuPVwiJHtpc0hpZGRlbn1cIlxuICAgID48L2d2LXNjaGVtYS1mb3JtLWNvbnRyb2w+YDtcbiAgfVxuXG4gIF9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCBjb25kaXRpb25LZXkpIHtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddID09IG51bGwgfHwgY29udHJvbFsneC1zY2hlbWEtZm9ybSddW2NvbmRpdGlvbktleV0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjb25kaXRpb24gPSBjb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bY29uZGl0aW9uS2V5XTtcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgLy8gY29uZGl0aW9uIGlzbid0IGFuIGFycmF5LCBpZ25vcmUgdGhlIGNvbmRpdGlvblxuICAgICAgY29uc29sZS53YXJuKGAnJHtjb25kaXRpb25LZXl9JyBhdHRyaWJ1dGUgb2YgJ3gtc2NoZW1hLWZvcm0nIHNob3VsZCBiZSBhbiBhcnJheWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB0cnVlO1xuICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uIG9mIGNvbmRpdGlvbikge1xuICAgICAgLy8gb3BlcmF0aW9uIG9ubHkgaGF2ZSBvbmUgb3BlcmF0b3Igd2l0aCBhIHNpbmdsZSBvYmplY3QgY29udGFpbmluZyBvcGVyYW5kIHZhbHVlc1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBPYmplY3Qua2V5cyhvcGVyYXRpb24pWzBdO1xuXG4gICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICAgIGNhc2UgJyRuZXEnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbihvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICckZXEnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbihvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICckbm9kZWYnOlxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiB0aGlzLl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbihvcGVyYXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICckZGVmJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVEZWZDb25kaXRpb24ob3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIG9wZXJhdG9yICcke29wZXJhdG9yfScgb24gZGlzYWJsZSBjb25kaXRpb25gKTtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgX2V2YWx1YXRlTm90RXF1YWxzQ29uZGl0aW9uKGNvbmRpdGlvbikge1xuICAgIHJldHVybiAhdGhpcy5fZXZhbHVhdGVFcXVhbHNDb25kaXRpb24oY29uZGl0aW9uKTtcbiAgfVxuXG4gIF9ldmFsdWF0ZUVxdWFsc0NvbmRpdGlvbihjb25kaXRpb24pIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbilbMF07XG4gICAgY29uc3Qgb3BlcmFuZHMgPSBjb25kaXRpb25bb3BlcmF0b3JdO1xuICAgIGNvbnN0IG1vZGVsQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKG9wZXJhbmRzKTtcbiAgICByZXR1cm4gbW9kZWxBdHRyaWJ1dGVzXG4gICAgICAubWFwKChtb2RlbEF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICBjb25zdCB0ZXN0VmFsdWUgPSBvcGVyYW5kc1ttb2RlbEF0dHJpYnV0ZV07XG4gICAgICAgIHJldHVybiBnZXQodGhpcy5fdmFsdWVzLCBtb2RlbEF0dHJpYnV0ZSkgPT09IHRlc3RWYWx1ZTtcbiAgICAgIH0pXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnJlbnQpID0+IGFjYyB8fCBjdXJyZW50KTtcbiAgfVxuXG4gIF9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbihjb25kaXRpb24pIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbilbMF07XG4gICAgY29uc3QgbW9kZWxBdHRyaWJ1dGUgPSBjb25kaXRpb25bb3BlcmF0b3JdO1xuICAgIHJldHVybiBnZXQodGhpcy5fdmFsdWVzLCBtb2RlbEF0dHJpYnV0ZSkgPT09IHVuZGVmaW5lZCB8fCBnZXQodGhpcy5fdmFsdWVzLCBtb2RlbEF0dHJpYnV0ZSkgPT09IG51bGw7XG4gIH1cblxuICBfZXZhbHVhdGVEZWZDb25kaXRpb24oY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuICF0aGlzLl9ldmFsdWF0ZU5vdERlZkNvbmRpdGlvbihjb25kaXRpb24pO1xuICB9XG5cbiAgX3JlbmRlclBhcnQoKSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpcm0pIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJjb25maXJtLWJveFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIj5UaGUgY29uZmlndXJhdGlvbiBpcyBub3QgdmFsaWQgYW5kIGNhbm5vdCBiZSBzYXZlZC48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm0tYm94X2FjdGlvbnNcIj5cbiAgICAgICAgICA8Z3YtYnV0dG9uIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29uZmlybVJlc2V0fVwiIG91dGxpbmVkIGljb249XCJnZW5lcmFsOnVwZGF0ZVwiIGRhbmdlcj5Mb3NlIGNoYW5nZXM8L2d2LWJ1dHRvbj5cbiAgICAgICAgICA8Z3YtYnV0dG9uIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29uZmlybUVkaXR9XCIgaWNvbj1cImRlc2lnbjplZGl0XCI+RWRpdDwvZ3YtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzID8gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvcGVydGllcykgOiBbXTtcbiAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzID0gW107XG4gICAgcmV0dXJuIGh0bWxgJHtrZXlzLm1hcCgoa2V5KSA9PiB0aGlzLl9yZW5kZXJDb250cm9sKGtleSkpfWA7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKTtcbiAgfVxuXG4gIGdldENvbnRyb2woaWQpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5zY2hlbWEpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB0aGlzLl92YWxpZGF0b3IudmFsaWRhdGUodGhpcy5fdmFsdWVzLCB0aGlzLnNjaGVtYSk7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5fdmFsaWRhdG9yUmVzdWx0cy5lcnJvcnM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3JSZXN1bHRzO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICBpZiAodGhpcy5fdmFsaWRhdG9yUmVzdWx0cy52YWxpZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gKHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMuZXJyb3JzIHx8IFtdKS5maWx0ZXIoKGVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gIXRoaXMuX2lnbm9yZVByb3BlcnRpZXMuaW5jbHVkZXMoZXJyb3IucHJvcGVydHkucmVwbGFjZSgnaW5zdGFuY2UuJywgJycpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZXJyb3JzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGlzVG91Y2goKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdWNoIHx8ICh0aGlzLmRpcnR5ICYmIHRoaXMudmFsaWRhdGVPblJlbmRlcik7XG4gIH1cblxuICBjYW5TdWJtaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNUb3VjaCgpICYmIHRoaXMuaXNWYWxpZCgpO1xuICB9XG5cbiAgX3VwZGF0ZUFjdGlvbnMoKSB7XG4gICAgY29uc3Qgc3VibWl0QnRuID0gdGhpcy5fZ2V0U3VibWl0QnRuKCk7XG4gICAgaWYgKHN1Ym1pdEJ0biAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5jYW5TdWJtaXQoKSkge1xuICAgICAgICB0aGlzLl9nZXRTdWJtaXRCdG4oKS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9nZXRTdWJtaXRCdG4oKS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlc2V0QnRuID0gdGhpcy5fZ2V0UmVzZXRCdG4oKTtcbiAgICBpZiAocmVzZXRCdG4gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuZGlydHkpIHtcbiAgICAgICAgcmVzZXRCdG4ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRCdG4uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVDaGlsZHJlbih3aXRoVmFsaWRhdGlvbikge1xuICAgIGlmICh3aXRoVmFsaWRhdGlvbikge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yUmVzdWx0cyA9IHt9O1xuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgICAgdGhpcy5yZXF1ZXN0VmFsaWRhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91cGRhdGVBY3Rpb25zVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fdXBkYXRlQWN0aW9ucygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUFjdGlvbnNUaW1lb3V0KTtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdfdmFsdWVzJykpIHtcbiAgICAgIHRoaXMuZ2V0Q29udHJvbHMoKS5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICAgIGNvbnRyb2wudmFsdWUgPSBnZXQodGhpcy5fdmFsdWVzLCBjb250cm9sLmlkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLl91cGRhdGVDaGlsZHJlbih0aGlzLnZhbGlkYXRlT25SZW5kZXIgJiYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX3ZhbHVlcycpIHx8IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2NoZW1hJykpKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIGh0bWxgPGZvcm0gY2xhc3M9XCIke2NsYXNzTWFwKHsgc2Nyb2xsYWJsZTogdGhpcy5zY3JvbGxhYmxlIH0pfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBjb250YWluZXI6IHRydWUsIGNvbmZpcm06IHRoaXMuX2NvbmZpcm0gfSl9XCI+XG4gICAgICAgICR7dGhpcy5oYXNIZWFkZXIgPT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiJHtjbGFzc01hcCh7IHRpdGxlOiB0cnVlLCBjZW50ZXI6IHRoaXMuaGFzSGVhZGVyICYmICF0aGlzLmhhc0Zvb3RlciB9KX1cIj5cbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJ0aXRsZVwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1sZWZ0XCI+PC9zbG90PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICR7dGhpcy5yZWFkb25seSA9PT0gdHJ1ZSB8fCB0aGlzLmhhc0Zvb3RlciA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgOiBodG1sYDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblJlc2V0fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZ2VuZXJhbDp1cGRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblN1Ym1pdH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImNvZGU6Y2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLnRpdGxlPVwiJHt0aGlzLnN1Ym1pdExhYmVsfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gYH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgXG4gICAgICAgICAgOiAnJ31cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj4ke3RoaXMuc2NoZW1hICE9IG51bGwgPyB0aGlzLl9yZW5kZXJQYXJ0KCkgOiBodG1sYGB9PC9kaXY+XG4gICAgICAgICR7dGhpcy5oYXNGb290ZXIgPT09IHRydWUgJiYgdGhpcy5yZWFkb25seSAhPT0gdHJ1ZVxuICAgICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uIGlkPVwicmVzZXRcIiBvdXRsaW5lZCBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblJlc2V0fVwiIGljb249XCJnZW5lcmFsOnVwZGF0ZVwiIHRpdGxlPVwiUmVzZXRcIj5SZXNldDwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvbiBpZD1cInN1Ym1pdFwiIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uU3VibWl0fVwiIGljb249XCJjb2RlOmNoZWNrXCIgLnRpdGxlPVwiJHt0aGlzLnN1Ym1pdExhYmVsfVwiXG4gICAgICAgICAgICAgICAgICAgID4ke3RoaXMuc3VibWl0TGFiZWx9PC9ndi1idXR0b25cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgXG4gICAgICAgICAgOiAnJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5gO1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGVtcHR5LFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgZmxleC1ncm93OiAxO1xuXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAvKiBmb3IgRmlyZWZveCAqL1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLFxuICAgICAgICAuZm9vdGVyLFxuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50ID4gZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5jb250ZW50IHtcbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm0uc2Nyb2xsYWJsZSAuY29udGVudCA+IGd2LXNjaGVtYS1mb3JtLWNvbnRyb2wge1xuICAgICAgICAgIG1heC13aWR0aDogNzc1cHg7XG4gICAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIsXG4gICAgICAgIC5mb290ZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0NXB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMjZweDtcbiAgICAgICAgICAtLWd2LWljb24tLWM6ICNiZmJmYmY7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXIge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUgLmZvb3RlciB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyIC5sZWZ0LFxuICAgICAgICAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLmxlZnQsXG4gICAgICAgIC5mb290ZXIgLmxlZnQsXG4gICAgICAgIC5oZWFkZXIgLnJpZ2h0LFxuICAgICAgICAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC5yaWdodCxcbiAgICAgICAgLmZvb3RlciAucmlnaHQge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZSB7XG4gICAgICAgICAgY29sb3I6ICMyODQ0NGY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnRpdGxlLmNlbnRlciB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maXJtLWJveCB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpcm0tYm94X2FjdGlvbnMge1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maXJtIC5oZWFkZXIgLmxlZnQsXG4gICAgICAgIC5jb25maXJtIC5oZWFkZXIgLnJpZ2h0LFxuICAgICAgICAuY29uZmlybSAuZm9vdGVyIC5sZWZ0LFxuICAgICAgICAuY29uZmlybSAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXNjaGVtYS1mb3JtJywgR3ZTY2hlbWFGb3JtKTtcbiJdfQ==
588
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImdldCIsInNldCIsImRlbCIsImRpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkZWVwQ2xvbmUiLCJkZWVwRXF1YWwiLCJjbGFzc01hcCIsIlZhbGlkYXRvciIsImVtcHR5IiwiR3ZTY2hlbWFGb3JtIiwicHJvcGVydGllcyIsInNjaGVtYSIsInR5cGUiLCJPYmplY3QiLCJlcnJvcnMiLCJ2YWx1ZXMiLCJzdWJtaXRMYWJlbCIsIlN0cmluZyIsImhhc0Zvb3RlciIsIkJvb2xlYW4iLCJhdHRyaWJ1dGUiLCJoYXNIZWFkZXIiLCJfY29uZmlybSIsIl92YWx1ZXMiLCJkaXJ0eSIsInJlZmxlY3QiLCJoaWRlRGVwcmVjYXRlZCIsInZhbGlkYXRlT25SZW5kZXIiLCJfdmFsaWRhdG9yUmVzdWx0cyIsInNrZWxldG9uIiwiX3RvdWNoIiwicmVhZG9ubHkiLCJzY3JvbGxhYmxlIiwiY29uc3RydWN0b3IiLCJfdmFsaWRhdG9yIiwiX2lnbm9yZVByb3BlcnRpZXMiLCJfZHluYW1pY0NvbnRyb2xzIiwiX2R5bmFtaWNBdHRyaWJ1dGVzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9vbkRlZmF1bHRWYWx1ZSIsImJpbmQiLCJfb25DaGFuZ2UiLCJfb25Db250cm9sUmVhZHkiLCJfaW5pdGlhbFZhbHVlcyIsInJlc2V0IiwiX3NldERpcnR5IiwiZ2V0Q29udHJvbHMiLCJmb3JFYWNoIiwicyIsInJlcXVlc3RVcGRhdGUiLCJfb25SZXNldCIsInJlcXVlc3RWYWxpZGF0aW9uIiwiY2xlYXJUaW1lb3V0IiwiX3ZhbGlkYXRlVGltZW91dCIsInNldFRpbWVvdXQiLCJ2YWxpZGF0ZSIsIl91cGRhdGVBY3Rpb25zIiwic3VibWl0IiwiX29uU3VibWl0IiwidmFsaWRhdG9yUmVzdWx0cyIsImlzVmFsaWQiLCJfc2V0VG91Y2giLCJ0b3VjaCIsImNvbmZpcm0iLCJpc1RvdWNoIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX29uQ29uZmlybVJlc2V0IiwidGhlbiIsIl9vbkNvbmZpcm1FZGl0IiwiX3VwZGF0ZUNoaWxkcmVuIiwiX2dldFN1Ym1pdEJ0biIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiX2dldFJlc2V0QnRuIiwiX2Rpc3BhdGNoQ2hhbmdlIiwiX2NoYW5nZVRpbWVvdXQiLCJ0YXJnZXQiLCJ2YWxpZGF0aW9uIiwiZGV0YWlsIiwiY3VycmVudFRhcmdldCIsInZhbHVlIiwiY29udHJvbCIsInRyaW0iLCJsZW5ndGgiLCJwYXJzZUludCIsImlkIiwiaW50VmFsdWUiLCJOdW1iZXIiLCJ2YWx1ZU9mIiwiaXNOYU4iLCJrZXlzIiwiX3VwZGF0ZUR5bmFtaWNDb250cm9scyIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNvbnRyb2xFbGVtZW50IiwiZXZlbnQiLCJuYW1lIiwiX2hhc0NvbmRpdGlvbiIsInB1c2giLCJfdXBkYXRlRHluYW1pY0NvbnRyb2wiLCJpcyIsIl9ldmFsdWF0ZUNvbmRpdGlvbiIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInBlcmZvcm1VcGRhdGUiLCJfcmVuZGVyQ29udHJvbCIsImtleSIsImlzUmVxdWlyZWQiLCJyZXF1aXJlZCIsImluY2x1ZGVzIiwiaXNEaXNhYmxlZCIsImRpc2FibGVkIiwiaXNIaWRkZW4iLCJpc1JlYWRvbmx5IiwicmVhZE9ubHkiLCJpc1dyaXRlT25seSIsIndyaXRlT25seSIsImZpbmQiLCJjb25kaXRpb24iLCJjb25kaXRpb25LZXkiLCJBcnJheSIsImlzQXJyYXkiLCJjb25zb2xlIiwid2FybiIsInJlc3VsdCIsIm9wZXJhdGlvbiIsIm9wZXJhdG9yIiwiX2V2YWx1YXRlTm90RXF1YWxzQ29uZGl0aW9uIiwiX2V2YWx1YXRlRXF1YWxzQ29uZGl0aW9uIiwiX2V2YWx1YXRlTm90RGVmQ29uZGl0aW9uIiwiX2V2YWx1YXRlRGVmQ29uZGl0aW9uIiwib3BlcmFuZHMiLCJtb2RlbEF0dHJpYnV0ZXMiLCJtYXAiLCJtb2RlbEF0dHJpYnV0ZSIsInRlc3RWYWx1ZSIsInJlZHVjZSIsImFjYyIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJfcmVuZGVyUGFydCIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInZhbGlkIiwiZmlsdGVyIiwiZXJyb3IiLCJwcm9wZXJ0eSIsInJlcGxhY2UiLCJjYW5TdWJtaXQiLCJzdWJtaXRCdG4iLCJyZXNldEJ0biIsIndpdGhWYWxpZGF0aW9uIiwiX3VwZGF0ZUFjdGlvbnNUaW1lb3V0IiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiX2dldFVwZGF0ZUNvbXBsZXRlIiwiYWxsIiwidXBkYXRlQ29tcGxldGUiLCJyZW5kZXIiLCJjb250YWluZXIiLCJ0aXRsZSIsImNlbnRlciIsInN0eWxlcyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxHQUFULEVBQWNDLEdBQWQsRUFBbUJDLEdBQW5CLFFBQThCLGFBQTlCO0FBQ0EsU0FBU0MsbUJBQVQsUUFBb0MsZUFBcEM7QUFDQSxTQUFTQyxTQUFULEVBQW9CQyxTQUFwQixRQUFxQyxjQUFyQztBQUNBLFNBQVNDLFFBQVQsUUFBeUIsK0JBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQixZQUExQjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IsaUJBQXRCO0FBQ0EsT0FBTywwQkFBUDtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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T0FBTyxFQUFFLEtBQUt6QztBQUFqQyxLQUFELENBRGIsTUFFTCxLQUFLRCxTQUFMLEtBQW1CLElBQW5CLEdBQ0V2QixJQUFJLHFDQUVjUSxRQUFRLENBQUM7QUFBRWdLLE1BQUFBLEtBQUssRUFBRSxJQUFUO0FBQWVDLE1BQUFBLE1BQU0sRUFBRSxLQUFLbEosU0FBTCxJQUFrQixDQUFDLEtBQUtIO0FBQS9DLEtBQUQsQ0FGdEIsbUdBUUUsS0FBS2EsUUFBTCxLQUFrQixJQUFsQixJQUEwQixLQUFLYixTQUFMLEtBQW1CLElBQTdDLEdBQ0UsRUFERixHQUVFcEIsSUFBSSw4RUFLb0IsS0FBS29ELFFBTHpCLHFHQVlvQixLQUFLUSxTQVp6QiwrQkFjVSxLQUFLMUMsV0FkZix3QkFWUixVQUROLEdBOEJFLEVBaENHLHlCQWlDZ0IsS0FBS0wsTUFBTCxJQUFlLElBQWYsR0FBc0IsS0FBS3FJLFdBQUwsRUFBdEIsR0FBMkNsSixJQUFJLEVBakMvRCxVQWtDTCxLQUFLb0IsU0FBTCxLQUFtQixJQUFuQixJQUEyQixLQUFLYSxRQUFMLEtBQWtCLElBQTdDLEdBQ0VqQyxJQUFJLHVIQUlxRCxLQUFLb0QsUUFKMUQsb0dBSzZDLEtBQUtRLFNBTGxELCtCQUswRixLQUFLMUMsV0FML0YsS0FNTyxLQUFLQSxXQU5aLDZCQUROLEdBWUUsRUE5Q0csaUJBQVg7QUFpREQ7O0FBRWdCLGFBQU53SixNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMaEssS0FESyxFQUVMO0FBQ0FULElBQUFBLEdBQUcsNmxEQUhFLENBQVA7QUF3SkQ7O0FBem5CMEM7QUE0bkI3QzBLLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsZ0JBQTdCLEVBQStDbEssWUFBL0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0LCBzZXQsIGRlbCB9IGZyb20gJ29iamVjdC1wYXRoJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCB7IGRlZXBDbG9uZSwgZGVlcEVxdWFsIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnanNvbnNjaGVtYSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJy4uL3N0eWxlcy9lbXB0eSc7XG5pbXBvcnQgJy4vZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCc7XG5cbi8qKlxuICogU2NoZW1hIGZvcm0gY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOnN1Ym1pdCAtIGV2ZW50IHdoZW4gdXNlciBzdWJtaXQgdmFsaWQgZm9ybVxuICogQGZpcmVzIGd2LXNjaGVtYS1mb3JtOmVycm9yIC0gZXZlbnQgd2hlbiB1c2VyIHN1Ym1pdCBpbnZhbGlkIGZvcm1cbiAqIEBmaXJlcyBndi1zY2hlbWEtZm9ybTpjaGFuZ2UgLSBldmVudCB3aGVuIHdoZW4gZm9ybSBjaGFuZ2VcbiAqIEBmaXJlcyBndi1zY2hlbWEtZm9ybTpjYW5jZWwgLSBldmVudCB3aGVuIHVzZXIgY2FuY2VsIGZvcm1cbiAqXG4gKiBAYXR0ciB7T2JqZWN0fSBzY2hlbWEgLSB0aGUgc2NoZW1hIGZvcm0gY29uZmlndXJhdGlvblxuICogQGF0dHIge09iamVjdH0gdmFsdWVzIC0gdGhlIHZhbHVlcyBvZiBmaWVsZHNcbiAqIEBhdHRyIHtPYmplY3R9IGVycm9ycyAtIHRoZSBtYXAgb2YgZXJyb3JzIGJ5IGlucHV0IGtleVxuICogQGF0dHIge0Jvb2xlYW59IHZhbGlkYXRlIC0gdG8gZm9yY2UgdmFsaWRhdGlvbiBvbiBmaXJzdCByZW5kZXJcbiAqIEBhdHRyIHtCb29sZWFufSByZWFkb25seSAtIHRydWUgaWYgcmVhZG9ubHlcbiAqIEBhdHRyIHtCb29sZWFufSBzY3JvbGxhYmxlIC0gdXNlZnVsIGZvciBtYWtpbmcgY29udGVudCBzY3JvbGxhYmxlIHdpdGggZml4ZWQgaGVhZGVycyAvIGZvb3RlcnNcbiAqXG4gKiBAY3NzcHJvcCB7Q29sb3J9IFstLWd2LXNjaGVtYS1mb3JtLS1iZ2M9I2ZmZmZmZl0gLSBCYWNrZ3JvdW5kIGNvbG9yXG4gKiBAY3NzcHJvcCB7TGVuZ3RofSBbLS1ndi1zY2hlbWEtZm9ybS1jb250cm9sLS1tPTAuNHJlbV0gLSBDb250cm9sIG1hcmdpblxuICovXG5leHBvcnQgY2xhc3MgR3ZTY2hlbWFGb3JtIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgZXJyb3JzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgdmFsdWVzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgc3VibWl0TGFiZWw6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgICBoYXNGb290ZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGFzLWZvb3RlcicgfSxcbiAgICAgIGhhc0hlYWRlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoYXMtaGVhZGVyJyB9LFxuICAgICAgX2NvbmZpcm06IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBfdmFsdWVzOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZGlydHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGlkZURlcHJlY2F0ZWQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGlkZS1kZXByZWNhdGVkJyB9LFxuICAgICAgdmFsaWRhdGVPblJlbmRlcjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICd2YWxpZGF0ZS1vbi1yZW5kZXInIH0sXG4gICAgICBfdmFsaWRhdG9yUmVzdWx0czogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIF90b3VjaDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBzY3JvbGxhYmxlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmhpZGVEZXByZWNhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWVzID0ge307XG4gICAgdGhpcy5zdWJtaXRMYWJlbCA9ICdPayc7XG4gICAgdGhpcy5oYXNIZWFkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmhhc0Zvb3RlciA9IGZhbHNlO1xuICAgIHRoaXMuX3RvdWNoID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gbmV3IFZhbGlkYXRvcigpO1xuICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzID0gW107XG4gICAgdGhpcy5fZHluYW1pY0NvbnRyb2xzID0gW107XG4gICAgdGhpcy5fZHluYW1pY0F0dHJpYnV0ZXMgPSBbJ2Rpc2FibGVkJywgJ3JlcXVpcmVkJywgJ2hpZGRlbiddO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZ3Ytc2NoZW1hLWZvcm0tY29udHJvbDpkZWZhdWx0LXZhbHVlJywgdGhpcy5fb25EZWZhdWx0VmFsdWUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdndi1zY2hlbWEtZm9ybS1jb250cm9sOmNoYW5nZScsIHRoaXMuX29uQ2hhbmdlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZ3Ytc2NoZW1hLWZvcm0tY29udHJvbDpjb250cm9sLXJlYWR5JywgdGhpcy5fb25Db250cm9sUmVhZHkuYmluZCh0aGlzKSk7XG4gIH1cblxuICBzZXQgdmFsdWVzKHZhbHVlcykge1xuICAgIGlmICghZGVlcEVxdWFsKHRoaXMuX3ZhbHVlcywgdmFsdWVzKSkge1xuICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICB0aGlzLl9pbml0aWFsVmFsdWVzID0geyAuLi52YWx1ZXMgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxWYWx1ZXMgPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3ZhbHVlcyA9IGRlZXBDbG9uZSh0aGlzLl9pbml0aWFsVmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gIH1cblxuICByZXNldCh2YWx1ZXMgPSBudWxsKSB7XG4gICAgdGhpcy5fdmFsdWVzID0gZGVlcENsb25lKHZhbHVlcyB8fCB0aGlzLl9pbml0aWFsVmFsdWVzKTtcbiAgICB0aGlzLl90b3VjaCA9IGZhbHNlO1xuICAgIHRoaXMuX3NldERpcnR5KGZhbHNlKTtcbiAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcy5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBfb25SZXNldCgpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAncmVzZXQnKTtcbiAgfVxuXG4gIHJlcXVlc3RWYWxpZGF0aW9uKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl92YWxpZGF0ZVRpbWVvdXQpO1xuICAgIHRoaXMuX3ZhbGlkYXRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aW9ucygpO1xuICAgIH0sIDM1MCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5fb25TdWJtaXQoKTtcbiAgfVxuXG4gIF9vblN1Ym1pdCgpIHtcbiAgICBjb25zdCB2YWxpZGF0b3JSZXN1bHRzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5faW5pdGlhbFZhbHVlcyA9IGRlZXBDbG9uZSh0aGlzLl92YWx1ZXMpO1xuICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgICAgdGhpcy5fdG91Y2ggPSBmYWxzZTtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3N1Ym1pdCcsIHsgdmFsdWVzOiB0aGlzLl92YWx1ZXMsIHZhbGlkYXRvclJlc3VsdHMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2Vycm9yJywgeyB2YWx1ZXM6IHRoaXMuX3ZhbHVlcywgdmFsaWRhdG9yUmVzdWx0cyB9KTtcbiAgICB9XG4gIH1cblxuICBfc2V0RGlydHkoZGlydHkgPSB0cnVlKSB7XG4gICAgdGhpcy5kaXJ0eSA9ICEhZGlydHk7XG4gIH1cblxuICBfc2V0VG91Y2godG91Y2ggPSB0cnVlKSB7XG4gICAgdGhpcy5fdG91Y2ggPSAhIXRvdWNoO1xuICB9XG5cbiAgY29uZmlybSgpIHtcbiAgICBpZiAodGhpcy5pc1RvdWNoKCkpIHtcbiAgICAgIGlmICh0aGlzLl9jb25maXJtICYmIHRoaXMuX2NvbmZpcm0ucHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlybS5wcm9taXNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+ICh0aGlzLl9jb25maXJtID0geyByZXNvbHZlLCByZWplY3QgfSkpO1xuICAgICAgdGhpcy5fY29uZmlybS5wcm9taXNlID0gcHJvbWlzZTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBfb25Db25maXJtUmVzZXQoKSB7XG4gICAgY29uc3QgeyByZXNvbHZlIH0gPSB0aGlzLl9jb25maXJtO1xuICAgIHRoaXMuX2NvbmZpcm0gPSBudWxsO1xuICAgIHRoaXMuX29uUmVzZXQoKTtcbiAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKS50aGVuKCgpID0+IHtcbiAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfb25Db25maXJtRWRpdCgpIHtcbiAgICB0aGlzLl9jb25maXJtLnJlamVjdCh0aGlzKTtcbiAgICB0aGlzLl9jb25maXJtID0gbnVsbDtcbiAgICB0aGlzLl91cGRhdGVDaGlsZHJlbih0aGlzLnZhbGlkYXRlT25SZW5kZXIpO1xuICB9XG5cbiAgX2dldFN1Ym1pdEJ0bigpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNzdWJtaXQnKTtcbiAgfVxuXG4gIF9nZXRSZXNldEJ0bigpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNyZXNldCcpO1xuICB9XG5cbiAgX2Rpc3BhdGNoQ2hhbmdlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9jaGFuZ2VUaW1lb3V0KTtcbiAgICB0aGlzLl9jaGFuZ2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UnLCB7IHRhcmdldDogdGhpcywgdmFsdWVzOiB0aGlzLl92YWx1ZXMsIHZhbGlkYXRpb246IHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgfSk7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgX29uRGVmYXVsdFZhbHVlKHsgZGV0YWlsOiB7IGN1cnJlbnRUYXJnZXQsIHZhbHVlLCBjb250cm9sIH0gfSkge1xuICAgIGlmIChjb250cm9sLnR5cGUgPT09ICdpbnRlZ2VyJyAmJiB2YWx1ZSAhPSBudWxsICYmICgodmFsdWUudHJpbSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fCB2YWx1ZS5sZW5ndGggPiAwKSkge1xuICAgICAgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIH1cbiAgICBzZXQodGhpcy5fdmFsdWVzLCBjdXJyZW50VGFyZ2V0LmlkLCB2YWx1ZSk7XG4gIH1cblxuICBfb25DaGFuZ2UoeyBkZXRhaWw6IHsgY3VycmVudFRhcmdldCwgdmFsdWUsIGNvbnRyb2wgfSB9KSB7XG4gICAgdGhpcy5fc2V0VG91Y2godHJ1ZSk7XG4gICAgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ2ludGVnZXInKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGludFZhbHVlID0gTnVtYmVyKHZhbHVlKS52YWx1ZU9mKCk7XG4gICAgICAgIGlmICghaXNOYU4oaW50VmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBpbnRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ2FycmF5JyAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhbHVlID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgZGVsKHRoaXMuX3ZhbHVlcywgY3VycmVudFRhcmdldC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldCh0aGlzLl92YWx1ZXMsIGN1cnJlbnRUYXJnZXQuaWQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgIHRoaXMuX3VwZGF0ZUR5bmFtaWNDb250cm9scygpO1xuICAgIHRoaXMuX3VwZGF0ZUFjdGlvbnMoKTtcbiAgICB0aGlzLl9kaXNwYXRjaENoYW5nZSgpO1xuICB9XG5cbiAgX29uQ29udHJvbFJlYWR5KGUpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBjb250cm9sRWxlbWVudCA9IGUuZGV0YWlsLmNvbnRyb2w7XG4gICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xFbGVtZW50LmNvbnRyb2w7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSkge1xuICAgICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudCkge1xuICAgICAgICBjb25zdCBldmVudCA9IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5ldmVudDtcbiAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCBldmVudC5uYW1lLCB7IC4uLmV2ZW50LCAuLi5lLmRldGFpbCB9KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faGFzQ29uZGl0aW9uKGNvbnRyb2wpKSB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNDb250cm9scy5wdXNoKGNvbnRyb2xFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVEeW5hbWljQ29udHJvbHMoKSB7XG4gICAgdGhpcy5fZHluYW1pY0NvbnRyb2xzLmZvckVhY2goKGNvbnRyb2xFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVEeW5hbWljQ29udHJvbChjb250cm9sRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBfdXBkYXRlRHluYW1pY0NvbnRyb2woY29udHJvbEVsZW1lbnQpIHtcbiAgICBjb25zdCBjb250cm9sID0gY29udHJvbEVsZW1lbnQuY29udHJvbDtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddKSB7XG4gICAgICB0aGlzLl9keW5hbWljQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgY29uc3QgaXMgPSB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCBhdHRyaWJ1dGUpO1xuICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICBjb250cm9sRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHBlcmZvcm1VcGRhdGUoKSB7XG4gICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKHMpID0+IHtcbiAgICAgIHMucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIHN1cGVyLnBlcmZvcm1VcGRhdGUoKTtcbiAgfVxuXG4gIF9yZW5kZXJDb250cm9sKGtleSkge1xuICAgIC8vIFRoaXMgaXMgcmVxdWlyZSB0byBjbGVhbiBjYWNoZSBvZiA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbD5cbiAgICBjb25zdCBjb250cm9sID0geyAuLi50aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW2tleV0gfTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gKHRoaXMuc2NoZW1hLnJlcXVpcmVkICYmIHRoaXMuc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKGtleSkpIHx8IHRoaXMuX2V2YWx1YXRlQ29uZGl0aW9uKGNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAodGhpcy5zY2hlbWEuZGlzYWJsZWQgJiYgdGhpcy5zY2hlbWEuZGlzYWJsZWQuaW5jbHVkZXMoa2V5KSkgfHwgdGhpcy5fZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgJ2Rpc2FibGVkJyk7XG4gICAgY29uc3QgaXNIaWRkZW4gPSB0aGlzLl9ldmFsdWF0ZUNvbmRpdGlvbihjb250cm9sLCAnaGlkZGVuJyk7XG4gICAgaWYgKGlzSGlkZGVuKSB7XG4gICAgICB0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgY29uc3QgaXNSZWFkb25seSA9IHRoaXMucmVhZG9ubHkgfHwgY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBpc1dyaXRlT25seSA9IGNvbnRyb2wud3JpdGVPbmx5ID09PSB0cnVlO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywga2V5KTtcbiAgICByZXR1cm4gaHRtbGA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgLmlkPVwiJHtrZXl9XCJcbiAgICAgIC5lcnJvcnM9XCIke3RoaXMuZXJyb3JzfVwiXG4gICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgLnNrZWxldG9uPVwiJHt0aGlzLnNrZWxldG9ufVwiXG4gICAgICAudmFsdWU9XCIke3ZhbHVlfVwiXG4gICAgICA/cmVhZG9ubHk9XCIke2lzUmVhZG9ubHl9XCJcbiAgICAgID93cml0ZW9ubHk9XCIke2lzV3JpdGVPbmx5fVwiXG4gICAgICA/cmVxdWlyZWQ9XCIke2lzUmVxdWlyZWR9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7aXNEaXNhYmxlZH1cIlxuICAgICAgP2hpZGRlbj1cIiR7aXNIaWRkZW59XCJcbiAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPmA7XG4gIH1cblxuICBfaGFzQ29uZGl0aW9uKGNvbnRyb2wpIHtcbiAgICBpZiAoY29udHJvbFsneC1zY2hlbWEtZm9ybSddKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0F0dHJpYnV0ZXMuZmluZCgoY29uZGl0aW9uKSA9PiBjb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bY29uZGl0aW9uXSAhPSBudWxsKSAhPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBfZXZhbHVhdGVDb25kaXRpb24oY29udHJvbCwgY29uZGl0aW9uS2V5KSB7XG4gICAgaWYgKGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSA9PSBudWxsIHx8IGNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXVtjb25kaXRpb25LZXldID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY29uZGl0aW9uID0gY29udHJvbFsneC1zY2hlbWEtZm9ybSddW2NvbmRpdGlvbktleV07XG4gICAgaWYgKHR5cGVvZiBjb25kaXRpb24gPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcbiAgICB9XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgIC8vIGNvbmRpdGlvbiBpc24ndCBhbiBhcnJheSwgaWdub3JlIHRoZSBjb25kaXRpb25cbiAgICAgIGNvbnNvbGUud2FybihgJyR7Y29uZGl0aW9uS2V5fScgYXR0cmlidXRlIG9mICd4LXNjaGVtYS1mb3JtJyBzaG91bGQgYmUgYW4gYXJyYXlgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG9wZXJhdGlvbiBvZiBjb25kaXRpb24pIHtcbiAgICAgIC8vIG9wZXJhdGlvbiBvbmx5IGhhdmUgb25lIG9wZXJhdG9yIHdpdGggYSBzaW5nbGUgb2JqZWN0IGNvbnRhaW5pbmcgb3BlcmFuZCB2YWx1ZXNcbiAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LmtleXMob3BlcmF0aW9uKVswXTtcblxuICAgICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgICBjYXNlICckbmVxJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVOb3RFcXVhbHNDb25kaXRpb24ob3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJGVxJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVFcXVhbHNDb25kaXRpb24ob3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJG5vZGVmJzpcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgdGhpcy5fZXZhbHVhdGVOb3REZWZDb25kaXRpb24ob3BlcmF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnJGRlZic6XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHRoaXMuX2V2YWx1YXRlRGVmQ29uZGl0aW9uKG9wZXJhdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCBvcGVyYXRvciAnJHtvcGVyYXRvcn0nIG9uIGRpc2FibGUgY29uZGl0aW9uYCk7XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF9ldmFsdWF0ZU5vdEVxdWFsc0NvbmRpdGlvbihjb25kaXRpb24pIHtcbiAgICByZXR1cm4gIXRoaXMuX2V2YWx1YXRlRXF1YWxzQ29uZGl0aW9uKGNvbmRpdGlvbik7XG4gIH1cblxuICBfZXZhbHVhdGVFcXVhbHNDb25kaXRpb24oY29uZGl0aW9uKSB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pWzBdO1xuICAgIGNvbnN0IG9wZXJhbmRzID0gY29uZGl0aW9uW29wZXJhdG9yXTtcbiAgICBjb25zdCBtb2RlbEF0dHJpYnV0ZXMgPSBPYmplY3Qua2V5cyhvcGVyYW5kcyk7XG4gICAgcmV0dXJuIG1vZGVsQXR0cmlidXRlc1xuICAgICAgLm1hcCgobW9kZWxBdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgY29uc3QgdGVzdFZhbHVlID0gb3BlcmFuZHNbbW9kZWxBdHRyaWJ1dGVdO1xuICAgICAgICByZXR1cm4gZ2V0KHRoaXMuX3ZhbHVlcywgbW9kZWxBdHRyaWJ1dGUpID09PSB0ZXN0VmFsdWU7XG4gICAgICB9KVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyZW50KSA9PiBhY2MgfHwgY3VycmVudCk7XG4gIH1cblxuICBfZXZhbHVhdGVOb3REZWZDb25kaXRpb24oY29uZGl0aW9uKSB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBPYmplY3Qua2V5cyhjb25kaXRpb24pWzBdO1xuICAgIGNvbnN0IG1vZGVsQXR0cmlidXRlID0gY29uZGl0aW9uW29wZXJhdG9yXTtcbiAgICByZXR1cm4gZ2V0KHRoaXMuX3ZhbHVlcywgbW9kZWxBdHRyaWJ1dGUpID09PSB1bmRlZmluZWQgfHwgZ2V0KHRoaXMuX3ZhbHVlcywgbW9kZWxBdHRyaWJ1dGUpID09PSBudWxsO1xuICB9XG5cbiAgX2V2YWx1YXRlRGVmQ29uZGl0aW9uKGNvbmRpdGlvbikge1xuICAgIHJldHVybiAhdGhpcy5fZXZhbHVhdGVOb3REZWZDb25kaXRpb24oY29uZGl0aW9uKTtcbiAgfVxuXG4gIF9yZW5kZXJQYXJ0KCkge1xuICAgIGlmICh0aGlzLl9jb25maXJtKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiY29uZmlybS1ib3hcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCI+VGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkIGFuZCBjYW5ub3QgYmUgc2F2ZWQuPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtLWJveF9hY3Rpb25zXCI+XG4gICAgICAgICAgPGd2LWJ1dHRvbiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNvbmZpcm1SZXNldH1cIiBvdXRsaW5lZCBpY29uPVwiZ2VuZXJhbDp1cGRhdGVcIiBkYW5nZXI+TG9zZSBjaGFuZ2VzPC9ndi1idXR0b24+XG4gICAgICAgICAgPGd2LWJ1dHRvbiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNvbmZpcm1FZGl0fVwiIGljb249XCJkZXNpZ246ZWRpdFwiPkVkaXQ8L2d2LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gdGhpcy5zY2hlbWEucHJvcGVydGllcyA/IE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpIDogW107XG4gICAgdGhpcy5faWdub3JlUHJvcGVydGllcyA9IFtdO1xuICAgIHJldHVybiBodG1sYCR7a2V5cy5tYXAoKGtleSkgPT4gdGhpcy5fcmVuZGVyQ29udHJvbChrZXkpKX1gO1xuICB9XG5cbiAgZ2V0Q29udHJvbHMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wnKSk7XG4gIH1cblxuICBnZXRDb250cm9sKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2lkfVwiXWApO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgaWYgKHRoaXMuc2NoZW1hKSB7XG4gICAgICB0aGlzLl92YWxpZGF0b3JSZXN1bHRzID0gdGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMuX3ZhbHVlcywgdGhpcy5zY2hlbWEpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMuZXJyb3JzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9yUmVzdWx0cztcbiAgfVxuXG4gIGlzVmFsaWQoKSB7XG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMudmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9ICh0aGlzLl92YWxpZGF0b3JSZXN1bHRzLmVycm9ycyB8fCBbXSkuZmlsdGVyKChlcnJvcikgPT4ge1xuICAgICAgcmV0dXJuICF0aGlzLl9pZ25vcmVQcm9wZXJ0aWVzLmluY2x1ZGVzKGVycm9yLnByb3BlcnR5LnJlcGxhY2UoJ2luc3RhbmNlLicsICcnKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBpc1RvdWNoKCkge1xuICAgIHJldHVybiB0aGlzLl90b3VjaCB8fCAodGhpcy5kaXJ0eSAmJiB0aGlzLnZhbGlkYXRlT25SZW5kZXIpO1xuICB9XG5cbiAgY2FuU3VibWl0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVG91Y2goKSAmJiB0aGlzLmlzVmFsaWQoKTtcbiAgfVxuXG4gIF91cGRhdGVBY3Rpb25zKCkge1xuICAgIGNvbnN0IHN1Ym1pdEJ0biA9IHRoaXMuX2dldFN1Ym1pdEJ0bigpO1xuICAgIGlmIChzdWJtaXRCdG4gIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuY2FuU3VibWl0KCkpIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZ2V0U3VibWl0QnRuKCkuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXNldEJ0biA9IHRoaXMuX2dldFJlc2V0QnRuKCk7XG4gICAgaWYgKHJlc2V0QnRuICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmRpcnR5KSB7XG4gICAgICAgIHJlc2V0QnRuLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0QnRuLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfdXBkYXRlQ2hpbGRyZW4od2l0aFZhbGlkYXRpb24pIHtcbiAgICBpZiAod2l0aFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRvclJlc3VsdHMgPSB7fTtcbiAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgIHRoaXMucmVxdWVzdFZhbGlkYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlQWN0aW9uc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3VwZGF0ZUFjdGlvbnMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVBY3Rpb25zVGltZW91dCk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX3ZhbHVlcycpKSB7XG4gICAgICB0aGlzLmdldENvbnRyb2xzKCkuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICBjb250cm9sLnZhbHVlID0gZ2V0KHRoaXMuX3ZhbHVlcywgY29udHJvbC5pZCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4odGhpcy52YWxpZGF0ZU9uUmVuZGVyICYmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ192YWx1ZXMnKSB8fCBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NjaGVtYScpKSk7XG4gIH1cblxuICBhc3luYyBfZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuX2dldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRDb250cm9scygpLm1hcCgoZSkgPT4gZS51cGRhdGVDb21wbGV0ZSkpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiBodG1sYDxmb3JtIGNsYXNzPVwiJHtjbGFzc01hcCh7IHNjcm9sbGFibGU6IHRoaXMuc2Nyb2xsYWJsZSB9KX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgY29udGFpbmVyOiB0cnVlLCBjb25maXJtOiB0aGlzLl9jb25maXJtIH0pfVwiPlxuICAgICAgICAke3RoaXMuaGFzSGVhZGVyID09PSB0cnVlXG4gICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyB0aXRsZTogdHJ1ZSwgY2VudGVyOiB0aGlzLmhhc0hlYWRlciAmJiAhdGhpcy5oYXNGb290ZXIgfSl9XCI+XG4gICAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwidGl0bGVcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAke3RoaXMucmVhZG9ubHkgPT09IHRydWUgfHwgdGhpcy5oYXNGb290ZXIgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgIDogaHRtbGA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdlbmVyYWw6dXBkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25TdWJtaXR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjb2RlOmNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aXRsZT1cIiR7dGhpcy5zdWJtaXRMYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IGB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYFxuICAgICAgICAgIDogJyd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+JHt0aGlzLnNjaGVtYSAhPSBudWxsID8gdGhpcy5fcmVuZGVyUGFydCgpIDogaHRtbGBgfTwvZGl2PlxuICAgICAgICAke3RoaXMuaGFzRm9vdGVyID09PSB0cnVlICYmIHRoaXMucmVhZG9ubHkgIT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGd2LWJ1dHRvbiBpZD1cInJlc2V0XCIgb3V0bGluZWQgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldH1cIiBpY29uPVwiZ2VuZXJhbDp1cGRhdGVcIiB0aXRsZT1cIlJlc2V0XCI+UmVzZXQ8L2d2LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxndi1idXR0b24gaWQ9XCJzdWJtaXRcIiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblN1Ym1pdH1cIiBpY29uPVwiY29kZTpjaGVja1wiIC50aXRsZT1cIiR7dGhpcy5zdWJtaXRMYWJlbH1cIlxuICAgICAgICAgICAgICAgICAgICA+JHt0aGlzLnN1Ym1pdExhYmVsfTwvZ3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYFxuICAgICAgICAgIDogJyd9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+YDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBlbXB0eSxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgICAtLWJnYzogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tLWJnYywgI2ZmZmZmZik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZ2MpO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIsXG4gICAgICAgIC5mb290ZXIsXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZ2MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgLyogZm9yIEZpcmVmb3ggKi9cbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQgPiBndi1zY2hlbWEtZm9ybS1jb250cm9sIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtLnNjcm9sbGFibGUgLmNvbnRlbnQge1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybS5zY3JvbGxhYmxlIC5jb250ZW50ID4gZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA3NzVweDtcbiAgICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlcixcbiAgICAgICAgLmZvb3RlciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ1cHg7XG4gICAgICAgICAgLS1ndi1pY29uLS1zOiAyNnB4O1xuICAgICAgICAgIC0tZ3YtaWNvbi0tYzogI2JmYmZiZjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvb3RlciB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm0uc2Nyb2xsYWJsZSAuZm9vdGVyIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXIgLmxlZnQsXG4gICAgICAgIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAubGVmdCxcbiAgICAgICAgLmZvb3RlciAubGVmdCxcbiAgICAgICAgLmhlYWRlciAucmlnaHQsXG4gICAgICAgIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnJpZ2h0LFxuICAgICAgICAuZm9vdGVyIC5yaWdodCB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnRpdGxlIHtcbiAgICAgICAgICBjb2xvcjogIzI4NDQ0ZjtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAudGl0bGUuY2VudGVyIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpcm0tYm94IHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuY29uZmlybS1ib3hfYWN0aW9ucyB7XG4gICAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpcm0gLmhlYWRlciAubGVmdCxcbiAgICAgICAgLmNvbmZpcm0gLmhlYWRlciAucmlnaHQsXG4gICAgICAgIC5jb25maXJtIC5mb290ZXIgLmxlZnQsXG4gICAgICAgIC5jb25maXJtIC5mb290ZXIgLnJpZ2h0IHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0nLCBHdlNjaGVtYUZvcm0pO1xuIl19