ng-zenduit 1.0.48 → 1.0.49

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.
@@ -255,7 +255,10 @@ export class ZenduSelectComponent {
255
255
  getName(option) {
256
256
  if (typeof option === 'object') {
257
257
  if (this.displayProp) {
258
- return this.GetRecursiveProperty(option, this.displayProp);
258
+ const combinedProps = this.displayProp.split("|")
259
+ .map(i => this.getRecursiveProperty(option, i))
260
+ .join(" ");
261
+ return combinedProps;
259
262
  }
260
263
  else {
261
264
  console.error('App-Select: when using objects as model, a displayProp value is mandatory.');
@@ -269,7 +272,7 @@ export class ZenduSelectComponent {
269
272
  getId(option) {
270
273
  if (typeof option === 'object') {
271
274
  if (this.idProp) {
272
- return this.GetRecursiveProperty(option, this.idProp);
275
+ return this.getRecursiveProperty(option, this.idProp);
273
276
  }
274
277
  else {
275
278
  console.error('App-Select: when using objects as model, a idProp value is mandatory.');
@@ -280,7 +283,7 @@ export class ZenduSelectComponent {
280
283
  return option;
281
284
  }
282
285
  }
283
- GetRecursiveProperty(object, path) {
286
+ getRecursiveProperty(object, path) {
284
287
  return path.split('.').reduce((obj, x) => {
285
288
  if (obj) {
286
289
  return obj[x];
@@ -445,4 +448,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
445
448
  type: HostListener,
446
449
  args: ['window:scroll', []]
447
450
  }] } });
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7OztBQVF2RixNQUFNLE9BQU8sb0JBQW9CO0lBNEk3QixZQUNZLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7UUF0SWhDOztXQUVHO1FBQ08sc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV0RDs7V0FFRztRQUNNLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFN0I7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLGNBQWMsQ0FBQztRQTRCdEM7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOztXQUVHO1FBQ00sZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNNLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTlCOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ00sdUJBQWtCLEdBQVksS0FB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VztzQkFBbkIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0ksWUFBWTtzQkFBckIsTUFBTTtnQkFLRSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLSSxZQUFZO3NCQUFyQixNQUFNO2dCQUtHLE1BQU07c0JBQWYsTUFBTTtnQkErQm1DLGNBQWM7c0JBQXZELFlBQVk7dUJBQUMsMEJBQTBCO2dCQUtDLGFBQWE7c0JBQXJELFlBQVk7dUJBQUMseUJBQXlCO2dCQUtHLGNBQWM7c0JBQXZELFlBQVk7dUJBQUMsMEJBQTBCO2dCQUl4QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYzVDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFplbmR1U2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZXMvemVuZHUtc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgWmVuZHVTZWxlY3RWYWx1ZURpcmVjdGl2ZSB9IGZyb20gJy4vdGVtcGxhdGVzL3plbmR1LXNlbGVjdC12YWx1ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgWmVuZHVTZWxlY3RCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL3RlbXBsYXRlcy96ZW5kdS1zZWxlY3QtYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vZmlsdGVyL2ZpbHRlcnNDb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3plbi1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi96ZW5kdS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3plbmR1LXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiAyLVdheSBjb21wb25lbnQgcHJvcGVydHkgZm9yIHNlbGVjdGVkIGl0ZW1zLlxuICAgICAqIERvbid0IGluaXRpYWxpemUgcHJvcGVydHkgb24gY29uc3RydWN0b3IgdG8gcHJldmVudCBjaGFuZ2Ugc291cmNlIHBhcmFtZXRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNlbGVjdE1vZGVsOiBhbnkgfCBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIGNhbGxiYWNrIHRvIGVtaXQgY2hhbmdlcyBmb3IgcGFyZW50IGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBzZWxlY3RNb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBvcHRpb25zIGZvciBzZWxlY3RcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdG8gc2V0IGN1c3RvbSBwbGFjZWhvbGRlciB2YWx1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdCBJdGVtcyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGEga2V5IHZhbHVlIHRvIGdldCBkaXNwbGF5IG5hbWUgZnJvbSBvcHRpb24gb2JqZWN0XG4gICAgICovXG4gICAgQElucHV0KCkgZGlzcGxheVByb3A6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYSBrZXkgdmFsdWUgdG8gZ2V0IGlkIGZyb20gb3B0aW9uIG9iamVjdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGlkUHJvcDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIGVuYWJsZSBzZWFyY2hcbiAgICAgKi9cbiAgICBASW5wdXQoKSBoYXNTZWFyY2g6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gcmV0dXJuIHdob2xlIG9wdGlvbiBvYmplY3RcbiAgICAgKiBCeSBkZWZhdWx0IG9ubHkgaWQgdmFsdWUgaXMgcmV0dXJuZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSByZXR1cm5PcHRpb246IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gZW5hYmxlIG11bHRpc2VsZWN0XG4gICAgICovXG4gICAgQElucHV0KCkgaXNNdWx0aXNlbGVjdDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBwcm9wZXJ0eSB0byBkaXNhYmxlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSBjdXN0b20gaWNvbiBmb3IgdG9nZ2xlXG4gICAgICovXG4gICAgQElucHV0KCkgY3VzdG9tSWNvbiA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSBjdXN0b20gaWNvbiBmb3Igc3RhcnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjdXN0b21JY29uU3RhcnQgPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogQ29sb3IgZm9yIGN1c3RvbSBpY29uXG4gICAgICovXG4gICAgQElucHV0KCkgY3VzdG9tSWNvbkNvbG9yID0gXCJcIjtcblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlIHRleHQgd2l0aCBcIi4uLlwiIGF0IHRoZSBlbmRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpc1RydW5jYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBzaG93IEFkZCBOZXcgT3B0aW9uIGF0IGZpcnN0IHBsYWNlXG4gICAgICovXG4gICAgQElucHV0KCkgZW5hYmxlQWRkTmV3T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBkaXNwbGF5IGN1c3RvbSB0ZXh0IGZvciBBZGQgTmV3IE9wdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIG5ld09wdGlvblRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEVtaXQgZXZlbnQgd2hlbiBBZGQgTmV3IE9wdGlvbiBpcyBjbGlja2VkXG4gICAgICovXG4gICAgQE91dHB1dCgpIGFkZE5ld09wdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAgICogc2hvdyByZW1vdmUgT3B0aW9uIGF0IGZpcnN0IHBsYWNlXG4gICAgICAgKi9cbiAgICBASW5wdXQoKSBlbmFibGVSZW1vdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIGRpc3BsYXkgY3VzdG9tIHRleHQgZm9yIHJlbW92ZSBPcHRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSByZW1vdmVPcHRpb25UZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgbGF6eSBsb2FkaW5nIGZvciBvcHRpb25zXG4gICAgICovXG4gICAgQElucHV0KCkgaXNMYXp5TG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTGF6eSBsb2FkZXIgZnVuY3Rpb24gdG8gZmV0Y2ggb3B0aW9uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhenlMb2FkZXI/OiAoc2VhcmNoOiB7IHRleHQ/OiBzdHJpbmcsIGlkcz86IHN0cmluZ1tdIH0sIG9mZnNldDogbnVtYmVyLCBsaW1pdDogbnVtYmVyKSA9PiBQcm9taXNlPERhdGFTb3VyY2VbXT47XG5cbiAgICAvKipcbiAgICAgKiBFbWl0IGV2ZW50IHdoZW4gcmVtb3ZlIE9wdGlvbiBpcyBjbGlja2VkXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlbW92ZU9wdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXQgZXZlbnQgd2hlbiBzZWxlY3QgaXMgY2xvc2VkLCBzZW5kaW5nIHRoZSBzZWxlY3RlZCBkYXRhXG4gICAgICovXG4gICAgQE91dHB1dCgpIGNsb3NlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcmVkIGl0ZW1zIHZpc2libGUgb24gZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIElzIGRyb3Bkb3duIGV4cGFuZGVkXG4gICAgICovXG4gICAgcHVibGljIGlzRXhwYW5kZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBwdWJsaWMgbGFiZWxUZXh0ID0gJyc7XG5cbiAgICBwdWJsaWMgaXNUb3BNZW51RGlyZWN0aW9uID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgb3B0aW9uOiBhbnlcblxuICAgIHB1YmxpYyBjYW5Mb2FkTW9yZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzTG9hZGluZ05vdyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IE9wdGlvbiBUZW1wbGF0ZSBmb3IgY3VzdG9tIEhUTUxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKFplbmR1U2VsZWN0T3B0aW9uRGlyZWN0aXZlKSBvcHRpb25UZW1wbGF0ZTogWmVuZHVTZWxlY3RPcHRpb25EaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgVmFsdWUgVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChaZW5kdVNlbGVjdFZhbHVlRGlyZWN0aXZlKSB2YWx1ZVRlbXBsYXRlOiBaZW5kdVNlbGVjdFZhbHVlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IE9wdGlvbiBUZW1wbGF0ZSBmb3IgY3VzdG9tIEhUTUxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlKSBidXR0b25UZW1wbGF0ZTogWmVuZHVTZWxlY3RCdXR0b25EaXJlY3RpdmU7XG5cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIG91dHNpZGVIYW5kbGluZyhldmVudCkge1xuICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgLy8gZWxlbWVudCBub3QgaW4gdGhlIERPTVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGhpZGUgdGhlIG1lbnUgZm9yIG91dHNpZGUgY2xpY2tcbiAgICAgICAgdGhpcy5oaWRlRHJvcERvd24odHJ1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICAgIHNjcm9sbCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlT2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoKTtcblxuICAgICAgICBpZiAoY2hhbmdlT2JqW1wic2VsZWN0TW9kZWxcIl0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTGF6eUxvYWRpbmcgJiYgdGhpcy5zZWxlY3RNb2RlbD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkT3B0aW9ucz8ubGVuZ3RoICYmICF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlbG9hZCBkYXRhIHRvIHNob3cgdGhlIGxhYmVsc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRNb3JlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc01vZGVsRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5zZWxlY3RNb2RlbCB8fCAhdGhpcy5zZWxlY3RNb2RlbC5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuc2VsZWN0TW9kZWwgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMuc2VsZWN0TW9kZWwgPT09IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3B0aW9uQ2xpY2sob3B0aW9uOiBzdHJpbmcgfCBvYmplY3QpIHtcbiAgICAgICAgdGhpcy5vcHRpb24gPSBvcHRpb247XG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5yZXR1cm5PcHRpb24gPyBvcHRpb24gOiB0aGlzLmdldElkKG9wdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVPcHRpb24ob3B0aW9uVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVTZWxlY3Qob3B0aW9uVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLy8gTG9naWMgZm9yIHNpbmdsZSBzZWxlY3RcbiAgICBwcml2YXRlIHNpbmdsZVNlbGVjdCh2YWx1ZTogc3RyaW5nIHwgb2JqZWN0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0TW9kZWwgPSB2YWx1ZTtcblxuICAgICAgICAvLyAgSGlkZSBkcm9wZG93biBpZiBzaW5nbGUgc2VsZWN0XG4gICAgICAgIHRoaXMuaGlkZURyb3BEb3duKHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVFeHBhbmQoKSB7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IFwiXCI7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVBsYWNlbWVudCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5pc0xhenlMb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb3JlKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTG9naWMgZm9yIG11bHRpc2VsZWN0XG4gICAgcHJpdmF0ZSB0b2dnbGVPcHRpb24odmFsdWU6IHN0cmluZyB8IG9iamVjdCk6IHZvaWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RNb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRFbGVtZW50SW5kZXgodmFsdWUpO1xuXG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWwucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUNoaWxkcmVuKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVDaGlsZHJlbihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVDaGlsZHJlbihjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb24gfHwgIXRoaXMub3B0aW9uLkNoaWxkcmVucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb24uQ2hpbGRyZW5zLmZvckVhY2goKGNoaWxkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IGNoaWxkKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkSW5kZXggPSB0aGlzLnNlbGVjdE1vZGVsLmZpbmRJbmRleChlbCA9PiB0aGlzLmdldElkKGVsKSA9PT0gY2hpbGQpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uICYmIGNoZWNrZWQgJiYgY2hpbGRJbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghY2hlY2tlZCAmJiBjaGlsZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsLnNwbGljZShjaGlsZEluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsIHRvIGhhbmRsZSBuZXN0ZWQgY2hpbGRyZW5cbiAgICAgICAgICAgIHRoaXMudG9nZ2xlQ2hpbGRyZW4oY2hlY2tlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RWxlbWVudEluZGV4KHZhbHVlOiBzdHJpbmcgfCBvYmplY3QpOiBudW1iZXIge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVJZCA9IHRoaXMuZ2V0SWQodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TW9kZWwuZmluZEluZGV4KGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSB2YWx1ZUlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdE1vZGVsLmluZGV4T2YodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0TW9kZWwubGVuZ3RoICE9PSB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsID0gdGhpcy5vcHRpb25zLm1hcChlbCA9PiB0aGlzLnJldHVybk9wdGlvbiA/IGVsIDogdGhpcy5nZXRJZChlbCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbCA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0xhenlMb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jYW5Mb2FkTW9yZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb3JlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucy5zbGljZSgwKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHRoaXMuc2VhcmNoVGV4dCwgJ2knKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4gcmVnZXgudGVzdCh0aGlzLmdldE5hbWUob3B0aW9uKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGVjdGVkKG9wdGlvbjogc3RyaW5nIHwgb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kZWxFbXB0eSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25JZCA9IHRoaXMuZ2V0SWQob3B0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5pc011bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlbC5maW5kSW5kZXgoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IG9wdGlvbklkKSA+PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SWQodGhpcy5zZWxlY3RNb2RlbCkgPT09IG9wdGlvbklkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUxhYmVsKCkge1xuICAgICAgICBpZiAodGhpcy5pc01vZGVsRW1wdHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IHRoaXMuc2VsZWN0TW9kZWwubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRDb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxUZXh0ID0gdGhpcy5nZXROYW1lRnJvbVZhbHVlKHRoaXMuc2VsZWN0TW9kZWxbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsVGV4dCA9IGAke3NlbGVjdGVkQ291bnR9IFNlbGVjdGVkYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxUZXh0ID0gdGhpcy5nZXROYW1lRnJvbVZhbHVlKHRoaXMuc2VsZWN0TW9kZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWVGcm9tVmFsdWUodmFsOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5PcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWUodmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTGF6eUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHQgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucz8uZmluZChpID0+IGkuaWQgPT0gdmFsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROYW1lKG9wdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAhdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChlbCA9PiB0aGlzLmdldElkKGVsKSA9PT0gdmFsKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWUob3B0aW9uID8/IHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmFtZShvcHRpb246IHN0cmluZyB8IG9iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheVByb3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5HZXRSZWN1cnNpdmVQcm9wZXJ0eShvcHRpb24sIHRoaXMuZGlzcGxheVByb3ApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBcHAtU2VsZWN0OiB3aGVuIHVzaW5nIG9iamVjdHMgYXMgbW9kZWwsIGEgZGlzcGxheVByb3AgdmFsdWUgaXMgbWFuZGF0b3J5LicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWQob3B0aW9uOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkUHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkdldFJlY3Vyc2l2ZVByb3BlcnR5KG9wdGlvbiwgdGhpcy5pZFByb3ApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBcHAtU2VsZWN0OiB3aGVuIHVzaW5nIG9iamVjdHMgYXMgbW9kZWwsIGEgaWRQcm9wIHZhbHVlIGlzIG1hbmRhdG9yeS4nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIEdldFJlY3Vyc2l2ZVByb3BlcnR5KG9iamVjdDogYW55LCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCB4KSA9PiB7XG4gICAgICAgICAgICBpZiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialt4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG9iamVjdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhpZGVEcm9wRG93bih1c2VyQWN0aW9uOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gT25seSBlbWl0IGNsb3NlZCBldmVudCBpZiBpdCB3YXMgb3BlbiBBTkQgdHJpZ2dlcmVkIGJ5IHVzZXIgYWN0aW9uXG4gICAgICAgIGlmICh1c2VyQWN0aW9uICYmIHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCh0aGlzLnNlbGVjdE1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0Q2hhbmdlKCkge1xuICAgICAgICAvLyBub3RpZnkgd2l0aCB0aW1lb3V0XG4gICAgICAgIC8vIGFsbG93IG91dHB1dCBwcm9wZXJ0eSBcImVuYWJsZWRcIiBhcHBsaWVkIGJ5IHBhcmVudCBmaXJzdCBhbmQgdGhlbiBlbWl0IHRoZSBvbkNoYW5nZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWxDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdE1vZGVsKTtcbiAgICAgICAgfSwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQbGFjZW1lbnQoKSB7XG4gICAgICAgIC8vIHVwZGF0ZSBtZW51IHBvc2l0aW9uIGJhc2Ugb24gc2Nyb2xsXG4gICAgICAgIHRoaXMuaXNUb3BNZW51RGlyZWN0aW9uID0gdGhpcy5nZXRNZW51RGlyZWN0aW9uKCkgPT09IFwidG9wXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNZW51RGlyZWN0aW9uKCk6IFwiYm90dG9tXCIgfCBcInRvcFwiIHtcblxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblxuICAgICAgICBjb25zdCBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgaWYgKHRvcCA+IChoZWlnaHQgLyAyKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwidG9wXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXCJib3R0b21cIlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYXhNZW51SGVpZ2h0KCkge1xuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5nZXRDb250YWluZXJFbGVtZW50KCk7XG4gICAgICAgIGlmICghY29udGFpbmVyRWxlbWVudCB8fCAhY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiBcIjE5MHB4XCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRIZWlnaHQgPSBjb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGgucm91bmQoKHBhcmVudEhlaWdodCAvIDIpIC0gMjUpO1xuICAgICAgICBoZWlnaHQgPSBNYXRoLm1pbigyMTYsIGhlaWdodCk7XG4gICAgICAgIGhlaWdodCA9IE1hdGgubWF4KDk2LCBoZWlnaHQpO1xuICAgICAgICByZXR1cm4gYCR7aGVpZ2h0fXB4YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gY29tcG9uZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcHAtc2VsZWN0XCIpLml0ZW0oMCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBjb250YWluZXIub2Zmc2V0UGFyZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVBZGROZXdPcHRpb24oKSB7XG4gICAgICAgIHRoaXMuYWRkTmV3T3B0aW9uLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWFyY2hUZXh0IH0pXG4gICAgICAgIHRoaXMuaGlkZURyb3BEb3duKHRydWUpXG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZVJlbW92ZU9wdGlvbigpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVPcHRpb24uZW1pdCh7IHJlbW92ZWQ6IHRydWUgfSlcbiAgICAgICAgdGhpcy5oaWRlRHJvcERvd24odHJ1ZSlcbiAgICB9XG5cblxuXG4gICAgcHVibGljIGFzeW5jIGxvYWRNb3JlKHNob3dTZWxlY3RlZE9uVG9wOiBib29sZWFuKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ05vdyA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGF6eUxvYWRlcikge1xuICAgICAgICAgICAgICAgIHRocm93IGBsb2FkZXIgaXMgbm90IGF2YWlsYWJsZWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5maWx0ZXJlZE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBsb2FkIGZpcnN0IDEwIHJlY29yZHMgZm9yIHRoZSB0aGUgZmlyc3QgdGltZVxuICAgICAgICAgICAgY29uc3QgbGltaXQgPSAodGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09IDApID8gMTAgOiAxMDA7XG4gICAgICAgICAgICBsZXQgbmV3SXRlbXMgPSBhd2FpdCB0aGlzLmxhenlMb2FkZXIoeyB0ZXh0OiB0aGlzLnNlYXJjaFRleHQgfHwgXCJcIiB9LCB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGgsIGxpbWl0KTtcblxuICAgICAgICAgICAgdGhpcy5jYW5Mb2FkTW9yZSA9IChuZXdJdGVtcy5sZW5ndGggPT0gbGltaXQpO1xuXG4gICAgICAgICAgICAvLyB0aGUgc2VsZWN0TW9kZWwgY29udGFpbnMgdGhlIHNlbGVjdGVkIGl0ZW1zIGlkc1xuICAgICAgICAgICAgY29uc3QgY2hlY2tlZElkcyA9IHRoaXMuc2VsZWN0TW9kZWwgYXMgc3RyaW5nW107XG5cbiAgICAgICAgICAgIGlmIChzaG93U2VsZWN0ZWRPblRvcCAmJiBjaGVja2VkSWRzPy5sZW5ndGgpIHtcblxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgY2hlY2tlZCBpdGVtcyBmaXJzdFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMuZmlsdGVyKGkgPT4gIWNoZWNrZWRJZHMuaW5jbHVkZXMoaS5pZCkpO1xuICAgICAgICAgICAgICAgIG5ld0l0ZW1zID0gbmV3SXRlbXMuZmlsdGVyKGkgPT4gIWNoZWNrZWRJZHMuaW5jbHVkZXMoaS5pZCBhcyBzdHJpbmcpKTtcblxuICAgICAgICAgICAgICAgIC8vIGFkZCBhbGwgY2hlY2tlZCBpdGVtcyB0byB0aGUgdG9wICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWRJdGVtcyA9IGF3YWl0IHRoaXMubGF6eUxvYWRlcih7IGlkczogY2hlY2tlZElkcyB9LCAwLCAxMDApO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gY2hlY2tlZEl0ZW1zLmNvbmNhdCh0aGlzLmZpbHRlcmVkT3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgLy8gdGhlIGZpbHRlcmVkRGF0YVNvdXJjZSBjb250YWlucyB0aGUgaXRlbXMgdGhhdCBpcyB2aXNpbGlibGUgdG8gdXNlciBhdCB0aGUgY3VycmVudCBtb21lbnRcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMuY29uY2F0KG5ld0l0ZW1zKTtcblxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTm93ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXNlbGVjdFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtc2VsZWN0LXRvZ2dsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZCgpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNFeHBhbmRlZH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWxlY3QtbGFiZWxcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiY3VzdG9tSWNvblN0YXJ0XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBhcHAtc2VsZWN0LWljb24tc3RhcnRcIj57e2N1c3RvbUljb25TdGFydH19PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc01vZGVsRW1wdHkoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cGxhY2Vob2xkZXIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc011bHRpc2VsZWN0ICYmICFpc01vZGVsRW1wdHkoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInZhbHVlVGVtcGxhdGUgJiYgc2VsZWN0TW9kZWxbMF07IGVsc2UgdHBsVmFsdWVUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmFsdWVUZW1wbGF0ZS50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHNlbGVjdE1vZGVsOiBzZWxlY3RNb2RlbCwgbGFiZWxUZXh0OiBsYWJlbFRleHQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0cGxWYWx1ZVRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiAhaXNNb2RlbEVtcHR5KClcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYWJlbFRleHQgfCB0cmFuc2xhdGUgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aSAqbmdJZj1cIiFjdXN0b21JY29uXCJcbiAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBhcHAtc2VsZWN0LWljb25cIj5leHBhbmRfbW9yZTwvaT5cbiAgICAgICAgPGkgKm5nSWY9XCJjdXN0b21JY29uXCJcbiAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZCBjdXN0b20taWNvblwiXG4gICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjdXN0b21JY29uQ29sb3JcIj57e2N1c3RvbUljb259fTwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51IGFwcC1zZWxlY3QtZHJvcGRvd24td3JhcHBlclwiXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2hvdy10b3AnOiBpc1RvcE1lbnVEaXJlY3Rpb24gfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWxlY3QtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS1TZWFyY2ggb3B0aW9ucy0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0Q2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKClcIj48L3plbi1zZWFyY2gtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJidXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvblRlbXBsYXRlLnRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tTm8gb3B0aW9ucyBmb3VuZC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tb3B0aW9ucy1mb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAmJiAhaXNMb2FkaW5nTm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnTm8gbWF0Y2hpbmcgb3B0aW9ucyBmb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLVNlbGVjdCBBbGwgT3B0aW9uLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCBzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgIXNlYXJjaFRleHQgJiYgIWlzTGF6eUxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCBbY2hlY2tlZF09XCJzZWxlY3RNb2RlbC5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0TW9kZWwubGVuZ3RoICE9PSBvcHRpb25zLmxlbmd0aCAmJiBzZWxlY3RNb2RlbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVZhbHVlQ2hhbmdlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbGVjdCBBbGwnIHwgdHJhbnNsYXRlXCI+PC96ZW4tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS1TaW5nbGUgc2VsZWN0IE9wdGlvbnMtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc011bHRpc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlQWRkTmV3T3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVBZGROZXdPcHRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibmV3T3B0aW9uVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuZXdPcHRpb25UZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW5ld09wdGlvblRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQWRkIE5ldycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24taXRlbSByZW1vdmUtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZVJlbW92ZU9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUmVtb3ZlT3B0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlbW92ZU9wdGlvblRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVtb3ZlT3B0aW9uVGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyZW1vdmVPcHRpb25UZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1JlbW92ZSBTZWxlY3RlZCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3B0aW9uQ2xpY2sob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBpc1NlbGVjdGVkKG9wdGlvbikgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3Rpb24taXRlbS10cnVuY2F0ZV09XCJpc1RydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvblRlbXBsYXRlOyBlbHNlIHRwbE9wdGlvblRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBvcHRpb24gfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RwbE9wdGlvblRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXROYW1lKG9wdGlvbikgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS1NdWx0aXNlbGVjdCBPcHRpb25zLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc011bHRpc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25DbGljayhvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCAqbmdJZj1cImlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJnZXROYW1lKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVWYWx1ZUNoYW5nZV09XCJ0cnVlXCI+PC96ZW4tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGF6eUxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2FuTG9hZE1vcmUgJiYgIWlzTG9hZGluZ05vd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc3Ryb2tlZCBmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydMb2FkIE1vcmUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ05vd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxvYWRlci1tb3JlLXNwaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1zcGlubmVyIHNpemU9XCJzbWFsbFwiPjwvemVuLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWxlY3QvemVuZHUtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7OztBQVF2RixNQUFNLE9BQU8sb0JBQW9CO0lBNEk3QixZQUNZLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7UUF0SWhDOztXQUVHO1FBQ08sc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV0RDs7V0FFRztRQUNNLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFN0I7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLGNBQWMsQ0FBQztRQTRCdEM7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOztXQUVHO1FBQ00sZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNNLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTlCOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ00sdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBTzdDOztXQUVHO1FBQ08saUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVwRTs7YUFFSztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQU83Qzs7V0FFRztRQUNNLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBTy9COztXQUVHO1FBQ08saUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVwRTs7V0FFRztRQUNPLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU85RDs7V0FFRztRQUNJLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBSTNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSTVCLENBQUM7SUFtQkQsZUFBZSxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2Qyx5QkFBeUI7WUFDekIsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BELE9BQU87U0FDVjtRQUNELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFHRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxXQUFXLENBQUMsU0FBYztRQUM3QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRTtnQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbkQsa0NBQWtDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN2QjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ3hEO2FBQU07WUFDSCxPQUFPLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUM7U0FDL0U7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsTUFBdUI7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwwQkFBMEI7SUFDbEIsWUFBWSxDQUFDLEtBQXNCO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVELHdCQUF3QjtJQUNoQixZQUFZLENBQUMsS0FBc0I7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtRQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQWdCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQ2hELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztZQUM5RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNLElBQUksQ0FBQyxPQUFPLElBQUksVUFBVSxJQUFJLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFDO1lBQ0QsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQXNCO1FBQzFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDdkU7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztZQUMvQixPQUFPO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUF1QjtRQUNyQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNyQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3JCLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUU5QyxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsYUFBYSxXQUFXLENBQUM7YUFDaEQ7U0FDSjthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQW9CO1FBQ3hDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDNUI7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtvQkFDdkMsT0FBTyxFQUFFLENBQUM7aUJBQ2I7Z0JBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO2dCQUM1RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDO2FBQ3RDO1NBQ0o7SUFDTCxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQXVCO1FBQ2xDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDbEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO3FCQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxhQUFhLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO2dCQUM1RixPQUFPLEVBQUUsQ0FBQzthQUNiO1NBQ0o7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUdPLEtBQUssQ0FBQyxNQUF1QjtRQUNqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN6RDtpQkFBTTtnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7Z0JBQ3ZGLE9BQU8sRUFBRSxDQUFDO2FBQ2I7U0FDSjthQUFNO1lBQ0gsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBVyxFQUFFLElBQVk7UUFDbEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLEdBQUcsRUFBRTtnQkFDTCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQjtpQkFBTTtnQkFDSCxPQUFPLElBQUksQ0FBQzthQUNmO1FBQ0wsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBc0IsS0FBSztRQUNqRCxxRUFBcUU7UUFDckUsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRU8sVUFBVTtRQUNkLHNCQUFzQjtRQUN0QixxRkFBcUY7UUFDckYsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFTyxlQUFlO1FBQ25CLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssS0FBSyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxnQkFBZ0I7UUFFcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxDQUFDO1FBRWhELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFFbEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFDSTtZQUNELE9BQU8sUUFBUSxDQUFBO1NBQ2xCO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRTtZQUNyRCxPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUVELE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUNuRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUE0QixDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQ3hGLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUlNLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQTBCO1FBQzVDLElBQUk7WUFDQSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsTUFBTSx5QkFBeUIsQ0FBQTthQUNsQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQzthQUM3QjtZQUVELCtDQUErQztZQUMvQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUM1RCxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUUxRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztZQUU5QyxrREFBa0Q7WUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQXVCLENBQUM7WUFFaEQsSUFBSSxpQkFBaUIsSUFBSSxVQUFVLEVBQUUsTUFBTSxFQUFFO2dCQUV6QyxpQ0FBaUM7Z0JBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BGLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUV0RSxtREFBbUQ7Z0JBQ25ELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBRWpFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtZQUdELDRGQUE0RjtZQUM1RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBRWhFO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO2dCQUNPO1lBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDTCxDQUFDOztrSEE5ZlEsb0JBQW9CO3NHQUFwQixvQkFBb0IsdzRCQW1KZiwwQkFBMEIsZ0ZBSzFCLHlCQUF5QixpRkFLekIsMEJBQTBCLHFFQ3pLNUMsNDVOQXlJQTs0RkQ3SGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLFlBQVk7aUdBU2IsV0FBVztzQkFBbkIsS0FBSztnQkFLSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBS0UsT0FBTztzQkFBZixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtJLFlBQVk7c0JBQXJCLE1BQU07Z0JBS0Usa0JBQWtCO3NCQUExQixLQUFLO2dCQUtHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0ksWUFBWTtzQkFBckIsTUFBTTtnQkFLRyxNQUFNO3NCQUFmLE1BQU07Z0JBK0JtQyxjQUFjO3NCQUF2RCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFLQyxhQUFhO3NCQUFyRCxZQUFZO3VCQUFDLHlCQUF5QjtnQkFLRyxjQUFjO3NCQUF2RCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFJeEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWM1QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBaZW5kdVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vdGVtcGxhdGVzL3plbmR1LXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFplbmR1U2VsZWN0VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuL3RlbXBsYXRlcy96ZW5kdS1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZXMvemVuZHUtc2VsZWN0LWJ1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL2ZpbHRlci9maWx0ZXJzQ29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd6ZW4tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vemVuZHUtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96ZW5kdS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBaZW5kdVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogMi1XYXkgY29tcG9uZW50IHByb3BlcnR5IGZvciBzZWxlY3RlZCBpdGVtcy5cbiAgICAgKiBEb24ndCBpbml0aWFsaXplIHByb3BlcnR5IG9uIGNvbnN0cnVjdG9yIHRvIHByZXZlbnQgY2hhbmdlIHNvdXJjZSBwYXJhbWV0ZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZWxlY3RNb2RlbDogYW55IHwgYW55W107XG5cbiAgICAvKipcbiAgICAgKiBjYWxsYmFjayB0byBlbWl0IGNoYW5nZXMgZm9yIHBhcmVudCBjb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgc2VsZWN0TW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2Ygb3B0aW9ucyBmb3Igc2VsZWN0XG4gICAgICovXG4gICAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHRvIHNldCBjdXN0b20gcGxhY2Vob2xkZXIgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY3QgSXRlbXMnO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhIGtleSB2YWx1ZSB0byBnZXQgZGlzcGxheSBuYW1lIGZyb20gb3B0aW9uIG9iamVjdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRpc3BsYXlQcm9wOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGEga2V5IHZhbHVlIHRvIGdldCBpZCBmcm9tIG9wdGlvbiBvYmplY3RcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpZFByb3A6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBwcm9wZXJ0eSB0byBlbmFibGUgc2VhcmNoXG4gICAgICovXG4gICAgQElucHV0KCkgaGFzU2VhcmNoOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIHJldHVybiB3aG9sZSBvcHRpb24gb2JqZWN0XG4gICAgICogQnkgZGVmYXVsdCBvbmx5IGlkIHZhbHVlIGlzIHJldHVybmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcmV0dXJuT3B0aW9uOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IHByb3BlcnR5IHRvIGVuYWJsZSBtdWx0aXNlbGVjdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGlzTXVsdGlzZWxlY3Q6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgcHJvcGVydHkgdG8gZGlzYWJsZSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgY3VzdG9tIGljb24gZm9yIHRvZ2dsZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1c3RvbUljb24gPSBcIlwiO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgY3VzdG9tIGljb24gZm9yIHN0YXJ0XG4gICAgICovXG4gICAgQElucHV0KCkgY3VzdG9tSWNvblN0YXJ0ID0gXCJcIjtcblxuICAgIC8qKlxuICAgICAqIENvbG9yIGZvciBjdXN0b20gaWNvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1c3RvbUljb25Db2xvciA9IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBUcnVuY2F0ZSB0ZXh0IHdpdGggXCIuLi5cIiBhdCB0aGUgZW5kXG4gICAgICovXG4gICAgQElucHV0KCkgaXNUcnVuY2F0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogc2hvdyBBZGQgTmV3IE9wdGlvbiBhdCBmaXJzdCBwbGFjZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGVuYWJsZUFkZE5ld09wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogZGlzcGxheSBjdXN0b20gdGV4dCBmb3IgQWRkIE5ldyBPcHRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBuZXdPcHRpb25UZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0IGV2ZW50IHdoZW4gQWRkIE5ldyBPcHRpb24gaXMgY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBhZGROZXdPcHRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgICAqIHNob3cgcmVtb3ZlIE9wdGlvbiBhdCBmaXJzdCBwbGFjZVxuICAgICAgICovXG4gICAgQElucHV0KCkgZW5hYmxlUmVtb3ZlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBkaXNwbGF5IGN1c3RvbSB0ZXh0IGZvciByZW1vdmUgT3B0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcmVtb3ZlT3B0aW9uVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIGxhenkgbG9hZGluZyBmb3Igb3B0aW9uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlzTGF6eUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIExhenkgbG9hZGVyIGZ1bmN0aW9uIHRvIGZldGNoIG9wdGlvbnNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYXp5TG9hZGVyPzogKHNlYXJjaDogeyB0ZXh0Pzogc3RyaW5nLCBpZHM/OiBzdHJpbmdbXSB9LCBvZmZzZXQ6IG51bWJlciwgbGltaXQ6IG51bWJlcikgPT4gUHJvbWlzZTxEYXRhU291cmNlW10+O1xuXG4gICAgLyoqXG4gICAgICogRW1pdCBldmVudCB3aGVuIHJlbW92ZSBPcHRpb24gaXMgY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZW1vdmVPcHRpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0IGV2ZW50IHdoZW4gc2VsZWN0IGlzIGNsb3NlZCwgc2VuZGluZyB0aGUgc2VsZWN0ZWQgZGF0YVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBjbG9zZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJlZCBpdGVtcyB2aXNpYmxlIG9uIGRyb3Bkb3duXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcmVkT3B0aW9uczogYW55W107XG5cbiAgICAvKipcbiAgICAgKiBJcyBkcm9wZG93biBleHBhbmRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0V4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc2VhcmNoVGV4dCA9ICcnO1xuXG4gICAgcHVibGljIGxhYmVsVGV4dCA9ICcnO1xuXG4gICAgcHVibGljIGlzVG9wTWVudURpcmVjdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIG9wdGlvbjogYW55XG5cbiAgICBwdWJsaWMgY2FuTG9hZE1vcmUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc0xvYWRpbmdOb3cgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBPcHRpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChaZW5kdVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSkgb3B0aW9uVGVtcGxhdGU6IFplbmR1U2VsZWN0T3B0aW9uRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IFZhbHVlIFRlbXBsYXRlIGZvciBjdXN0b20gSFRNTFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoWmVuZHVTZWxlY3RWYWx1ZURpcmVjdGl2ZSkgdmFsdWVUZW1wbGF0ZTogWmVuZHVTZWxlY3RWYWx1ZURpcmVjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBPcHRpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBIVE1MXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChaZW5kdVNlbGVjdEJ1dHRvbkRpcmVjdGl2ZSkgYnV0dG9uVGVtcGxhdGU6IFplbmR1U2VsZWN0QnV0dG9uRGlyZWN0aXZlO1xuXG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBvdXRzaWRlSGFuZGxpbmcoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIC8vIGVsZW1lbnQgbm90IGluIHRoZSBET01cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBoaWRlIHRoZSBtZW51IGZvciBvdXRzaWRlIGNsaWNrXG4gICAgICAgIHRoaXMuaGlkZURyb3BEb3duKHRydWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcbiAgICBzY3JvbGwoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGxhY2VtZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZU9iajogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XG5cbiAgICAgICAgaWYgKGNoYW5nZU9ialtcInNlbGVjdE1vZGVsXCJdKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xhenlMb2FkaW5nICYmIHRoaXMuc2VsZWN0TW9kZWw/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5maWx0ZXJlZE9wdGlvbnM/Lmxlbmd0aCAmJiAhdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHByZWxvYWQgZGF0YSB0byBzaG93IHRoZSBsYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkTW9yZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNb2RlbEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc011bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0TW9kZWwgfHwgIXRoaXMuc2VsZWN0TW9kZWwubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnNlbGVjdE1vZGVsID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnNlbGVjdE1vZGVsID09PSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbjogc3RyaW5nIHwgb2JqZWN0KSB7XG4gICAgICAgIHRoaXMub3B0aW9uID0gb3B0aW9uO1xuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IHRoaXMucmV0dXJuT3B0aW9uID8gb3B0aW9uIDogdGhpcy5nZXRJZChvcHRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlT3B0aW9uKG9wdGlvblZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlU2VsZWN0KG9wdGlvblZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cblxuICAgIC8vIExvZ2ljIGZvciBzaW5nbGUgc2VsZWN0XG4gICAgcHJpdmF0ZSBzaW5nbGVTZWxlY3QodmFsdWU6IHN0cmluZyB8IG9iamVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdE1vZGVsID0gdmFsdWU7XG5cbiAgICAgICAgLy8gIEhpZGUgZHJvcGRvd24gaWYgc2luZ2xlIHNlbGVjdFxuICAgICAgICB0aGlzLmhpZGVEcm9wRG93bih0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlRXhwYW5kKCkge1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiO1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0V4cGFuZGVkICYmIHRoaXMuaXNMYXp5TG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9yZSh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIExvZ2ljIGZvciBtdWx0aXNlbGVjdFxuICAgIHByaXZhdGUgdG9nZ2xlT3B0aW9uKHZhbHVlOiBzdHJpbmcgfCBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0TW9kZWwpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0RWxlbWVudEluZGV4KHZhbHVlKTtcblxuICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVDaGlsZHJlbih0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWwuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlQ2hpbGRyZW4oZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVMYWJlbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlQ2hpbGRyZW4oY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9uIHx8ICF0aGlzLm9wdGlvbi5DaGlsZHJlbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9uLkNoaWxkcmVucy5mb3JFYWNoKChjaGlsZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSBjaGlsZCk7XG4gICAgICAgICAgICBjb25zdCBjaGlsZEluZGV4ID0gdGhpcy5zZWxlY3RNb2RlbC5maW5kSW5kZXgoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IGNoaWxkKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbiAmJiBjaGVja2VkICYmIGNoaWxkSW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbC5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNoZWNrZWQgJiYgY2hpbGRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbC5zcGxpY2UoY2hpbGRJbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmUgY2FsbCB0byBoYW5kbGUgbmVzdGVkIGNoaWxkcmVuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUNoaWxkcmVuKGNoZWNrZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVsZW1lbnRJbmRleCh2YWx1ZTogc3RyaW5nIHwgb2JqZWN0KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlSWQgPSB0aGlzLmdldElkKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdE1vZGVsLmZpbmRJbmRleChlbCA9PiB0aGlzLmdldElkKGVsKSA9PT0gdmFsdWVJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlbC5pbmRleE9mKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVBbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdE1vZGVsLmxlbmd0aCAhPT0gdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbCA9IHRoaXMub3B0aW9ucy5tYXAoZWwgPT4gdGhpcy5yZXR1cm5PcHRpb24gPyBlbCA6IHRoaXMuZ2V0SWQoZWwpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYXp5TG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2FuTG9hZE1vcmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9yZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlck9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuc2xpY2UoMCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLnNlYXJjaFRleHQsICdpJyk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHJlZ2V4LnRlc3QodGhpcy5nZXROYW1lKG9wdGlvbikpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTZWxlY3RlZChvcHRpb246IHN0cmluZyB8IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc01vZGVsRW1wdHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uSWQgPSB0aGlzLmdldElkKG9wdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TW9kZWwuZmluZEluZGV4KGVsID0+IHRoaXMuZ2V0SWQoZWwpID09PSBvcHRpb25JZCkgPj0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldElkKHRoaXMuc2VsZWN0TW9kZWwpID09PSBvcHRpb25JZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVMYWJlbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSB0aGlzLnNlbGVjdE1vZGVsLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ291bnQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsVGV4dCA9IHRoaXMuZ2V0TmFtZUZyb21WYWx1ZSh0aGlzLnNlbGVjdE1vZGVsWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFRleHQgPSBgJHtzZWxlY3RlZENvdW50fSBTZWxlY3RlZGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsVGV4dCA9IHRoaXMuZ2V0TmFtZUZyb21WYWx1ZSh0aGlzLnNlbGVjdE1vZGVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYW1lRnJvbVZhbHVlKHZhbDogc3RyaW5nIHwgb2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuT3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROYW1lKHZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xhenlMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnM/LmZpbmQoaSA9PiBpLmlkID09IHZhbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZShvcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgIXRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoZWwgPT4gdGhpcy5nZXRJZChlbCkgPT09IHZhbClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROYW1lKG9wdGlvbiA/PyB2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWUob3B0aW9uOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXlQcm9wKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tYmluZWRQcm9wcyA9IHRoaXMuZGlzcGxheVByb3Auc3BsaXQoXCJ8XCIpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoaSA9PiB0aGlzLmdldFJlY3Vyc2l2ZVByb3BlcnR5KG9wdGlvbiwgaSkpXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiIFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZWRQcm9wcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQXBwLVNlbGVjdDogd2hlbiB1c2luZyBvYmplY3RzIGFzIG1vZGVsLCBhIGRpc3BsYXlQcm9wIHZhbHVlIGlzIG1hbmRhdG9yeS4nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2V0SWQob3B0aW9uOiBzdHJpbmcgfCBvYmplY3QpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkUHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFJlY3Vyc2l2ZVByb3BlcnR5KG9wdGlvbiwgdGhpcy5pZFByb3ApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBcHAtU2VsZWN0OiB3aGVuIHVzaW5nIG9iamVjdHMgYXMgbW9kZWwsIGEgaWRQcm9wIHZhbHVlIGlzIG1hbmRhdG9yeS4nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJlY3Vyc2l2ZVByb3BlcnR5KG9iamVjdDogYW55LCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCB4KSA9PiB7XG4gICAgICAgICAgICBpZiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialt4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIG9iamVjdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhpZGVEcm9wRG93bih1c2VyQWN0aW9uOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gT25seSBlbWl0IGNsb3NlZCBldmVudCBpZiBpdCB3YXMgb3BlbiBBTkQgdHJpZ2dlcmVkIGJ5IHVzZXIgYWN0aW9uXG4gICAgICAgIGlmICh1c2VyQWN0aW9uICYmIHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCh0aGlzLnNlbGVjdE1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdENoYW5nZSgpIHtcbiAgICAgICAgLy8gbm90aWZ5IHdpdGggdGltZW91dFxuICAgICAgICAvLyBhbGxvdyBvdXRwdXQgcHJvcGVydHkgXCJlbmFibGVkXCIgYXBwbGllZCBieSBwYXJlbnQgZmlyc3QgYW5kIHRoZW4gZW1pdCB0aGUgb25DaGFuZ2VcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RNb2RlbCk7XG4gICAgICAgIH0sIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUGxhY2VtZW50KCkge1xuICAgICAgICAvLyB1cGRhdGUgbWVudSBwb3NpdGlvbiBiYXNlIG9uIHNjcm9sbFxuICAgICAgICB0aGlzLmlzVG9wTWVudURpcmVjdGlvbiA9IHRoaXMuZ2V0TWVudURpcmVjdGlvbigpID09PSBcInRvcFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudURpcmVjdGlvbigpOiBcImJvdHRvbVwiIHwgXCJ0b3BcIiB7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgdG9wID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgICAgIGlmICh0b3AgPiAoaGVpZ2h0IC8gMikpIHtcbiAgICAgICAgICAgIHJldHVybiBcInRvcFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFwiYm90dG9tXCJcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4TWVudUhlaWdodCgpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuZ2V0Q29udGFpbmVyRWxlbWVudCgpO1xuICAgICAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQgfHwgIWNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gXCIxOTBweFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGxldCBoZWlnaHQgPSBNYXRoLnJvdW5kKChwYXJlbnRIZWlnaHQgLyAyKSAtIDI1KTtcbiAgICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oMjE2LCBoZWlnaHQpO1xuICAgICAgICBoZWlnaHQgPSBNYXRoLm1heCg5NiwgaGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGAke2hlaWdodH1weGA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb250YWluZXJFbGVtZW50KCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbXBvbmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBwLXNlbGVjdFwiKS5pdGVtKDApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICByZXR1cm4gY29udGFpbmVyLm9mZnNldFBhcmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlQWRkTmV3T3B0aW9uKCkge1xuICAgICAgICB0aGlzLmFkZE5ld09wdGlvbi5lbWl0KHsgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCB9KVxuICAgICAgICB0aGlzLmhpZGVEcm9wRG93bih0cnVlKVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVSZW1vdmVPcHRpb24oKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlT3B0aW9uLmVtaXQoeyByZW1vdmVkOiB0cnVlIH0pXG4gICAgICAgIHRoaXMuaGlkZURyb3BEb3duKHRydWUpXG4gICAgfVxuXG5cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkTW9yZShzaG93U2VsZWN0ZWRPblRvcDogYm9vbGVhbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdOb3cgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxhenlMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBgbG9hZGVyIGlzIG5vdCBhdmFpbGFibGVgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuZmlsdGVyZWRPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbG9hZCBmaXJzdCAxMCByZWNvcmRzIGZvciB0aGUgdGhlIGZpcnN0IHRpbWVcbiAgICAgICAgICAgIGNvbnN0IGxpbWl0ID0gKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PSAwKSA/IDEwIDogMTAwO1xuICAgICAgICAgICAgbGV0IG5ld0l0ZW1zID0gYXdhaXQgdGhpcy5sYXp5TG9hZGVyKHsgdGV4dDogdGhpcy5zZWFyY2hUZXh0IHx8IFwiXCIgfSwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoLCBsaW1pdCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2FuTG9hZE1vcmUgPSAobmV3SXRlbXMubGVuZ3RoID09IGxpbWl0KTtcblxuICAgICAgICAgICAgLy8gdGhlIHNlbGVjdE1vZGVsIGNvbnRhaW5zIHRoZSBzZWxlY3RlZCBpdGVtcyBpZHNcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrZWRJZHMgPSB0aGlzLnNlbGVjdE1vZGVsIGFzIHN0cmluZ1tdO1xuXG4gICAgICAgICAgICBpZiAoc2hvd1NlbGVjdGVkT25Ub3AgJiYgY2hlY2tlZElkcz8ubGVuZ3RoKSB7XG5cbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgdGhlIGNoZWNrZWQgaXRlbXMgZmlyc3RcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZmlsdGVyZWRPcHRpb25zLmZpbHRlcihpID0+ICFjaGVja2VkSWRzLmluY2x1ZGVzKGkuaWQpKTtcbiAgICAgICAgICAgICAgICBuZXdJdGVtcyA9IG5ld0l0ZW1zLmZpbHRlcihpID0+ICFjaGVja2VkSWRzLmluY2x1ZGVzKGkuaWQgYXMgc3RyaW5nKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBhZGQgYWxsIGNoZWNrZWQgaXRlbXMgdG8gdGhlIHRvcCAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkSXRlbXMgPSBhd2FpdCB0aGlzLmxhenlMb2FkZXIoeyBpZHM6IGNoZWNrZWRJZHMgfSwgMCwgMTAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGNoZWNrZWRJdGVtcy5jb25jYXQodGhpcy5maWx0ZXJlZE9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbCgpO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIC8vIHRoZSBmaWx0ZXJlZERhdGFTb3VyY2UgY29udGFpbnMgdGhlIGl0ZW1zIHRoYXQgaXMgdmlzaWxpYmxlIHRvIHVzZXIgYXQgdGhlIGN1cnJlbnQgbW9tZW50XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZmlsdGVyZWRPcHRpb25zLmNvbmNhdChuZXdJdGVtcyk7XG5cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ05vdyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC1zZWxlY3RcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLXNlbGVjdC10b2dnbGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmQoKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzRXhwYW5kZWR9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICA8aSAqbmdJZj1cImN1c3RvbUljb25TdGFydFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYXBwLXNlbGVjdC1pY29uLXN0YXJ0XCI+e3tjdXN0b21JY29uU3RhcnR9fTwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNb2RlbEVtcHR5KClcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e3BsYWNlaG9sZGVyIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNdWx0aXNlbGVjdCAmJiAhaXNNb2RlbEVtcHR5KClcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ2YWx1ZVRlbXBsYXRlICYmIHNlbGVjdE1vZGVsWzBdOyBlbHNlIHRwbFZhbHVlVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInZhbHVlVGVtcGxhdGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzZWxlY3RNb2RlbDogc2VsZWN0TW9kZWwsIGxhYmVsVGV4dDogbGFiZWxUZXh0IH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdHBsVmFsdWVUZXh0PlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBsYWJlbFRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgIWlzTW9kZWxFbXB0eSgpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFiZWxUZXh0IHwgdHJhbnNsYXRlICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGkgKm5nSWY9XCIhY3VzdG9tSWNvblwiXG4gICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYXBwLXNlbGVjdC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XG4gICAgICAgIDxpICpuZ0lmPVwiY3VzdG9tSWNvblwiXG4gICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgY3VzdG9tLWljb25cIlxuICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiY3VzdG9tSWNvbkNvbG9yXCI+e3tjdXN0b21JY29ufX08L2k+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudSBhcHAtc2VsZWN0LWRyb3Bkb3duLXdyYXBwZXJcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Nob3ctdG9wJzogaXNUb3BNZW51RGlyZWN0aW9uIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0V4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51LWhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc1NlYXJjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tU2VhcmNoIG9wdGlvbnMtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8emVuLXNlYXJjaC1ib3ggWyh0ZXh0KV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+PC96ZW4tc2VhcmNoLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiYnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25UZW1wbGF0ZS50ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51LWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLU5vIG9wdGlvbnMgZm91bmQtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLW9wdGlvbnMtZm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWZpbHRlcmVkT3B0aW9ucy5sZW5ndGggJiYgIWlzTG9hZGluZ05vd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ05vIG1hdGNoaW5nIG9wdGlvbnMgZm91bmQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS1TZWxlY3QgQWxsIE9wdGlvbi0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3ggc2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmICFzZWFyY2hUZXh0ICYmICFpc0xhenlMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tY2hlY2tib3ggW2NoZWNrZWRdPVwic2VsZWN0TW9kZWwubGVuZ3RoID09PSBvcHRpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdE1vZGVsLmxlbmd0aCAhPT0gb3B0aW9ucy5sZW5ndGggJiYgc2VsZWN0TW9kZWwubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVWYWx1ZUNoYW5nZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTZWxlY3QgQWxsJyB8IHRyYW5zbGF0ZVwiPjwvemVuLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tU2luZ2xlIHNlbGVjdCBPcHRpb25zLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZUFkZE5ld09wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQWRkTmV3T3B0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5ld09wdGlvblRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbmV3T3B0aW9uVGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFuZXdPcHRpb25UZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FkZCBOZXcnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWl0ZW0gcmVtb3ZlLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVSZW1vdmVPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVJlbW92ZU9wdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZW1vdmVPcHRpb25UZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlbW92ZU9wdGlvblRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcmVtb3ZlT3B0aW9uVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydSZW1vdmUgU2VsZWN0ZWQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZU9wdGlvbkNsaWNrKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogaXNTZWxlY3RlZChvcHRpb24pIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aW9uLWl0ZW0tdHJ1bmNhdGVdPVwiaXNUcnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSB0cGxPcHRpb25UZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlLnRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogb3B0aW9uIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0cGxPcHRpb25UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0TmFtZShvcHRpb24pIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tTXVsdGlzZWxlY3QgT3B0aW9ucy0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3B0aW9uQ2xpY2sob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tY2hlY2tib3ggKm5nSWY9XCJpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZ2V0TmFtZShvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlVmFsdWVDaGFuZ2VdPVwidHJ1ZVwiPjwvemVuLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhenlMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbkxvYWRNb3JlICYmICFpc0xvYWRpbmdOb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2FkTW9yZShmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXN0cm9rZWQgZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snTG9hZCBNb3JlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdOb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2FkZXItbW9yZS1zcGlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tc3Bpbm5lciBzaXplPVwic21hbGxcIj48L3plbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2216,7 +2216,10 @@ class ZenduSelectComponent {
2216
2216
  getName(option) {
2217
2217
  if (typeof option === 'object') {
2218
2218
  if (this.displayProp) {
2219
- return this.GetRecursiveProperty(option, this.displayProp);
2219
+ const combinedProps = this.displayProp.split("|")
2220
+ .map(i => this.getRecursiveProperty(option, i))
2221
+ .join(" ");
2222
+ return combinedProps;
2220
2223
  }
2221
2224
  else {
2222
2225
  console.error('App-Select: when using objects as model, a displayProp value is mandatory.');
@@ -2230,7 +2233,7 @@ class ZenduSelectComponent {
2230
2233
  getId(option) {
2231
2234
  if (typeof option === 'object') {
2232
2235
  if (this.idProp) {
2233
- return this.GetRecursiveProperty(option, this.idProp);
2236
+ return this.getRecursiveProperty(option, this.idProp);
2234
2237
  }
2235
2238
  else {
2236
2239
  console.error('App-Select: when using objects as model, a idProp value is mandatory.');
@@ -2241,7 +2244,7 @@ class ZenduSelectComponent {
2241
2244
  return option;
2242
2245
  }
2243
2246
  }
2244
- GetRecursiveProperty(object, path) {
2247
+ getRecursiveProperty(object, path) {
2245
2248
  return path.split('.').reduce((obj, x) => {
2246
2249
  if (obj) {
2247
2250
  return obj[x];