@datagrok-libraries/utils 4.1.9 → 4.1.10

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
@@ -8,7 +8,7 @@
8
8
  "email": "amuzychyna@datagrok.ai"
9
9
  },
10
10
  "fullName": "Utils",
11
- "version": "4.1.9",
11
+ "version": "4.1.10",
12
12
  "description": "Common utilities",
13
13
  "dependencies": {
14
14
  "cash-dom": "^8.1.1",
@@ -1 +1 @@
1
- {"version":3,"file":"items-grid.d.ts","sourceRoot":"","sources":["items-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,MAAM,MAAM,QAAQ,GAAG;IAAC,CAAC,CAAC,EAAC,MAAM,GAAG,GAAG,CAAA;CAAC,CAAC;AACzC,MAAM,MAAM,gBAAgB,GAAG;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,QAAQ,CAAC;CACpC,CAAC;AAEF,uGAAuG;AACvG,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAyB;IAEvC,mDAAmD;IAC5C,aAAa,EAAE,OAAO,CAAC;QAAC,IAAI,EAAC,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAiB;IAClF,oDAAoD;IAC7C,mBAAmB,EAAE,OAAO,CAAC;QAAC,IAAI,EAAC,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAiB;IACxF,4CAA4C;IACrC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAiB;IACtD,8CAA8C;IACvC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAExD,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAC+E;IACtG;;;;;;;;;;;;OAYG;gBACO,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,GAAE,QAAQ,EAAO,EAAE,OAAO,GAAE,gBAAqB;IAW7F,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED,IAAI,KAAK,IAAI;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,EAAE,CAElC;IAED,OAAO,CAAC,MAAM;IAyBd,OAAO,CAAC,UAAU;IA6ClB,OAAO,CAAC,SAAS;CAIlB;AAED;;;;;;;;GAQG"}
1
+ {"version":3,"file":"items-grid.d.ts","sourceRoot":"","sources":["items-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,MAAM,MAAM,QAAQ,GAAG;IAAC,CAAC,CAAC,EAAC,MAAM,GAAG,GAAG,CAAA;CAAC,CAAC;AACzC,MAAM,MAAM,gBAAgB,GAAG;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,QAAQ,CAAC;CACpC,CAAC;AAEF,uGAAuG;AACvG,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAyB;IAEvC,mDAAmD;IAC5C,aAAa,EAAE,OAAO,CAAC;QAAC,IAAI,EAAC,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAiB;IAClF,oDAAoD;IAC7C,mBAAmB,EAAE,OAAO,CAAC;QAAC,IAAI,EAAC,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAiB;IACxF,4CAA4C;IACrC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAiB;IACtD,8CAA8C;IACvC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAExD,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAC+E;IACtG;;;;;;;;;;;;OAYG;gBACO,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,GAAE,QAAQ,EAAO,EAAE,OAAO,GAAE,gBAAqB;IAW7F,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED,IAAI,KAAK,IAAI;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,EAAE,CAElC;IAED,OAAO,CAAC,MAAM;IAwBd,OAAO,CAAC,UAAU;IAiDlB,OAAO,CAAC,SAAS;CAIlB;AAED;;;;;;;;GAQG"}
package/src/items-grid.js CHANGED
@@ -1,3 +1,4 @@
1
+ import * as DG from 'datagrok-api/dg';
1
2
  import * as ui from 'datagrok-api/ui';
2
3
  import { Subject } from 'rxjs';
3
4
  /** Editor for predefined properties in a grid form. Supports adding, removing and editing of props. */
@@ -28,7 +29,7 @@ export class ItemsGrid {
28
29
  this.properties = properties;
29
30
  this.options = Object.assign(Object.assign({}, this.options), options);
30
31
  this._root = ui.divV([], { style: {
31
- display: 'grid', gridTemplateColumns: `repeat(${this.properties.length + 1}, 1fr)`,
32
+ display: 'grid', gridTemplateColumns: `repeat(${this.properties.length}, 1fr)`,
32
33
  alignItems: 'center', gap: '12px'
33
34
  } });
34
35
  this._items = items;
@@ -48,12 +49,11 @@ export class ItemsGrid {
48
49
  header.style.fontWeight = 'bold';
49
50
  this._root.appendChild(header);
50
51
  }
51
- this._root.appendChild(ui.divText(''));
52
52
  }
53
53
  for (const item of this._items) {
54
54
  const editors = this.getItemDiv(item);
55
- if (editors.length !== this.properties.length + 1)
56
- editors.push(ui.div());
55
+ // if (editors.length !== this.properties.length + 1)
56
+ // editors.push(ui.div());
57
57
  for (const editor of editors)
58
58
  this._root.appendChild(editor);
59
59
  }
@@ -66,18 +66,21 @@ export class ItemsGrid {
66
66
  getItemDiv(item = {}, isAdding) {
67
67
  const editors = [];
68
68
  const inputsMap = {};
69
+ let lastInput = null;
69
70
  for (const prop of this.properties) {
70
71
  if (item[prop.name] === undefined)
71
72
  item[prop.name] = null; // needed for date editor, it can not handle undefined
72
73
  const input = ui.input.forProperty(prop, item);
73
74
  editors.push(this.options.horizontalInputNames ? input.root : this.hideLabel(input.root));
74
- input.input.style.width = '100%';
75
+ if (prop.propertyType !== DG.TYPE.BOOL)
76
+ input.input.style.width = '100%';
75
77
  inputsMap[prop.name] = input;
76
78
  input.onChanged(() => {
77
79
  isAdding ? this.onAddingItemChanged.next({ item, fieldName: prop.name }) :
78
80
  this.onItemChanged.next({ item, fieldName: prop.name });
79
81
  });
80
82
  input.root.style.alignItems = 'center'; // needed for molecule editor
83
+ lastInput = input;
81
84
  }
82
85
  let companionButton = null;
83
86
  if (isAdding) {
@@ -102,7 +105,8 @@ export class ItemsGrid {
102
105
  }, this.options.removeButtonTooltip);
103
106
  companionButton = removeButton;
104
107
  }
105
- editors.push(companionButton);
108
+ //editors.push(companionButton);
109
+ lastInput && lastInput.addOptions(companionButton);
106
110
  companionButton.style.color = '#2083d5';
107
111
  return editors;
108
112
  }
@@ -121,4 +125,4 @@ export class ItemsGrid {
121
125
  ui.dialog('dialog').add(itemsGrid.root).show();
122
126
  at any point, filled fields can be accessed via itemsGrid.items
123
127
  */
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIml0ZW1zLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBWTdCLHVHQUF1RztBQUN2RyxNQUFNLE9BQU8sU0FBUztJQWdCbEI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0wsWUFBWSxVQUF5QixFQUFFLFFBQW9CLEVBQUUsRUFBRSxVQUE0QixFQUFFO1FBekI3RixtREFBbUQ7UUFDNUMsa0JBQWEsR0FBZ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNsRixvREFBb0Q7UUFDN0Msd0JBQW1CLEdBQWdELElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEYsNENBQTRDO1FBQ3JDLGdCQUFXLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEQsOENBQThDO1FBQ3ZDLGtCQUFhLEdBQXNCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHeEQsWUFBTyxHQUNMLEVBQUMsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQWV0RyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxtQ0FBTyxJQUFJLENBQUMsT0FBTyxHQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3JCLEVBQUMsS0FBSyxFQUFFO2dCQUNOLE9BQU8sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVE7Z0JBQ2xGLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU07YUFBQyxFQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxNQUFNO1FBQ1osRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUU7WUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN4QztRQUNELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTztnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25ELEtBQUssTUFBTSxNQUFNLElBQUksU0FBUztnQkFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQWlCLEVBQUUsRUFBRSxRQUFrQjtRQUN4RCxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1FBRWxDLE1BQU0sU0FBUyxHQUFnQyxFQUFFLENBQUM7UUFDbEQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTO2dCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLHNEQUFzRDtZQUNoRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzFGLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDN0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLDZCQUE2QjtTQUN0RTtRQUVELElBQUksZUFBZSxHQUF1QixJQUFJLENBQUM7UUFDL0MsSUFBSSxRQUFRLEVBQUU7WUFDWixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdGLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUMxQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2xDLGVBQWUsR0FBRyxTQUFTLENBQUM7U0FDN0I7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQUUsT0FBTyxPQUFPLENBQUM7WUFDOUMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JDLGVBQWUsR0FBRyxZQUFZLENBQUM7U0FDaEM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlCLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN4QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ0Qsd0JBQXdCO0lBQ2hCLFNBQVMsQ0FBQyxFQUFlO1FBQy9CLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgSXRlbVR5cGUgPSB7W186c3RyaW5nXTogYW55fTtcbmV4cG9ydCB0eXBlIEl0ZW1zR3JpZE9wdGlvbnMgPSB7XG4gICAgcmVtb3ZlQnV0dG9uVG9vbHRpcD86IHN0cmluZyxcbiAgICBhZGRCdXR0b25Ub29sdGlwPzogc3RyaW5nLFxuICAgIGFsbG93UmVtb3ZlPzogYm9vbGVhbixcbiAgICBhbGxvd0FkZD86IGJvb2xlYW4sXG4gICAgaG9yaXpvbnRhbElucHV0TmFtZXM/OiBib29sZWFuLFxuICAgIG5ld0l0ZW1GdW5jdGlvbj86ICgpID0+IEl0ZW1UeXBlLFxufTtcblxuLyoqIEVkaXRvciBmb3IgcHJlZGVmaW5lZCBwcm9wZXJ0aWVzIGluIGEgZ3JpZCBmb3JtLiBTdXBwb3J0cyBhZGRpbmcsIHJlbW92aW5nIGFuZCBlZGl0aW5nIG9mIHByb3BzLiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1zR3JpZCB7XG4gIHByaXZhdGUgX3Jvb3Q6IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9pdGVtczoge1trZXk6IHN0cmluZ106IGFueX1bXTtcblxuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkZWQgaXRlbSBpcyBjaGFuZ2UgKi9cbiAgcHVibGljIG9uSXRlbUNoYW5nZWQ6IFN1YmplY3Q8e2l0ZW06SXRlbVR5cGUsIGZpZWxkTmFtZTogc3RyaW5nfT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgYWRkaW5nIGl0ZW0gaXMgY2hhbmdlICovXG4gIHB1YmxpYyBvbkFkZGluZ0l0ZW1DaGFuZ2VkOiBTdWJqZWN0PHtpdGVtOkl0ZW1UeXBlLCBmaWVsZE5hbWU6IHN0cmluZ30+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGl0ZW0gaXMgYWRkZWQgKi9cbiAgcHVibGljIG9uSXRlbUFkZGVkOiBTdWJqZWN0PEl0ZW1UeXBlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBpdGVtIGlzIHJlbW92ZWQgKi9cbiAgcHVibGljIG9uSXRlbVJlbW92ZWQ6IFN1YmplY3Q8SXRlbVR5cGU+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdO1xuICBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID1cbiAgICB7cmVtb3ZlQnV0dG9uVG9vbHRpcDogJ1JlbW92ZSBpdGVtJywgYWRkQnV0dG9uVG9vbHRpcDogJ0FkZCBpdGVtJywgYWxsb3dBZGQ6IHRydWUsIGFsbG93UmVtb3ZlOiB0cnVlfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEl0ZW1zR3JpZCB3aGljaCBpcyBhIGdyaWQgZm9ybSBmb3IgZWRpdGluZyBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSB7REcuUHJvcGVydHlbXX1wcm9wZXJ0aWVzIC0gcHJvcGVydGllcyB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0ge0l0ZW1UeXBlcFtdfWl0ZW1zIC0gaXRlbXMgdG8gYmUgZWRpdGVkXG4gICAgICogQHBhcmFtIHtJdGVtc0dyaWRPcHRpb25zfW9wdGlvbnMgLSBvcHRpb25zIGZvciB0aGUgZ3JpZFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTpcbiAgICAgKiByZW1vdmVCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIHJlbW92ZSBidXR0b24gLSBkZWZhdWx0IGlzICdSZW1vdmUgaXRlbSdcbiAgICAgKiBhZGRCdXR0b25Ub29sdGlwIC0gdG9vbHRpcCBmb3IgdGhlIGFkZCBidXR0b24gLSBkZWZhdWx0IGlzICdBZGQgaXRlbSdcbiAgICAgKiBhbGxvd1JlbW92ZSAtIHdoZXRoZXIgdG8gYWxsb3cgcmVtb3ZpbmcgaXRlbXMgLSBkZWZhdWx0IGlzIHRydWVcbiAgICAgKiBhbGxvd0FkZCAtIHdoZXRoZXIgdG8gYWxsb3cgYWRkaW5nIGl0ZW1zIC0gZGVmYXVsdCBpcyB0cnVlXG4gICAgICogaG9yaXpvbnRhbElucHV0TmFtZXMgLSBTaG93IHRoZSBpbnB1dCBuYW1lcyBuZXh0IHRvIGludHB1dCAtIGRlZmF1bHQgaXMgZmFsc2UsIG5hbWVzIGFyZSBzaG93biBhYm92ZSB0aGUgZ3JpZC5cbiAgICAgKiBuZXdJdGVtRnVuY3Rpb24gLSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbmV3IGl0ZW0gLSBkZWZhdWx0IGlzIHVuZGVmaW5kLCBpbiB3aGljaCBjYXNlIGFuIGVtcHR5IG9iamVjdCBpcyBjcmVhdGVkLlxuICAgICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBERy5Qcm9wZXJ0eVtdLCBpdGVtczogSXRlbVR5cGVbXSA9IFtdLCBvcHRpb25zOiBJdGVtc0dyaWRPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXZWKFtdLFxuICAgICAge3N0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6ICdncmlkJywgZ3JpZFRlbXBsYXRlQ29sdW1uczogYHJlcGVhdCgke3RoaXMucHJvcGVydGllcy5sZW5ndGggKyAxfSwgMWZyKWAsXG4gICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICcxMnB4J319KTtcbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgcm9vdCgpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3Q7XG4gIH1cblxuICBnZXQgaXRlbXMoKToge1trZXk6IHN0cmluZ106IGFueX1bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoKTogdm9pZCB7XG4gICAgdWkuZW1wdHkodGhpcy5fcm9vdCk7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbElucHV0TmFtZXMpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnByb3BlcnRpZXMpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdWkuZGl2VGV4dChwcm9wLm5hbWUpO1xuICAgICAgICBoZWFkZXIuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZChoZWFkZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZCh1aS5kaXZUZXh0KCcnKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9pdGVtcykge1xuICAgICAgY29uc3QgZWRpdG9ycyA9IHRoaXMuZ2V0SXRlbURpdihpdGVtKTtcbiAgICAgIGlmIChlZGl0b3JzLmxlbmd0aCAhPT0gdGhpcy5wcm9wZXJ0aWVzLmxlbmd0aCArIDEpXG4gICAgICAgIGVkaXRvcnMucHVzaCh1aS5kaXYoKSk7XG4gICAgICBmb3IgKGNvbnN0IGVkaXRvciBvZiBlZGl0b3JzKVxuICAgICAgICB0aGlzLl9yb290LmFwcGVuZENoaWxkKGVkaXRvcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0FkZCkge1xuICAgICAgY29uc3QgbmV3RWRpdG9yID0gdGhpcy5nZXRJdGVtRGl2KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICBmb3IgKGNvbnN0IGVkaXRvciBvZiBuZXdFZGl0b3IpXG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEl0ZW1EaXYoaXRlbTogSXRlbVR5cGUgPSB7fSwgaXNBZGRpbmc/OiBib29sZWFuKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgY29uc3QgZWRpdG9yczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgaW5wdXRzTWFwOiB7W186IHN0cmluZ106IERHLklucHV0QmFzZX0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoaXRlbVtwcm9wLm5hbWVdID09PSB1bmRlZmluZWQpXG4gICAgICAgIGl0ZW1bcHJvcC5uYW1lXSA9IG51bGw7IC8vIG5lZWRlZCBmb3IgZGF0ZSBlZGl0b3IsIGl0IGNhbiBub3QgaGFuZGxlIHVuZGVmaW5lZFxuICAgICAgY29uc3QgaW5wdXQgPSB1aS5pbnB1dC5mb3JQcm9wZXJ0eShwcm9wLCBpdGVtKTtcbiAgICAgIGVkaXRvcnMucHVzaCh0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbElucHV0TmFtZXMgPyBpbnB1dC5yb290IDogdGhpcy5oaWRlTGFiZWwoaW5wdXQucm9vdCkpO1xuICAgICAgaW5wdXQuaW5wdXQuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICBpbnB1dHNNYXBbcHJvcC5uYW1lXSA9IGlucHV0O1xuICAgICAgaW5wdXQub25DaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgaXNBZGRpbmcgPyB0aGlzLm9uQWRkaW5nSXRlbUNoYW5nZWQubmV4dCh7aXRlbSwgZmllbGROYW1lOiBwcm9wLm5hbWV9KSA6XG4gICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLm5leHQoe2l0ZW0sIGZpZWxkTmFtZTogcHJvcC5uYW1lfSk7XG4gICAgICB9KTtcbiAgICAgIGlucHV0LnJvb3Quc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInOyAvLyBuZWVkZWQgZm9yIG1vbGVjdWxlIGVkaXRvclxuICAgIH1cblxuICAgIGxldCBjb21wYW5pb25CdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGlzQWRkaW5nKSB7XG4gICAgICBjb25zdCBhZGRCdXR0b24gPSB1aS5pY29ucy5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJdGVtOiBJdGVtVHlwZSA9IHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24gPyB0aGlzLm9wdGlvbnMubmV3SXRlbUZ1bmN0aW9uKCkgOiB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoaW5wdXRzTWFwKS5mb3JFYWNoKChwTmFtZSkgPT4ge1xuICAgICAgICAgIG5ld0l0ZW1bcE5hbWVdID0gaW5wdXRzTWFwW3BOYW1lXS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25JdGVtQWRkZWQubmV4dChuZXdJdGVtKTtcbiAgICAgICAgdGhpcy5faXRlbXMucHVzaChuZXdJdGVtKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIHRoaXMub3B0aW9ucy5hZGRCdXR0b25Ub29sdGlwKTtcbiAgICAgIGNvbXBhbmlvbkJ1dHRvbiA9IGFkZEJ1dHRvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dSZW1vdmUpIHJldHVybiBlZGl0b3JzO1xuICAgICAgY29uc3QgcmVtb3ZlQnV0dG9uID0gdWkuaWNvbnMuZGVsZXRlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbkl0ZW1SZW1vdmVkLm5leHQoaXRlbSk7XG4gICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZSh0aGlzLl9pdGVtcy5pbmRleE9mKGl0ZW0pLCAxKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sIHRoaXMub3B0aW9ucy5yZW1vdmVCdXR0b25Ub29sdGlwKTtcbiAgICAgIGNvbXBhbmlvbkJ1dHRvbiA9IHJlbW92ZUJ1dHRvbjtcbiAgICB9XG5cbiAgICBlZGl0b3JzLnB1c2goY29tcGFuaW9uQnV0dG9uKTtcbiAgICBjb21wYW5pb25CdXR0b24uc3R5bGUuY29sb3IgPSAnIzIwODNkNSc7XG4gICAgcmV0dXJuIGVkaXRvcnM7XG4gIH1cbiAgLy9uZWVkZWQgZm9yIGNvbG9yIGlucHV0XG4gIHByaXZhdGUgaGlkZUxhYmVsKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICBlbC5yZW1vdmVDaGlsZChlbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGFiZWwnKVswXSk7XG4gICAgcmV0dXJuIGVsO1xuICB9XG59XG5cbi8qKiBVc2FnZSBleGFtcGxlOlxuICogY29uc3QgcHJvcHMgPSBbREcuUHJvcGVydHkuanMoJ25hbWUyJywgREcuVFlQRS5TVFJJTkcpLFxuICAgICAgREcuUHJvcGVydHkuanMoJ25hbWUzJywgREcuVFlQRS5OVU0pLFxuICAgICAgREcuUHJvcGVydHkuZnJvbU9wdGlvbnMoe25hbWU6ICduYW1lNCcsIHR5cGU6IERHLlRZUEUuREFURV9USU1FLCBudWxsYWJsZTogdHJ1ZX0pXTtcbiAgICBjb25zdCBpdGVtc0dyaWQgPSBuZXcgSXRlbXNHcmlkKHByb3BzKTtcbiAqIHRoZSBjb21wb25lbnQgaGFzIGEgcm9vdCBwcm9wZXJ0eSB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGUgcGFnZVxuICAgIHVpLmRpYWxvZygnZGlhbG9nJykuYWRkKGl0ZW1zR3JpZC5yb290KS5zaG93KCk7XG4gICAgYXQgYW55IHBvaW50LCBmaWxsZWQgZmllbGRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgaXRlbXNHcmlkLml0ZW1zXG4gKi9cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIml0ZW1zLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFZN0IsdUdBQXVHO0FBQ3ZHLE1BQU0sT0FBTyxTQUFTO0lBZ0JsQjs7Ozs7Ozs7Ozs7O09BWUc7SUFDTCxZQUFZLFVBQXlCLEVBQUUsUUFBb0IsRUFBRSxFQUFFLFVBQTRCLEVBQUU7UUF6QjdGLG1EQUFtRDtRQUM1QyxrQkFBYSxHQUFnRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2xGLG9EQUFvRDtRQUM3Qyx3QkFBbUIsR0FBZ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN4Riw0Q0FBNEM7UUFDckMsZ0JBQVcsR0FBc0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0RCw4Q0FBOEM7UUFDdkMsa0JBQWEsR0FBc0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUd4RCxZQUFPLEdBQ0wsRUFBQyxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDO1FBZXRHLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLG1DQUFPLElBQUksQ0FBQyxPQUFPLEdBQUssT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDckIsRUFBQyxLQUFLLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxRQUFRO2dCQUM5RSxVQUFVLEVBQUUs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TyxPQUFPLENBQUM7WUFDOUMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JDLGVBQWUsR0FBRyxZQUFZLENBQUM7U0FDaEM7UUFFRCxnQ0FBZ0M7UUFDaEMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkQsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCx3QkFBd0I7SUFDaEIsU0FBUyxDQUFDLEVBQWU7UUFDL0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQUVEOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBJdGVtVHlwZSA9IHtbXzpzdHJpbmddOiBhbnl9O1xuZXhwb3J0IHR5cGUgSXRlbXNHcmlkT3B0aW9ucyA9IHtcbiAgICByZW1vdmVCdXR0b25Ub29sdGlwPzogc3RyaW5nLFxuICAgIGFkZEJ1dHRvblRvb2x0aXA/OiBzdHJpbmcsXG4gICAgYWxsb3dSZW1vdmU/OiBib29sZWFuLFxuICAgIGFsbG93QWRkPzogYm9vbGVhbixcbiAgICBob3Jpem9udGFsSW5wdXROYW1lcz86IGJvb2xlYW4sXG4gICAgbmV3SXRlbUZ1bmN0aW9uPzogKCkgPT4gSXRlbVR5cGUsXG59O1xuXG4vKiogRWRpdG9yIGZvciBwcmVkZWZpbmVkIHByb3BlcnRpZXMgaW4gYSBncmlkIGZvcm0uIFN1cHBvcnRzIGFkZGluZywgcmVtb3ZpbmcgYW5kIGVkaXRpbmcgb2YgcHJvcHMuICovXG5leHBvcnQgY2xhc3MgSXRlbXNHcmlkIHtcbiAgcHJpdmF0ZSBfcm9vdDogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX2l0ZW1zOiB7W2tleTogc3RyaW5nXTogYW55fVtdO1xuXG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBhZGRlZCBpdGVtIGlzIGNoYW5nZSAqL1xuICBwdWJsaWMgb25JdGVtQ2hhbmdlZDogU3ViamVjdDx7aXRlbTpJdGVtVHlwZSwgZmllbGROYW1lOiBzdHJpbmd9PiA9IG5ldyBTdWJqZWN0KCk7XG4gIC8qKiBPYnNlcnZhYmxlIGZvciB3aGVuIHRoZSBhZGRpbmcgaXRlbSBpcyBjaGFuZ2UgKi9cbiAgcHVibGljIG9uQWRkaW5nSXRlbUNoYW5nZWQ6IFN1YmplY3Q8e2l0ZW06SXRlbVR5cGUsIGZpZWxkTmFtZTogc3RyaW5nfT4gPSBuZXcgU3ViamVjdCgpO1xuICAvKiogT2JzZXJ2YWJsZSBmb3Igd2hlbiB0aGUgaXRlbSBpcyBhZGRlZCAqL1xuICBwdWJsaWMgb25JdGVtQWRkZWQ6IFN1YmplY3Q8SXRlbVR5cGU+ID0gbmV3IFN1YmplY3QoKTtcbiAgLyoqIE9ic2VydmFibGUgZm9yIHdoZW4gdGhlIGl0ZW0gaXMgcmVtb3ZlZCAqL1xuICBwdWJsaWMgb25JdGVtUmVtb3ZlZDogU3ViamVjdDxJdGVtVHlwZT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByb3BlcnRpZXM6IERHLlByb3BlcnR5W107XG4gIG9wdGlvbnM6IEl0ZW1zR3JpZE9wdGlvbnMgPVxuICAgIHtyZW1vdmVCdXR0b25Ub29sdGlwOiAnUmVtb3ZlIGl0ZW0nLCBhZGRCdXR0b25Ub29sdGlwOiAnQWRkIGl0ZW0nLCBhbGxvd0FkZDogdHJ1ZSwgYWxsb3dSZW1vdmU6IHRydWV9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgSXRlbXNHcmlkIHdoaWNoIGlzIGEgZ3JpZCBmb3JtIGZvciBlZGl0aW5nIHByb3BlcnRpZXMuXG4gICAgICogQHBhcmFtIHtERy5Qcm9wZXJ0eVtdfXByb3BlcnRpZXMgLSBwcm9wZXJ0aWVzIHRvIGJlIGVkaXRlZFxuICAgICAqIEBwYXJhbSB7SXRlbVR5cGVwW119aXRlbXMgLSBpdGVtcyB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0ge0l0ZW1zR3JpZE9wdGlvbnN9b3B0aW9ucyAtIG9wdGlvbnMgZm9yIHRoZSBncmlkXG4gICAgICogT3B0aW9ucyBpbmNsdWRlOlxuICAgICAqIHJlbW92ZUJ1dHRvblRvb2x0aXAgLSB0b29sdGlwIGZvciB0aGUgcmVtb3ZlIGJ1dHRvbiAtIGRlZmF1bHQgaXMgJ1JlbW92ZSBpdGVtJ1xuICAgICAqIGFkZEJ1dHRvblRvb2x0aXAgLSB0b29sdGlwIGZvciB0aGUgYWRkIGJ1dHRvbiAtIGRlZmF1bHQgaXMgJ0FkZCBpdGVtJ1xuICAgICAqIGFsbG93UmVtb3ZlIC0gd2hldGhlciB0byBhbGxvdyByZW1vdmluZyBpdGVtcyAtIGRlZmF1bHQgaXMgdHJ1ZVxuICAgICAqIGFsbG93QWRkIC0gd2hldGhlciB0byBhbGxvdyBhZGRpbmcgaXRlbXMgLSBkZWZhdWx0IGlzIHRydWVcbiAgICAgKiBob3Jpem9udGFsSW5wdXROYW1lcyAtIFNob3cgdGhlIGlucHV0IG5hbWVzIG5leHQgdG8gaW50cHV0IC0gZGVmYXVsdCBpcyBmYWxzZSwgbmFtZXMgYXJlIHNob3duIGFib3ZlIHRoZSBncmlkLlxuICAgICAqIG5ld0l0ZW1GdW5jdGlvbiAtIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBuZXcgaXRlbSAtIGRlZmF1bHQgaXMgdW5kZWZpbmQsIGluIHdoaWNoIGNhc2UgYW4gZW1wdHkgb2JqZWN0IGlzIGNyZWF0ZWQuXG4gICAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IERHLlByb3BlcnR5W10sIGl0ZW1zOiBJdGVtVHlwZVtdID0gW10sIG9wdGlvbnM6IEl0ZW1zR3JpZE9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5vcHRpb25zID0gey4uLnRoaXMub3B0aW9ucywgLi4ub3B0aW9uc307XG4gICAgdGhpcy5fcm9vdCA9IHVpLmRpdlYoW10sXG4gICAgICB7c3R5bGU6IHtcbiAgICAgICAgZGlzcGxheTogJ2dyaWQnLCBncmlkVGVtcGxhdGVDb2x1bW5zOiBgcmVwZWF0KCR7dGhpcy5wcm9wZXJ0aWVzLmxlbmd0aH0sIDFmcilgLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnMTJweCd9fSk7XG4gICAgdGhpcy5faXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHJvb3QoKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9yb290O1xuICB9XG5cbiAgZ2V0IGl0ZW1zKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCk6IHZvaWQge1xuICAgIHVpLmVtcHR5KHRoaXMuX3Jvb3QpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLmhvcml6b250YWxJbnB1dE5hbWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHVpLmRpdlRleHQocHJvcC5uYW1lKTtcbiAgICAgICAgaGVhZGVyLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kQ2hpbGQoaGVhZGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2l0ZW1zKSB7XG4gICAgICBjb25zdCBlZGl0b3JzID0gdGhpcy5nZXRJdGVtRGl2KGl0ZW0pO1xuICAgICAgLy8gaWYgKGVkaXRvcnMubGVuZ3RoICE9PSB0aGlzLnByb3BlcnRpZXMubGVuZ3RoICsgMSlcbiAgICAgIC8vICAgZWRpdG9ycy5wdXNoKHVpLmRpdigpKTtcbiAgICAgIGZvciAoY29uc3QgZWRpdG9yIG9mIGVkaXRvcnMpXG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93QWRkKSB7XG4gICAgICBjb25zdCBuZXdFZGl0b3IgPSB0aGlzLmdldEl0ZW1EaXYodW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgIGZvciAoY29uc3QgZWRpdG9yIG9mIG5ld0VkaXRvcilcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmRDaGlsZChlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbURpdihpdGVtOiBJdGVtVHlwZSA9IHt9LCBpc0FkZGluZz86IGJvb2xlYW4pOiBIVE1MRWxlbWVudFtdIHtcbiAgICBjb25zdCBlZGl0b3JzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICBjb25zdCBpbnB1dHNNYXA6IHtbXzogc3RyaW5nXTogREcuSW5wdXRCYXNlfSA9IHt9O1xuICAgIGxldCBsYXN0SW5wdXQ6IERHLklucHV0QmFzZSB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChpdGVtW3Byb3AubmFtZV0gPT09IHVuZGVmaW5lZClcbiAgICAgICAgaXRlbVtwcm9wLm5hbWVdID0gbnVsbDsgLy8gbmVlZGVkIGZvciBkYXRlIGVkaXRvciwgaXQgY2FuIG5vdCBoYW5kbGUgdW5kZWZpbmVkXG4gICAgICBjb25zdCBpbnB1dCA9IHVpLmlucHV0LmZvclByb3BlcnR5KHByb3AsIGl0ZW0pO1xuICAgICAgZWRpdG9ycy5wdXNoKHRoaXMub3B0aW9ucy5ob3Jpem9udGFsSW5wdXROYW1lcyA/IGlucHV0LnJvb3QgOiB0aGlzLmhpZGVMYWJlbChpbnB1dC5yb290KSk7XG4gICAgICBpZiAocHJvcC5wcm9wZXJ0eVR5cGUgIT09IERHLlRZUEUuQk9PTClcbiAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICBpbnB1dHNNYXBbcHJvcC5uYW1lXSA9IGlucHV0O1xuICAgICAgaW5wdXQub25DaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgaXNBZGRpbmcgPyB0aGlzLm9uQWRkaW5nSXRlbUNoYW5nZWQubmV4dCh7aXRlbSwgZmllbGROYW1lOiBwcm9wLm5hbWV9KSA6XG4gICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLm5leHQoe2l0ZW0sIGZpZWxkTmFtZTogcHJvcC5uYW1lfSk7XG4gICAgICB9KTtcbiAgICAgIGlucHV0LnJvb3Quc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInOyAvLyBuZWVkZWQgZm9yIG1vbGVjdWxlIGVkaXRvclxuICAgICAgbGFzdElucHV0ID0gaW5wdXQ7XG4gICAgfVxuXG4gICAgbGV0IGNvbXBhbmlvbkJ1dHRvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAoaXNBZGRpbmcpIHtcbiAgICAgIGNvbnN0IGFkZEJ1dHRvbiA9IHVpLmljb25zLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW06IEl0ZW1UeXBlID0gdGhpcy5vcHRpb25zLm5ld0l0ZW1GdW5jdGlvbiA/IHRoaXMub3B0aW9ucy5uZXdJdGVtRnVuY3Rpb24oKSA6IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhpbnB1dHNNYXApLmZvckVhY2goKHBOYW1lKSA9PiB7XG4gICAgICAgICAgbmV3SXRlbVtwTmFtZV0gPSBpbnB1dHNNYXBbcE5hbWVdLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbkl0ZW1BZGRlZC5uZXh0KG5ld0l0ZW0pO1xuICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKG5ld0l0ZW0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLmFkZEJ1dHRvblRvb2x0aXApO1xuICAgICAgY29tcGFuaW9uQnV0dG9uID0gYWRkQnV0dG9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd1JlbW92ZSkgcmV0dXJuIGVkaXRvcnM7XG4gICAgICBjb25zdCByZW1vdmVCdXR0b24gPSB1aS5pY29ucy5kZWxldGUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uSXRlbVJlbW92ZWQubmV4dChpdGVtKTtcbiAgICAgICAgdGhpcy5faXRlbXMuc3BsaWNlKHRoaXMuX2l0ZW1zLmluZGV4T2YoaXRlbSksIDEpO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLnJlbW92ZUJ1dHRvblRvb2x0aXApO1xuICAgICAgY29tcGFuaW9uQnV0dG9uID0gcmVtb3ZlQnV0dG9uO1xuICAgIH1cblxuICAgIC8vZWRpdG9ycy5wdXNoKGNvbXBhbmlvbkJ1dHRvbik7XG4gICAgbGFzdElucHV0ICYmIGxhc3RJbnB1dC5hZGRPcHRpb25zKGNvbXBhbmlvbkJ1dHRvbik7XG4gICAgY29tcGFuaW9uQnV0dG9uLnN0eWxlLmNvbG9yID0gJyMyMDgzZDUnO1xuICAgIHJldHVybiBlZGl0b3JzO1xuICB9XG4gIC8vbmVlZGVkIGZvciBjb2xvciBpbnB1dFxuICBwcml2YXRlIGhpZGVMYWJlbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgZWwucmVtb3ZlQ2hpbGQoZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJylbMF0pO1xuICAgIHJldHVybiBlbDtcbiAgfVxufVxuXG4vKiogVXNhZ2UgZXhhbXBsZTpcbiAqIGNvbnN0IHByb3BzID0gW0RHLlByb3BlcnR5LmpzKCduYW1lMicsIERHLlRZUEUuU1RSSU5HKSxcbiAgICAgIERHLlByb3BlcnR5LmpzKCduYW1lMycsIERHLlRZUEUuTlVNKSxcbiAgICAgIERHLlByb3BlcnR5LmZyb21PcHRpb25zKHtuYW1lOiAnbmFtZTQnLCB0eXBlOiBERy5UWVBFLkRBVEVfVElNRSwgbnVsbGFibGU6IHRydWV9KV07XG4gICAgY29uc3QgaXRlbXNHcmlkID0gbmV3IEl0ZW1zR3JpZChwcm9wcyk7XG4gKiB0aGUgY29tcG9uZW50IGhhcyBhIHJvb3QgcHJvcGVydHkgdGhhdCBjYW4gYmUgYWRkZWQgdG8gdGhlIHBhZ2VcbiAgICB1aS5kaWFsb2coJ2RpYWxvZycpLmFkZChpdGVtc0dyaWQucm9vdCkuc2hvdygpO1xuICAgIGF0IGFueSBwb2ludCwgZmlsbGVkIGZpZWxkcyBjYW4gYmUgYWNjZXNzZWQgdmlhIGl0ZW1zR3JpZC5pdGVtc1xuICovXG4iXX0=