ng-zenduit 1.0.21 → 1.0.22

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.
@@ -128,18 +128,18 @@ export class ZenduSelectComponent {
128
128
  this.updateLabel();
129
129
  }
130
130
  toggleChildren(checked) {
131
- if (!this.option.Childrens?.length) {
131
+ if (!this.option || !this.option.Childrens?.length) {
132
132
  return;
133
133
  }
134
134
  this.option.Childrens.forEach((child) => {
135
+ this.option = this.options.find(el => this.getId(el) === child);
135
136
  const childIndex = this.selectModel.findIndex(el => this.getId(el) === child);
136
- if (checked && childIndex < 0) {
137
+ if (this.option && checked && childIndex < 0) {
137
138
  this.selectModel.push(child);
138
139
  }
139
140
  else if (!checked && childIndex >= 0) {
140
141
  this.selectModel.splice(childIndex, 1);
141
142
  }
142
- this.option = this.options.find(el => this.getId(el) === child);
143
143
  // Recursive call to handle nested children
144
144
  this.toggleChildren(checked);
145
145
  });
@@ -361,4 +361,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
361
361
  type: HostListener,
362
362
  args: ['window:scroll', []]
363
363
  }] } });
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7O0FBT3ZGLE1BQU0sT0FBTyxvQkFBb0I7SUFvSC9CLFlBQ1UsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQTlHOUI7O1dBRUc7UUFDTyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXREOztXQUVHO1FBQ00sWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUU3Qjs7V0FFRztRQUNNLGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBNEJ0Qzs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXpCOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ00sdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBTzdDOztXQUVHO1FBQ08saUJBQVksR0FBc0IsSUFB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Q0FBQTtJQUNyQixDQUFDOztrSEFyWlUsb0JBQW9CO3NHQUFwQixvQkFBb0Isd3hCQTJIakIsMEJBQTBCLGdGQUsxQix5QkFBeUIsaUZBS3pCLDBCQUEwQixxRUNoSjFDLDJnTUF5SEE7NEZEOUdhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxZQUFZO2lHQVNiLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUtFLE9BQU87c0JBQWYsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0ksWUFBWTtzQkFBckIsTUFBTTtnQkFLRSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtJLFlBQVk7c0JBQXJCLE1BQU07Z0JBMkJtQyxjQUFjO3NCQUF2RCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFLQyxhQUFhO3NCQUFyRCxZQUFZO3VCQUFDLHlCQUF5QjtnQkFLRyxjQUFjO3NCQUF2RCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFJeEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWM1QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBaZW5kdVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdGVtcGxhdGVzL3plbmR1LXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuL3RlbXBsYXRlcy96ZW5kdS1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZXMvemVuZHUtc2VsZWN0LWJ1dHRvbi5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd6ZW4tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3plbmR1LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3plbmR1LXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIDItV2F5IGNvbXBvbmVudCBwcm9wZXJ0eSBmb3Igc2VsZWN0ZWQgaXRlbXMuXG4gICAqIERvbid0IGluaXRpYWxpemUgcHJvcGVydHkgb24gY29uc3RydWN0b3IgdG8gcHJldmVudCBjaGFuZ2Ugc291cmNlIHBhcmFtZXRlclxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0TW9kZWw6IGFueSB8IGFueVtdO1xuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBlbWl0IGNoYW5nZXMgZm9yIHBhcmVudCBjb21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG9wdGlvbnMgZm9yIHNlbGVjdFxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogUHJvcGVydHkgdG8gc2V0IGN1c3RvbSBwbGFjZWhvbGRlciB2YWx1ZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IEl0ZW1zJztcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGtleSB2YWx1ZSB0byBnZXQgZGlzcGxheSBuYW1lIGZyb20gb3B0aW9uIG9iamVjdFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheVByb3A6IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGtleSB2YWx1ZSB0byBnZXQgaWQgZnJvbSBvcHRpb24gb2JqZWN0XG4gICAqL1xuICBASW5wdXQoKSBpZFByb3A6IHN0cmluZztcblxuICAvKipcbiAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIGVuYWJsZSBzZWFyY2hcbiAgICovXG4gIEBJbnB1dCgpIGhhc1NlYXJjaDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIHJldHVybiB3aG9sZSBvcHRpb24gb2JqZWN0XG4gICAqIEJ5IGRlZmF1bHQgb25seSBpZCB2YWx1ZSBpcyByZXR1cm5lZFxuICAgKi9cbiAgQElucHV0KCkgcmV0dXJuT3B0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gZW5hYmxlIG11bHRpc2VsZWN0XG4gICAqL1xuICBASW5wdXQoKSBpc011bHRpc2VsZWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gZGlzYWJsZSBjb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIGN1c3RvbSBpY29uIGZvciB0b2dnbGVcbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUljb24gPSBcIlwiO1xuXG4gIC8qKlxuICAgKiBDb2xvciBmb3IgY3VzdG9tIGljb25cbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUljb25Db2xvciA9IFwiXCI7XG5cbiAgLyoqXG4gICAqIFRydW5jYXRlIHRleHQgd2l0aCBcIi4uLlwiIGF0IHRoZSBlbmRcbiAgICovXG4gIEBJbnB1dCgpIGlzVHJ1bmNhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogc2hvdyBBZGQgTmV3IE9wdGlvbiBhdCBmaXJzdCBwbGFjZVxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlQWRkTmV3T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGRpc3BsYXkgY3VzdG9tIHRleHQgZm9yIEFkZCBOZXcgT3B0aW9uXG4gICAqL1xuICBASW5wdXQoKSBuZXdPcHRpb25UZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtaXQgZXZlbnQgd2hlbiBBZGQgTmV3IE9wdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYWRkTmV3T3B0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgICAqIHNob3cgcmVtb3ZlIE9wdGlvbiBhdCBmaXJzdCBwbGFjZVxuICAgICAqL1xuICBASW5wdXQoKSBlbmFibGVSZW1vdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogZGlzcGxheSBjdXN0b20gdGV4dCBmb3IgcmVtb3ZlIE9wdGlvblxuICAgKi9cbiAgQElucHV0KCkgcmVtb3ZlT3B0aW9uVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IGV2ZW50IHdoZW4gcmVtb3ZlIE9wdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVtb3ZlT3B0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJlZCBpdGVtcyB2aXNpYmxlIG9uIGRyb3Bkb3duXG4gICAqL1xuICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBhbnlbXTtcblxuICAvKipcbiAgICogSXMgZHJvcGRvd24gZXhwYW5kZWRcbiAgICovXG4gIHB1YmxpYyBpc0V4cGFuZGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHNlYXJjaFRleHQgPSAnJztcblxuICBwdWJsaWMgbGFiZWxUZXh0ID0gJyc7XG5cbiAgcHVibGljIGlzVG9wTWVudURpcmVjdGlvbiA9IGZhbHNlO1xuICBcbiAgcHVibGljIG9wdGlvbjogYW55XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgT3B0aW9uIFRlbXBsYXRlIGZvciBjdXN0b20gSFRNTFxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChaZW5kdVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSkgb3B0aW9uVGVtcGxhdGU6IFplbmR1U2VsZWN0T3B0aW9uRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgVmFsdWUgVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAqL1xuICBAQ29udGVudENoaWxkKFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmUpIHZhbHVlVGVtcGxhdGU6IFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmU7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBPcHRpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAqL1xuICBAQ29udGVudENoaWxkKFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlKSBidXR0b25UZW1wbGF0ZTogWmVuZHVTZWxlY3RCdXR0b25EaXJlY3RpdmU7XG5cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb3V0c2lkZUhhbmRsaW5nKGV2ZW50KSB7XG4gICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIC8vIGVsZW1lbnQgbm90IGluIHRoZSBET01cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGhpZGUgdGhlIG1lbnUgZm9yIG91dHNpZGUgY2xpY2tcbiAgICB0aGlzLmhpZGVEcm9wRG93bigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICBzY3JvbGwoKSB7XG4gICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VPYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vZGVsRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCkge1xuICAgICAgcmV0dXJuICF0aGlzLnNlbGVjdE1vZGVsIHx8ICF0aGlzLnNlbGVjdE1vZGVsLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnNlbGVjdE1vZGVsID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnNlbGVjdE1vZGVsID09PSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPcHRpb25DbGljayhvcHRpb246IHN0cmluZyB8IG9iamVjdCkge1xuICAgIHRoaXMub3B0aW9uID0gb3B0aW9uO1xuICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5yZXR1cm5PcHRpb24gPyBvcHRpb24gOiB0aGlzLmdldElkKG9wdGlvbik7XG5cbiAgICBpZiAodGhpcy5pc011bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnRvZ2dsZU9wdGlvbihvcHRpb25WYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2luZ2xlU2VsZWN0KG9wdGlvblZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIC8vIExvZ2ljIGZvciBzaW5nbGUgc2VsZWN0XG4gIHByaXZhdGUgc2luZ2xlU2VsZWN0KHZhbHVlOiBzdHJpbmcgfCBvYmplY3QpIHtcbiAgICB0aGlzLnNlbGVjdE1vZGVsID0gdmFsdWU7XG5cbiAgICAvLyAgSGlkZSBkcm9wZG93biBpZiBzaW5nbGUgc2VsZWN0XG4gICAgdGhpcy5oaWRlRHJvcERvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVFeHBhbmQoKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiO1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlUGxhY2VtZW50KCk7XG4gIH1cblxuICAvLyBMb2dpYyBmb3IgbXVsdGlzZWxlY3RcbiAgcHJpdmF0ZSB0b2dnbGVPcHRpb24odmFsdWU6IHN0cmluZyB8IG9iamVjdCk6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdE1vZGVsKSkge1xuICAgICAgdGhpcy5zZWxlY3RNb2RlbCA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRFbGVtZW50SW5kZXgodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhpcy5zZWxlY3RNb2RlbC5wdXNoKHZhbHVlKTtcbiAgICAgIHRoaXMudG9nZ2xlQ2hpbGRyZW4odHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0TW9kZWwuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudG9nZ2xlQ2hpbGRyZW4oZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQ2hpbGRyZW4oY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb24uQ2hpbGRyZW5zPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbi5DaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgY2hpbGRJbmRleCA9IHRoaXMuc2VsZWN0TW9kZWwuZmluZEluZGV4KGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSBjaGlsZCk7XG4gICAgICBpZiAoY2hlY2tlZCAmJiBjaGlsZEluZGV4IDwgMCkge1xuICAgICAgICB0aGlzLnNlbGVjdE1vZGVsLnB1c2goY2hpbGQpO1xuICAgICAgfSBlbHNlIGlmICghY2hlY2tlZCAmJiBjaGlsZEluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RNb2RlbC5zcGxpY2UoY2hpbGRJbmRleCwgMSk7XG4gICAgICB9XG4gICAgICB0aGlzLm9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSBjaGlsZCk7XG4gICAgICAvLyBSZWN1cnNpdmUgY2FsbCB0byBoYW5kbGUgbmVzdGVkIGNoaWxkcmVuXG4gICAgICB0aGlzLnRvZ2dsZUNoaWxkcmVuKGNoZWNrZWQpOyBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbWVudEluZGV4KHZhbHVlOiBzdHJpbmcgfCBvYmplY3QpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCB2YWx1ZUlkID0gdGhpcy5nZXRJZCh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlbC5maW5kSW5kZXgoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IHZhbHVlSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlbC5pbmRleE9mKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGVsLmxlbmd0aCAhPT0gdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RNb2RlbCA9IHRoaXMub3B0aW9ucy5tYXAoZWwgPT4gdGhpcy5yZXR1cm5PcHRpb24gPyBlbCA6IHRoaXMuZ2V0SWQoZWwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RNb2RlbCA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuc2xpY2UoMCk7XG5cbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLnNlYXJjaFRleHQsICdpJyk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4gcmVnZXgudGVzdCh0aGlzLmdldE5hbWUob3B0aW9uKSkpO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQob3B0aW9uOiBzdHJpbmcgfCBvYmplY3QpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc01vZGVsRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbklkID0gdGhpcy5nZXRJZChvcHRpb24pO1xuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TW9kZWwuZmluZEluZGV4KGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSBvcHRpb25JZCkgPj0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SWQodGhpcy5zZWxlY3RNb2RlbCkgPT09IG9wdGlvbklkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVMYWJlbCgpIHtcbiAgICBpZiAodGhpcy5pc01vZGVsRW1wdHkoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3QpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSB0aGlzLnNlbGVjdE1vZGVsLmxlbmd0aDtcblxuICAgICAgaWYgKHNlbGVjdGVkQ291bnQgPT09IDEpIHtcbiAgICAgICAgdGhpcy5sYWJlbFRleHQgPSB0aGlzLmdldE5hbWVGcm9tVmFsdWUodGhpcy5zZWxlY3RNb2RlbFswXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhYmVsVGV4dCA9IGAke3NlbGVjdGVkQ291bnR9IFNlbGVjdGVkYDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYWJlbFRleHQgPSB0aGlzLmdldE5hbWVGcm9tVmFsdWUodGhpcy5zZWxlY3RNb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE5hbWVGcm9tVmFsdWUodmFsOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnJldHVybk9wdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSh2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAhdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmdldE5hbWUodGhpcy5vcHRpb25zLmZpbmQoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IHZhbCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXROYW1lKG9wdGlvbjogc3RyaW5nIHwgb2JqZWN0KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh0aGlzLmRpc3BsYXlQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkdldFJlY3Vyc2l2ZVByb3BlcnR5KG9wdGlvbiwgdGhpcy5kaXNwbGF5UHJvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBcHAtU2VsZWN0OiB3aGVuIHVzaW5nIG9iamVjdHMgYXMgbW9kZWwsIGEgZGlzcGxheVByb3AgdmFsdWUgaXMgbWFuZGF0b3J5LicpO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldElkKG9wdGlvbjogc3RyaW5nIHwgb2JqZWN0KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh0aGlzLmlkUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXRSZWN1cnNpdmVQcm9wZXJ0eShvcHRpb24sIHRoaXMuaWRQcm9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FwcC1TZWxlY3Q6IHdoZW4gdXNpbmcgb2JqZWN0cyBhcyBtb2RlbCwgYSBpZFByb3AgdmFsdWUgaXMgbWFuZGF0b3J5LicpO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIEdldFJlY3Vyc2l2ZVByb3BlcnR5KG9iamVjdDogYW55LCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvYmosIHgpID0+IHtcbiAgICAgIGlmIChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9ialt4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sIG9iamVjdCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZURyb3BEb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlKCkge1xuICAgIC8vIG5vdGlmeSB3aXRoIHRpbWVvdXRcbiAgICAvLyBhbGxvdyBvdXRwdXQgcHJvcGVydHkgXCJlbmFibGVkXCIgYXBwbGllZCBieSBwYXJlbnQgZmlyc3QgYW5kIHRoZW4gZW1pdCB0aGUgb25DaGFuZ2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0TW9kZWxDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdE1vZGVsKTtcbiAgICB9LCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGxhY2VtZW50KCkge1xuICAgIC8vIHVwZGF0ZSBtZW51IHBvc2l0aW9uIGJhc2Ugb24gc2Nyb2xsXG4gICAgdGhpcy5pc1RvcE1lbnVEaXJlY3Rpb24gPSB0aGlzLmdldE1lbnVEaXJlY3Rpb24oKSA9PT0gXCJ0b3BcIjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVudURpcmVjdGlvbigpOiBcImJvdHRvbVwiIHwgXCJ0b3BcIiB7XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHRvcCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgaWYgKHRvcCA+IChoZWlnaHQgLyAyKSkge1xuICAgICAgcmV0dXJuIFwidG9wXCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIFwiYm90dG9tXCJcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1heE1lbnVIZWlnaHQoKSB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuZ2V0Q29udGFpbmVyRWxlbWVudCgpO1xuICAgIGlmICghY29udGFpbmVyRWxlbWVudCB8fCAhY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQpIHtcbiAgICAgIHJldHVybiBcIjE5MHB4XCI7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgbGV0IGhlaWdodCA9IE1hdGgucm91bmQoKHBhcmVudEhlaWdodCAvIDIpIC0gMjUpO1xuICAgIGhlaWdodCA9IE1hdGgubWluKDIxNiwgaGVpZ2h0KTtcbiAgICBoZWlnaHQgPSBNYXRoLm1heCg5NiwgaGVpZ2h0KTtcbiAgICByZXR1cm4gYCR7aGVpZ2h0fXB4YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGFpbmVyRWxlbWVudCgpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgY29udGFpbmVyID0gY29tcG9uZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcHAtc2VsZWN0XCIpLml0ZW0oMCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5vZmZzZXRQYXJlbnQ7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQWRkTmV3T3B0aW9uKCkge1xuICAgIHRoaXMuYWRkTmV3T3B0aW9uLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWFyY2hUZXh0IH0pXG4gICAgdGhpcy5oaWRlRHJvcERvd24oKVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVJlbW92ZU9wdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZU9wdGlvbi5lbWl0KHsgcmVtb3ZlZDogdHJ1ZSB9KVxuICAgIHRoaXMuaGlkZURyb3BEb3duKClcbiAgfVxuXG4gIFxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC1zZWxlY3RcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLXNlbGVjdC10b2dnbGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmQoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzRXhwYW5kZWR9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTW9kZWxFbXB0eSgpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3twbGFjZWhvbGRlciB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTXVsdGlzZWxlY3QgJiYgIWlzTW9kZWxFbXB0eSgpXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidmFsdWVUZW1wbGF0ZSAmJiBzZWxlY3RNb2RlbFswXTsgZWxzZSB0cGxWYWx1ZVRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ2YWx1ZVRlbXBsYXRlLnRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc2VsZWN0TW9kZWw6IHNlbGVjdE1vZGVsLCBsYWJlbFRleHQ6IGxhYmVsVGV4dCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RwbFZhbHVlVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFiZWxUZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmICFpc01vZGVsRW1wdHkoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpICpuZ0lmPVwiIWN1c3RvbUljb25cIlxuICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGFwcC1zZWxlY3QtaWNvblwiPmV4cGFuZF9tb3JlPC9pPlxuICAgICAgICA8aSAqbmdJZj1cImN1c3RvbUljb25cIlxuICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkIGN1c3RvbS1pY29uXCJcbiAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImN1c3RvbUljb25Db2xvclwiPnt7Y3VzdG9tSWNvbn19PC9pPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUgYXBwLXNlbGVjdC1kcm9wZG93bi13cmFwcGVyXCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzaG93LXRvcCc6IGlzVG9wTWVudURpcmVjdGlvbiB9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlbGVjdC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNFeHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNTZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLVNlYXJjaCBvcHRpb25zLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1zZWFyY2gtYm94IFsodGV4dCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRleHRDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiPjwvemVuLXNlYXJjaC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uVGVtcGxhdGUudGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudS1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS1ObyBvcHRpb25zIGZvdW5kLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1vcHRpb25zLWZvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgIHt7ICdObyBtYXRjaGluZyBvcHRpb25zIGZvdW5kJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tU2VsZWN0IEFsbCBPcHRpb24tLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtLWNoZWNrYm94IHNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiAhc2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8emVuLWNoZWNrYm94IFtjaGVja2VkXT1cInNlbGVjdE1vZGVsLmxlbmd0aCA9PT0gb3B0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3RNb2RlbC5sZW5ndGggIT09IG9wdGlvbnMubGVuZ3RoICYmIHNlbGVjdE1vZGVsLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlVmFsdWVDaGFuZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VsZWN0IEFsbCcgfCB0cmFuc2xhdGVcIj48L3plbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLVNpbmdsZSBzZWxlY3QgT3B0aW9ucy0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVBZGROZXdPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFkZE5ld09wdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJuZXdPcHRpb25UZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5ld09wdGlvblRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbmV3T3B0aW9uVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBZGQgTmV3JyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1pdGVtIHJlbW92ZS1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlUmVtb3ZlT3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSZW1vdmVPcHRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVtb3ZlT3B0aW9uVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZW1vdmVPcHRpb25UZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXJlbW92ZU9wdGlvblRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snUmVtb3ZlIFNlbGVjdGVkJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25DbGljayhvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IGlzU2VsZWN0ZWQob3B0aW9uKSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGlvbi1pdGVtLXRydW5jYXRlXT1cImlzVHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU7IGVsc2UgdHBsT3B0aW9uVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZS50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IG9wdGlvbiB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdHBsT3B0aW9uVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldE5hbWUob3B0aW9uKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLU11bHRpc2VsZWN0IE9wdGlvbnMtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWNoZWNrYm94ICpuZ0lmPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImdldE5hbWUob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVZhbHVlQ2hhbmdlXT1cInRydWVcIj48L3plbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7O0FBT3ZGLE1BQU0sT0FBTyxvQkFBb0I7SUFvSC9CLFlBQ1UsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQTlHOUI7O1dBRUc7UUFDTyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXREOztXQUVHO1FBQ00sWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUU3Qjs7V0FFRztRQUNNLGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBNEJ0Qzs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXpCOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ00sdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBTzdDOztXQUVHO1FBQ08saUJBQVksR0FBc0IsSUFB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dHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBaZW5kdVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdGVtcGxhdGVzL3plbmR1LXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuL3RlbXBsYXRlcy96ZW5kdS1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZXMvemVuZHUtc2VsZWN0LWJ1dHRvbi5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd6ZW4tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3plbmR1LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3plbmR1LXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIDItV2F5IGNvbXBvbmVudCBwcm9wZXJ0eSBmb3Igc2VsZWN0ZWQgaXRlbXMuXG4gICAqIERvbid0IGluaXRpYWxpemUgcHJvcGVydHkgb24gY29uc3RydWN0b3IgdG8gcHJldmVudCBjaGFuZ2Ugc291cmNlIHBhcmFtZXRlclxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0TW9kZWw6IGFueSB8IGFueVtdO1xuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBlbWl0IGNoYW5nZXMgZm9yIHBhcmVudCBjb21wb25lbnRcbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG9wdGlvbnMgZm9yIHNlbGVjdFxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogUHJvcGVydHkgdG8gc2V0IGN1c3RvbSBwbGFjZWhvbGRlciB2YWx1ZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IEl0ZW1zJztcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGtleSB2YWx1ZSB0byBnZXQgZGlzcGxheSBuYW1lIGZyb20gb3B0aW9uIG9iamVjdFxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheVByb3A6IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGtleSB2YWx1ZSB0byBnZXQgaWQgZnJvbSBvcHRpb24gb2JqZWN0XG4gICAqL1xuICBASW5wdXQoKSBpZFByb3A6IHN0cmluZztcblxuICAvKipcbiAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIGVuYWJsZSBzZWFyY2hcbiAgICovXG4gIEBJbnB1dCgpIGhhc1NlYXJjaDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIHJldHVybiB3aG9sZSBvcHRpb24gb2JqZWN0XG4gICAqIEJ5IGRlZmF1bHQgb25seSBpZCB2YWx1ZSBpcyByZXR1cm5lZFxuICAgKi9cbiAgQElucHV0KCkgcmV0dXJuT3B0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gZW5hYmxlIG11bHRpc2VsZWN0XG4gICAqL1xuICBASW5wdXQoKSBpc011bHRpc2VsZWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gZGlzYWJsZSBjb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIGN1c3RvbSBpY29uIGZvciB0b2dnbGVcbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUljb24gPSBcIlwiO1xuXG4gIC8qKlxuICAgKiBDb2xvciBmb3IgY3VzdG9tIGljb25cbiAgICovXG4gIEBJbnB1dCgpIGN1c3RvbUljb25Db2xvciA9IFwiXCI7XG5cbiAgLyoqXG4gICAqIFRydW5jYXRlIHRleHQgd2l0aCBcIi4uLlwiIGF0IHRoZSBlbmRcbiAgICovXG4gIEBJbnB1dCgpIGlzVHJ1bmNhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogc2hvdyBBZGQgTmV3IE9wdGlvbiBhdCBmaXJzdCBwbGFjZVxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlQWRkTmV3T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGRpc3BsYXkgY3VzdG9tIHRleHQgZm9yIEFkZCBOZXcgT3B0aW9uXG4gICAqL1xuICBASW5wdXQoKSBuZXdPcHRpb25UZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtaXQgZXZlbnQgd2hlbiBBZGQgTmV3IE9wdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYWRkTmV3T3B0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgICAqIHNob3cgcmVtb3ZlIE9wdGlvbiBhdCBmaXJzdCBwbGFjZVxuICAgICAqL1xuICBASW5wdXQoKSBlbmFibGVSZW1vdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogZGlzcGxheSBjdXN0b20gdGV4dCBmb3IgcmVtb3ZlIE9wdGlvblxuICAgKi9cbiAgQElucHV0KCkgcmVtb3ZlT3B0aW9uVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IGV2ZW50IHdoZW4gcmVtb3ZlIE9wdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVtb3ZlT3B0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJlZCBpdGVtcyB2aXNpYmxlIG9uIGRyb3Bkb3duXG4gICAqL1xuICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBhbnlbXTtcblxuICAvKipcbiAgICogSXMgZHJvcGRvd24gZXhwYW5kZWRcbiAgICovXG4gIHB1YmxpYyBpc0V4cGFuZGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHNlYXJjaFRleHQgPSAnJztcblxuICBwdWJsaWMgbGFiZWxUZXh0ID0gJyc7XG5cbiAgcHVibGljIGlzVG9wTWVudURpcmVjdGlvbiA9IGZhbHNlO1xuICBcbiAgcHVibGljIG9wdGlvbjogYW55XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgT3B0aW9uIFRlbXBsYXRlIGZvciBjdXN0b20gSFRNTFxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChaZW5kdVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSkgb3B0aW9uVGVtcGxhdGU6IFplbmR1U2VsZWN0T3B0aW9uRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgVmFsdWUgVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAqL1xuICBAQ29udGVudENoaWxkKFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmUpIHZhbHVlVGVtcGxhdGU6IFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmU7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBPcHRpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAqL1xuICBAQ29udGVudENoaWxkKFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlKSBidXR0b25UZW1wbGF0ZTogWmVuZHVTZWxlY3RCdXR0b25EaXJlY3RpdmU7XG5cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb3V0c2lkZUhhbmRsaW5nKGV2ZW50KSB7XG4gICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIC8vIGVsZW1lbnQgbm90IGluIHRoZSBET01cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGhpZGUgdGhlIG1lbnUgZm9yIG91dHNpZGUgY2xpY2tcbiAgICB0aGlzLmhpZGVEcm9wRG93bigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICBzY3JvbGwoKSB7XG4gICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VPYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc01vZGVsRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCkge1xuICAgICAgcmV0dXJuICF0aGlzLnNlbGVjdE1vZGVsIHx8ICF0aGlzLnNlbGVjdE1vZGVsLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnNlbGVjdE1vZGVsID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnNlbGVjdE1vZGVsID09PSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPcHRpb25DbGljayhvcHRpb246IHN0cmluZyB8IG9iamVjdCkge1xuICAgIHRoaXMub3B0aW9uID0gb3B0aW9uO1xuICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5yZXR1cm5PcHRpb24gPyBvcHRpb24gOiB0aGlzLmdldElkKG9wdGlvbik7XG5cbiAgICBpZiAodGhpcy5pc011bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnRvZ2dsZU9wdGlvbihvcHRpb25WYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2luZ2xlU2VsZWN0KG9wdGlvblZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIC8vIExvZ2ljIGZvciBzaW5nbGUgc2VsZWN0XG4gIHByaXZhdGUgc2luZ2xlU2VsZWN0KHZhbHVlOiBzdHJpbmcgfCBvYmplY3QpIHtcbiAgICB0aGlzLnNlbGVjdE1vZGVsID0gdmFsdWU7XG5cbiAgICAvLyAgSGlkZSBkcm9wZG93biBpZiBzaW5nbGUgc2VsZWN0XG4gICAgdGhpcy5oaWRlRHJvcERvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVFeHBhbmQoKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiO1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgIHRoaXMudXBkYXRlUGxhY2VtZW50KCk7XG4gIH1cblxuICAvLyBMb2dpYyBmb3IgbXVsdGlzZWxlY3RcbiAgcHJpdmF0ZSB0b2dnbGVPcHRpb24odmFsdWU6IHN0cmluZyB8IG9iamVjdCk6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdE1vZGVsKSkge1xuICAgICAgdGhpcy5zZWxlY3RNb2RlbCA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRFbGVtZW50SW5kZXgodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhpcy5zZWxlY3RNb2RlbC5wdXNoKHZhbHVlKTtcbiAgICAgIHRoaXMudG9nZ2xlQ2hpbGRyZW4odHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0TW9kZWwuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudG9nZ2xlQ2hpbGRyZW4oZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQ2hpbGRyZW4oY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb24gfHwgIXRoaXMub3B0aW9uLkNoaWxkcmVucz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcHRpb24uQ2hpbGRyZW5zLmZvckVhY2goKGNoaWxkOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IGNoaWxkKTtcbiAgICAgIGNvbnN0IGNoaWxkSW5kZXggPSB0aGlzLnNlbGVjdE1vZGVsLmZpbmRJbmRleChlbCA9PiB0aGlzLmdldElkKGVsKSA9PT0gY2hpbGQpO1xuICAgICAgaWYgKHRoaXMub3B0aW9uICYmIGNoZWNrZWQgJiYgY2hpbGRJbmRleCA8IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RNb2RlbC5wdXNoKGNoaWxkKTtcbiAgICAgIH0gZWxzZSBpZiAoIWNoZWNrZWQgJiYgY2hpbGRJbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0TW9kZWwuc3BsaWNlKGNoaWxkSW5kZXgsIDEpO1xuICAgICAgfVxuICAgICAgLy8gUmVjdXJzaXZlIGNhbGwgdG8gaGFuZGxlIG5lc3RlZCBjaGlsZHJlblxuICAgICAgdGhpcy50b2dnbGVDaGlsZHJlbihjaGVja2VkKTsgXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVsZW1lbnRJbmRleCh2YWx1ZTogc3RyaW5nIHwgb2JqZWN0KTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgdmFsdWVJZCA9IHRoaXMuZ2V0SWQodmFsdWUpO1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TW9kZWwuZmluZEluZGV4KGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSB2YWx1ZUlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TW9kZWwuaW5kZXhPZih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZUFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlbC5sZW5ndGggIT09IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0TW9kZWwgPSB0aGlzLm9wdGlvbnMubWFwKGVsID0+IHRoaXMucmV0dXJuT3B0aW9uID8gZWwgOiB0aGlzLmdldElkKGVsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0TW9kZWwgPSBbXTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zLnNsaWNlKDApO1xuXG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gb3B0aW9ucztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAodGhpcy5zZWFyY2hUZXh0LCAnaScpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHJlZ2V4LnRlc3QodGhpcy5nZXROYW1lKG9wdGlvbikpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKG9wdGlvbjogc3RyaW5nIHwgb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25JZCA9IHRoaXMuZ2V0SWQob3B0aW9uKTtcblxuICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3QpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdE1vZGVsLmZpbmRJbmRleChlbCA9PiB0aGlzLmdldElkKGVsKSA9PT0gb3B0aW9uSWQpID49IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldElkKHRoaXMuc2VsZWN0TW9kZWwpID09PSBvcHRpb25JZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFiZWwoKSB7XG4gICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc011bHRpc2VsZWN0KSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gdGhpcy5zZWxlY3RNb2RlbC5sZW5ndGg7XG5cbiAgICAgIGlmIChzZWxlY3RlZENvdW50ID09PSAxKSB7XG4gICAgICAgIHRoaXMubGFiZWxUZXh0ID0gdGhpcy5nZXROYW1lRnJvbVZhbHVlKHRoaXMuc2VsZWN0TW9kZWxbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYWJlbFRleHQgPSBgJHtzZWxlY3RlZENvdW50fSBTZWxlY3RlZGA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFiZWxUZXh0ID0gdGhpcy5nZXROYW1lRnJvbVZhbHVlKHRoaXMuc2VsZWN0TW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXROYW1lRnJvbVZhbHVlKHZhbDogc3RyaW5nIHwgb2JqZWN0KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXR1cm5PcHRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5hbWUodmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgIXRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5nZXROYW1lKHRoaXMub3B0aW9ucy5maW5kKGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSB2YWwpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TmFtZShvcHRpb246IHN0cmluZyB8IG9iamVjdCk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodGhpcy5kaXNwbGF5UHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXRSZWN1cnNpdmVQcm9wZXJ0eShvcHRpb24sIHRoaXMuZGlzcGxheVByb3ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQXBwLVNlbGVjdDogd2hlbiB1c2luZyBvYmplY3RzIGFzIG1vZGVsLCBhIGRpc3BsYXlQcm9wIHZhbHVlIGlzIG1hbmRhdG9yeS4nKTtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJZChvcHRpb246IHN0cmluZyB8IG9iamVjdCk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodGhpcy5pZFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuR2V0UmVjdXJzaXZlUHJvcGVydHkob3B0aW9uLCB0aGlzLmlkUHJvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBcHAtU2VsZWN0OiB3aGVuIHVzaW5nIG9iamVjdHMgYXMgbW9kZWwsIGEgaWRQcm9wIHZhbHVlIGlzIG1hbmRhdG9yeS4nKTtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBHZXRSZWN1cnNpdmVQcm9wZXJ0eShvYmplY3Q6IGFueSwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCB4KSA9PiB7XG4gICAgICBpZiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmpbeF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LCBvYmplY3QpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhpZGVEcm9wRG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSgpIHtcbiAgICAvLyBub3RpZnkgd2l0aCB0aW1lb3V0XG4gICAgLy8gYWxsb3cgb3V0cHV0IHByb3BlcnR5IFwiZW5hYmxlZFwiIGFwcGxpZWQgYnkgcGFyZW50IGZpcnN0IGFuZCB0aGVuIGVtaXQgdGhlIG9uQ2hhbmdlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdE1vZGVsQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RNb2RlbCk7XG4gICAgfSwgMSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBsYWNlbWVudCgpIHtcbiAgICAvLyB1cGRhdGUgbWVudSBwb3NpdGlvbiBiYXNlIG9uIHNjcm9sbFxuICAgIHRoaXMuaXNUb3BNZW51RGlyZWN0aW9uID0gdGhpcy5nZXRNZW51RGlyZWN0aW9uKCkgPT09IFwidG9wXCI7XG4gIH1cblxuICBwcml2YXRlIGdldE1lbnVEaXJlY3Rpb24oKTogXCJib3R0b21cIiB8IFwidG9wXCIge1xuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgIGNvbnN0IGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgIGlmICh0b3AgPiAoaGVpZ2h0IC8gMikpIHtcbiAgICAgIHJldHVybiBcInRvcFwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBcImJvdHRvbVwiXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXhNZW51SGVpZ2h0KCkge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmdldENvbnRhaW5lckVsZW1lbnQoKTtcbiAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQgfHwgIWNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XG4gICAgICByZXR1cm4gXCIxOTBweFwiO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEhlaWdodCA9IGNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGxldCBoZWlnaHQgPSBNYXRoLnJvdW5kKChwYXJlbnRIZWlnaHQgLyAyKSAtIDI1KTtcbiAgICBoZWlnaHQgPSBNYXRoLm1pbigyMTYsIGhlaWdodCk7XG4gICAgaGVpZ2h0ID0gTWF0aC5tYXgoOTYsIGhlaWdodCk7XG4gICAgcmV0dXJuIGAke2hlaWdodH1weGA7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbXBvbmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBwLXNlbGVjdFwiKS5pdGVtKDApIGFzIEhUTUxFbGVtZW50O1xuICAgIHJldHVybiBjb250YWluZXIub2Zmc2V0UGFyZW50O1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUFkZE5ld09wdGlvbigpIHtcbiAgICB0aGlzLmFkZE5ld09wdGlvbi5lbWl0KHsgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCB9KVxuICAgIHRoaXMuaGlkZURyb3BEb3duKClcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVSZW1vdmVPcHRpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVPcHRpb24uZW1pdCh7IHJlbW92ZWQ6IHRydWUgfSlcbiAgICB0aGlzLmhpZGVEcm9wRG93bigpXG4gIH1cblxuICBcbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHAtc2VsZWN0XCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1zZWxlY3QtdG9nZ2xlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0V4cGFuZGVkfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc01vZGVsRW1wdHkoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cGxhY2Vob2xkZXIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc011bHRpc2VsZWN0ICYmICFpc01vZGVsRW1wdHkoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInZhbHVlVGVtcGxhdGUgJiYgc2VsZWN0TW9kZWxbMF07IGVsc2UgdHBsVmFsdWVUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmFsdWVUZW1wbGF0ZS50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHNlbGVjdE1vZGVsOiBzZWxlY3RNb2RlbCwgbGFiZWxUZXh0OiBsYWJlbFRleHQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0cGxWYWx1ZVRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiAhaXNNb2RlbEVtcHR5KClcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYWJlbFRleHQgfCB0cmFuc2xhdGUgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aSAqbmdJZj1cIiFjdXN0b21JY29uXCJcbiAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBhcHAtc2VsZWN0LWljb25cIj5leHBhbmRfbW9yZTwvaT5cbiAgICAgICAgPGkgKm5nSWY9XCJjdXN0b21JY29uXCJcbiAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZCBjdXN0b20taWNvblwiXG4gICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjdXN0b21JY29uQ29sb3JcIj57e2N1c3RvbUljb259fTwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51IGFwcC1zZWxlY3QtZHJvcGRvd24td3JhcHBlclwiXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2hvdy10b3AnOiBpc1RvcE1lbnVEaXJlY3Rpb24gfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWxlY3QtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS1TZWFyY2ggb3B0aW9ucy0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0Q2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKClcIj48L3plbi1zZWFyY2gtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJidXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvblRlbXBsYXRlLnRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tTm8gb3B0aW9ucyBmb3VuZC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tb3B0aW9ucy1mb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICB7eyAnTm8gbWF0Y2hpbmcgb3B0aW9ucyBmb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLVNlbGVjdCBBbGwgT3B0aW9uLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCBzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgIXNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCBbY2hlY2tlZF09XCJzZWxlY3RNb2RlbC5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0TW9kZWwubGVuZ3RoICE9PSBvcHRpb25zLmxlbmd0aCAmJiBzZWxlY3RNb2RlbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVZhbHVlQ2hhbmdlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbGVjdCBBbGwnIHwgdHJhbnNsYXRlXCI+PC96ZW4tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS1TaW5nbGUgc2VsZWN0IE9wdGlvbnMtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc011bHRpc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlQWRkTmV3T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBZGROZXdPcHRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibmV3T3B0aW9uVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZXdPcHRpb25UZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW5ld09wdGlvblRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQWRkIE5ldycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24taXRlbSByZW1vdmUtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZVJlbW92ZU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUmVtb3ZlT3B0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlbW92ZU9wdGlvblRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVtb3ZlT3B0aW9uVGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyZW1vdmVPcHRpb25UZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1JlbW92ZSBTZWxlY3RlZCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3B0aW9uQ2xpY2sob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBpc1NlbGVjdGVkKG9wdGlvbikgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3Rpb24taXRlbS10cnVuY2F0ZV09XCJpc1RydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvblRlbXBsYXRlOyBlbHNlIHRwbE9wdGlvblRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBvcHRpb24gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RwbE9wdGlvblRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXROYW1lKG9wdGlvbikgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS1NdWx0aXNlbGVjdCBPcHRpb25zLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc011bHRpc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25DbGljayhvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCAqbmdJZj1cImlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJnZXROYW1lKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVWYWx1ZUNoYW5nZV09XCJ0cnVlXCI+PC96ZW4tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1821,18 +1821,18 @@ class ZenduSelectComponent {
1821
1821
  }
1822
1822
  toggleChildren(checked) {
1823
1823
  var _a;
1824
- if (!((_a = this.option.Childrens) === null || _a === void 0 ? void 0 : _a.length)) {
1824
+ if (!this.option || !((_a = this.option.Childrens) === null || _a === void 0 ? void 0 : _a.length)) {
1825
1825
  return;
1826
1826
  }
1827
1827
  this.option.Childrens.forEach((child) => {
1828
+ this.option = this.options.find(el => this.getId(el) === child);
1828
1829
  const childIndex = this.selectModel.findIndex(el => this.getId(el) === child);
1829
- if (checked && childIndex < 0) {
1830
+ if (this.option && checked && childIndex < 0) {
1830
1831
  this.selectModel.push(child);
1831
1832
  }
1832
1833
  else if (!checked && childIndex >= 0) {
1833
1834
  this.selectModel.splice(childIndex, 1);
1834
1835
  }
1835
- this.option = this.options.find(el => this.getId(el) === child);
1836
1836
  // Recursive call to handle nested children
1837
1837
  this.toggleChildren(checked);
1838
1838
  });