@magic-xpa/angular 4.1100.0-dev4110.253 → 4.1100.0-dev4110.257

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.
Files changed (35) hide show
  1. package/esm2022/src/controls.metadata.model.mjs +1 -1
  2. package/esm2022/src/services/OverlayWindowService.mjs +1 -1
  3. package/esm2022/src/services/StylesMapManager.mjs +1 -1
  4. package/esm2022/src/services/accessor.magic.service.mjs +1 -1
  5. package/esm2022/src/services/commands-collector.magic.service.mjs +1 -1
  6. package/esm2022/src/services/component-list.magic.service.mjs +1 -1
  7. package/esm2022/src/services/engine.magic.service.mjs +1 -1
  8. package/esm2022/src/services/magic-color.service.mjs +1 -1
  9. package/esm2022/src/services/mg-date-adapter.mjs +1 -1
  10. package/esm2022/src/services/router-commands.magic.service.mjs +1 -1
  11. package/esm2022/src/services/subform.magic.service.mjs +1 -1
  12. package/esm2022/src/services/table.magic.service.mjs +1 -1
  13. package/esm2022/src/services/task.magics.service.mjs +1 -1
  14. package/esm2022/src/ui/GuiInteractiveExecutor.mjs +1 -1
  15. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +1 -1
  16. package/esm2022/src/ui/directives/magic/nocontrol.magic.directive.mjs +1 -1
  17. package/esm2022/src/ui/directives/magic/row.magic.directive.mjs +1 -1
  18. package/esm2022/src/ui/directives/magic.directive.mjs +6 -3
  19. package/esm2022/src/ui/directives/mgformat.magic.directive.mjs +1 -1
  20. package/esm2022/src/ui/directives/range-validator.magic.directive.mjs +1 -1
  21. package/esm2022/src/ui/magic-confirmationBox.mjs +1 -1
  22. package/esm2022/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +1 -1
  23. package/esm2022/src/ui/magic-modal/magic-overlay-container.mjs +1 -1
  24. package/esm2022/src/ui/magic-root.component.mjs +1 -1
  25. package/esm2022/src/ui/mgerror.magic.component.mjs +1 -1
  26. package/esm2022/src/ui/pipes/date.magic.pipe.mjs +1 -1
  27. package/esm2022/src/ui/pipes/time.magic.pipe.mjs +1 -1
  28. package/esm2022/src/ui/pipes/time24.magic.pipe.mjs +1 -1
  29. package/esm2022/src/ui/router-container.magic.component.mjs +1 -1
  30. package/esm2022/src/ui/task-base.magic.component.mjs +1 -1
  31. package/esm2022/src/ui/utils.mjs +1 -1
  32. package/fesm2022/magic-xpa-angular.mjs +5 -2
  33. package/fesm2022/magic-xpa-angular.mjs.map +1 -1
  34. package/package.json +3 -3
  35. package/src/ui/directives/magic.directive.d.ts +2 -1
@@ -180,4 +180,4 @@ export var HtmlClasses;
180
180
  HtmlClasses["FocusColor"] = "focuscolor";
181
181
  HtmlClasses["HintColor"] = "hintcolor";
182
182
  })(HtmlClasses || (HtmlClasses = {}));
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMubWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9jb250cm9scy5tZXRhZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU16RCxNQUFNLE9BQU8sZUFBZTtJQUMxQixXQUFXLENBQVM7SUFDcEIsUUFBUSxDQUFtQjtJQUMzQixVQUFVLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakQsVUFBVSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzlDLFNBQVMsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM3QyxZQUFZLENBQVM7SUFDckIsT0FBTyxDQUFXO0lBQ2xCLGNBQWMsQ0FBVTtJQUd4QixjQUFjLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0MsZ0JBQWdCLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFM0QsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBRWpCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUV4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UUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBQyxRQUFRLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBRUY7QUFLRCxNQUFNLENBQU4sSUFBWSxXQUtYO0FBTEQsV0FBWSxXQUFXO0lBQ3JCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0lBQ2Isd0NBQXVCLENBQUE7SUFDdkIsc0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUxXLFdBQVcsS0FBWCxXQUFXLFFBS3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdG9yYWdlQXR0cmlidXRlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0h0bWxQcm9wZXJ0aWVzLCBDdXN0b21WYWxpZGF0b3J9IGZyb20gIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29udHJvbE1ldGFkYXRhIHtcclxuICBjb250cm9sVHlwZTogc3RyaW5nO1xyXG4gIGRhdGFUeXBlOiBTdG9yYWdlQXR0cmlidXRlO1xyXG4gIHByb3BlcnRpZXM6IE1hcDxIdG1sUHJvcGVydGllcywgYW55PiA9IG5ldyBNYXAoKTtcclxuICBjbGFzc2VzTWFwOiBNYXA8SHRtbENsYXNzZXMsIGFueT4gPSBuZXcgTWFwKCk7XHJcbiAgc3R5bGVzTWFwOiBNYXA8SHRtbENsYXNzZXMsIGFueT4gPSBuZXcgTWFwKCk7XHJcbiAgcmVtb3ZlZENsYXNzOiBzdHJpbmc7XHJcbiAgY2xhc3Nlczogc3RyaW5nICA7XHJcbiAgcmFuZ2VWYWxpZGF0b3I6IGJvb2xlYW47XHJcblxyXG4gIC8vIHVzZXIgcHJvcGVydGllc1xyXG4gIHVzZXJQcm9wZXJ0aWVzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBjdXN0b21WYWxpZGF0b3JzOiBNYXA8c3RyaW5nLCBDdXN0b21WYWxpZGF0b3I+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBzZXRDbGFzcyhrZXksIHZhbHVlKSB7XHJcbiAgICAvLyBmb3Igbm8tY29udHJvbCAtIGhvbGQgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRvIGJlIHJlbW92ZWQgbGF0ZXJcclxuICAgIGlmKHRoaXMuY2xhc3Nlc01hcC5oYXMoa2V5KSkge1xyXG4gICAgICB0aGlzLnJlbW92ZWRDbGFzcyA9IHRoaXMuY2xhc3Nlc01hcC5nZXQoa2V5KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsYXNzZXNNYXAuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG5cclxuICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMuY2xhc3Nlc01hcCkge1xyXG4gICAgICByZXN1bHQgKz0gdmFsdWUgKyAnICc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsYXNzZXMgPSByZXN1bHQ7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGUoa2V5LCB2YWx1ZSkge1xyXG4gICAgdGhpcy5zdHlsZXNNYXAuc2V0KGtleSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29udHJvbHNNZXRhZGF0YSB7XHJcblxyXG4gIC8vdmFsdWVzIG9mIGNvbnRyb2xcclxuICB2YWx1ZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XHJcbiAgLy8gZGljdGlvbmFyeSBvZiBjb250cm9scyB3aXRoIHRoZXJlIHByb3BlcnRpZXNcclxuICBDb250cm9sc1Byb3BlcnRpZXM6IE1hcDxzdHJpbmcsIENvbnRyb2xNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHJvd0lkOiBzdHJpbmc7XHJcbiAgaXNDcmVhdGVkID0gZmFsc2U7XHJcbiAgaXNFZGl0aW5nID0gZmFsc2U7XHJcblxyXG4gIGdldCBWYWx1ZXMoKXtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlcztcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2xNZXRhZGF0YShjb250cm9sSWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLkNvbnRyb2xzUHJvcGVydGllcy5oYXMoY29udHJvbElkKSlcclxuICAgICAgdGhpcy5Db250cm9sc1Byb3BlcnRpZXMuc2V0KGNvbnRyb2xJZCwgbmV3IENvbnRyb2xNZXRhZGF0YSgpKTtcclxuICAgIHJldHVybiB0aGlzLkNvbnRyb2xzUHJvcGVydGllcy5nZXQoY29udHJvbElkKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgdXBkYXRlKG9iajphbnkpIHtcclxuICAgIC8vc2hvdWxkIHdlIGtlZXAgdGhlIHZhbHVlcyBoZXJlID9cclxuICAgIC8vdGhpcy52YWx1ZXMgPSBvYmouQ29udHJvbHNWYWx1ZXM7XHJcbiAgICBsZXQgcHJvcHM6IHsgW2lkOiBzdHJpbmddOiB7IFtpZDogc3RyaW5nXTogc3RyaW5nOyB9IH0gPSBvYmouQ29udHJvbHNNZXRhRGF0YTtcclxuICAgIGZvciAobGV0IGNvbnRyb2xOYW1lIGluIHByb3BzKSB7XHJcbiAgICAgIGlmICghdGhpcy5Db250cm9sc1Byb3BlcnRpZXMuaGFzKGNvbnRyb2xOYW1lKSlcclxuICAgICAgICB0aGlzLkNvbnRyb2xzUHJvcGVydGllcy5zZXQoY29udHJvbE5hbWUsIG5ldyBDb250cm9sTWV0YWRhdGEoKSk7XHJcbiAgICAgIGxldCBjb250cm9sTWV0YURhdGE6IENvbnRyb2xNZXRhZGF0YSA9IHRoaXMuQ29udHJvbHNQcm9wZXJ0aWVzLmdldChjb250cm9sTmFtZSk7XHJcbiAgICAgIGZvciAobGV0IHByb3BlcnR5IGluIG9iai5Db250cm9sc01ldGFEYXRhW2NvbnRyb2xOYW1lXS5Qcm9wZXJ0aWVzKVxyXG4gICAgICAgIGNvbnRyb2xNZXRhRGF0YVtwcm9wZXJ0eV0gPSBvYmouQ29udHJvbHNNZXRhRGF0YVtjb250cm9sTmFtZV0uUHJvcGVydGllc1twcm9wZXJ0eV07XHJcbiAgICAgIGNvbnRyb2xNZXRhRGF0YS5jb250cm9sVHlwZSA9IG9iai5Db250cm9sc01ldGFEYXRhW2NvbnRyb2xOYW1lXS5UeXBlO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgY29udHJvbE5hbWUgaW4gb2JqLkNvbnRyb2xzVmFsdWVzKSB7XHJcbiAgICAgIHRoaXMuc2V0VmFsdWUoY29udHJvbE5hbWUsIG9iai5Db250cm9sc1ZhbHVlc1tjb250cm9sTmFtZV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgIHtcclxuICAgIHRoaXMudmFsdWVzLnNldChjb250cm9sTmFtZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHkoY29udHJvbElkOiBzdHJpbmcsIHByb3A6IEh0bWxQcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAodGhpcy5Db250cm9sc1Byb3BlcnRpZXMuaGFzKGNvbnRyb2xJZCkpIHtcclxuICAgICAgaWYgKHRoaXMuQ29udHJvbHNQcm9wZXJ0aWVzLmdldChjb250cm9sSWQpLnByb3BlcnRpZXMuaGFzKHByb3ApKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQ29udHJvbHNQcm9wZXJ0aWVzLmdldChjb250cm9sSWQpLnByb3BlcnRpZXMuZ2V0KHByb3ApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG5cclxuICBnZXRWYWx1ZShjb250cm9sTmFtZTogc3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlcy5nZXQoY29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJlY29yZHMge1xyXG4gIGRhdGE6IE1hcDxudW1iZXIsIENvbnRyb2xzTWV0YWRhdGE+ID0gbmV3IE1hcCgpO1xyXG4gIGxpc3Q6IENvbnRyb2xzTWV0YWRhdGFbXSA9IFtdOyAvL3VzZWQgZm9yIHNlcXVlbnRpYWwgYWNjZXNzIGluIHRhYmxlXHJcbiAgaW5jbHVkZXNGaXJzdDogYm9vbGVhbjtcclxuICBpbmNsdWRlc0xhc3Q6IGJvb2xlYW47XHJcbiAgZ3VpVG9wSW5kZXg6IG51bWJlcjtcclxuICByZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc6IG51bWJlciA9IDA7XHJcbiAgaXNFbXB0eURhdGFWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2l6ZVVwZGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy91c2VkIGZvciBldmFsdWF0aW5nIHRoZSBSZWNvcmRzU2l6ZUNoYW5nZS5cclxuXHJcbiAgZ2V0Um93KGR2Um93SWQ6IG51bWJlcik6IENvbnRyb2xzTWV0YWRhdGEge1xyXG4gICAgcmV0dXJuIHRoaXMubGlzdFtkdlJvd0lkICsgdGhpcy5yZWNvcmRzQmVmb3JlQ3VycmVudFZpZXddO1xyXG4gIH1cclxuXHJcbiAgbWFya1Jvd0FzQ3JlYXRlZChndWlSb3dJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoZ3VpUm93SWQgPCB0aGlzLmxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWRkUm93KGd1aVJvd0lkKTtcclxuICAgICAgdGhpcy5kYXRhLmdldChndWlSb3dJZCkuaXNDcmVhdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hcmtSb3dBc05vdENyZWF0ZWQoZ3VpUm93SWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGd1aVJvd0lkIDwgdGhpcy5saXN0Lmxlbmd0aClcclxuICAgICAgdGhpcy5kYXRhLmdldChndWlSb3dJZCkuaXNDcmVhdGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNSb3dDcmVhdGVkKGd1aVJvd0lkOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChndWlSb3dJZCA8IHRoaXMubGlzdC5sZW5ndGgpIHtcclxuICAgICAgaWYgKCF0aGlzLmRhdGEuaGFzKGd1aVJvd0lkKSB8fCBpc051bGxPclVuZGVmaW5lZCh0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKSkpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoZ3VpUm93SWQpLmlzQ3JlYXRlZDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgKiBmb3Igcm93IGVkaXRpbmdcclxuICAqICovXHJcbiAgc3RhcnRSb3dFZGl0aW5nKGd1aVJvd0lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChndWlSb3dJZCA8IHRoaXMubGlzdC5sZW5ndGggJiYgdGhpcy5kYXRhLmhhcyhndWlSb3dJZCkpXHJcbiAgICAgIHRoaXMuZGF0YS5nZXQoZ3VpUm93SWQpLmlzRWRpdGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICogc3RvcCByb3cgZWRpdGluZyBvbiByb3cgSWRcclxuICAqICovXHJcbiAgc3RvcFJvd0VkaXRpbmcoZ3VpUm93SWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGd1aVJvd0lkIDwgdGhpcy5saXN0Lmxlbmd0aCAmJiB0aGlzLmRhdGEuaGFzKGd1aVJvd0lkKSlcclxuICAgICAgdGhpcy5kYXRhLmdldChndWlSb3dJZCkuaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICogcmV0dXJuIGlmIHJvdyBpcyBpbiBlZGl0aW5nXHJcbiAgKiBDYWxsZWQgYnkgdGhlIEhUTUwgY29kZSwgc28gcGFyYW1ldGVyIGlzIGEgc3RyaW5nLCBub3QgYSBudW1lYnJcclxuICAqICovXHJcbiAgaXNSb3dJblJvd0VkaXRpbmcoZ3VpUm93SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCtndWlSb3dJZCA8IHRoaXMubGlzdC5sZW5ndGgpIHtcclxuICAgICAgaWYgKCF0aGlzLmRhdGEuaGFzKCtndWlSb3dJZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kYXRhLmdldCgrZ3VpUm93SWQpKSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmdldCgrZ3VpUm93SWQpLmlzRWRpdGluZztcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZShvYmopIHtcclxuXHJcbiAgICBpZiAob2JqLmZ1bGxSZWZyZXNoICYmIG9iai5yb3dzLmxlbmd0aCAhPSB0aGlzLmxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5saXN0ID0gbmV3IEFycmF5PENvbnRyb2xzTWV0YWRhdGE+KCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCByb3dJZCBpbiBvYmoucm93cykge1xyXG4gICAgICBpZiAoIXRoaXMuZGF0YS5oYXMoK3Jvd0lkKSB8fCB0aGlzLmRhdGEuZ2V0KCtyb3dJZCkgPT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5kYXRhLnNldCgrcm93SWQsIG5ldyBDb250cm9sc01ldGFkYXRhKCkpO1xyXG4gICAgICBsZXQgY29udHJvbHNEYXRhOiBDb250cm9sc01ldGFkYXRhID0gdGhpcy5kYXRhLmdldCgrcm93SWQpO1xyXG4gICAgICBjb250cm9sc0RhdGEudXBkYXRlKG9iai5yb3dzW3Jvd0lkXSk7XHJcbiAgICAgIGNvbnRyb2xzRGF0YS5yb3dJZCA9IHJvd0lkO1xyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIHRoaXMuZGF0YSkge1xyXG4gICAgICB0aGlzLmxpc3Rba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNpemUobGVuOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoICE9IGxlbikge1xyXG4gICAgICBpZiAobGVuIDwgdGhpcy5saXN0Lmxlbmd0aCkge1xyXG4gICAgICAgIC8vcmVtb3ZlIHJvd3NcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVuOyBpIDwgdGhpcy5saXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEuZGVsZXRlKGkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5saXN0Lmxlbmd0aCA9IGxlbjtcclxuICAgICAgdGhpcy5zaXplVXBkYXRlZCA9IHRydWU7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIGNyZWFycyBkYXRhIGZvciB0aGUgZmlyc3QgcmVjb3JkXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgY2xlYXJGaXJzdFRhYmxlUmVjb3JkKHRlbXBsYXRlOiB7IFtpZDogc3RyaW5nXTogc3RyaW5nOyB9KSB7XHJcbiAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRlbXBsYXRlKSB7XHJcbiAgICAgICAgaWYgKHRlbXBsYXRlW2tleV0gPT0gJzEnICYmIHRoaXMubGlzdFswXS5Db250cm9sc1Byb3BlcnRpZXMuaGFzKGtleSkpIHtcclxuICAgICAgICAgIHRoaXMubGlzdFswXS5Db250cm9sc1Byb3BlcnRpZXMuZ2V0KGtleSkucHJvcGVydGllcyA9ICBuZXcgTWFwKCkgO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUm93KGd1aVJvd0lkOiBudW1iZXIpIHtcclxuICAgIGlmIChndWlSb3dJZCAhPT0gMCB8fCAhdGhpcy5kYXRhLmhhcyhndWlSb3dJZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kYXRhLmdldChndWlSb3dJZCkpKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5zZXQoZ3VpUm93SWQsIG5ldyBDb250cm9sc01ldGFkYXRhKCkpO1xyXG4gICAgICB0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKS5yb3dJZCA9IFwiXCIrZ3VpUm93SWQ7XHJcbiAgICAgIHRoaXMubGlzdFtndWlSb3dJZF0gPSB0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUZpcnN0KCkge1xyXG4gICAgdGhpcy5hZGRSb3coMCk7XHJcbiAgfVxyXG5cclxuICBmcm9tSnNvbihkYXRhOiBzdHJpbmcpIHtcclxuICAgIHZhciBvYmogPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgdGhpcy51cGRhdGUob2JqKTtcclxuICB9XHJcblxyXG4gIHNldEd1aVRvcEluZGV4KHRvcEluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZ3VpVG9wSW5kZXggPSB0b3BJbmRleDtcclxuICB9XHJcblxyXG4gIGdldEd1aVRvcEluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5ndWlUb3BJbmRleDtcclxuICB9XHJcblxyXG59XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuZXhwb3J0IGVudW0gSHRtbENsYXNzZXMge1xyXG4gIENvbG9yID0gXCJjb2xvclwiLFxyXG4gIGZvbnQgPSBcImZvbnRcIixcclxuICBGb2N1c0NvbG9yPVwiZm9jdXNjb2xvclwiLFxyXG4gIEhpbnRDb2xvcj1cImhpbnRjb2xvclwiLFxyXG59XHJcbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMubWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9jb250cm9scy5tZXRhZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU16RCxNQUFNLE9BQU8sZUFBZTtJQUMxQixXQUFXLENBQVM7SUFDcEIsUUFBUSxDQUFtQjtJQUMzQixVQUFVLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakQsVUFBVSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzlDLFNBQVMsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM3QyxZQUFZLENBQVM7SUFDckIsT0FBTyxDQUFXO0lBQ2xCLGNBQWMsQ0FBVTtJQUd4QixjQUFjLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0MsZ0JBQWdCLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFM0QsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBRWpCLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFFeEIsQ0FBQztJQUVELFFBQVEsQ0FB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QyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Q0FFRjtBQUtELE1BQU0sQ0FBTixJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYix3Q0FBdUIsQ0FBQTtJQUN2QixzQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsV0FBVyxLQUFYLFdBQVcsUUFLdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7SHRtbFByb3BlcnRpZXMsIEN1c3RvbVZhbGlkYXRvcn0gZnJvbSAgXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sTWV0YWRhdGEge1xyXG4gIGNvbnRyb2xUeXBlOiBzdHJpbmc7XHJcbiAgZGF0YVR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGU7XHJcbiAgcHJvcGVydGllczogTWFwPEh0bWxQcm9wZXJ0aWVzLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG4gIGNsYXNzZXNNYXA6IE1hcDxIdG1sQ2xhc3NlcywgYW55PiA9IG5ldyBNYXAoKTtcclxuICBzdHlsZXNNYXA6IE1hcDxIdG1sQ2xhc3NlcywgYW55PiA9IG5ldyBNYXAoKTtcclxuICByZW1vdmVkQ2xhc3M6IHN0cmluZztcclxuICBjbGFzc2VzOiBzdHJpbmcgIDtcclxuICByYW5nZVZhbGlkYXRvcjogYm9vbGVhbjtcclxuXHJcbiAgLy8gdXNlciBwcm9wZXJ0aWVzXHJcbiAgdXNlclByb3BlcnRpZXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGN1c3RvbVZhbGlkYXRvcnM6IE1hcDxzdHJpbmcsIEN1c3RvbVZhbGlkYXRvcj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHNldENsYXNzKGtleSwgdmFsdWUpIHtcclxuICAgIC8vIGZvciBuby1jb250cm9sIC0gaG9sZCB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgcmVtb3ZlZCBsYXRlclxyXG4gICAgaWYodGhpcy5jbGFzc2VzTWFwLmhhcyhrZXkpKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlZENsYXNzID0gdGhpcy5jbGFzc2VzTWFwLmdldChrZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xhc3Nlc01hcC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICBsZXQgcmVzdWx0ID0gJyc7XHJcblxyXG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcy5jbGFzc2VzTWFwKSB7XHJcbiAgICAgIHJlc3VsdCArPSB2YWx1ZSArICcgJztcclxuICAgIH1cclxuICAgIHRoaXMuY2xhc3NlcyA9IHJlc3VsdDtcclxuXHJcbiAgfVxyXG5cclxuICBzZXRTdHlsZShrZXksIHZhbHVlKSB7XHJcbiAgICB0aGlzLnN0eWxlc01hcC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sc01ldGFkYXRhIHtcclxuXHJcbiAgLy92YWx1ZXMgb2YgY29udHJvbFxyXG4gIHZhbHVlczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICAvLyBkaWN0aW9uYXJ5IG9mIGNvbnRyb2xzIHdpdGggdGhlcmUgcHJvcGVydGllc1xyXG4gIENvbnRyb2xzUHJvcGVydGllczogTWFwPHN0cmluZywgQ29udHJvbE1ldGFkYXRhPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgcm93SWQ6IHN0cmluZztcclxuICBpc0NyZWF0ZWQgPSBmYWxzZTtcclxuICBpc0VkaXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IFZhbHVlcygpe1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbE1ldGFkYXRhKGNvbnRyb2xJZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuQ29udHJvbHNQcm9wZXJ0aWVzLmhhcyhjb250cm9sSWQpKVxyXG4gICAgICB0aGlzLkNvbnRyb2xzUHJvcGVydGllcy5zZXQoY29udHJvbElkLCBuZXcgQ29udHJvbE1ldGFkYXRhKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuQ29udHJvbHNQcm9wZXJ0aWVzLmdldChjb250cm9sSWQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB1cGRhdGUob2JqOmFueSkge1xyXG4gICAgLy9zaG91bGQgd2Uga2VlcCB0aGUgdmFsdWVzIGhlcmUgP1xyXG4gICAgLy90aGlzLnZhbHVlcyA9IG9iai5Db250cm9sc1ZhbHVlcztcclxuICAgIGxldCBwcm9wczogeyBbaWQ6IHN0cmluZ106IHsgW2lkOiBzdHJpbmddOiBzdHJpbmc7IH0gfSA9IG9iai5Db250cm9sc01ldGFEYXRhO1xyXG4gICAgZm9yIChsZXQgY29udHJvbE5hbWUgaW4gcHJvcHMpIHtcclxuICAgICAgaWYgKCF0aGlzLkNvbnRyb2xzUHJvcGVydGllcy5oYXMoY29udHJvbE5hbWUpKVxyXG4gICAgICAgIHRoaXMuQ29udHJvbHNQcm9wZXJ0aWVzLnNldChjb250cm9sTmFtZSwgbmV3IENvbnRyb2xNZXRhZGF0YSgpKTtcclxuICAgICAgbGV0IGNvbnRyb2xNZXRhRGF0YTogQ29udHJvbE1ldGFkYXRhID0gdGhpcy5Db250cm9sc1Byb3BlcnRpZXMuZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgICAgZm9yIChsZXQgcHJvcGVydHkgaW4gb2JqLkNvbnRyb2xzTWV0YURhdGFbY29udHJvbE5hbWVdLlByb3BlcnRpZXMpXHJcbiAgICAgICAgY29udHJvbE1ldGFEYXRhW3Byb3BlcnR5XSA9IG9iai5Db250cm9sc01ldGFEYXRhW2NvbnRyb2xOYW1lXS5Qcm9wZXJ0aWVzW3Byb3BlcnR5XTtcclxuICAgICAgY29udHJvbE1ldGFEYXRhLmNvbnRyb2xUeXBlID0gb2JqLkNvbnRyb2xzTWV0YURhdGFbY29udHJvbE5hbWVdLlR5cGU7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBjb250cm9sTmFtZSBpbiBvYmouQ29udHJvbHNWYWx1ZXMpIHtcclxuICAgICAgdGhpcy5zZXRWYWx1ZShjb250cm9sTmFtZSwgb2JqLkNvbnRyb2xzVmFsdWVzW2NvbnRyb2xOYW1lXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCAge1xyXG4gICAgdGhpcy52YWx1ZXMuc2V0KGNvbnRyb2xOYW1lLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9wZXJ0eShjb250cm9sSWQ6IHN0cmluZywgcHJvcDogSHRtbFByb3BlcnRpZXMpIHtcclxuICAgIGlmICh0aGlzLkNvbnRyb2xzUHJvcGVydGllcy5oYXMoY29udHJvbElkKSkge1xyXG4gICAgICBpZiAodGhpcy5Db250cm9sc1Byb3BlcnRpZXMuZ2V0KGNvbnRyb2xJZCkucHJvcGVydGllcy5oYXMocHJvcCkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5Db250cm9sc1Byb3BlcnRpZXMuZ2V0KGNvbnRyb2xJZCkucHJvcGVydGllcy5nZXQocHJvcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFZhbHVlKGNvbnRyb2xOYW1lOiBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldChjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUmVjb3JkcyB7XHJcbiAgZGF0YTogTWFwPG51bWJlciwgQ29udHJvbHNNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XHJcbiAgbGlzdDogQ29udHJvbHNNZXRhZGF0YVtdID0gW107IC8vdXNlZCBmb3Igc2VxdWVudGlhbCBhY2Nlc3MgaW4gdGFibGVcclxuICBpbmNsdWRlc0ZpcnN0OiBib29sZWFuO1xyXG4gIGluY2x1ZGVzTGFzdDogYm9vbGVhbjtcclxuICBndWlUb3BJbmRleDogbnVtYmVyO1xyXG4gIHJlY29yZHNCZWZvcmVDdXJyZW50VmlldzogbnVtYmVyID0gMDtcclxuICBpc0VtcHR5RGF0YVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaXplVXBkYXRlZDogYm9vbGVhbiA9IGZhbHNlOyAvL3VzZWQgZm9yIGV2YWx1YXRpbmcgdGhlIFJlY29yZHNTaXplQ2hhbmdlLlxyXG5cclxuICBnZXRSb3coZHZSb3dJZDogbnVtYmVyKTogQ29udHJvbHNNZXRhZGF0YSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0W2R2Um93SWQgKyB0aGlzLnJlY29yZHNCZWZvcmVDdXJyZW50Vmlld107XHJcbiAgfVxyXG5cclxuICBtYXJrUm93QXNDcmVhdGVkKGd1aVJvd0lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChndWlSb3dJZCA8IHRoaXMubGlzdC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hZGRSb3coZ3VpUm93SWQpO1xyXG4gICAgICB0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKS5pc0NyZWF0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFya1Jvd0FzTm90Q3JlYXRlZChndWlSb3dJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoZ3VpUm93SWQgPCB0aGlzLmxpc3QubGVuZ3RoKVxyXG4gICAgICB0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKS5pc0NyZWF0ZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBpc1Jvd0NyZWF0ZWQoZ3VpUm93SWQ6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGd1aVJvd0lkIDwgdGhpcy5saXN0Lmxlbmd0aCkge1xyXG4gICAgICBpZiAoIXRoaXMuZGF0YS5oYXMoZ3VpUm93SWQpIHx8IGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuZGF0YS5nZXQoZ3VpUm93SWQpKSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmdldChndWlSb3dJZCkuaXNDcmVhdGVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAqIGZvciByb3cgZWRpdGluZ1xyXG4gICogKi9cclxuICBzdGFydFJvd0VkaXRpbmcoZ3VpUm93SWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGd1aVJvd0lkIDwgdGhpcy5saXN0Lmxlbmd0aCAmJiB0aGlzLmRhdGEuaGFzKGd1aVJvd0lkKSlcclxuICAgICAgdGhpcy5kYXRhLmdldChndWlSb3dJZCkuaXNFZGl0aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgKiBzdG9wIHJvdyBlZGl0aW5nIG9uIHJvdyBJZFxyXG4gICogKi9cclxuICBzdG9wUm93RWRpdGluZyhndWlSb3dJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoZ3VpUm93SWQgPCB0aGlzLmxpc3QubGVuZ3RoICYmIHRoaXMuZGF0YS5oYXMoZ3VpUm93SWQpKVxyXG4gICAgICB0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKS5pc0VkaXRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgKiByZXR1cm4gaWYgcm93IGlzIGluIGVkaXRpbmdcclxuICAqIENhbGxlZCBieSB0aGUgSFRNTCBjb2RlLCBzbyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcsIG5vdCBhIG51bWViclxyXG4gICogKi9cclxuICBpc1Jvd0luUm93RWRpdGluZyhndWlSb3dJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoK2d1aVJvd0lkIDwgdGhpcy5saXN0Lmxlbmd0aCkge1xyXG4gICAgICBpZiAoIXRoaXMuZGF0YS5oYXMoK2d1aVJvd0lkKSB8fCBpc051bGxPclVuZGVmaW5lZCh0aGlzLmRhdGEuZ2V0KCtndWlSb3dJZCkpKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0KCtndWlSb3dJZCkuaXNFZGl0aW5nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKG9iaikge1xyXG5cclxuICAgIGlmIChvYmouZnVsbFJlZnJlc2ggJiYgb2JqLnJvd3MubGVuZ3RoICE9IHRoaXMubGlzdC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kYXRhID0gbmV3IE1hcCgpO1xyXG4gICAgICB0aGlzLmxpc3QgPSBuZXcgQXJyYXk8Q29udHJvbHNNZXRhZGF0YT4oKTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IHJvd0lkIGluIG9iai5yb3dzKSB7XHJcbiAgICAgIGlmICghdGhpcy5kYXRhLmhhcygrcm93SWQpIHx8IHRoaXMuZGF0YS5nZXQoK3Jvd0lkKSA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLmRhdGEuc2V0KCtyb3dJZCwgbmV3IENvbnRyb2xzTWV0YWRhdGEoKSk7XHJcbiAgICAgIGxldCBjb250cm9sc0RhdGE6IENvbnRyb2xzTWV0YWRhdGEgPSB0aGlzLmRhdGEuZ2V0KCtyb3dJZCk7XHJcbiAgICAgIGNvbnRyb2xzRGF0YS51cGRhdGUob2JqLnJvd3Nbcm93SWRdKTtcclxuICAgICAgY29udHJvbHNEYXRhLnJvd0lkID0gcm93SWQ7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgdGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMubGlzdFtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2l6ZShsZW46IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMubGlzdC5sZW5ndGggIT0gbGVuKSB7XHJcbiAgICAgIGlmIChsZW4gPCB0aGlzLmxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgLy9yZW1vdmUgcm93c1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBsZW47IGkgPCB0aGlzLmxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuZGF0YS5kZWxldGUoaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxpc3QubGVuZ3RoID0gbGVuO1xyXG4gICAgICB0aGlzLnNpemVVcGRhdGVkID0gdHJ1ZTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogY3JlYXJzIGRhdGEgZm9yIHRoZSBmaXJzdCByZWNvcmRcclxuICAgKiBAcGFyYW0gdGVtcGxhdGVcclxuICAgKi9cclxuICBjbGVhckZpcnN0VGFibGVSZWNvcmQodGVtcGxhdGU6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmc7IH0pIHtcclxuICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoID49IDEpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGVtcGxhdGUpIHtcclxuICAgICAgICBpZiAodGVtcGxhdGVba2V5XSA9PSAnMScgJiYgdGhpcy5saXN0WzBdLkNvbnRyb2xzUHJvcGVydGllcy5oYXMoa2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5saXN0WzBdLkNvbnRyb2xzUHJvcGVydGllcy5nZXQoa2V5KS5wcm9wZXJ0aWVzID0gIG5ldyBNYXAoKSA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRSb3coZ3VpUm93SWQ6IG51bWJlcikge1xyXG4gICAgaWYgKGd1aVJvd0lkICE9PSAwIHx8ICF0aGlzLmRhdGEuaGFzKGd1aVJvd0lkKSB8fCBpc051bGxPclVuZGVmaW5lZCh0aGlzLmRhdGEuZ2V0KGd1aVJvd0lkKSkpIHtcclxuICAgICAgdGhpcy5kYXRhLnNldChndWlSb3dJZCwgbmV3IENvbnRyb2xzTWV0YWRhdGEoKSk7XHJcbiAgICAgIHRoaXMuZGF0YS5nZXQoZ3VpUm93SWQpLnJvd0lkID0gXCJcIitndWlSb3dJZDtcclxuICAgICAgdGhpcy5saXN0W2d1aVJvd0lkXSA9IHRoaXMuZGF0YS5nZXQoZ3VpUm93SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlyc3QoKSB7XHJcbiAgICB0aGlzLmFkZFJvdygwKTtcclxuICB9XHJcblxyXG4gIGZyb21Kc29uKGRhdGE6IHN0cmluZykge1xyXG4gICAgdmFyIG9iaiA9IEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgICB0aGlzLnVwZGF0ZShvYmopO1xyXG4gIH1cclxuXHJcbiAgc2V0R3VpVG9wSW5kZXgodG9wSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5ndWlUb3BJbmRleCA9IHRvcEluZGV4O1xyXG4gIH1cclxuXHJcbiAgZ2V0R3VpVG9wSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmd1aVRvcEluZGV4O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG5leHBvcnQgZW51bSBIdG1sQ2xhc3NlcyB7XHJcbiAgQ29sb3IgPSBcImNvbG9yXCIsXHJcbiAgZm9udCA9IFwiZm9udFwiLFxyXG4gIEZvY3VzQ29sb3I9XCJmb2N1c2NvbG9yXCIsXHJcbiAgSGludENvbG9yPVwiaGludGNvbG9yXCIsXHJcbn1cclxuIl19
@@ -241,4 +241,4 @@ class DialogInfo {
241
241
  return this.focusElementOnClose;
242
242
  }
243
243
  }
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3ZlcmxheVdpbmRvd1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9PdmVybGF5V2luZG93U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLFVBQVUsRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFHbEYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFhLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFZLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBV25FLE1BQU0sT0FBTyxvQkFBb0I7SUFHVDtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVBwQixZQUNzQixhQUF1QyxFQUN2QyxrQkFBc0MsRUFDeEMscUJBQTZDLEVBQzdDLFFBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLDZCQUE0RCxFQUM1RCxtQ0FBd0U7UUFOdEUsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0Is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QyxRQUFRLEVBQUUsQ0FBQztZQUN6QixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUNuRCxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxPQUFPLENBQUMsSUFBSSxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztZQUM1RCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVTtJQUVOLFdBQVcsQ0FBYztJQUN6QixtQkFBbUIsQ0FBYztJQUV6QyxZQUFZLFdBQXdCLEVBQUUsbUJBQWdDO1FBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENoYW5nZURldGVjdG9yUmVmLCBDb21waWxlcixcclxuICBOZ01vZHVsZVJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNlLCBNb2R1bGVEYXRhfSBmcm9tIFwiLi9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RW5naW5lTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi9lbmdpbmUubWFnaWMuc2VydmljZVwiO1xyXG5pbXBvcnQge0lHdWlFdmVudCwgZ2V0R3VpRXZlbnRPYmp9IGZyb20gXCJAbWFnaWMteHBhL2VuZ2luZVwiO1xyXG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyTWFnaWNQcm92aWRlciB9IGZyb20gXCIuL292ZXJsYXkuY29uYWluZXIubWFnaWMucHJvdmlkZXJcIjtcclxuaW1wb3J0IHsgTWFnaWNPdmVybGF5Q29udGFpbmVyV3JhcHBlciB9IGZyb20gXCIuLi91aS9tYWdpYy1tb2RhbC9tYWdpYy1vdmVybGF5LWNvbnRhaW5lci13cmFwcGVyXCI7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudHNNYWdpY1Byb3ZpZGVyIH0gZnJvbSBcIi4vY29uZmlybWF0aW9uLmNvbXBvbmVudHMubWFnaWMucHJvdmlkZXJcIjtcclxuaW1wb3J0IHsgT3ZlcmxheVR5cGUsIFN0eWxlcyB9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQgeyBjb25maXJtYXRpb25Cb3ggfSBmcm9tIFwiLi4vdWkvbWFnaWMtY29uZmlybWF0aW9uQm94XCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TWFnaWNMYXp5TG9hZGVyU2VydmljZX0gZnJvbSBcIi4vbWFnaWMubGF6eS5sb2FkZXIuc2VydmljZVwiO1xyXG5cclxuXHJcblxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgbWFuYWdpbmcgb3ZlcmxheSB3aW5kb3dzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjoncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE92ZXJsYXlXaW5kb3dTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGNvbXBvbmVudExpc3Q6Q29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgZW5naW5lTWFnaWNTZXJ2aWNlOiBFbmdpbmVNYWdpY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBtYWdpY0xhenlNb2R1bGVMb2FkZXI6IE1hZ2ljTGF6eUxvYWRlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBvdmVybGF5Q29udGFpbmVyTWFnaWNQcm92aWRlcjogT3ZlcmxheUNvbnRhaW5lck1hZ2ljUHJvdmlkZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb25maXJtYXRpb25Db21wb25lbnRzTWFnaWNQcm92aWRlcjogQ29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXIpIHtcclxuICB9XHJcblxyXG4gIC8vIFRoZSB2aWV3IHJlZmVyZW5jZSBvZiBjb250YWluZXIgb2Ygb3ZlcmxheSB3aW5kb3dcclxuICBwcml2YXRlIG92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgcHJpdmF0ZSBvdmVybGF5V2luZG93Rm9jdXNNYW5hZ2VyOiBPdmVybGF5V2luZG93Rm9jdXNNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBudWxsO1xyXG5cclxuICBpbml0KG92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZjogVmlld0NvbnRhaW5lclJlZiwgcm9vdE1hZ2ljRWxlbWVudDogRWxlbWVudCwgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZiA9IG92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZjtcclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlciA9IG5ldyBPdmVybGF5V2luZG93Rm9jdXNNYW5hZ2VyKHJvb3RNYWdpY0VsZW1lbnQpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZiA9IGNoYW5nZURldGVjdG9yUmVmO1xyXG4gIH1cclxuXHJcbiAgbG9hZEFuZE9wZW5Nb2R1bGUgKGZvcm1OYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB0YXNrRGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PiA9IHRoaXMuY29tcG9uZW50TGlzdC5nZXRNb2R1bGVSZWYoZm9ybU5hbWUpO1xyXG5cclxuICAgIGlmIChtb2R1bGVSZWYgPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbGF6eUxvYWRNb2R1bGU6IE1vZHVsZURhdGEgPSB0aGlzLmNvbXBvbmVudExpc3QuZ2V0TGF6eUxvYWRNb2R1bGVEYXRhKGZvcm1OYW1lKTtcclxuXHJcbiAgICAgIGlmIChsYXp5TG9hZE1vZHVsZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBsZXQgbW9kdWxlTmFtZSA9IGxhenlMb2FkTW9kdWxlLm1vZHVsZU5hbWUucmVwbGFjZShcIk1hZ2ljXCIsIFwiXCIpO1xyXG4gICAgICAgICAgbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWUucmVwbGFjZShcIk1vZHVsZVwiLCBcIlwiKTtcclxuICAgICAgICAgIHRoaXMubWFnaWNMYXp5TW9kdWxlTG9hZGVyLkxvYWQobW9kdWxlTmFtZSkudGhlbihtID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcGlsZWQgPSB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzU3luYyg8YW55Pm1bbGF6eUxvYWRNb2R1bGUubW9kdWxlTmFtZV0pO1xyXG4gICAgICAgICAgICBtb2R1bGVSZWYgPSBjb21waWxlZC5uZ01vZHVsZUZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4oZm9ybU5hbWUsIHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy5maW5pc2hDb25maXJtYXRpb24oU3R5bGVzLk1TR0JPWF9CVVRUT05fT0ssIHRydWUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW4oZm9ybU5hbWUsIHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uKTtcclxuICAgICAgdGhpcy5maW5pc2hDb25maXJtYXRpb24oU3R5bGVzLk1TR0JPWF9CVVRUT05fT0ssIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3Blbihmb3JtTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgdGFza0Rlc2NyaXB0aW9uOiBzdHJpbmcpIHtcclxuXHJcbiAgICAvLyBmb3Igb3ZlcmxheSB3aGljaCBhcmUgbGF6eSBsb2FkZWQgZG9uJ3QgZmluZCBkYXRhIGluIGNvbXBvbmVudC1saXN0XHJcbiAgICBsZXQgY29tcCA9ICB0aGlzLmNvbXBvbmVudExpc3QubGF6eUxvYWRNb2R1bGVzTWFwICE9IG51bGwgJiYgdGhpcy5jb21wb25lbnRMaXN0LmxhenlMb2FkTW9kdWxlc01hcC5oYXNPd25Qcm9wZXJ0eShmb3JtTmFtZSkgPyBudWxsIDp0aGlzLmNvbXBvbmVudExpc3QuZ2V0Q29tcG9uZW50KGZvcm1OYW1lKTtcclxuICAgIGxldCBwYXJhbWV0ZXJzID0geyB0YXNrSWRQYXJhbTogdGFza0lkLCB0YXNrRGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbiB9O1xyXG5cclxuICAgIGxldCBjb21wb25lbnRSZWYgPSB0aGlzLmNyZWF0ZU1vZGFsQ29tcG9uZW50KHsgTWFnaWNGb3JtTmFtZTogZm9ybU5hbWUsIE1vZGFsQ29tcDogY29tcCwgTW9kYWxDb21wUGFyYW1ldGVyczogcGFyYW1ldGVyc30sIDxDb21wb25lbnQ+dGhpcy5vdmVybGF5Q29udGFpbmVyTWFnaWNQcm92aWRlci5nZXRDb21wb25lbnQoKSwgT3ZlcmxheVR5cGUuT3ZlcmxheSk7XHJcblxyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm9uQ2xvc2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcImNsb3NlXCIsIG51bGwsIDApO1xyXG4gICAgICBndWlFdmVudC5UYXNrSUQgPSB0YXNrSWQ7XHJcbiAgICAgIHRoaXMuZW5naW5lTWFnaWNTZXJ2aWNlLmluc2VydEV2ZW50KGd1aUV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vdXNpbmcgdGhlIHNhbWUgY2hhbmdlRGV0ZWN0b3JSZWYgZnJvbSByb290LWNvbXBvbmVudFxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZShjb21tYW5kU3RyOiBzdHJpbmcpIHtcclxuICAgIC8vIENsb3NlIHRoZSBvdmVybGF5IGJ5IHJlbW92aW5nIHRoZSBvdmVybGF5IHdpbmRvdyBmcm9tIGl0cyBjb250YWluZXJcclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmLnJlbW92ZSgpO1xyXG4gICAgdGhpcy5vdmVybGF5V2luZG93Rm9jdXNNYW5hZ2VyLnBvcERpYWxvZygpO1xyXG5cclxuICAgIGxldCBndWlFdmVudDE6IElHdWlFdmVudCA9IGdldEd1aUV2ZW50T2JqKFwiZGlzcG9zZVwiLCBudWxsLCAwKTtcclxuICAgIGd1aUV2ZW50MS5UYXNrSUQgPSBjb21tYW5kU3RyO1xyXG4gICAgdGhpcy5lbmdpbmVNYWdpY1NlcnZpY2UuaW5zZXJ0RXZlbnQoZ3VpRXZlbnQxKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIENvbmZpcm1hdGlvbiBib3hcclxuICAgKiBAcGFyYW0gdGl0bGUgdGl0bGUgb2YgdGhlIGJveFxyXG4gICAqIEBwYXJhbSBtc2cgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBzdHlsZSBNYWdpYyBzdHlsZVxyXG4gICAqL1xyXG4gICBvcGVuQ29uZmlybWF0aW9uQm94KCB0aXRsZTogc3RyaW5nLCBtc2c6IHN0cmluZywgc3R5bGU6IFN0eWxlcykge1xyXG5cclxuICAgICAvL3Nob3cgZGVmYXVsdCBjb25maXJtYXRpb25zXHJcbiAgICBpZiAodGhpcy5jb25maXJtYXRpb25Db21wb25lbnRzTWFnaWNQcm92aWRlci5zaG93RGVmYXVsdENvbmZpcm1hdGlvbnMoKSlcclxuICAgIHtcclxuICAgICAgbGV0IHJlcyA9IGNvbmZpcm1hdGlvbkJveC5zaG93Q29uZmlybWF0aW9uQm94KHRpdGxlLCBtc2csIHN0eWxlKTtcclxuICAgICAgdGhpcy5maW5pc2hDb25maXJtYXRpb24oIHN0eWxlLCByZXMpO1xyXG5cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIHtcclxuICAgICAgLy9zaG93IGN1c3RvbSBjb25maXJtYXRpb25zXHJcbiAgICAgIGxldCBjb21wID0gY29uZmlybWF0aW9uQm94LmlzQ29uZmlybUJveChzdHlsZSkgPyB0aGlzLmNvbmZpcm1hdGlvbkNvbXBvbmVudHNNYWdpY1Byb3ZpZGVyLmdldENvbmZpcm10aW9uQ29tcG9uZW50KCkgOnRoaXMuY29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXIuZ2V0QWxlcnRDb21wb25lbnQoKSAgO1xyXG4gICAgICBsZXQgb3ZlcmxheVR5cGUgPSBjb25maXJtYXRpb25Cb3guaXNDb25maXJtQm94KHN0eWxlKT8gT3ZlcmxheVR5cGUuQ29uZmlybWF0aW9uQm94IDogT3ZlcmxheVR5cGUuQWxlcnQ7XHJcbiAgICAgIGxldCBjb21wb25lbnRSZWYgPSB0aGlzLmNyZWF0ZU1vZGFsQ29tcG9uZW50KHsgdGl0bGU6IHRpdGxlLCBtZXNzYWdlOiBtc2cgfSwgY29tcCwgb3ZlcmxheVR5cGUpO1xyXG5cclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm9uQ2xvc2Uuc3Vic2NyaWJlKChyZXMgOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWYucmVtb3ZlKCk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5V2luZG93Rm9jdXNNYW5hZ2VyLnBvcERpYWxvZygpO1xyXG4gICAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKCBzdHlsZSwgcmVzKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBjbG9zZSBvZiB0aGUgY29uZmlybWF0aW9uXHJcbiAgICogQHBhcmFtIHN0eWxlIE1hZ2ljIHN0eWxlXHJcbiAgICogQHBhcmFtIHJlc3VsdFxyXG4gICAqL1xyXG4gIGZpbmlzaENvbmZpcm1hdGlvbihzdHlsZTogU3R5bGVzLCByZXN1bHQ6IGJvb2xlYW4gKSB7XHJcbiAgICBsZXQgZ3VpRXZlbnQ6IElHdWlFdmVudCA9IGdldEd1aUV2ZW50T2JqKFwiY29uZmlybWF0aW9uQ2xvc2VkXCIsIG51bGwsIDApO1xyXG4gICAgZ3VpRXZlbnQua2V5Q29kZSA9IDxudW1iZXI+Y29uZmlybWF0aW9uQm94LmNvbnZlcnRUb0V4Y3BlY3RlZFJlc3VsdEJveChzdHlsZSwgcmVzdWx0KTtcclxuICAgIHRoaXMuZW5naW5lTWFnaWNTZXJ2aWNlLmluc2VydEV2ZW50KGd1aUV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNyZWF0ZXMgYSBtb2RhbCBjb21wb25lbnQuIENhbiBiZSB1c2VkIGZvciBvdmVybGF5LCBtZXNzYWdlIGJveCBvciBjb25maXJtYXRpb24gYm94XHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgY29tcG9uZW50J3MgcGFyYW1ldGVyc1xyXG4gICAqIEBwYXJhbSBjb21wb25lbnQgY29tcG9uZW50cyB0byBjcmVhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZU1vZGFsQ29tcG9uZW50KHBhcmFtZXRlcnM6IGFueSwgY29tcG9uZW50OiBDb21wb25lbnQsIG92ZXJsYXlUeXBlOiBPdmVybGF5VHlwZSk6IENvbXBvbmVudFJlZjxhbnk+IHtcclxuICAgIGxldCBjb21wb25lbnRSZWY7XHJcbiAgICBsZXQgbWFnaWNNb2RhbENvbnRhaW5lclBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIENvbXBvbmVudDogY29tcG9uZW50LFxyXG4gICAgICBQYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLFxyXG4gICAgICBPdmVybGF5VHlwZVBhcmFtOiBvdmVybGF5VHlwZVxyXG5cclxuICAgIH07XHJcblxyXG4gICAgLy8gQ3JlYXRlIHRoZSBVSSBjb21wb25lbnQgb2YgbW9kYWwgd2luZG93XHJcbiAgICBsZXQgdmlld0NSZWYgOiBWaWV3Q29udGFpbmVyUmVmID0gPFZpZXdDb250YWluZXJSZWY+dGhpcy5vdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY7XHJcbiAgICBjb21wb25lbnRSZWYgPSB2aWV3Q1JlZi5jcmVhdGVDb21wb25lbnQoTWFnaWNPdmVybGF5Q29udGFpbmVyV3JhcHBlcik7XHJcblxyXG4gICAgLy8gU2V0IHRoZSBkYXRhIHRvIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50XHJcbiAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudFJlZi5pbnN0YW5jZSwgbWFnaWNNb2RhbENvbnRhaW5lclBhcmFtZXRlcnMpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlci5wdXNoRGlhbG9nKGNvbXBvbmVudFJlZi5pbnN0YW5jZS5HZXRSb290RWxlbWVudCgpKTtcclxuXHJcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuRGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBPdmVybGF5V2luZG93Rm9jdXNNYW5hZ2VyXHJcbntcclxuICBwcml2YXRlIHJvb3RNYWdpY0VsZW1lbnQ6IEVsZW1lbnQgPSBudWxsO1xyXG4gIHByaXZhdGUgb3BlbkRpYWxvZ0xpc3Q6IEFycmF5PERpYWxvZ0luZm8+ID0gbmV3IEFycmF5KDApO1xyXG4gIHByaXZhdGUgaWdub3JlVXRpbEZvY3VzQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbGFzdEZvY3VzID0gbnVsbDtcclxuICBwcml2YXRlIGZvY3VzTGlzdGVuZXIgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvciAocm9vdE1hZ2ljRWxlbWVudDogRWxlbWVudCkge1xyXG4gICAgdGhpcy5yb290TWFnaWNFbGVtZW50ID0gcm9vdE1hZ2ljRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHB1c2hEaWFsb2cocm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBpZiAodGhpcy5vcGVuRGlhbG9nTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5mb2N1c0xpc3RlbmVyID0gdGhpcy50cmFwRm9jdXMuYmluZCh0aGlzKTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmZvY3VzTGlzdGVuZXIsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3BlbkRpYWxvZ0xpc3QucHVzaChuZXcgRGlhbG9nSW5mbyhyb290RWxlbWVudCwgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IDxIVE1MRWxlbWVudD5kb2N1bWVudC5hY3RpdmVFbGVtZW50IDogbnVsbCkpKTtcclxuICB9XHJcblxyXG4gIHBvcERpYWxvZygpIHtcclxuICAgIGNvbnN0IGRpYWxvZ0luZm8gPSB0aGlzLm9wZW5EaWFsb2dMaXN0LnBvcCgpO1xyXG4gICAgdGhpcy5hdHRlbXB0Rm9jdXMoZGlhbG9nSW5mby5Gb2N1c0VsZW1lbnRPbkNsb3NlKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcGVuRGlhbG9nTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmZvY3VzTGlzdGVuZXIsIHRydWUpO1xyXG4gICAgICB0aGlzLmZvY3VzTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhcEZvY3VzIChldmVudCkge1xyXG4gICAgaWYgKHRoaXMuaWdub3JlVXRpbEZvY3VzQ2hhbmdlcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YXIgY3VycmVudERpYWxvZyA9IHRoaXMub3BlbkRpYWxvZ0xpc3RbdGhpcy5vcGVuRGlhbG9nTGlzdC5sZW5ndGggLSAxXS5Sb290RWxlbWVudDtcclxuICAgICAgaWYgKGN1cnJlbnREaWFsb2cuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgIHRoaXMubGFzdEZvY3VzID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3RNYWdpY0VsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0RGVzY2VuZGFudChjdXJyZW50RGlhbG9nKTtcclxuICAgICAgICAgIGlmICh0aGlzLmxhc3RGb2N1cyA9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNMYXN0RGVzY2VuZGFudChjdXJyZW50RGlhbG9nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvY3VzRmlyc3REZXNjZW5kYW50IChlbGVtZW50KSB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgY2hpbGQgPSBlbGVtZW50LmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmICh0aGlzLmF0dGVtcHRGb2N1cyhjaGlsZCkgfHxcclxuICAgICAgICB0aGlzLmZvY3VzRmlyc3REZXNjZW5kYW50KGNoaWxkKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBmb2N1c0xhc3REZXNjZW5kYW50IChlbGVtZW50KSB7XHJcbiAgICBmb3IgKHZhciBpID0gZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIHZhciBjaGlsZCA9IGVsZW1lbnQuY2hpbGROb2Rlc1tpXTtcclxuICAgICAgaWYgKHRoaXMuYXR0ZW1wdEZvY3VzKGNoaWxkKSB8fFxyXG4gICAgICAgIHRoaXMuZm9jdXNMYXN0RGVzY2VuZGFudChjaGlsZCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgYXR0ZW1wdEZvY3VzIChlbGVtZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNGb2N1c2FibGUoZWxlbWVudCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaWdub3JlVXRpbEZvY3VzQ2hhbmdlcyA9IHRydWU7XHJcbiAgICB0cnkge1xyXG4gICAgICBlbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gICAgdGhpcy5pZ25vcmVVdGlsRm9jdXNDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICByZXR1cm4gKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsZW1lbnQpO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaXNGb2N1c2FibGUgKGVsZW1lbnQpIHtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChlbGVtZW50KSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChlbGVtZW50LnRhYkluZGV4ID4gMCB8fCAoZWxlbWVudC50YWJJbmRleCA9PT0gMCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiSW5kZXgnKSAhPT0gbnVsbCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChlbGVtZW50LnRhYkluZGV4IDwgMClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChlbGVtZW50LmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcclxuICAgICAgY2FzZSAnQSc6XHJcbiAgICAgICAgcmV0dXJuICEhZWxlbWVudC5ocmVmICYmIGVsZW1lbnQucmVsICE9ICdpZ25vcmUnO1xyXG4gICAgICBjYXNlICdJTlBVVCc6XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSAhPSAnaGlkZGVuJyAmJiBlbGVtZW50LnR5cGUgIT0gJ2ZpbGUnO1xyXG4gICAgICBjYXNlICdCVVRUT04nOlxyXG4gICAgICBjYXNlICdTRUxFQ1QnOlxyXG4gICAgICBjYXNlICdURVhUQVJFQSc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgRGlhbG9nSW5mb1xyXG57XHJcbiAgcHJpdmF0ZSByb290RWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBmb2N1c0VsZW1lbnRPbkNsb3NlOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3Iocm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBmb2N1c0VsZW1lbnRPbkNsb3NlOiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGhpcy5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xyXG4gICAgdGhpcy5mb2N1c0VsZW1lbnRPbkNsb3NlID0gZm9jdXNFbGVtZW50T25DbG9zZTtcclxuICB9XHJcblxyXG4gIGdldCBSb290RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5yb290RWxlbWVudDtcclxuICB9XHJcblxyXG4gIGdldCBGb2N1c0VsZW1lbnRPbkNsb3NlKCk6IEhUTUxFbGVtZW50IHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzRWxlbWVudE9uQ2xvc2U7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3ZlcmxheVdpbmRvd1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9PdmVybGF5V2luZG93U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJCLFVBQVUsRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFHbEYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFhLE1BQU0sZ0NBQWdDLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFZLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBV25FLE1BQU0sT0FBTyxvQkFBb0I7SUFHVDtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVBwQixZQUNzQixhQUF1QyxFQUN2QyxrQkFBc0MsRUFDeEMscUJBQTZDLEVBQzdDLFFBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLDZCQUE0RCxFQUM1RCxtQ0FBd0U7UUFOdEUsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0Is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USxDQUFDO1lBQ2QsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVU7SUFFTixXQUFXLENBQWM7SUFDekIsbUJBQW1CLENBQWM7SUFFekMsWUFBWSxXQUF3QixFQUFFLG1CQUFnQztRQUNwRSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcGlsZXIsXHJcbiAgTmdNb2R1bGVSZWYsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSwgTW9kdWxlRGF0YX0gZnJvbSBcIi4vY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZVwiO1xyXG5pbXBvcnQge0VuZ2luZU1hZ2ljU2VydmljZX0gZnJvbSBcIi4vZW5naW5lLm1hZ2ljLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJR3VpRXZlbnQsIGdldEd1aUV2ZW50T2JqfSBmcm9tIFwiQG1hZ2ljLXhwYS9lbmdpbmVcIjtcclxuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lck1hZ2ljUHJvdmlkZXIgfSBmcm9tIFwiLi9vdmVybGF5LmNvbmFpbmVyLm1hZ2ljLnByb3ZpZGVyXCI7XHJcbmltcG9ydCB7IE1hZ2ljT3ZlcmxheUNvbnRhaW5lcldyYXBwZXIgfSBmcm9tIFwiLi4vdWkvbWFnaWMtbW9kYWwvbWFnaWMtb3ZlcmxheS1jb250YWluZXItd3JhcHBlclwiO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Db21wb25lbnRzTWFnaWNQcm92aWRlciB9IGZyb20gXCIuL2NvbmZpcm1hdGlvbi5jb21wb25lbnRzLm1hZ2ljLnByb3ZpZGVyXCI7XHJcbmltcG9ydCB7IE92ZXJsYXlUeXBlLCBTdHlsZXMgfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHsgY29uZmlybWF0aW9uQm94IH0gZnJvbSBcIi4uL3VpL21hZ2ljLWNvbmZpcm1hdGlvbkJveFwiO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge01hZ2ljTGF6eUxvYWRlclNlcnZpY2V9IGZyb20gXCIuL21hZ2ljLmxhenkubG9hZGVyLnNlcnZpY2VcIjtcclxuXHJcblxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIG1hbmFnaW5nIG92ZXJsYXkgd2luZG93c1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46J3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPdmVybGF5V2luZG93U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBjb21wb25lbnRMaXN0OkNvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGVuZ2luZU1hZ2ljU2VydmljZTogRW5naW5lTWFnaWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbWFnaWNMYXp5TW9kdWxlTG9hZGVyOiBNYWdpY0xhenlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lck1hZ2ljUHJvdmlkZXI6IE92ZXJsYXlDb250YWluZXJNYWdpY1Byb3ZpZGVyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXI6IENvbmZpcm1hdGlvbkNvbXBvbmVudHNNYWdpY1Byb3ZpZGVyKSB7XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgdmlldyByZWZlcmVuY2Ugb2YgY29udGFpbmVyIG9mIG92ZXJsYXkgd2luZG93XHJcbiAgcHJpdmF0ZSBvdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIHByaXZhdGUgb3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlcjogT3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlciA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmID0gbnVsbDtcclxuXHJcbiAgaW5pdChvdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY6IFZpZXdDb250YWluZXJSZWYsIHJvb3RNYWdpY0VsZW1lbnQ6IEVsZW1lbnQsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5vdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWYgPSBvdmVybGF5V2luZG93c0NvbnRhaW5lclZpZXdSZWY7XHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dGb2N1c01hbmFnZXIgPSBuZXcgT3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlcihyb290TWFnaWNFbGVtZW50KTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgPSBjaGFuZ2VEZXRlY3RvclJlZjtcclxuICB9XHJcblxyXG4gIGxvYWRBbmRPcGVuTW9kdWxlIChmb3JtTmFtZTogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZywgdGFza0Rlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4gPSB0aGlzLmNvbXBvbmVudExpc3QuZ2V0TW9kdWxlUmVmKGZvcm1OYW1lKTtcclxuXHJcbiAgICBpZiAobW9kdWxlUmVmID09IG51bGwpIHtcclxuICAgICAgbGV0IGxhenlMb2FkTW9kdWxlOiBNb2R1bGVEYXRhID0gdGhpcy5jb21wb25lbnRMaXN0LmdldExhenlMb2FkTW9kdWxlRGF0YShmb3JtTmFtZSk7XHJcblxyXG4gICAgICBpZiAobGF6eUxvYWRNb2R1bGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbGV0IG1vZHVsZU5hbWUgPSBsYXp5TG9hZE1vZHVsZS5tb2R1bGVOYW1lLnJlcGxhY2UoXCJNYWdpY1wiLCBcIlwiKTtcclxuICAgICAgICAgIG1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lLnJlcGxhY2UoXCJNb2R1bGVcIiwgXCJcIik7XHJcbiAgICAgICAgICB0aGlzLm1hZ2ljTGF6eU1vZHVsZUxvYWRlci5Mb2FkKG1vZHVsZU5hbWUpLnRoZW4obSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBpbGVkID0gdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmMoPGFueT5tW2xhenlMb2FkTW9kdWxlLm1vZHVsZU5hbWVdKTtcclxuICAgICAgICAgICAgbW9kdWxlUmVmID0gY29tcGlsZWQubmdNb2R1bGVGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuKGZvcm1OYW1lLCB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LLCB0cnVlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuKGZvcm1OYW1lLCB0YXNrSWQsIHRhc2tEZXNjcmlwdGlvbik7XHJcbiAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW4oZm9ybU5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHRhc2tEZXNjcmlwdGlvbjogc3RyaW5nKSB7XHJcblxyXG4gICAgLy8gZm9yIG92ZXJsYXkgd2hpY2ggYXJlIGxhenkgbG9hZGVkIGRvbid0IGZpbmQgZGF0YSBpbiBjb21wb25lbnQtbGlzdFxyXG4gICAgbGV0IGNvbXAgPSAgdGhpcy5jb21wb25lbnRMaXN0LmxhenlMb2FkTW9kdWxlc01hcCAhPSBudWxsICYmIHRoaXMuY29tcG9uZW50TGlzdC5sYXp5TG9hZE1vZHVsZXNNYXAuaGFzT3duUHJvcGVydHkoZm9ybU5hbWUpID8gbnVsbCA6dGhpcy5jb21wb25lbnRMaXN0LmdldENvbXBvbmVudChmb3JtTmFtZSk7XHJcbiAgICBsZXQgcGFyYW1ldGVycyA9IHsgdGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb24gfTtcclxuXHJcbiAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVNb2RhbENvbXBvbmVudCh7IE1hZ2ljRm9ybU5hbWU6IGZvcm1OYW1lLCBNb2RhbENvbXA6IGNvbXAsIE1vZGFsQ29tcFBhcmFtZXRlcnM6IHBhcmFtZXRlcnN9LCA8Q29tcG9uZW50PnRoaXMub3ZlcmxheUNvbnRhaW5lck1hZ2ljUHJvdmlkZXIuZ2V0Q29tcG9uZW50KCksIE92ZXJsYXlUeXBlLk92ZXJsYXkpO1xyXG5cclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vbkNsb3NlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJjbG9zZVwiLCBudWxsLCAwKTtcclxuICAgICAgZ3VpRXZlbnQuVGFza0lEID0gdGFza0lkO1xyXG4gICAgICB0aGlzLmVuZ2luZU1hZ2ljU2VydmljZS5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL3VzaW5nIHRoZSBzYW1lIGNoYW5nZURldGVjdG9yUmVmIGZyb20gcm9vdC1jb21wb25lbnRcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoY29tbWFuZFN0cjogc3RyaW5nKSB7XHJcbiAgICAvLyBDbG9zZSB0aGUgb3ZlcmxheSBieSByZW1vdmluZyB0aGUgb3ZlcmxheSB3aW5kb3cgZnJvbSBpdHMgY29udGFpbmVyXHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZi5yZW1vdmUoKTtcclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlci5wb3BEaWFsb2coKTtcclxuXHJcbiAgICBsZXQgZ3VpRXZlbnQxOiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcImRpc3Bvc2VcIiwgbnVsbCwgMCk7XHJcbiAgICBndWlFdmVudDEuVGFza0lEID0gY29tbWFuZFN0cjtcclxuICAgIHRoaXMuZW5naW5lTWFnaWNTZXJ2aWNlLmluc2VydEV2ZW50KGd1aUV2ZW50MSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBDb25maXJtYXRpb24gYm94XHJcbiAgICogQHBhcmFtIHRpdGxlIHRpdGxlIG9mIHRoZSBib3hcclxuICAgKiBAcGFyYW0gbXNnIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gc3R5bGUgTWFnaWMgc3R5bGVcclxuICAgKi9cclxuICAgb3BlbkNvbmZpcm1hdGlvbkJveCggdGl0bGU6IHN0cmluZywgbXNnOiBzdHJpbmcsIHN0eWxlOiBTdHlsZXMpIHtcclxuXHJcbiAgICAgLy9zaG93IGRlZmF1bHQgY29uZmlybWF0aW9uc1xyXG4gICAgaWYgKHRoaXMuY29uZmlybWF0aW9uQ29tcG9uZW50c01hZ2ljUHJvdmlkZXIuc2hvd0RlZmF1bHRDb25maXJtYXRpb25zKCkpXHJcbiAgICB7XHJcbiAgICAgIGxldCByZXMgPSBjb25maXJtYXRpb25Cb3guc2hvd0NvbmZpcm1hdGlvbkJveCh0aXRsZSwgbXNnLCBzdHlsZSk7XHJcbiAgICAgIHRoaXMuZmluaXNoQ29uZmlybWF0aW9uKCBzdHlsZSwgcmVzKTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICB7XHJcbiAgICAgIC8vc2hvdyBjdXN0b20gY29uZmlybWF0aW9uc1xyXG4gICAgICBsZXQgY29tcCA9IGNvbmZpcm1hdGlvbkJveC5pc0NvbmZpcm1Cb3goc3R5bGUpID8gdGhpcy5jb25maXJtYXRpb25Db21wb25lbnRzTWFnaWNQcm92aWRlci5nZXRDb25maXJtdGlvbkNvbXBvbmVudCgpIDp0aGlzLmNvbmZpcm1hdGlvbkNvbXBvbmVudHNNYWdpY1Byb3ZpZGVyLmdldEFsZXJ0Q29tcG9uZW50KCkgIDtcclxuICAgICAgbGV0IG92ZXJsYXlUeXBlID0gY29uZmlybWF0aW9uQm94LmlzQ29uZmlybUJveChzdHlsZSk/IE92ZXJsYXlUeXBlLkNvbmZpcm1hdGlvbkJveCA6IE92ZXJsYXlUeXBlLkFsZXJ0O1xyXG4gICAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVNb2RhbENvbXBvbmVudCh7IHRpdGxlOiB0aXRsZSwgbWVzc2FnZTogbXNnIH0sIGNvbXAsIG92ZXJsYXlUeXBlKTtcclxuXHJcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vbkNsb3NlLnN1YnNjcmliZSgocmVzIDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmLnJlbW92ZSgpO1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlci5wb3BEaWFsb2coKTtcclxuICAgICAgICB0aGlzLmZpbmlzaENvbmZpcm1hdGlvbiggc3R5bGUsIHJlcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gY2xvc2Ugb2YgdGhlIGNvbmZpcm1hdGlvblxyXG4gICAqIEBwYXJhbSBzdHlsZSBNYWdpYyBzdHlsZVxyXG4gICAqIEBwYXJhbSByZXN1bHRcclxuICAgKi9cclxuICBmaW5pc2hDb25maXJtYXRpb24oc3R5bGU6IFN0eWxlcywgcmVzdWx0OiBib29sZWFuICkge1xyXG4gICAgbGV0IGd1aUV2ZW50OiBJR3VpRXZlbnQgPSBnZXRHdWlFdmVudE9iaihcImNvbmZpcm1hdGlvbkNsb3NlZFwiLCBudWxsLCAwKTtcclxuICAgIGd1aUV2ZW50LmtleUNvZGUgPSA8bnVtYmVyPmNvbmZpcm1hdGlvbkJveC5jb252ZXJ0VG9FeGNwZWN0ZWRSZXN1bHRCb3goc3R5bGUsIHJlc3VsdCk7XHJcbiAgICB0aGlzLmVuZ2luZU1hZ2ljU2VydmljZS5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjcmVhdGVzIGEgbW9kYWwgY29tcG9uZW50LiBDYW4gYmUgdXNlZCBmb3Igb3ZlcmxheSwgbWVzc2FnZSBib3ggb3IgY29uZmlybWF0aW9uIGJveFxyXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIGNvbXBvbmVudCdzIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gY29tcG9uZW50IGNvbXBvbmVudHMgdG8gY3JlYXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVNb2RhbENvbXBvbmVudChwYXJhbWV0ZXJzOiBhbnksIGNvbXBvbmVudDogQ29tcG9uZW50LCBvdmVybGF5VHlwZTogT3ZlcmxheVR5cGUpOiBDb21wb25lbnRSZWY8YW55PiB7XHJcbiAgICBsZXQgY29tcG9uZW50UmVmO1xyXG4gICAgbGV0IG1hZ2ljTW9kYWxDb250YWluZXJQYXJhbWV0ZXJzID0ge1xyXG4gICAgICBDb21wb25lbnQ6IGNvbXBvbmVudCxcclxuICAgICAgUGFyYW1ldGVyczogcGFyYW1ldGVycyxcclxuICAgICAgT3ZlcmxheVR5cGVQYXJhbTogb3ZlcmxheVR5cGVcclxuXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSB0aGUgVUkgY29tcG9uZW50IG9mIG1vZGFsIHdpbmRvd1xyXG4gICAgbGV0IHZpZXdDUmVmIDogVmlld0NvbnRhaW5lclJlZiA9IDxWaWV3Q29udGFpbmVyUmVmPnRoaXMub3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmO1xyXG4gICAgY29tcG9uZW50UmVmID0gdmlld0NSZWYuY3JlYXRlQ29tcG9uZW50KE1hZ2ljT3ZlcmxheUNvbnRhaW5lcldyYXBwZXIpO1xyXG5cclxuICAgIC8vIFNldCB0aGUgZGF0YSB0byBuZXdseSBjcmVhdGVkIGNvbXBvbmVudFxyXG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIG1hZ2ljTW9kYWxDb250YWluZXJQYXJhbWV0ZXJzKTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3dGb2N1c01hbmFnZXIucHVzaERpYWxvZyhjb21wb25lbnRSZWYuaW5zdGFuY2UuR2V0Um9vdEVsZW1lbnQoKSk7XHJcblxyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLkRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgT3ZlcmxheVdpbmRvd0ZvY3VzTWFuYWdlclxyXG57XHJcbiAgcHJpdmF0ZSByb290TWFnaWNFbGVtZW50OiBFbGVtZW50ID0gbnVsbDtcclxuICBwcml2YXRlIG9wZW5EaWFsb2dMaXN0OiBBcnJheTxEaWFsb2dJbmZvPiA9IG5ldyBBcnJheSgwKTtcclxuICBwcml2YXRlIGlnbm9yZVV0aWxGb2N1c0NoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGxhc3RGb2N1cyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBmb2N1c0xpc3RlbmVyID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IgKHJvb3RNYWdpY0VsZW1lbnQ6IEVsZW1lbnQpIHtcclxuICAgIHRoaXMucm9vdE1hZ2ljRWxlbWVudCA9IHJvb3RNYWdpY0VsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwdXNoRGlhbG9nKHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lciA9IHRoaXMudHJhcEZvY3VzLmJpbmQodGhpcyk7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5mb2N1c0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wZW5EaWFsb2dMaXN0LnB1c2gobmV3IERpYWxvZ0luZm8ocm9vdEVsZW1lbnQsIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyA8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA6IG51bGwpKSk7XHJcbiAgfVxyXG5cclxuICBwb3BEaWFsb2coKSB7XHJcbiAgICBjb25zdCBkaWFsb2dJbmZvID0gdGhpcy5vcGVuRGlhbG9nTGlzdC5wb3AoKTtcclxuICAgIHRoaXMuYXR0ZW1wdEZvY3VzKGRpYWxvZ0luZm8uRm9jdXNFbGVtZW50T25DbG9zZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5mb2N1c0xpc3RlbmVyLCB0cnVlKTtcclxuICAgICAgdGhpcy5mb2N1c0xpc3RlbmVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYXBGb2N1cyAoZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlnbm9yZVV0aWxGb2N1c0NoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wZW5EaWFsb2dMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGN1cnJlbnREaWFsb2cgPSB0aGlzLm9wZW5EaWFsb2dMaXN0W3RoaXMub3BlbkRpYWxvZ0xpc3QubGVuZ3RoIC0gMV0uUm9vdEVsZW1lbnQ7XHJcbiAgICAgIGlmIChjdXJyZW50RGlhbG9nLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLmxhc3RGb2N1cyA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5yb290TWFnaWNFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdERlc2NlbmRhbnQoY3VycmVudERpYWxvZyk7XHJcbiAgICAgICAgICBpZiAodGhpcy5sYXN0Rm9jdXMgPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzTGFzdERlc2NlbmRhbnQoY3VycmVudERpYWxvZyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdEZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1c0ZpcnN0RGVzY2VuZGFudCAoZWxlbWVudCkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIGNoaWxkID0gZWxlbWVudC5jaGlsZE5vZGVzW2ldO1xyXG4gICAgICBpZiAodGhpcy5hdHRlbXB0Rm9jdXMoY2hpbGQpIHx8XHJcbiAgICAgICAgdGhpcy5mb2N1c0ZpcnN0RGVzY2VuZGFudChjaGlsZCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZm9jdXNMYXN0RGVzY2VuZGFudCAoZWxlbWVudCkge1xyXG4gICAgZm9yICh2YXIgaSA9IGVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICB2YXIgY2hpbGQgPSBlbGVtZW50LmNoaWxkTm9kZXNbaV07XHJcbiAgICAgIGlmICh0aGlzLmF0dGVtcHRGb2N1cyhjaGlsZCkgfHxcclxuICAgICAgICB0aGlzLmZvY3VzTGFzdERlc2NlbmRhbnQoY2hpbGQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGF0dGVtcHRGb2N1cyAoZWxlbWVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRm9jdXNhYmxlKGVsZW1lbnQpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlnbm9yZVV0aWxGb2N1c0NoYW5nZXMgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgZWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuICAgIHRoaXMuaWdub3JlVXRpbEZvY3VzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgcmV0dXJuIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbGVtZW50KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGlzRm9jdXNhYmxlIChlbGVtZW50KSB7XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZWxlbWVudCkpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZWxlbWVudC50YWJJbmRleCA+IDAgfHwgKGVsZW1lbnQudGFiSW5kZXggPT09IDAgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JykgIT09IG51bGwpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZWxlbWVudC50YWJJbmRleCA8IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChlbGVtZW50Lm5vZGVOYW1lKSB7XHJcbiAgICAgIGNhc2UgJ0EnOlxyXG4gICAgICAgIHJldHVybiAhIWVsZW1lbnQuaHJlZiAmJiBlbGVtZW50LnJlbCAhPSAnaWdub3JlJztcclxuICAgICAgY2FzZSAnSU5QVVQnOlxyXG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgIT0gJ2hpZGRlbicgJiYgZWxlbWVudC50eXBlICE9ICdmaWxlJztcclxuICAgICAgY2FzZSAnQlVUVE9OJzpcclxuICAgICAgY2FzZSAnU0VMRUNUJzpcclxuICAgICAgY2FzZSAnVEVYVEFSRUEnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIERpYWxvZ0luZm9cclxue1xyXG4gIHByaXZhdGUgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHByaXZhdGUgZm9jdXNFbGVtZW50T25DbG9zZTogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCwgZm9jdXNFbGVtZW50T25DbG9zZTogSFRNTEVsZW1lbnQpIHtcclxuICAgIHRoaXMucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcclxuICAgIHRoaXMuZm9jdXNFbGVtZW50T25DbG9zZSA9IGZvY3VzRWxlbWVudE9uQ2xvc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgUm9vdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMucm9vdEVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBnZXQgRm9jdXNFbGVtZW50T25DbG9zZSgpOiBIVE1MRWxlbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c0VsZW1lbnRPbkNsb3NlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -25,4 +25,4 @@ export class StylesMapManager {
25
25
  return style;
26
26
  }
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGVzTWFwTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL1N0eWxlc01hcE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQTtBQUsvRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxTQUFTLEdBQXFCLElBQUksR0FBRyxDQUMxQztRQUNFLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO1FBQzNDLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUM7S0FDNUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLCtCQUErQixHQUF3QixJQUFJLEdBQUcsQ0FDbkU7UUFDRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDcEQsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDO1FBQy9DLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztLQUNoRCxDQUNGLENBQUM7SUFFRixNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxVQUFlO1FBQzFELElBQUksS0FBSyxHQUFXLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDOUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDaEMsQ0FBQztpQkFDSSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFnaWNQcm9wZXJ0aWVzfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiXHJcbmltcG9ydCB7TlN0cmluZywgaXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiXHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN0eWxlc01hcE1hbmFnZXIge1xyXG4gIHN0YXRpYyBTdHlsZXNNYXA6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PihcclxuICAgIFtcclxuICAgICAgW01hZ2ljUHJvcGVydGllcy5MaW5lRGl2aWRlciwgbmV3IE1hcDxhbnksIGFueT4oW1t0cnVlLCBcInNvbGlkXCJdLCBbZmFsc2UsIFwiaGlkZGVuXCJdXSldLFxyXG4gICAgICBbTWFnaWNQcm9wZXJ0aWVzLkltYWdlRmlsZSwgXCJ1cmwoJ1xcezB9XFwnKVwiXSxcclxuICAgICAgW01hZ2ljUHJvcGVydGllcy5XYWxscGFwZXIsIFwidXJsKCdcXHswfVxcJylcIl1cclxuICAgIF1cclxuICApO1xyXG5cclxuICBzdGF0aWMgTWFnaWNQcm9wZXJ0eVRvSHRtbEF0dHJpYnV0ZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFxyXG4gICAgW1xyXG4gICAgICBbTWFnaWNQcm9wZXJ0aWVzLkxpbmVEaXZpZGVyLCBcImJvcmRlci1ib3R0b20tc3R5bGVcIl0sXHJcbiAgICAgIFtNYWdpY1Byb3BlcnRpZXMuSW1hZ2VGaWxlLCBcImJhY2tncm91bmQtaW1hZ2VcIl0sXHJcbiAgICAgIFtNYWdpY1Byb3BlcnRpZXMuV2FsbHBhcGVyLCBcImJhY2tncm91bmQtaW1hZ2VcIl1cclxuICAgIF1cclxuICApO1xyXG5cclxuICBzdGF0aWMgbWFnaWNWYWx1ZUdldFN0eWxlKHN0eWxlTmFtZTogc3RyaW5nLCBtYWdpY1ZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0eWxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQobWFnaWNWYWx1ZSkpIHtcclxuICAgICAgbGV0IHZhbHVlID0gU3R5bGVzTWFwTWFuYWdlci5TdHlsZXNNYXAuZ2V0KHN0eWxlTmFtZSk7XHJcbiAgICAgIGlmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gTWFwKSB7XHJcbiAgICAgICAgc3R5bGUgPSB2YWx1ZS5nZXQobWFnaWNWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IgPT09IFN0cmluZykge1xyXG4gICAgICAgIHN0eWxlID0gTlN0cmluZy5Gb3JtYXQodmFsdWUudG9TdHJpbmcoKSwgbWFnaWNWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGVzTWFwTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL1N0eWxlc01hcE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQTtBQUsvRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxTQUFTLEdBQXFCLElBQUksR0FBRyxDQUMxQztRQUNFLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO1FBQzNDLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUM7S0FDNUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLCtCQUErQixHQUF3QixJQUFJLEdBQUcsQ0FDbkU7UUFDRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLENBQUM7UUFDcEQsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDO1FBQy9DLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztLQUNoRCxDQUNGLENBQUM7SUFFRixNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxVQUFlO1FBQzFELElBQUksS0FBSyxHQUFXLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssR0FBRyxFQUFFO2dCQUM3QixLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMvQjtpQkFDSSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssTUFBTSxFQUFFO2dCQUNyQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDdEQ7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFnaWNQcm9wZXJ0aWVzfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiXHJcbmltcG9ydCB7TlN0cmluZywgaXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiXHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN0eWxlc01hcE1hbmFnZXIge1xyXG4gIHN0YXRpYyBTdHlsZXNNYXA6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PihcclxuICAgIFtcclxuICAgICAgW01hZ2ljUHJvcGVydGllcy5MaW5lRGl2aWRlciwgbmV3IE1hcDxhbnksIGFueT4oW1t0cnVlLCBcInNvbGlkXCJdLCBbZmFsc2UsIFwiaGlkZGVuXCJdXSldLFxyXG4gICAgICBbTWFnaWNQcm9wZXJ0aWVzLkltYWdlRmlsZSwgXCJ1cmwoJ1xcezB9XFwnKVwiXSxcclxuICAgICAgW01hZ2ljUHJvcGVydGllcy5XYWxscGFwZXIsIFwidXJsKCdcXHswfVxcJylcIl1cclxuICAgIF1cclxuICApO1xyXG5cclxuICBzdGF0aWMgTWFnaWNQcm9wZXJ0eVRvSHRtbEF0dHJpYnV0ZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFxyXG4gICAgW1xyXG4gICAgICBbTWFnaWNQcm9wZXJ0aWVzLkxpbmVEaXZpZGVyLCBcImJvcmRlci1ib3R0b20tc3R5bGVcIl0sXHJcbiAgICAgIFtNYWdpY1Byb3BlcnRpZXMuSW1hZ2VGaWxlLCBcImJhY2tncm91bmQtaW1hZ2VcIl0sXHJcbiAgICAgIFtNYWdpY1Byb3BlcnRpZXMuV2FsbHBhcGVyLCBcImJhY2tncm91bmQtaW1hZ2VcIl1cclxuICAgIF1cclxuICApO1xyXG5cclxuICBzdGF0aWMgbWFnaWNWYWx1ZUdldFN0eWxlKHN0eWxlTmFtZTogc3RyaW5nLCBtYWdpY1ZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0eWxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQobWFnaWNWYWx1ZSkpIHtcclxuICAgICAgbGV0IHZhbHVlID0gU3R5bGVzTWFwTWFuYWdlci5TdHlsZXNNYXAuZ2V0KHN0eWxlTmFtZSk7XHJcbiAgICAgIGlmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gTWFwKSB7XHJcbiAgICAgICAgc3R5bGUgPSB2YWx1ZS5nZXQobWFnaWNWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IgPT09IFN0cmluZykge1xyXG4gICAgICAgIHN0eWxlID0gTlN0cmluZy5Gb3JtYXQodmFsdWUudG9TdHJpbmcoKSwgbWFnaWNWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -355,4 +355,4 @@ export class AccessorMagicService {
355
355
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AccessorMagicService, [{
356
356
  type: Injectable
357
357
  }], () => [{ type: i1.TaskMagicService }, { type: i2.MagicColorService }], null); })();
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2FjY2Vzc29yLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFHLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxjQUFjLEVBQWEsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLM0QsTUFBTSxPQUFPLG9CQUFvQjtJQVNUO0lBQWtDO0lBUnhELE1BQU0sR0FBUSxJQUFJLENBQUM7SUFFSCxJQUFJLEdBQW1CLDJCQUEyQixDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxHQUFtQiwyQkFBMkIsQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBS3pGLFlBQXNCLElBQXNCLEVBQVksVUFBNkI7UUFBL0QsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNuRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQVFELGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLFVBQTJCLENBQUM7UUFDaEMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7WUFDNUgsT0FBTyxJQUFJLENBQUM7O1lBRVosT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQVNELE9BQU8sQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBUUQsY0FBYyxDQUFDLFNBQWlCLEVBQUUsS0FBYTtRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVztZQUM5QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDbkMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBU0QsUUFBUSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUN4QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRSxPQUFPLE1BQU0sQ0FBQztJQUVoQixDQUFDO0lBU0QsYUFBYSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUM3QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEMsQ0FBQztJQVNELFVBQVUsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQVVELFFBQVEsQ0FBQyxTQUFpQixFQUFFLFNBQWlCLEVBQUUsS0FBYztRQUMzRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQVNELFVBQVUsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDMUMsSUFBSSxHQUFHLEdBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQVNELFlBQVksQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDNUMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUM7UUFDZCxJQUFJLEdBQUcsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxHQUFXLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxJQUFJLFFBQVEsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUVsRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQixLQUFLLFlBQVksQ0FBQyxLQUFLO29CQUNyQixRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNyQixNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUN4QixLQUFLLFlBQVksQ0FBQyxLQUFLO29CQUNyQixRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNyQixNQUFNO2dCQUVSO29CQUNFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBT0QsaUJBQWlCLENBQUMsT0FBZTtRQUNoQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztZQUMzQixPQUFPLEdBQUcsQ0FBQztRQUVkLElBQUksR0FBRyxHQUFRLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFJN0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakUsSUFBSSxJQUFJLEdBQUcsR0FBRyxHQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO2dCQUM1QixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDOztZQUVsQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRTtZQUNqQixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDOztZQUU1QixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFHLENBQUM7WUFDaEIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVuQyxJQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDWixHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUMsTUFBTSxDQUFDO1FBRXZCLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pELElBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNkLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDOztZQUU1RCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUMsRUFBRSxDQUFDO1FBRXJCLElBQUcsR0FBRyxDQUFDLFNBQVMsRUFBRTtZQUNoQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWhDLE9BQVMsR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQVNELFlBQVksQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDNUMsSUFBSSxHQUFHLEdBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQVNELFVBQVUsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxPQUFPLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFNRCxXQUFXLENBQUMsU0FBaUIsRUFBRSxJQUFvQixFQUFFLEtBQWM7UUFDakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFTRCxRQUFRLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQVNELGtCQUFrQixDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQVNELGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUNoRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFTRCxjQUFjLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQVNELE9BQU8sQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDdkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQ3JDLENBQUM7SUFTRCxXQUFXLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQVNELFFBQVEsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDeEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVNELGlCQUFpQixDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUNqRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFTRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBRTFDLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxPQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUU1RCxDQUFDO0lBVUQsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxtQkFBNEIsRUFBRSxLQUFjO1FBRS9FLElBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBRyxDQUFDLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2xFLENBQUM7WUFDSixJQUFLLEdBQUcsR0FBVyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUssUUFBUSxHQUFXLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFaEQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxZQUFvQixFQUFFLEtBQWM7UUFFekUsSUFBSSxjQUFjLENBQUM7UUFDbkIsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7WUFDMUIsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztZQUN4QixRQUFRLENBQUM7YUFDTixDQUFDO1lBQ0osTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTFELElBQUksZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsY0FBYyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BFLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQVNELGlCQUFpQixDQUFDLEVBQVUsRUFBRSxLQUFjO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBUUQsZUFBZSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUMvQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLEdBQUcsR0FBRyxDQUFDO1FBRWQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLEtBQUssR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUM3RCxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQzs7WUFFQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBUUQsZUFBZSxDQUFDLEVBQUUsRUFBRSxLQUFNO1FBQ3hCLElBQUksWUFBWSxHQUFTLEVBQUUsQ0FBQTtRQUUzQixJQUFJLENBQUMsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6QyxJQUFJLEtBQUssSUFBRyxDQUFDLElBQUksS0FBSyxHQUFFLENBQUMsQ0FBQyxNQUFNLElBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0QsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDdkMsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztJQVFELGdCQUFnQixDQUFDLEtBQUssRUFBRSxTQUFTO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxLQUFLLEtBQUs7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDTixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFRRCxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLEtBQWE7UUFDaEQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBUUQsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxLQUFhO1FBQ3JELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQU9ELG1CQUFtQixDQUFDLFNBQWlCO1FBQ25DLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBUUQsWUFBWSxDQUFDLEdBQUc7UUFDZCxJQUFJLEdBQUcsSUFBSSxJQUFJO1lBQ2IsT0FBTyxLQUFLLENBQUM7UUFDZixJQUFJLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNoRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFNRCxpQkFBaUIsQ0FBQyxFQUFVO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQU1ELGFBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBTTtRQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RixPQUFPLFdBQVcsSUFBSSxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQU1ELGlCQUFpQixDQUFDLEdBQVM7UUFDekIsSUFBSSxRQUFRLEdBQVksR0FBRyxDQUFDO1FBQzVCLFFBQVEsR0FBRSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQU1ELHFCQUFxQjtRQUVuQixJQUFJLEdBQUcsR0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQU1ELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUtELFNBQVMsQ0FBQyxFQUFVLEVBQUMsS0FBYTtRQUVoQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QixPQUFPLDBCQUEwQixDQUFDO1FBQ3BDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDO1lBRXpCLElBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNwRixPQUFPLDRCQUE0QixDQUFDO1lBQ3RDLElBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO2dCQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0UsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLElBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLGtCQUFrQixFQUFDLENBQUM7b0JBQ3pGLE9BQU8sK0JBQStCLEdBQUcsa0JBQWtCLEdBQUcsR0FBRyxHQUFFLGtCQUFrQixHQUFHLFNBQVMsQ0FBQTtnQkFDbkcsQ0FBQztZQUNILENBQUM7aUJBQUssSUFBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUM7Z0JBQzNHLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0UsT0FBTywrQkFBK0IsR0FBRyxrQkFBa0IsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtZQUNsRixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDeEUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvRSxJQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLEVBQUMsQ0FBQztvQkFDNUMsT0FBTywrQkFBK0IsR0FBRyxrQkFBa0IsR0FBRyxHQUFHLEdBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtnQkFDbEYsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDekIsT0FBTywwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFDeEUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNuQixPQUFPLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUV0RCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0UsS0FBSyxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQ3ZELENBQUM7WUFDQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxlQUFlLEdBQXFCLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xGLE9BQU8sZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQVFELGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsS0FBVSxFQUFFLGNBQXdCO1FBQ3pFLElBQUcsT0FBTyxjQUFjLEtBQUssV0FBVztZQUN0QyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksUUFBUSxHQUFjLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0UsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDL0IsUUFBUSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUtELGVBQWU7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUM1QyxDQUFDO0lBT0QsYUFBYSxDQUFDLFdBQW1CLEVBQUUsS0FBYztRQUMvQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVc7WUFDOUIsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUtELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUtELGNBQWM7UUFDWixJQUFJLEtBQUssR0FBVyxDQUFDLENBQUM7UUFDdEIsSUFBSSxRQUFhLENBQUM7UUFFbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUcsQ0FBQztZQUNoRixJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pELElBQUksYUFBYSxHQUFhLElBQUksS0FBSyxFQUFFLENBQUM7WUFHMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUc7b0JBQ2hDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUVELFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBR3ZCLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQThCLEVBQUUsRUFBRTtvQkFDakQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDMUMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO3dCQUNwQixVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO3dCQUM1QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7NEJBQ3ZDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNuRCxDQUFDLENBQUMsQ0FBQzt3QkFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO29CQUMzQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBVUQsU0FBUyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsT0FBYyxFQUFFLElBQUssRUFBRyxNQUFPLEVBQUcsTUFBTyxFQUFFLFFBQVU7UUFDdkYsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBS0QsU0FBUyxDQUFDLElBQVk7UUFDcEIsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFLRCxZQUFZLENBQUMsSUFBWTtRQUN2QixPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUtNLFFBQVEsQ0FBQyxXQUFtQixFQUFFLFNBQVM7UUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs4RUE5cUJVLG9CQUFvQjtrREFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjs7aUZBQXBCLG9CQUFvQjtjQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLm1hZ2ljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbE1ldGFkYXRhLCBDb250cm9sc01ldGFkYXRhIH0gZnJvbSAnLi4vY29udHJvbHMubWV0YWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21WYWxpZGF0b3IsIEd1aUVudmlyb25tZW50LCBIdG1sUHJvcGVydGllcywgUElDIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCAsIFN0cmluZ0J1aWxkZXJ9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBnZXRHdWlFdmVudE9iaiwgSUd1aUV2ZW50LCBDb29raWVTZXJ2aWNlfSBmcm9tICdAbWFnaWMteHBhL2VuZ2luZSc7XHJcbmltcG9ydCB7IExvZ2dlciwgUElDSW50ZXJmYWNlLCBTdG9yYWdlQXR0cmlidXRlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IE1hZ2ljQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi9tYWdpYy1jb2xvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tIFwiQG1hc2tpdG8vY29yZVwiO1xyXG5pbXBvcnQgeyBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tIFwiQG1hc2tpdG8va2l0XCI7XHJcbi8qKlxyXG4gKiBQcm92aWRlcyB0aGUgVUkgd2l0aCB2YWx1ZXMgY2FsY3VsYXRlZCBieSB0aGUgTWFnaWMgV2ViQ2xpZW50XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3Nvck1hZ2ljU2VydmljZSB7XHJcbiAgTG9nZ2VyOiBhbnkgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgaGhtbTogTWFza2l0b09wdGlvbnMgPSBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3Ioe21vZGU6ICdISDpNTSd9KTtcclxuICBwdWJsaWMgcmVhZG9ubHkgaGhtbXNzOiBNYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvcih7bW9kZTogJ0hIOk1NOlNTJ30pO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRhc2s6IFRhc2tNYWdpY1NlcnZpY2UscHJvdGVjdGVkICBtYWdpY0NvbG9yOiBNYWdpY0NvbG9yU2VydmljZSkge1xyXG4gICAgdGhpcy5Mb2dnZXIgPSBMb2dnZXIuSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgdGhlIGNvbnRyb2wgaXMgcmVhZC1vbmx5XHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHJldHVybnMgSXMgdGhlIGNvbnRyb2wgbm90IHJlYWQtb25seVxyXG4gICAqL1xyXG4gIC8vIENoZWNrUmVhZE9ubHlcclxuICBjaGVja0lzUmVhZE9ubHkoY29udHJvbElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBwcm9wZXJ0aWVzOiBDb250cm9sTWV0YWRhdGE7XHJcbiAgICBwcm9wZXJ0aWVzID0gdGhpcy50YXNrLlJlY29yZHMubGlzdFswXS5nZXRDb250cm9sTWV0YWRhdGEoY29udHJvbElkKTtcclxuICAgIGlmIChwcm9wZXJ0aWVzLnByb3BlcnRpZXMuZ2V0KEh0bWxQcm9wZXJ0aWVzLlJlYWRPbmx5KSAhPT0gbnVsbCAmJiBwcm9wZXJ0aWVzLnByb3BlcnRpZXMuZ2V0KEh0bWxQcm9wZXJ0aWVzLlJlYWRPbmx5KSA9PT0gdHJ1ZSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgVGhlIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldFRleHRcclxuICBnZXRUZXh0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuVGV4dCwgcm93SWQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB0ZXh0IG9mIHRoZSB0YWIgcGFnZVxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBsYXllciBJZCBvZiB0YWJwYWdlXHJcbiAgICogQHJldHVybnMgVGV4dCBvZiB0YWJwYWdlXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUYWJwYWdlVGV4dFxyXG4gIGdldFRhYnBhZ2VUZXh0KGNvbnRyb2xJZDogc3RyaW5nLCBsYXllcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuSXRlbXNMaXN0KTtcclxuICAgIGlmICh0eXBlb2YgaXRlbXMgIT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJldHVybiBpdGVtc1tsYXllcl0uZGlzcGxheVZhbHVlO1xyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBpbWFnZSBkZWZpbmVkIGZvciB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBJbWFnZSBzZXQgb24gY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0SW1hZ2VcclxuICBnZXRJbWFnZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLkltYWdlLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhbiBpbWFnZSBpcyBzZXQgZm9yIHRoaXMgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyByZXR1cm5zIHRydWUgaWYgY29udHJvbCBoYXMgYW4gaW1hZ2Ugc2V0IG9uIGl0XHJcbiAgICovXHJcbiAgLy8gbWdJc0ltYWdlRXhpc3RzXHJcbiAgaXNJbWFnZUV4aXN0cyhjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5JbWFnZSwgcm93SWQpO1xyXG4gICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZChyZXN1bHQpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIENTUyBjbGFzc2VzIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBUaGUgY2xhc3NlcyBmb3IgdGhpcyBjb250cm9sXHJcbiAgICovXHJcbiAgLy8gbWdHZXRDbGFzc2VzXHJcbiAgZ2V0Q2xhc3Nlcyhjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDpzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRDbGFzc2VzKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgQ1NTIHN0eWxlcyBzZXQgb24gdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gc3R5bGVOYW1lIE5BbWUgb2Ygc3R5bGUgcmVxdWVzdGVkXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIFRoZSBzdHlsZSBzZXQgb24gdGhlIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldFN0eWxlXHJcbiAgZ2V0U3R5bGUoY29udHJvbElkOiBzdHJpbmcsIHN0eWxlTmFtZTogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3R5bGUgPSB0aGlzLnRhc2suZ2V0U3R5bGUoY29udHJvbElkLCBzdHlsZU5hbWUsIHJvd0lkKVxyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBpcyB2aXNpYmxlIG9yIG5vdFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBJcyB0aGUgY29udHJvbCB2aXNpYmxlIG9yIGhpZGRlblxyXG4gICAqL1xyXG4gIC8vIG1nR2V0VmlzaWJsZVxyXG4gIGdldFZpc2libGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKSA6IHN0cmluZyB7XHJcbiAgICBsZXQgdmlzOiBCb29sZWFuID0gdGhpcy5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlZpc2libGUsIHJvd0lkKTtcclxuICAgIHJldHVybiB2aXMgPyAndmlzaWJsZScgOiAnaGlkZGVuJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxwaGEgbWFzayBvZiBhIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgYWxwaGEgbWFzayBvZiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIGdldEFscGhhTWFza1xyXG4gIGdldEFscGhhTWFzayhjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOnN0cmluZ3tcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb250cm9sSWQpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwaWM6IFBJQyA9IHRoaXMudGFzay5HZXRDb250cm9sUGljdHVyZU1hc2soY29udHJvbElkKTtcclxuICAgIGxldCBtYXNrOiBzdHJpbmcgPSBwaWMuZ2V0TWFzaygpO1xyXG4gICAgbGV0IHZhbHVlU3RyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xyXG4gICAgICBzd2l0Y2ggKG1hc2suY2hhckNvZGVBdChpKSkge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKFwiMFwiKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19VOlxyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19MOlxyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19YOlxyXG4gICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKFwiQVwiKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKG1hc2suY2hhckF0KGkpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICAocGljICE9IG51bGwpID8gdmFsdWVTdHIudG9TdHJpbmcoKSA6IG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgb2JqZWN0IHJlcHJlc2VudGluZyBudW1lcmljIHBpY3R1cmVcclxuICAgKiBAcGFyYW0gcGljdHVyZSBzdHJpbmcgd2hpY2ggaXMgZGVmaW5lZCBpbiBtYWdpY1xyXG4gICAqIEByZXR1cm5zIG9iamVjdCByZXByZXNlbnRpbmcgbnVtZXJpYyBwaWN0dXJlXHJcbiAgICovXHJcbiAgLy8gbWdHZXROdW1lcmljUGljdHVyZVxyXG4gIGdldE51bWVyaWNQaWN0dXJlKHBpY3R1cmU6IHN0cmluZykgOiBhbnkge1xyXG4gICB2YXIgb2JqID0ge307XHJcbiAgIGlmIChpc051bGxPclVuZGVmaW5lZChwaWN0dXJlKSlcclxuICAgICAgcmV0dXJuIG9iajtcclxuXHJcbiAgIGxldCBwaWM6IFBJQyA9IG5ldyBQSUMocGljdHVyZSwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKTtcclxuXHJcblxyXG5cclxuICAgb2JqWydwcmVmaXgnXSA9IFwiXCJcclxuICAgaWYgKHBpYy5nZXRQb3NQcmVmXygpLmxlbmd0aCA+IDAgJiYgcGljLmdldE5lZ1ByZWZfKCkubGVuZ3RoID4gMCkge1xyXG4gICAgIGxldCBwcmVmID0gJy0nK3BpYy5nZXRQb3NQcmVmXygpO1xyXG4gICAgIGlmIChwcmVmID09IHBpYy5nZXROZWdQcmVmXygpKVxyXG4gICAgICBvYmpbJ3ByZWZpeCddID0gcGljLmdldFBvc1ByZWZfKCk7XHJcbiAgIH1cclxuICAgaWYocGljLmdldFBvc1N1ZmZfKCkubGVuZ3RoID4gMClcclxuICAgICBvYmpbJ3N1ZmZpeCddID0gcGljLmdldFBvc1N1ZmZfKCk7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ3N1ZmZpeCddID0gXCJcIjtcclxuXHJcbiAgIGlmKHBpYy5pc05lZ2F0aXZlKCkpXHJcbiAgICAgb2JqWydhbGxvd05lZ2F0aXZlJ10gPSB0cnVlO1xyXG4gICBlbHNlXHJcbiAgICAgb2JqWydhbGxvd05lZ2F0aXZlJ10gPSBmYWxzZTtcclxuICAgaWYocGljLmdldERlYygpPj0gMClcclxuICAgICAgb2JqWydwcmVjaXNpb24nXSA9IHBpYy5nZXREZWMoKTtcclxuXHJcbiAgIGlmKHBpYy5pc0xlZnQoKSlcclxuICAgICAgb2JqWydhbGlnbiddPVwibGVmdFwiO1xyXG5cclxuICAgb2JqWydkZWNpbWFsJ10gPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXREZWNpbWFsKCk7XHJcbiAgIGlmKHBpYy53aXRoQ29tYSgpKVxyXG4gICAgICBvYmpbJ3Rob3VzYW5kcyddPUd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFRob3VzYW5kcygpO1xyXG4gICBlbHNlXHJcbiAgICAgb2JqWyd0aG91c2FuZHMnXT1cIlwiO1xyXG5cclxuICAgIGlmKHBpYy5nZXRXaG9sZXMoKSlcclxuICAgICAgb2JqWyd3aG9sZXMnXT1waWMuZ2V0V2hvbGVzKCk7XHJcblxyXG4gICAgcmV0dXJuICAgb2JqO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBzaG91bGQgaGF2ZSB0aGUgXCJyZXF1aXJlZFwiIGF0dHJpYnV0ZSBzZXQgb24gaXRcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldE11c3RJbnB1dFxyXG4gIGdldE11c3RJbnB1dChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgIGxldCB2aXM6IEJvb2xlYW4gPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuTXVzdElucHV0LCByb3dJZCk7XHJcbiAgICByZXR1cm4gdmlzID8gJ3RydWUnIDogJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIGNvbnRyb2wgaXMgZGlzYWJsZWRcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0lzRGlzYWJsZWRcclxuICBpc0Rpc2FibGVkKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IGFueXtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuRW5hYmxlZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gdHJ1ZSA/IG51bGwgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIGdldFByb3BlcnR5IChub3QgY2hhbmdlZClcclxuICBnZXRQcm9wZXJ0eShjb250cm9sSWQ6IHN0cmluZywgcHJvcDogSHRtbFByb3BlcnRpZXMsIHJvd0lkPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgcHJvcCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGl0bGUgKHRvb2x0aXApIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFRpdGxlXHJcbiAgZ2V0VGl0bGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5Ub29sdGlwLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aXRsZSAodG9vbHRpcCkgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGl0bGUgZm9yIHpvb20gYnV0dG9uXHJcbiAgZ2V0Wm9vbUJ1dHRvblRpdGxlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuWm9vbUJ1dHRvblRvb2x0aXAsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNlbGVjdGlvbiBjb250cm9sJ3Mgc2VsZWN0ZWQgdmFsdWVcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBnZXRTZWxlY3RlZFZhbHVlXHJcbiAgZ2V0U2VsZWN0ZWRWYWx1ZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkVmFsdWUsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHBsYWNlLWhvbGRlciB0ZXh0IG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRQbGFjZWhvbGRlclxyXG4gIGdldFBsYWNlaG9sZGVyKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuUGxhY2VIb2xkZXIsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSB0eXBlIGZvciBpbnB1dCBjb250cm9scyAtIHNob3VsZCB0aGUgY29udHJvbCBiZSBhIHNpbXBsZSB0ZXh0IG9yIGEgcGFzc3dvcmQgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VHlwZVxyXG4gIGdldFR5cGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5QYXNzd29yZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdCA/IFwicGFzc3dvcmRcIiA6IFwidGV4dFwiXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0YWItaW5kZXggb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFRhYkluZGV4XHJcbiAgZ2V0VGFiSW5kZXgoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5UYWJJbmRleCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLy8gbWdHZXRWYWx1ZSAtLT5cclxuICBnZXRWYWx1ZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRWYWx1ZShjb250cm9sSWQsIHJvd0lkKTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLy8gbWdHZXRWYWx1ZSAtLT5cclxuICBnZXRGb3JtYXR0ZWRWYWx1ZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRWYWx1ZShjb250cm9sSWQsIHJvd0lkKTtcclxuICAgIHZhbCA9IHRoaXMudGFzay5nZXRGb3JtYXR0ZWRWYWx1ZShjb250cm9sSWQsIHZhbCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIFBpY3R1cmUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLy8gZ2V0UGljdHVyZSAtLT5cclxuICBnZXRQaWN0dXJlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcblxyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2xJZCkpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgbGV0IHBpYzogUElDID0gdGhpcy50YXNrLkdldENvbnRyb2xQaWN0dXJlTWFzayhjb250cm9sSWQpO1xyXG4gICAgcmV0dXJuICAocGljICE9IG51bGwpID8gcGljLmdldEZvcm1hdCgpLnRvU3RyaW5nKCkgOiBudWxsO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGN1c3RvbSAodXNlcikgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTmFtZSBvZiByZXF1ZXN0ZWQgcHJvcGVydHlcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldEN1c3RvbVByb3BlcnR5XHJcbiAgZ2V0Q3VzdG9tUHJvcGVydHkoY29udHJvbElkOiBzdHJpbmcsIHByb3BlcnR5TmFtZU9yUm93SUQ/OiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKSA6IGFueVxyXG4gIHtcclxuICAgIGlmKGNvbnRyb2xJZC5pbmRleE9mKCd+Jyk9PSAtMSlcclxuICAgIHJldHVybiB0aGlzLmdldEN1c3RvbVByb3BlcnR5XzEoY29udHJvbElkLCBwcm9wZXJ0eU5hbWVPclJvd0lELCByb3dJZCk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0ICBjaWQ6IHN0cmluZyA9IGNvbnRyb2xJZC5zcGxpdCgnficpWzBdO1xyXG4gICAgICBsZXQgIHByb3BOYW1lOiBzdHJpbmcgPSBjb250cm9sSWQuc3BsaXQoJ34nKVsxXTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEN1c3RvbVByb3BlcnR5XzEoY2lkLCBwcm9wTmFtZSwgcHJvcGVydHlOYW1lT3JSb3dJRCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDdXN0b21Qcm9wZXJ0eV8xKGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpXHJcbiAge1xyXG4gICAgbGV0IHVzZXJQcm9wZXJ0aWVzO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0lkKSlcclxuICAgICAgcm93SWQgPSAnMCc7XHJcbiAgICBsZXQgcmVjID0gdGhpcy50YXNrLlJlY29yZHMubGlzdFtyb3dJZF07XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocmVjKSlcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgY29udHJvbE1ldGFkYXRhID0gcmVjLmdldENvbnRyb2xNZXRhZGF0YShjb250cm9sSWQpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2xNZXRhZGF0YS51c2VyUHJvcGVydGllcy5oYXMocHJvcGVydHlOYW1lKSkge1xyXG4gICAgICAgIHVzZXJQcm9wZXJ0aWVzID0gY29udHJvbE1ldGFkYXRhLnVzZXJQcm9wZXJ0aWVzLmdldChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlclByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGl0ZW1zIG9mIGEgc2VsZWN0aW9uIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gaWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0SXRlbUxpc3RWYWx1ZXNcclxuICBnZXRJdGVtTGlzdFZhbHVlcyhpZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBBcnJheTx7aW5kZXg6IG51bWJlciwgZGlzcGxheVZhbHVlOiBzdHJpbmd9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShpZCwgSHRtbFByb3BlcnRpZXMuSXRlbXNMaXN0LCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBmaWx0ZXJlZCBpdGVtcyBsaXN0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgZ2V0RmlsdGVyZWRMaXN0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IEFycmF5PHtpbmRleDogbnVtYmVyLCBkaXNwbGF5VmFsdWU6IHN0cmluZ30+IHtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3dJZCkpXHJcbiAgICAgIHJvd0lkID0gJzAnO1xyXG5cclxuICAgIGxldCBpdGVtcyA9IHRoaXMuZ2V0SXRlbUxpc3RWYWx1ZXMoY29udHJvbElkLCByb3dJZCk7XHJcbiAgICBsZXQgdmFsdWU6IHN0cmluZyA9IHRoaXMudGFzay5nZXRGb3JtQ29udHJvbChyb3dJZCwgY29udHJvbElkKS52YWx1ZTtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gXCJcIiAmJiBpdGVtcyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmRpc3BsYXlWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogR2V0cyB0aGUgZGlzcGxheSB2YWx1ZSBvZiB0aGUgaXRlbSBmcm9tIGl0ZW1zIG9mIGEgc2VsZWN0aW9uIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gaWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldERpc3BsYXlWYWx1ZShpZCwgcm93SWQ/KSB7XHJcbiAgICBsZXQgZGlzcGxheVZhbHVlOnN0cmluZyA9XCJcIlxyXG5cclxuICAgIGxldCBvID0gIHRoaXMuZ2V0UHJvcGVydHkoaWQsIEh0bWxQcm9wZXJ0aWVzLkl0ZW1zTGlzdCwgcm93SWQpO1xyXG4gICAgbGV0IHZhbHVlID0gdGhpcy50YXNrLmdldFZhbHVlKGlkLCByb3dJZClcclxuICAgIGlmICh2YWx1ZSA+PTAgJiYgdmFsdWUgPG8ubGVuZ3RoICAmJiAhaXNOdWxsT3JVbmRlZmluZWQob1t2YWx1ZV0pKVxyXG4gICAgICBkaXNwbGF5VmFsdWUgPSBvW3ZhbHVlXS5kaXNwbGF5VmFsdWU7XHJcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBpcyBzZWxlY3RlZCBvciBub3RcclxuICAgKiBAcGFyYW0gIGluZGV4IG9mIGN1cnJlbnQgb3B0aW9uIGluIGl0ZXJhcm90clxyXG4gICAqIEBwYXJhbSBjb250cm9sIElkIG9mIGxpc3QgY29udHJvbFxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovIC8vIGlzT3B0aW9uU2VsZWN0ZWRcclxuICBpc09wdGlvblNlbGVjdGVkKGluZGV4LCBjb250cm9sSWQpIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0VmFsdWUoY29udHJvbElkLCBcIjBcIik7XHJcbiAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsKSB7XHJcbiAgICAgICAgICAgaWYgKGl0ZW0gPT09IGluZGV4KVxyXG4gICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBpcyBzZWxlY3RlZCBvciBub3QgLSB1c2VkIGZvciB0aGUgdGFiIGJ1dHRvbnNcclxuICAgICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAgICogQHBhcmFtICBsYXllciBJZCBvZiB0aGUgdGFiIHBhZ2VcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi8gLy8gbWdJc1RhYlBhZ2VTZWxlY3RlZFxyXG4gIGlzVGFiUGFnZVNlbGVjdGVkKGNvbnRyb2xJZDogc3RyaW5nLCBsYXllcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsID09IChsYXllciAtIDEpOyAvLyBjb21wYXJpbmcgc3RyaW5nIHRvIG51bWJlciFcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHRhYiBwYWdlIGxheWVyIGlzIHNlbGVjdGVkIG9yIG5vdCAtIHVzZWQgZm9yIHRoZSBkaXYgd2hpY2ggcmVwcmVzZW50cyB0aGUgdGFiIHBhZ2VcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gIGxheWVyIElkIG9mIHRoZSB0YWIgcGFnZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovIC8vIG1nSXNUYWJMYXllclNlbGVjdGVkXHJcbiAgaXNUYWJQYWdlTGF5ZXJTZWxlY3RlZChjb250cm9sSWQ6IHN0cmluZywgbGF5ZXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkTGF5ZXIpO1xyXG4gICAgcmV0dXJuIHZhbCA9PSAobGF5ZXIgLSAxKTsgLy8gY29tcGFyaW5nIHN0cmluZyB0byBudW1iZXIhXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgdGFiIHBhZ2VcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldFRhYlNlbGVjdGVkSW5kZXgoY29udHJvbElkOiBzdHJpbmcpIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZFZhbHVlKTtcclxuICAgIHJldHVybiB2YWw7IC8vIGNvbXBhcmluZyBzdHJpbmcgdG8gbnVtYmVyIVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIHByaXZhdGUgbWV0aG9kZXNcclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gbWdJZlJvd0NyZWF0ZWRcclxuICBpZlJvd0NyZWF0ZWQocm93KTogYm9vbGVhbiB7XHJcbiAgICBpZiAocm93ID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGxldCByb3dJZCA9IHR5cGVvZiByb3cgPT0gXCJudW1iZXJcIiA/IHJvdy50b1N0cmluZygpIDogcm93LnJvd0lkO1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZ2V0Rm9ybUdyb3VwQnlSb3cocm93SWQpO1xyXG4gICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZChyZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIG1nR2V0Rm9ybUdyb3VwQnlSb3dcclxuICBnZXRGb3JtR3JvdXBCeVJvdyhpZDogc3RyaW5nKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZm9ybUdyb3Vwc1tpZF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gaXNSb3dTZWxlY3RlZCAobm90IGNoYW5nZWQpXHJcbiAgaXNSb3dTZWxlY3RlZChjb250cm9sSWQsIHJvd0lkPykge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZFJvdywgXCIwXCIpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkUm93ID09IHJvd0lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgcm93IGlzIGluIGVkaXQgc3RhdGVcclxuICAgKiBAcGFyYW0gcm93XHJcbiAgICovXHJcbiAgaXNSb3dJblJvd0VkaXRpbmcocm93PzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpUm93SWQgOiBzdHJpbmcgPSAnMCc7XHJcbiAgICBndWlSb3dJZD0gdHlwZW9mIHJvdyA9PSBcIm51bWJlclwiID8gcm93LnRvU3RyaW5nKCkgOiByb3cucm93SWQ7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmlzUm93SW5Sb3dFZGl0aW5nKGd1aVJvd0lkKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgcm93IGlzIGluIGVkaXQgc3RhdGUsIHVzZSB0aGlzIG1ldGhvZCB3aGlsZSBjb250cm9sIG91dHNpZGUgdGFibGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dcclxuICAgKi9cclxuICBpc0N1cnJlbnRJblJvd0VkaXRpbmcoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgbGV0IHJvdyAgPSB0aGlzLnRhc2sudGFibGVTZXJ2aWNlLmdldFNlbGVjdGVkUm93KCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGFzay5pc1Jvd0luUm93RWRpdGluZyhyb3cpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gR2V0R3VpVG9wSW5kZXhcclxuICBndWlUb3BJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay50YWJsZVNlcnZpY2UuZ2V0VGFibGVUb3BJbmRleCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldEVyck1zZyhpZDogc3RyaW5nLHJvd0lkOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgYyA9IHRoaXMudGFzay5nZXRGb3JtQ29udHJvbChyb3dJZCwgaWQpO1xyXG4gICAgaWYgKGMuaGFzRXJyb3IoJ3JlcXVpcmVkJykpXHJcbiAgICAgIHJldHVybiAnQ29udHJvbCBtdXN0IGJlIHVwZGF0ZWQuJztcclxuICAgIGlmIChjLmhhc0Vycm9yKCdwYXR0ZXJuJykpe1xyXG4gICAgICAvL1RvIGNoZWNrIHdoZXRoZXIgdGhlIG51bWVyaWMgZmllbGQgYWxsb3dlZCBvbmx5IHBvc2l0aXZlIHZhbHVlcyBvciBub3QuXHJcbiAgICAgIGlmKGMuZXJyb3JzLnBhdHRlcm4uYWN0dWFsVmFsdWUgPCAwICYmICFjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5pbmNsdWRlcygnLScpKVxyXG4gICAgICAgIHJldHVybiAnVmFsdWUgbXVzdCBiZSBub24tbmVnYXRpdmUnO1xyXG4gICAgICBpZihjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5pbmNsdWRlcygnLicpKXtcclxuICAgICAgICBjb25zdCBudW1lcmljRm9ybWF0ID0gTWF0aC5hYnMoYy5lcnJvcnMucGF0dGVybi5hY3R1YWxWYWx1ZSkudG9TdHJpbmcoKS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICAgIGNvbnN0IGRlY2ltYWxGb3JtYXQgPSBNYXRoLmFicyhjLmVycm9ycy5wYXR0ZXJuLmFjdHVhbFZhbHVlKS50b1N0cmluZygpLnNwbGl0KCcuJylbMV07XHJcbiAgICAgICAgY29uc3QgYWN0dWFsTnVtZXJpY0xpbWl0ID0gYy5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm4ubWF0Y2goLywoXFxkKykvKVsxXTtcclxuICAgICAgICBjb25zdCBhY3R1YWxEZWNpbWFsTGltaXQgPSBjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5tYXRjaCgvKD86W14sXSssKXsyfShcXGQrKS8pWzFdO1xyXG4gICAgICAgIGlmKG51bWVyaWNGb3JtYXQubGVuZ3RoID4gYWN0dWFsTnVtZXJpY0xpbWl0IHx8IGRlY2ltYWxGb3JtYXQubGVuZ3RoID4gYWN0dWFsRGVjaW1hbExpbWl0KXtcclxuICAgICAgICAgIHJldHVybiBcIk51bWVyaWMgZm9ybWF0IGlzIGxpbWl0ZWQgdG8gXCIgKyBhY3R1YWxOdW1lcmljTGltaXQgKyBcIi5cIisgYWN0dWFsRGVjaW1hbExpbWl0ICsgXCIgZGlnaXRzXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNlIGlmKCFjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5pbmNsdWRlcygnLicpICYmICFOdW1iZXIuaXNJbnRlZ2VyKGMuZXJyb3JzLnBhdHRlcm4uYWN0dWFsVmFsdWUpKXtcclxuICAgICAgICBjb25zdCBhY3R1YWxOdW1lcmljTGltaXQgPSBjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5tYXRjaCgvLChcXGQrKS8pWzFdO1xyXG4gICAgICAgIHJldHVybiBcIk51bWVyaWMgZm9ybWF0IGlzIGxpbWl0ZWQgdG8gXCIgKyBhY3R1YWxOdW1lcmljTGltaXQgKyBcIi5cIisgMCArIFwiIGRpZ2l0c1wiXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGNvbnN0IG51bWVyaWNGb3JtYXQgPSBNYXRoLmFicyhjLmVycm9ycy5wYXR0ZXJuLmFjdHVhbFZhbHVlKS50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbE51bWVyaWNMaW1pdCA9IGMuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuLm1hdGNoKC8sKFxcZCspLylbMV07XHJcbiAgICAgICAgaWYobnVtZXJpY0Zvcm1hdC5sZW5ndGggPiBhY3R1YWxOdW1lcmljTGltaXQpe1xyXG4gICAgICAgICAgcmV0dXJuIFwiTnVtZXJpYyBmb3JtYXQgaXMgbGltaXRlZCB0byBcIiArIGFjdHVhbE51bWVyaWNMaW1pdCArIFwiLlwiKyAwICsgXCIgZGlnaXRzXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjLmhhc0Vycm9yKCdyYW5nZXZhbGlkYXRvcicpKVxyXG4gICAgICByZXR1cm4gYy5lcnJvcnMucmFuZ2V2YWxpZGF0b3IuZXJyb3JNc2c7XHJcbiAgICBpZiAoYy5oYXNFcnJvcignbWF4bGVuZ3RoJykpXHJcbiAgICAgIHJldHVybiAnTWF4IGxlbmd0aCBhbGxvd2VkIGlzIDogJyArIGMuZXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aDtcclxuICAgIGlmIChjLmhhc0Vycm9yKCdtYXgnKSlcclxuICAgICAgcmV0dXJuICdNYXggdmFsdWUgYWxsb3dlZCBpcyA6ICcgKyBjLmVycm9ycy5tYXgubWF4O1xyXG5cclxuICAgIGxldCBjb250cm9sTWV0YWRhdGEgPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0W3Jvd0lkXS5nZXRDb250cm9sTWV0YWRhdGEoaWQpO1xyXG4gICAgZm9yIChsZXQga2V5IG9mIGNvbnRyb2xNZXRhZGF0YS5jdXN0b21WYWxpZGF0b3JzLmtleXMoKSlcclxuICAgIHtcclxuICAgICAgaWYgKGMuaGFzRXJyb3Ioa2V5KSkge1xyXG4gICAgICAgIGxldCBjdXN0b21WYWxpZGF0b3I6IEN1c3RvbVZhbGlkYXRvciAgPSBjb250cm9sTWV0YWRhdGEuY3VzdG9tVmFsaWRhdG9ycy5nZXQoa2V5KTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdG9yLmdldEVyck1lc3NhZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAndW5rbm93biBlcnJvcic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGEgdXNlci1zdXBwbGllZCB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcGFyYW0gcmVmcmVzaERpc3BsYXlcclxuICAgKi9cclxuICBzZXRWYWx1ZVRvQ29udHJvbChjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCByZWZyZXNoRGlzcGxheT86IGJvb2xlYW4pe1xyXG4gICAgaWYodHlwZW9mIHJlZnJlc2hEaXNwbGF5ID09PSBcInVuZGVmaW5lZFwiKVxyXG4gICAgICByZWZyZXNoRGlzcGxheSA9IHRydWU7XHJcbiAgICBsZXQgZ3VpRXZlbnQ6IElHdWlFdmVudCA9IGdldEd1aUV2ZW50T2JqKFwic2V0ZXh0ZXJuYWx2YWx1ZVwiLCBjb250cm9sTmFtZSwgMCk7XHJcbiAgICBndWlFdmVudC5leHRlcm5hbFZhbHVlID0gdmFsdWU7XHJcbiAgICBndWlFdmVudC5wYXJhbSA9IHJlZnJlc2hEaXNwbGF5O1xyXG4gICAgdGhpcy50YXNrLmluc2VydEV2ZW50KGd1aUV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG4gIGlzRGF0YXZpZXdFbXB0eSgpIDogYm9vbGVhbiB7XHJcbiAgICAgcmV0dXJuIHRoaXMudGFzay5SZWNvcmRzLmlzRW1wdHlEYXRhVmlldztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHNpbXVsYXRlcyBhIGNsaWNrIGV2ZW50IG9uIHRoZSBzcGVjaWZpZWQgY29udHJvbCwgZm9yIHRoZSBNYWdpYyBlbmdpbmVcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0gcm93SWRcclxuICAgKi9cclxuICBzaW11bGF0ZUNsaWNrKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHJvd0lkPzogbnVtYmVyKXtcclxuICAgIGlmICh0eXBlb2Ygcm93SWQgPT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJvd0lkID0gMDtcclxuICAgIHRoaXMudGFzay5pbnNlcnRFdmVudChnZXRHdWlFdmVudE9iaignY2xpY2snLCBjb250cm9sTmFtZSwgcm93SWQpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBCb29sZWFuIFRSVUUgaWYgdXNlciBsb2dnZWQgaW4gRWxzZSBpdCB3aWxsIHJldHVybiBGQUxTRVxyXG4gICAqL1xyXG4gIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldElzTG9nZ2VuSW4oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgSlMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlY29yZHMgd2l0aCBhbGwgdGFibGUgZmllbGRzLlxyXG4gICAqL1xyXG4gIEdldEZvcm1SZWNvcmRzKCk6IGFueSB7XHJcbiAgICBsZXQgcm93SWQ6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgcmVjQXJyYXk6IGFueTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMudGFzay5SZWNvcmRzKSAmJiB0aGlzLnRhc2suUmVjb3Jkcy5saXN0Lmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIGxldCByZWNMaXN0OiBDb250cm9sc01ldGFkYXRhW10gPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0O1xyXG4gICAgICBsZXQgdGFibGVDb250cm9sczogc3RyaW5nW10gPSBuZXcgQXJyYXkoKTtcclxuXHJcbiAgICAgIC8vR2VuZXJhdGUgbGlzdCBvZiB0YWJsZSBmaWVsZHMgbmFtZXNcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy50YXNrLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFzay50ZW1wbGF0ZVtrZXldID09ICcxJylcclxuICAgICAgICAgIHRhYmxlQ29udHJvbHMucHVzaChrZXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZWNBcnJheSA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgLy9VcGRhdGUgdGhlIHJlY29yZHMgYXMgbGlzdCBvZiBvYmplY3RzIHdpdGggdmFsdWVzIGZvciB0YWJsZSBmaWVsZHMuXHJcbiAgICAgIGlmICh0YWJsZUNvbnRyb2xzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZWNMaXN0LmZvckVhY2goKGN0cmxNZXRhRGF0YTogQ29udHJvbHNNZXRhZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudGFzay5SZWNvcmRzLmlzUm93Q3JlYXRlZChyb3dJZCkpIHtcclxuICAgICAgICAgICAgdmFyIGZvcm1SZWNvcmQgPSB7fTtcclxuICAgICAgICAgICAgZm9ybVJlY29yZFsncm93SWQnXSA9IHJvd0lkO1xyXG4gICAgICAgICAgICB0YWJsZUNvbnRyb2xzLmZvckVhY2goKGN0cmxJZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgZm9ybVJlY29yZFtjdHJsSWRdID0gY3RybE1ldGFEYXRhLnZhbHVlc1tjdHJsSWRdO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlY0FycmF5LnB1c2goZm9ybVJlY29yZClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZWNBcnJheTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldENvb2tpZSA6IHNldCB0aGUgY29va2llIHdpdGggc3BlY2lmaWVkIG5hbWUgYW5kIHZhbHVlICBpbiBicm93c2VyXHJcbiAgICogZXhwaXJlcyAtIGV4cGlyYXRpb24gdGltZVxyXG4gICAqIHBhdGggLSBwYXRoIHdoaWNoIG11Y2ggZXhpc3RzIGluIG9yZGVyIHNvIHRoYXQgY29va2llIGlzIHNlbnQgYXMgaGVhZGVyXHJcbiAgICogZG9tYWluIC0gc3BlY2lmaWVzIHdoaWNoIGhvc3RzIGFyZSBhbGxvd2VkIHRvIHJlY2VpdmUgdGhlIGNvb2tpZVxyXG4gICAqIHNlY3VyZSAtIHNwZWNpZmllcyBpZiBjb29raWUgaXMgc2VjdXJlICggd29ya3Mgb25seSB3aXRoIEhUVFBTKVxyXG4gICAqIHNhbWVTaXRlIC0gbGV0cyBzZXJ2ZXJzIHNwZWNpZnkgd2hldGhlci93aGVuIGNvb2tpZXMgYXJlIHNlbnQgd2l0aCBjcm9zcy1zaXRlIHJlcXVlc3RzXHJcbiAgICovXHJcbiAgU2V0Q29va2llKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgZXhwaXJlcz86IERhdGUsIHBhdGg/ICwgZG9tYWluPyAsIHNlY3VyZT8sIHNhbWVTaXRlID8pIHtcclxuICAgIENvb2tpZVNlcnZpY2Uuc2V0Q29va2llKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0Q29va2llIDogZ2V0IHRoZSBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBhbmQgdmFsdWUgIGluIGJyb3dzZXJcclxuICAgKi9cclxuICBHZXRDb29raWUobmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBDb29raWVTZXJ2aWNlLmdldENvb2tpZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZUNvb2tpZSA6IGRlbGV0ZXMgdGhlIGNvb2tpZVxyXG4gICAqL1xyXG4gIERlbGV0ZUNvb2tpZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIENvb2tpZVNlcnZpY2UuZGVsZXRlQ29va2llKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIGdldCBSR0JBIGNvbG9yIGZyb20gY29sb3IgZmlsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDb2xvcihjb2xvck51bWJlcjogbnVtYmVyLCBjb2xvclR5cGUpIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQ29sb3IuZ2V0Q29sb3IoY29sb3JOdW1iZXIsIGNvbG9yVHlwZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2FjY2Vzc29yLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFHLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxjQUFjLEVBQWEsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLM0QsTUFBTSxPQUFPLG9CQUFvQjtJQVNUO0lBQWtDO0lBUnhELE1BQU0sR0FBUSxJQUFJLENBQUM7SUFFSCxJQUFJLEdBQW1CLDJCQUEyQixDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxHQUFtQiwyQkFBMkIsQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBS3pGLFlBQXNCLElBQXNCLEVBQVksVUFBNkI7UUFBL0QsU0FBSSxHQUFKLElBQUksQ0FBa0I7UUFBWSxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNuRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENB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QUM7SUFDMUMsQ0FBQztJQUtNLFFBQVEsQ0FBQyxXQUFtQixFQUFFLFNBQVM7UUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs4RUE5cUJVLG9CQUFvQjtrREFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjs7aUZBQXBCLG9CQUFvQjtjQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYXNrTWFnaWNTZXJ2aWNlIH0gZnJvbSAnLi90YXNrLm1hZ2ljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbE1ldGFkYXRhLCBDb250cm9sc01ldGFkYXRhIH0gZnJvbSAnLi4vY29udHJvbHMubWV0YWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21WYWxpZGF0b3IsIEd1aUVudmlyb25tZW50LCBIdG1sUHJvcGVydGllcywgUElDIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCAsIFN0cmluZ0J1aWxkZXJ9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBnZXRHdWlFdmVudE9iaiwgSUd1aUV2ZW50LCBDb29raWVTZXJ2aWNlfSBmcm9tICdAbWFnaWMteHBhL2VuZ2luZSc7XHJcbmltcG9ydCB7IExvZ2dlciwgUElDSW50ZXJmYWNlLCBTdG9yYWdlQXR0cmlidXRlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IE1hZ2ljQ29sb3JTZXJ2aWNlIH0gZnJvbSAnLi9tYWdpYy1jb2xvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tIFwiQG1hc2tpdG8vY29yZVwiO1xyXG5pbXBvcnQgeyBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tIFwiQG1hc2tpdG8va2l0XCI7XHJcbi8qKlxyXG4gKiBQcm92aWRlcyB0aGUgVUkgd2l0aCB2YWx1ZXMgY2FsY3VsYXRlZCBieSB0aGUgTWFnaWMgV2ViQ2xpZW50XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3Nvck1hZ2ljU2VydmljZSB7XHJcbiAgTG9nZ2VyOiBhbnkgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgaGhtbTogTWFza2l0b09wdGlvbnMgPSBtYXNraXRvVGltZU9wdGlvbnNHZW5lcmF0b3Ioe21vZGU6ICdISDpNTSd9KTtcclxuICBwdWJsaWMgcmVhZG9ubHkgaGhtbXNzOiBNYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9UaW1lT3B0aW9uc0dlbmVyYXRvcih7bW9kZTogJ0hIOk1NOlNTJ30pO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRhc2s6IFRhc2tNYWdpY1NlcnZpY2UscHJvdGVjdGVkICBtYWdpY0NvbG9yOiBNYWdpY0NvbG9yU2VydmljZSkge1xyXG4gICAgdGhpcy5Mb2dnZXIgPSBMb2dnZXIuSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgdGhlIGNvbnRyb2wgaXMgcmVhZC1vbmx5XHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHJldHVybnMgSXMgdGhlIGNvbnRyb2wgbm90IHJlYWQtb25seVxyXG4gICAqL1xyXG4gIC8vIENoZWNrUmVhZE9ubHlcclxuICBjaGVja0lzUmVhZE9ubHkoY29udHJvbElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBwcm9wZXJ0aWVzOiBDb250cm9sTWV0YWRhdGE7XHJcbiAgICBwcm9wZXJ0aWVzID0gdGhpcy50YXNrLlJlY29yZHMubGlzdFswXS5nZXRDb250cm9sTWV0YWRhdGEoY29udHJvbElkKTtcclxuICAgIGlmIChwcm9wZXJ0aWVzLnByb3BlcnRpZXMuZ2V0KEh0bWxQcm9wZXJ0aWVzLlJlYWRPbmx5KSAhPT0gbnVsbCAmJiBwcm9wZXJ0aWVzLnByb3BlcnRpZXMuZ2V0KEh0bWxQcm9wZXJ0aWVzLlJlYWRPbmx5KSA9PT0gdHJ1ZSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgVGhlIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldFRleHRcclxuICBnZXRUZXh0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuVGV4dCwgcm93SWQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB0ZXh0IG9mIHRoZSB0YWIgcGFnZVxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBsYXllciBJZCBvZiB0YWJwYWdlXHJcbiAgICogQHJldHVybnMgVGV4dCBvZiB0YWJwYWdlXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUYWJwYWdlVGV4dFxyXG4gIGdldFRhYnBhZ2VUZXh0KGNvbnRyb2xJZDogc3RyaW5nLCBsYXllcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuSXRlbXNMaXN0KTtcclxuICAgIGlmICh0eXBlb2YgaXRlbXMgIT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJldHVybiBpdGVtc1tsYXllcl0uZGlzcGxheVZhbHVlO1xyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBpbWFnZSBkZWZpbmVkIGZvciB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBJbWFnZSBzZXQgb24gY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0SW1hZ2VcclxuICBnZXRJbWFnZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLkltYWdlLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhbiBpbWFnZSBpcyBzZXQgZm9yIHRoaXMgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyByZXR1cm5zIHRydWUgaWYgY29udHJvbCBoYXMgYW4gaW1hZ2Ugc2V0IG9uIGl0XHJcbiAgICovXHJcbiAgLy8gbWdJc0ltYWdlRXhpc3RzXHJcbiAgaXNJbWFnZUV4aXN0cyhjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5JbWFnZSwgcm93SWQpO1xyXG4gICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZChyZXN1bHQpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIENTUyBjbGFzc2VzIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBUaGUgY2xhc3NlcyBmb3IgdGhpcyBjb250cm9sXHJcbiAgICovXHJcbiAgLy8gbWdHZXRDbGFzc2VzXHJcbiAgZ2V0Q2xhc3Nlcyhjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDpzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRDbGFzc2VzKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgQ1NTIHN0eWxlcyBzZXQgb24gdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gc3R5bGVOYW1lIE5BbWUgb2Ygc3R5bGUgcmVxdWVzdGVkXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIFRoZSBzdHlsZSBzZXQgb24gdGhlIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldFN0eWxlXHJcbiAgZ2V0U3R5bGUoY29udHJvbElkOiBzdHJpbmcsIHN0eWxlTmFtZTogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3R5bGUgPSB0aGlzLnRhc2suZ2V0U3R5bGUoY29udHJvbElkLCBzdHlsZU5hbWUsIHJvd0lkKVxyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBpcyB2aXNpYmxlIG9yIG5vdFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBJcyB0aGUgY29udHJvbCB2aXNpYmxlIG9yIGhpZGRlblxyXG4gICAqL1xyXG4gIC8vIG1nR2V0VmlzaWJsZVxyXG4gIGdldFZpc2libGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKSA6IHN0cmluZyB7XHJcbiAgICBsZXQgdmlzOiBCb29sZWFuID0gdGhpcy5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlZpc2libGUsIHJvd0lkKTtcclxuICAgIHJldHVybiB2aXMgPyAndmlzaWJsZScgOiAnaGlkZGVuJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxwaGEgbWFzayBvZiBhIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgYWxwaGEgbWFzayBvZiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIGdldEFscGhhTWFza1xyXG4gIGdldEFscGhhTWFzayhjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOnN0cmluZ3tcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb250cm9sSWQpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwaWM6IFBJQyA9IHRoaXMudGFzay5HZXRDb250cm9sUGljdHVyZU1hc2soY29udHJvbElkKTtcclxuICAgIGxldCBtYXNrOiBzdHJpbmcgPSBwaWMuZ2V0TWFzaygpO1xyXG4gICAgbGV0IHZhbHVlU3RyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xyXG4gICAgICBzd2l0Y2ggKG1hc2suY2hhckNvZGVBdChpKSkge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKFwiMFwiKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19VOlxyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19MOlxyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19YOlxyXG4gICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKFwiQVwiKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdmFsdWVTdHIuQXBwZW5kKG1hc2suY2hhckF0KGkpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICAocGljICE9IG51bGwpID8gdmFsdWVTdHIudG9TdHJpbmcoKSA6IG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgb2JqZWN0IHJlcHJlc2VudGluZyBudW1lcmljIHBpY3R1cmVcclxuICAgKiBAcGFyYW0gcGljdHVyZSBzdHJpbmcgd2hpY2ggaXMgZGVmaW5lZCBpbiBtYWdpY1xyXG4gICAqIEByZXR1cm5zIG9iamVjdCByZXByZXNlbnRpbmcgbnVtZXJpYyBwaWN0dXJlXHJcbiAgICovXHJcbiAgLy8gbWdHZXROdW1lcmljUGljdHVyZVxyXG4gIGdldE51bWVyaWNQaWN0dXJlKHBpY3R1cmU6IHN0cmluZykgOiBhbnkge1xyXG4gICB2YXIgb2JqID0ge307XHJcbiAgIGlmIChpc051bGxPclVuZGVmaW5lZChwaWN0dXJlKSlcclxuICAgICAgcmV0dXJuIG9iajtcclxuXHJcbiAgIGxldCBwaWM6IFBJQyA9IG5ldyBQSUMocGljdHVyZSwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKTtcclxuXHJcblxyXG5cclxuICAgb2JqWydwcmVmaXgnXSA9IFwiXCJcclxuICAgaWYgKHBpYy5nZXRQb3NQcmVmXygpLmxlbmd0aCA+IDAgJiYgcGljLmdldE5lZ1ByZWZfKCkubGVuZ3RoID4gMCkge1xyXG4gICAgIGxldCBwcmVmID0gJy0nK3BpYy5nZXRQb3NQcmVmXygpO1xyXG4gICAgIGlmIChwcmVmID09IHBpYy5nZXROZWdQcmVmXygpKVxyXG4gICAgICBvYmpbJ3ByZWZpeCddID0gcGljLmdldFBvc1ByZWZfKCk7XHJcbiAgIH1cclxuICAgaWYocGljLmdldFBvc1N1ZmZfKCkubGVuZ3RoID4gMClcclxuICAgICBvYmpbJ3N1ZmZpeCddID0gcGljLmdldFBvc1N1ZmZfKCk7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ3N1ZmZpeCddID0gXCJcIjtcclxuXHJcbiAgIGlmKHBpYy5pc05lZ2F0aXZlKCkpXHJcbiAgICAgb2JqWydhbGxvd05lZ2F0aXZlJ10gPSB0cnVlO1xyXG4gICBlbHNlXHJcbiAgICAgb2JqWydhbGxvd05lZ2F0aXZlJ10gPSBmYWxzZTtcclxuICAgaWYocGljLmdldERlYygpPj0gMClcclxuICAgICAgb2JqWydwcmVjaXNpb24nXSA9IHBpYy5nZXREZWMoKTtcclxuXHJcbiAgIGlmKHBpYy5pc0xlZnQoKSlcclxuICAgICAgb2JqWydhbGlnbiddPVwibGVmdFwiO1xyXG5cclxuICAgb2JqWydkZWNpbWFsJ10gPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXREZWNpbWFsKCk7XHJcbiAgIGlmKHBpYy53aXRoQ29tYSgpKVxyXG4gICAgICBvYmpbJ3Rob3VzYW5kcyddPUd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFRob3VzYW5kcygpO1xyXG4gICBlbHNlXHJcbiAgICAgb2JqWyd0aG91c2FuZHMnXT1cIlwiO1xyXG5cclxuICAgIGlmKHBpYy5nZXRXaG9sZXMoKSlcclxuICAgICAgb2JqWyd3aG9sZXMnXT1waWMuZ2V0V2hvbGVzKCk7XHJcblxyXG4gICAgcmV0dXJuICAgb2JqO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBzaG91bGQgaGF2ZSB0aGUgXCJyZXF1aXJlZFwiIGF0dHJpYnV0ZSBzZXQgb24gaXRcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldE11c3RJbnB1dFxyXG4gIGdldE11c3RJbnB1dChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgIGxldCB2aXM6IEJvb2xlYW4gPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuTXVzdElucHV0LCByb3dJZCk7XHJcbiAgICByZXR1cm4gdmlzID8gJ3RydWUnIDogJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIGNvbnRyb2wgaXMgZGlzYWJsZWRcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0lzRGlzYWJsZWRcclxuICBpc0Rpc2FibGVkKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IGFueXtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuRW5hYmxlZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gdHJ1ZSA/IG51bGwgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIGdldFByb3BlcnR5IChub3QgY2hhbmdlZClcclxuICBnZXRQcm9wZXJ0eShjb250cm9sSWQ6IHN0cmluZywgcHJvcDogSHRtbFByb3BlcnRpZXMsIHJvd0lkPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgcHJvcCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGl0bGUgKHRvb2x0aXApIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFRpdGxlXHJcbiAgZ2V0VGl0bGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5Ub29sdGlwLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aXRsZSAodG9vbHRpcCkgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGl0bGUgZm9yIHpvb20gYnV0dG9uXHJcbiAgZ2V0Wm9vbUJ1dHRvblRpdGxlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuWm9vbUJ1dHRvblRvb2x0aXAsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNlbGVjdGlvbiBjb250cm9sJ3Mgc2VsZWN0ZWQgdmFsdWVcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBnZXRTZWxlY3RlZFZhbHVlXHJcbiAgZ2V0U2VsZWN0ZWRWYWx1ZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkVmFsdWUsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHBsYWNlLWhvbGRlciB0ZXh0IG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRQbGFjZWhvbGRlclxyXG4gIGdldFBsYWNlaG9sZGVyKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuUGxhY2VIb2xkZXIsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSB0eXBlIGZvciBpbnB1dCBjb250cm9scyAtIHNob3VsZCB0aGUgY29udHJvbCBiZSBhIHNpbXBsZSB0ZXh0IG9yIGEgcGFzc3dvcmQgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VHlwZVxyXG4gIGdldFR5cGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5QYXNzd29yZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdCA/IFwicGFzc3dvcmRcIiA6IFwidGV4dFwiXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0YWItaW5kZXggb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFRhYkluZGV4XHJcbiAgZ2V0VGFiSW5kZXgoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5UYWJJbmRleCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLy8gbWdHZXRWYWx1ZSAtLT5cclxuICBnZXRWYWx1ZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRWYWx1ZShjb250cm9sSWQsIHJvd0lkKTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBmb3JtYXR0ZWQgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLy8gbWdHZXRWYWx1ZSAtLT5cclxuICBnZXRGb3JtYXR0ZWRWYWx1ZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRWYWx1ZShjb250cm9sSWQsIHJvd0lkKTtcclxuICAgIHZhbCA9IHRoaXMudGFzay5nZXRGb3JtYXR0ZWRWYWx1ZShjb250cm9sSWQsIHZhbCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIFBpY3R1cmUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLy8gZ2V0UGljdHVyZSAtLT5cclxuICBnZXRQaWN0dXJlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcblxyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2xJZCkpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgbGV0IHBpYzogUElDID0gdGhpcy50YXNrLkdldENvbnRyb2xQaWN0dXJlTWFzayhjb250cm9sSWQpO1xyXG4gICAgcmV0dXJuICAocGljICE9IG51bGwpID8gcGljLmdldEZvcm1hdCgpLnRvU3RyaW5nKCkgOiBudWxsO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGN1c3RvbSAodXNlcikgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTmFtZSBvZiByZXF1ZXN0ZWQgcHJvcGVydHlcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldEN1c3RvbVByb3BlcnR5XHJcbiAgZ2V0Q3VzdG9tUHJvcGVydHkoY29udHJvbElkOiBzdHJpbmcsIHByb3BlcnR5TmFtZU9yUm93SUQ/OiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKSA6IGFueVxyXG4gIHtcclxuICAgIGlmKGNvbnRyb2xJZC5pbmRleE9mKCd+Jyk9PSAtMSlcclxuICAgIHJldHVybiB0aGlzLmdldEN1c3RvbVByb3BlcnR5XzEoY29udHJvbElkLCBwcm9wZXJ0eU5hbWVPclJvd0lELCByb3dJZCk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0ICBjaWQ6IHN0cmluZyA9IGNvbnRyb2xJZC5zcGxpdCgnficpWzBdO1xyXG4gICAgICBsZXQgIHByb3BOYW1lOiBzdHJpbmcgPSBjb250cm9sSWQuc3BsaXQoJ34nKVsxXTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEN1c3RvbVByb3BlcnR5XzEoY2lkLCBwcm9wTmFtZSwgcHJvcGVydHlOYW1lT3JSb3dJRCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDdXN0b21Qcm9wZXJ0eV8xKGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpXHJcbiAge1xyXG4gICAgbGV0IHVzZXJQcm9wZXJ0aWVzO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJvd0lkKSlcclxuICAgICAgcm93SWQgPSAnMCc7XHJcbiAgICBsZXQgcmVjID0gdGhpcy50YXNrLlJlY29yZHMubGlzdFtyb3dJZF07XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocmVjKSlcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgY29udHJvbE1ldGFkYXRhID0gcmVjLmdldENvbnRyb2xNZXRhZGF0YShjb250cm9sSWQpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2xNZXRhZGF0YS51c2VyUHJvcGVydGllcy5oYXMocHJvcGVydHlOYW1lKSkge1xyXG4gICAgICAgIHVzZXJQcm9wZXJ0aWVzID0gY29udHJvbE1ldGFkYXRhLnVzZXJQcm9wZXJ0aWVzLmdldChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlclByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGl0ZW1zIG9mIGEgc2VsZWN0aW9uIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gaWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0SXRlbUxpc3RWYWx1ZXNcclxuICBnZXRJdGVtTGlzdFZhbHVlcyhpZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBBcnJheTx7aW5kZXg6IG51bWJlciwgZGlzcGxheVZhbHVlOiBzdHJpbmd9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShpZCwgSHRtbFByb3BlcnRpZXMuSXRlbXNMaXN0LCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBmaWx0ZXJlZCBpdGVtcyBsaXN0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgZ2V0RmlsdGVyZWRMaXN0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IEFycmF5PHtpbmRleDogbnVtYmVyLCBkaXNwbGF5VmFsdWU6IHN0cmluZ30+IHtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3dJZCkpXHJcbiAgICAgIHJvd0lkID0gJzAnO1xyXG5cclxuICAgIGxldCBpdGVtcyA9IHRoaXMuZ2V0SXRlbUxpc3RWYWx1ZXMoY29udHJvbElkLCByb3dJZCk7XHJcbiAgICBsZXQgdmFsdWU6IHN0cmluZyA9IHRoaXMudGFzay5nZXRGb3JtQ29udHJvbChyb3dJZCwgY29udHJvbElkKS52YWx1ZTtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gXCJcIiAmJiBpdGVtcyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmRpc3BsYXlWYWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogR2V0cyB0aGUgZGlzcGxheSB2YWx1ZSBvZiB0aGUgaXRlbSBmcm9tIGl0ZW1zIG9mIGEgc2VsZWN0aW9uIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gaWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldERpc3BsYXlWYWx1ZShpZCwgcm93SWQ/KSB7XHJcbiAgICBsZXQgZGlzcGxheVZhbHVlOnN0cmluZyA9XCJcIlxyXG5cclxuICAgIGxldCBvID0gIHRoaXMuZ2V0UHJvcGVydHkoaWQsIEh0bWxQcm9wZXJ0aWVzLkl0ZW1zTGlzdCwgcm93SWQpO1xyXG4gICAgbGV0IHZhbHVlID0gdGhpcy50YXNrLmdldFZhbHVlKGlkLCByb3dJZClcclxuICAgIGlmICh2YWx1ZSA+PTAgJiYgdmFsdWUgPG8ubGVuZ3RoICAmJiAhaXNOdWxsT3JVbmRlZmluZWQob1t2YWx1ZV0pKVxyXG4gICAgICBkaXNwbGF5VmFsdWUgPSBvW3ZhbHVlXS5kaXNwbGF5VmFsdWU7XHJcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBpcyBzZWxlY3RlZCBvciBub3RcclxuICAgKiBAcGFyYW0gIGluZGV4IG9mIGN1cnJlbnQgb3B0aW9uIGluIGl0ZXJhcm90clxyXG4gICAqIEBwYXJhbSBjb250cm9sIElkIG9mIGxpc3QgY29udHJvbFxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovIC8vIGlzT3B0aW9uU2VsZWN0ZWRcclxuICBpc09wdGlvblNlbGVjdGVkKGluZGV4LCBjb250cm9sSWQpIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0VmFsdWUoY29udHJvbElkLCBcIjBcIik7XHJcbiAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsKSB7XHJcbiAgICAgICAgICAgaWYgKGl0ZW0gPT09IGluZGV4KVxyXG4gICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBpcyBzZWxlY3RlZCBvciBub3QgLSB1c2VkIGZvciB0aGUgdGFiIGJ1dHRvbnNcclxuICAgICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAgICogQHBhcmFtICBsYXllciBJZCBvZiB0aGUgdGFiIHBhZ2VcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi8gLy8gbWdJc1RhYlBhZ2VTZWxlY3RlZFxyXG4gIGlzVGFiUGFnZVNlbGVjdGVkKGNvbnRyb2xJZDogc3RyaW5nLCBsYXllcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsID09IChsYXllciAtIDEpOyAvLyBjb21wYXJpbmcgc3RyaW5nIHRvIG51bWJlciFcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHRhYiBwYWdlIGxheWVyIGlzIHNlbGVjdGVkIG9yIG5vdCAtIHVzZWQgZm9yIHRoZSBkaXYgd2hpY2ggcmVwcmVzZW50cyB0aGUgdGFiIHBhZ2VcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gIGxheWVyIElkIG9mIHRoZSB0YWIgcGFnZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovIC8vIG1nSXNUYWJMYXllclNlbGVjdGVkXHJcbiAgaXNUYWJQYWdlTGF5ZXJTZWxlY3RlZChjb250cm9sSWQ6IHN0cmluZywgbGF5ZXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkTGF5ZXIpO1xyXG4gICAgcmV0dXJuIHZhbCA9PSAobGF5ZXIgLSAxKTsgLy8gY29tcGFyaW5nIHN0cmluZyB0byBudW1iZXIhXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgdGFiIHBhZ2VcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldFRhYlNlbGVjdGVkSW5kZXgoY29udHJvbElkOiBzdHJpbmcpIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZFZhbHVlKTtcclxuICAgIHJldHVybiB2YWw7IC8vIGNvbXBhcmluZyBzdHJpbmcgdG8gbnVtYmVyIVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIHByaXZhdGUgbWV0aG9kZXNcclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gbWdJZlJvd0NyZWF0ZWRcclxuICBpZlJvd0NyZWF0ZWQocm93KTogYm9vbGVhbiB7XHJcbiAgICBpZiAocm93ID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGxldCByb3dJZCA9IHR5cGVvZiByb3cgPT0gXCJudW1iZXJcIiA/IHJvdy50b1N0cmluZygpIDogcm93LnJvd0lkO1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZ2V0Rm9ybUdyb3VwQnlSb3cocm93SWQpO1xyXG4gICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZChyZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIG1nR2V0Rm9ybUdyb3VwQnlSb3dcclxuICBnZXRGb3JtR3JvdXBCeVJvdyhpZDogc3RyaW5nKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZm9ybUdyb3Vwc1tpZF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gaXNSb3dTZWxlY3RlZCAobm90IGNoYW5nZWQpXHJcbiAgaXNSb3dTZWxlY3RlZChjb250cm9sSWQsIHJvd0lkPykge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZFJvdywgXCIwXCIpO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkUm93ID09IHJvd0lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgcm93IGlzIGluIGVkaXQgc3RhdGVcclxuICAgKiBAcGFyYW0gcm93XHJcbiAgICovXHJcbiAgaXNSb3dJblJvd0VkaXRpbmcocm93PzogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpUm93SWQgOiBzdHJpbmcgPSAnMCc7XHJcbiAgICBndWlSb3dJZD0gdHlwZW9mIHJvdyA9PSBcIm51bWJlclwiID8gcm93LnRvU3RyaW5nKCkgOiByb3cucm93SWQ7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmlzUm93SW5Sb3dFZGl0aW5nKGd1aVJvd0lkKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgcm93IGlzIGluIGVkaXQgc3RhdGUsIHVzZSB0aGlzIG1ldGhvZCB3aGlsZSBjb250cm9sIG91dHNpZGUgdGFibGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dcclxuICAgKi9cclxuICBpc0N1cnJlbnRJblJvd0VkaXRpbmcoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgbGV0IHJvdyAgPSB0aGlzLnRhc2sudGFibGVTZXJ2aWNlLmdldFNlbGVjdGVkUm93KCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGFzay5pc1Jvd0luUm93RWRpdGluZyhyb3cpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gR2V0R3VpVG9wSW5kZXhcclxuICBndWlUb3BJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay50YWJsZVNlcnZpY2UuZ2V0VGFibGVUb3BJbmRleCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGdldEVyck1zZyhpZDogc3RyaW5nLHJvd0lkOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgYyA9IHRoaXMudGFzay5nZXRGb3JtQ29udHJvbChyb3dJZCwgaWQpO1xyXG4gICAgaWYgKGMuaGFzRXJyb3IoJ3JlcXVpcmVkJykpXHJcbiAgICAgIHJldHVybiAnQ29udHJvbCBtdXN0IGJlIHVwZGF0ZWQuJztcclxuICAgIGlmIChjLmhhc0Vycm9yKCdwYXR0ZXJuJykpe1xyXG4gICAgICAvL1RvIGNoZWNrIHdoZXRoZXIgdGhlIG51bWVyaWMgZmllbGQgYWxsb3dlZCBvbmx5IHBvc2l0aXZlIHZhbHVlcyBvciBub3QuXHJcbiAgICAgIGlmKGMuZXJyb3JzLnBhdHRlcm4uYWN0dWFsVmFsdWUgPCAwICYmICFjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5pbmNsdWRlcygnLScpKVxyXG4gICAgICAgIHJldHVybiAnVmFsdWUgbXVzdCBiZSBub24tbmVnYXRpdmUnO1xyXG4gICAgICBpZihjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5pbmNsdWRlcygnLicpKXtcclxuICAgICAgICBjb25zdCBudW1lcmljRm9ybWF0ID0gTWF0aC5hYnMoYy5lcnJvcnMucGF0dGVybi5hY3R1YWxWYWx1ZSkudG9TdHJpbmcoKS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICAgIGNvbnN0IGRlY2ltYWxGb3JtYXQgPSBNYXRoLmFicyhjLmVycm9ycy5wYXR0ZXJuLmFjdHVhbFZhbHVlKS50b1N0cmluZygpLnNwbGl0KCcuJylbMV07XHJcbiAgICAgICAgY29uc3QgYWN0dWFsTnVtZXJpY0xpbWl0ID0gYy5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm4ubWF0Y2goLywoXFxkKykvKVsxXTtcclxuICAgICAgICBjb25zdCBhY3R1YWxEZWNpbWFsTGltaXQgPSBjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5tYXRjaCgvKD86W14sXSssKXsyfShcXGQrKS8pWzFdO1xyXG4gICAgICAgIGlmKG51bWVyaWNGb3JtYXQubGVuZ3RoID4gYWN0dWFsTnVtZXJpY0xpbWl0IHx8IGRlY2ltYWxGb3JtYXQubGVuZ3RoID4gYWN0dWFsRGVjaW1hbExpbWl0KXtcclxuICAgICAgICAgIHJldHVybiBcIk51bWVyaWMgZm9ybWF0IGlzIGxpbWl0ZWQgdG8gXCIgKyBhY3R1YWxOdW1lcmljTGltaXQgKyBcIi5cIisgYWN0dWFsRGVjaW1hbExpbWl0ICsgXCIgZGlnaXRzXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNlIGlmKCFjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5pbmNsdWRlcygnLicpICYmICFOdW1iZXIuaXNJbnRlZ2VyKGMuZXJyb3JzLnBhdHRlcm4uYWN0dWFsVmFsdWUpKXtcclxuICAgICAgICBjb25zdCBhY3R1YWxOdW1lcmljTGltaXQgPSBjLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybi5tYXRjaCgvLChcXGQrKS8pWzFdO1xyXG4gICAgICAgIHJldHVybiBcIk51bWVyaWMgZm9ybWF0IGlzIGxpbWl0ZWQgdG8gXCIgKyBhY3R1YWxOdW1lcmljTGltaXQgKyBcIi5cIisgMCArIFwiIGRpZ2l0c1wiXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGNvbnN0IG51bWVyaWNGb3JtYXQgPSBNYXRoLmFicyhjLmVycm9ycy5wYXR0ZXJuLmFjdHVhbFZhbHVlKS50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbE51bWVyaWNMaW1pdCA9IGMuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuLm1hdGNoKC8sKFxcZCspLylbMV07XHJcbiAgICAgICAgaWYobnVtZXJpY0Zvcm1hdC5sZW5ndGggPiBhY3R1YWxOdW1lcmljTGltaXQpe1xyXG4gICAgICAgICAgcmV0dXJuIFwiTnVtZXJpYyBmb3JtYXQgaXMgbGltaXRlZCB0byBcIiArIGFjdHVhbE51bWVyaWNMaW1pdCArIFwiLlwiKyAwICsgXCIgZGlnaXRzXCJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjLmhhc0Vycm9yKCdyYW5nZXZhbGlkYXRvcicpKVxyXG4gICAgICByZXR1cm4gYy5lcnJvcnMucmFuZ2V2YWxpZGF0b3IuZXJyb3JNc2c7XHJcbiAgICBpZiAoYy5oYXNFcnJvcignbWF4bGVuZ3RoJykpXHJcbiAgICAgIHJldHVybiAnTWF4IGxlbmd0aCBhbGxvd2VkIGlzIDogJyArIGMuZXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aDtcclxuICAgIGlmIChjLmhhc0Vycm9yKCdtYXgnKSlcclxuICAgICAgcmV0dXJuICdNYXggdmFsdWUgYWxsb3dlZCBpcyA6ICcgKyBjLmVycm9ycy5tYXgubWF4O1xyXG5cclxuICAgIGxldCBjb250cm9sTWV0YWRhdGEgPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0W3Jvd0lkXS5nZXRDb250cm9sTWV0YWRhdGEoaWQpO1xyXG4gICAgZm9yIChsZXQga2V5IG9mIGNvbnRyb2xNZXRhZGF0YS5jdXN0b21WYWxpZGF0b3JzLmtleXMoKSlcclxuICAgIHtcclxuICAgICAgaWYgKGMuaGFzRXJyb3Ioa2V5KSkge1xyXG4gICAgICAgIGxldCBjdXN0b21WYWxpZGF0b3I6IEN1c3RvbVZhbGlkYXRvciAgPSBjb250cm9sTWV0YWRhdGEuY3VzdG9tVmFsaWRhdG9ycy5nZXQoa2V5KTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdG9yLmdldEVyck1lc3NhZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAndW5rbm93biBlcnJvcic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIGEgdXNlci1zdXBwbGllZCB2YWx1ZSB0byB0aGUgc3BlY2lmaWVkIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcGFyYW0gcmVmcmVzaERpc3BsYXlcclxuICAgKi9cclxuICBzZXRWYWx1ZVRvQ29udHJvbChjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCByZWZyZXNoRGlzcGxheT86IGJvb2xlYW4pe1xyXG4gICAgaWYodHlwZW9mIHJlZnJlc2hEaXNwbGF5ID09PSBcInVuZGVmaW5lZFwiKVxyXG4gICAgICByZWZyZXNoRGlzcGxheSA9IHRydWU7XHJcbiAgICBsZXQgZ3VpRXZlbnQ6IElHdWlFdmVudCA9IGdldEd1aUV2ZW50T2JqKFwic2V0ZXh0ZXJuYWx2YWx1ZVwiLCBjb250cm9sTmFtZSwgMCk7XHJcbiAgICBndWlFdmVudC5leHRlcm5hbFZhbHVlID0gdmFsdWU7XHJcbiAgICBndWlFdmVudC5wYXJhbSA9IHJlZnJlc2hEaXNwbGF5O1xyXG4gICAgdGhpcy50YXNrLmluc2VydEV2ZW50KGd1aUV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG4gIGlzRGF0YXZpZXdFbXB0eSgpIDogYm9vbGVhbiB7XHJcbiAgICAgcmV0dXJuIHRoaXMudGFzay5SZWNvcmRzLmlzRW1wdHlEYXRhVmlldztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHNpbXVsYXRlcyBhIGNsaWNrIGV2ZW50IG9uIHRoZSBzcGVjaWZpZWQgY29udHJvbCwgZm9yIHRoZSBNYWdpYyBlbmdpbmVcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0gcm93SWRcclxuICAgKi9cclxuICBzaW11bGF0ZUNsaWNrKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHJvd0lkPzogbnVtYmVyKXtcclxuICAgIGlmICh0eXBlb2Ygcm93SWQgPT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJvd0lkID0gMDtcclxuICAgIHRoaXMudGFzay5pbnNlcnRFdmVudChnZXRHdWlFdmVudE9iaignY2xpY2snLCBjb250cm9sTmFtZSwgcm93SWQpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBCb29sZWFuIFRSVUUgaWYgdXNlciBsb2dnZWQgaW4gRWxzZSBpdCB3aWxsIHJldHVybiBGQUxTRVxyXG4gICAqL1xyXG4gIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldElzTG9nZ2VuSW4oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgSlMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlY29yZHMgd2l0aCBhbGwgdGFibGUgZmllbGRzLlxyXG4gICAqL1xyXG4gIEdldEZvcm1SZWNvcmRzKCk6IGFueSB7XHJcbiAgICBsZXQgcm93SWQ6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgcmVjQXJyYXk6IGFueTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMudGFzay5SZWNvcmRzKSAmJiB0aGlzLnRhc2suUmVjb3Jkcy5saXN0Lmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIGxldCByZWNMaXN0OiBDb250cm9sc01ldGFkYXRhW10gPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0O1xyXG4gICAgICBsZXQgdGFibGVDb250cm9sczogc3RyaW5nW10gPSBuZXcgQXJyYXkoKTtcclxuXHJcbiAgICAgIC8vR2VuZXJhdGUgbGlzdCBvZiB0YWJsZSBmaWVsZHMgbmFtZXNcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy50YXNrLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFzay50ZW1wbGF0ZVtrZXldID09ICcxJylcclxuICAgICAgICAgIHRhYmxlQ29udHJvbHMucHVzaChrZXkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZWNBcnJheSA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgLy9VcGRhdGUgdGhlIHJlY29yZHMgYXMgbGlzdCBvZiBvYmplY3RzIHdpdGggdmFsdWVzIGZvciB0YWJsZSBmaWVsZHMuXHJcbiAgICAgIGlmICh0YWJsZUNvbnRyb2xzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZWNMaXN0LmZvckVhY2goKGN0cmxNZXRhRGF0YTogQ29udHJvbHNNZXRhZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMudGFzay5SZWNvcmRzLmlzUm93Q3JlYXRlZChyb3dJZCkpIHtcclxuICAgICAgICAgICAgdmFyIGZvcm1SZWNvcmQgPSB7fTtcclxuICAgICAgICAgICAgZm9ybVJlY29yZFsncm93SWQnXSA9IHJvd0lkO1xyXG4gICAgICAgICAgICB0YWJsZUNvbnRyb2xzLmZvckVhY2goKGN0cmxJZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgZm9ybVJlY29yZFtjdHJsSWRdID0gY3RybE1ldGFEYXRhLnZhbHVlc1tjdHJsSWRdO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJlY0FycmF5LnB1c2goZm9ybVJlY29yZClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZWNBcnJheTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldENvb2tpZSA6IHNldCB0aGUgY29va2llIHdpdGggc3BlY2lmaWVkIG5hbWUgYW5kIHZhbHVlICBpbiBicm93c2VyXHJcbiAgICogZXhwaXJlcyAtIGV4cGlyYXRpb24gdGltZVxyXG4gICAqIHBhdGggLSBwYXRoIHdoaWNoIG11Y2ggZXhpc3RzIGluIG9yZGVyIHNvIHRoYXQgY29va2llIGlzIHNlbnQgYXMgaGVhZGVyXHJcbiAgICogZG9tYWluIC0gc3BlY2lmaWVzIHdoaWNoIGhvc3RzIGFyZSBhbGxvd2VkIHRvIHJlY2VpdmUgdGhlIGNvb2tpZVxyXG4gICAqIHNlY3VyZSAtIHNwZWNpZmllcyBpZiBjb29raWUgaXMgc2VjdXJlICggd29ya3Mgb25seSB3aXRoIEhUVFBTKVxyXG4gICAqIHNhbWVTaXRlIC0gbGV0cyBzZXJ2ZXJzIHNwZWNpZnkgd2hldGhlci93aGVuIGNvb2tpZXMgYXJlIHNlbnQgd2l0aCBjcm9zcy1zaXRlIHJlcXVlc3RzXHJcbiAgICovXHJcbiAgU2V0Q29va2llKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgZXhwaXJlcz86IERhdGUsIHBhdGg/ICwgZG9tYWluPyAsIHNlY3VyZT8sIHNhbWVTaXRlID8pIHtcclxuICAgIENvb2tpZVNlcnZpY2Uuc2V0Q29va2llKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0Q29va2llIDogZ2V0IHRoZSBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBhbmQgdmFsdWUgIGluIGJyb3dzZXJcclxuICAgKi9cclxuICBHZXRDb29raWUobmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBDb29raWVTZXJ2aWNlLmdldENvb2tpZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZUNvb2tpZSA6IGRlbGV0ZXMgdGhlIGNvb2tpZVxyXG4gICAqL1xyXG4gIERlbGV0ZUNvb2tpZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIENvb2tpZVNlcnZpY2UuZGVsZXRlQ29va2llKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIGdldCBSR0JBIGNvbG9yIGZyb20gY29sb3IgZmlsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDb2xvcihjb2xvck51bWJlcjogbnVtYmVyLCBjb2xvclR5cGUpIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQ29sb3IuZ2V0Q29sb3IoY29sb3JOdW1iZXIsIGNvbG9yVHlwZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -44,4 +44,4 @@ export class CommandsCollectorMagicService {
44
44
  providedIn: 'root'
45
45
  }]
46
46
  }], () => [{ type: i1.EngineMagicService }], null); })();
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMtY29sbGVjdG9yLm1hZ2ljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jb21tYW5kcy1jb2xsZWN0b3IubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQVMxQyxNQUFNLE9BQU8sNkJBQTZCO0lBS2xCO0lBSmQsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixRQUFRLEdBQXFCLElBQUksSUFBSSxFQUFjLENBQUM7SUFDcEQsWUFBWSxHQUFpQixJQUFJLENBQUM7SUFFMUMsWUFBc0IsS0FBeUI7UUFBekIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7SUFDL0MsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkcsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO2lCQUN0QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMscURBQXFELEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxHLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxRQUFRLEdBQWlCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFFLENBQUMsT0FBbUIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUMxRyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO3VGQW5DVSw2QkFBNkI7a0RBQTdCLDZCQUE2QixXQUE3Qiw2QkFBNkIsbUJBRjVCLE1BQU07O2lGQUVQLDZCQUE2QjtjQUh6QyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVuZ2luZU1hZ2ljU2VydmljZSB9IGZyb20gJy4vZW5naW5lLm1hZ2ljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlDb21tYW5kIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgY291bnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBjb21tYW5kczogTGlzdDxHdWlDb21tYW5kPiA9IG5ldyBMaXN0PEd1aUNvbW1hbmQ+KCk7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtYWdpYzogRW5naW5lTWFnaWNTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBzdGFydENvbGxlY3RpbmcoKSB7XHJcbiAgICB0aGlzLmNvdW50Kys7XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVEZXZUb0xvZyhcIkNvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlLnN0YXJ0Q29sbGVjdGluZygpIC0tLSBcIiArIHRoaXMuY291bnQpO1xyXG5cclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMubWFnaWMucmVmcmVzaERvbVxyXG4gICAgICAgIC5zdWJzY3JpYmUoY29tbWFuZCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1hbmRzLnB1c2goY29tbWFuZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wQ29sbGVjdGluZygpIHtcclxuICAgIHRoaXMuY291bnQtLTtcclxuICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKFwiQ29tbWFuZHNDb2xsZWN0b3JNYWdpY1NlcnZpY2Uuc3RvcENvbGxlY3RpbmcoKSAtLS0gXCIgKyB0aGlzLmNvdW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5jb3VudCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBHZXRDb21tYW5kcyh0YXNrSWQ6IHN0cmluZyk6IEd1aUNvbW1hbmRbXSB7XHJcbiAgICBjb25zdCBjb21tYW5kczogR3VpQ29tbWFuZFtdID0gdGhpcy5jb21tYW5kcy5maWx0ZXIoIChjb21tYW5kOiBHdWlDb21tYW5kKSA9PiBjb21tYW5kLlRhc2tUYWcgPT09IHRhc2tJZCk7XHJcbiAgICBjb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4geyB0aGlzLmNvbW1hbmRzLlJlbW92ZShjb21tYW5kKTsgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNvbW1hbmRzO1xyXG4gIH1cclxufVxyXG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMtY29sbGVjdG9yLm1hZ2ljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jb21tYW5kcy1jb2xsZWN0b3IubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQVMxQyxNQUFNLE9BQU8sNkJBQTZCO0lBS2xCO0lBSmQsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixRQUFRLEdBQXFCLElBQUksSUFBSSxFQUFjLENBQUM7SUFDcEQsWUFBWSxHQUFpQixJQUFJLENBQUM7SUFFMUMsWUFBc0IsS0FBeUI7UUFBekIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7SUFDL0MsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkcsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtZQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtpQkFDdEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxxREFBcUQsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLE1BQU0sUUFBUSxHQUFpQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBRSxDQUFDLE9BQW1CLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDMUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEUsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzt1RkFuQ1UsNkJBQTZCO2tEQUE3Qiw2QkFBNkIsV0FBN0IsNkJBQTZCLG1CQUY1QixNQUFNOztpRkFFUCw2QkFBNkI7Y0FIekMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbmdpbmVNYWdpY1NlcnZpY2UgfSBmcm9tICcuL2VuZ2luZS5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpQ29tbWFuZCB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgTGlzdCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvdW50OiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgY29tbWFuZHM6IExpc3Q8R3VpQ29tbWFuZD4gPSBuZXcgTGlzdDxHdWlDb21tYW5kPigpO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWFnaWM6IEVuZ2luZU1hZ2ljU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgc3RhcnRDb2xsZWN0aW5nKCkge1xyXG4gICAgdGhpcy5jb3VudCsrO1xyXG4gICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRGV2VG9Mb2coXCJDb21tYW5kc0NvbGxlY3Rvck1hZ2ljU2VydmljZS5zdGFydENvbGxlY3RpbmcoKSAtLS0gXCIgKyB0aGlzLmNvdW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24gPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLm1hZ2ljLnJlZnJlc2hEb21cclxuICAgICAgICAuc3Vic2NyaWJlKGNvbW1hbmQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb21tYW5kcy5wdXNoKGNvbW1hbmQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcENvbGxlY3RpbmcoKSB7XHJcbiAgICB0aGlzLmNvdW50LS07XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVEZXZUb0xvZyhcIkNvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlLnN0b3BDb2xsZWN0aW5nKCkgLS0tIFwiICsgdGhpcy5jb3VudCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY291bnQgPT09IDApIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgR2V0Q29tbWFuZHModGFza0lkOiBzdHJpbmcpOiBHdWlDb21tYW5kW10ge1xyXG4gICAgY29uc3QgY29tbWFuZHM6IEd1aUNvbW1hbmRbXSA9IHRoaXMuY29tbWFuZHMuZmlsdGVyKCAoY29tbWFuZDogR3VpQ29tbWFuZCkgPT4gY29tbWFuZC5UYXNrVGFnID09PSB0YXNrSWQpO1xyXG4gICAgY29tbWFuZHMuZm9yRWFjaChjb21tYW5kID0+IHsgdGhpcy5jb21tYW5kcy5SZW1vdmUoY29tbWFuZCk7IH0pO1xyXG5cclxuICAgIHJldHVybiBjb21tYW5kcztcclxuICB9XHJcbn1cclxuIl19
@@ -42,4 +42,4 @@ export class ComponentListMagicService {
42
42
  providedIn: 'root'
43
43
  }]
44
44
  }], null, null); })();
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvbXBvbmVudC1saXN0Lm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFtQnhELE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO0lBSTdDLE9BQU8sR0FBTSxJQUFJLEdBQUcsRUFBYyxDQUFDO0lBRW5DLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUUxQixPQUFPLENBQUMsSUFBVyxFQUFHLFlBQXFCO1FBQ3pDLElBQUksSUFBSSxHQUFpQixJQUFJLENBQUM7UUFFOUIsSUFBSSxRQUFRLEdBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLElBQUksR0FBRyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxJQUFJLFFBQVE7WUFDVixJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsWUFBWSxDQUFDLElBQVcsRUFBRSxlQUF1QixJQUFJO1FBQ25ELElBQUksSUFBSSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUMxRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxhQUFhLENBQUMsYUFBaUIsRUFBRyxRQUEwQjtRQUMzRCxLQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsRUFBQyxDQUFDO1lBQzVCLElBQUksSUFBSSxHQUFrQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQU9ELFlBQVksQ0FBRSxJQUFXO1FBQ3ZCLElBQUksSUFBSSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNuRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQUEsQ0FBQztJQUN2QyxDQUFDO0lBT0QscUJBQXFCLENBQUUsSUFBVztRQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xJLENBQUM7SUFLRCxLQUFLLENBQVU7bUZBbkVKLHlCQUF5QjtrREFBekIseUJBQXlCLFdBQXpCLHlCQUF5QixtQkFGeEIsTUFBTTs7aUZBRVAseUJBQXlCO2NBSHJDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nTW9kdWxlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcclxuICBjb21wb25lbnQ6YW55O1xyXG4gIG1vZHVsZVJlZjpOZ01vZHVsZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZURhdGEge1xyXG4gIG1vZHVsZU5hbWU6IHN0cmluZztcclxuICBtb2R1bGVQYXRoOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgaW4gYSBwcm9qZWN0LCBhbmQgdGhlIHByb2plY3QgdGl0bGVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2V7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCBvZiBwcm9qZWN0IGNvbXBvbmVudHNcclxuICAgKi9cclxuICBjb21wb25lbnRzID0gbmV3IE1hcDxzdHJpbmcsQ29tcG9uZW50RGF0YT4oKTtcclxuICAvKipcclxuICAgKiBNYXAgb2YgcHJvamVjdCBkaWFsb2dzXHJcbiAgICovXHJcbiAgZGlhbG9ncyAgICA9IG5ldyBNYXA8c3RyaW5nLGFueT4oKTtcclxuXHJcbiAgbGF6eUxvYWRNb2R1bGVzTWFwID0gbnVsbDtcclxuXHJcbiAgZ2V0RGF0YShuYW1lOnN0cmluZywgIG11c3RIYXZlRGF0YTogYm9vbGVhbil7XHJcbiAgICBsZXQgZGF0YSA6Q29tcG9uZW50RGF0YT0gbnVsbDtcclxuXHJcbiAgICBsZXQgaGF2ZURhdGE6IGJvb2xlYW4gID10aGlzLmNvbXBvbmVudHMuaGFzKG5hbWUpO1xyXG4gICAgaWYgKCFoYXZlRGF0YSAmJiBtdXN0SGF2ZURhdGEpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJFcnJvcjogQ29tcG9uZW50OiBcIiArIG5hbWUgKyBcIiBkb2VzIG5vdCBleGlzdCBpbiBjb21wb25lbnRzIG1hcFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaGF2ZURhdGEpXHJcbiAgICAgIGRhdGEgPSB0aGlzLmNvbXBvbmVudHMuZ2V0KG5hbWUpXHJcblxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGEgY29tcG9uZW50IGFjY29yZGluZyB0byBuYW1lXHJcbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiByZXF1ZXN0ZWQgY29tcG9uZW50XHJcbiAgICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb21wb25lbnRcclxuICAgKi9cclxuICBnZXRDb21wb25lbnQobmFtZTpzdHJpbmcsIG11c3RIYXZlRGF0YTpib29sZWFuID0gdHJ1ZSl7XHJcbiAgICBsZXQgZGF0YTogQ29tcG9uZW50RGF0YSA9IHRoaXMuZ2V0RGF0YShuYW1lLCBtdXN0SGF2ZURhdGEpXHJcbiAgICByZXR1cm4gZGF0YSA/IGRhdGEuY29tcG9uZW50IDogbnVsbDtcclxuICB9XHJcblxyXG4gIGFkZENvbXBvbmVudHMoY29tcG9uZW50TGlzdDphbnkgLCBtb2R1bFJlZj86TmdNb2R1bGVSZWY8YW55Pil7XHJcbiAgIGZvcihsZXQga2V5IGluIGNvbXBvbmVudExpc3Qpe1xyXG4gICAgIGxldCBkYXRhIDpDb21wb25lbnREYXRhID0ge21vZHVsZVJlZjptb2R1bFJlZiwgY29tcG9uZW50OmNvbXBvbmVudExpc3Rba2V5XX07XHJcbiAgICAgdGhpcy5jb21wb25lbnRzLnNldChrZXksZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJldHVybiBhIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gbmFtZVxyXG4gICogQHBhcmFtIG5hbWUgTmFtZSBvZiByZXF1ZXN0ZWQgY29tcG9uZW50XHJcbiAgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbXBvbmVudFxyXG4gICovXHJcbiAgZ2V0TW9kdWxlUmVmIChuYW1lOnN0cmluZyl7XHJcbiAgICBsZXQgZGF0YTogQ29tcG9uZW50RGF0YSA9IHRoaXMuZ2V0RGF0YShuYW1lLCBmYWxzZSlcclxuICAgIHJldHVybiBkYXRhID8gZGF0YS5tb2R1bGVSZWYgOiBudWxsOztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbGF6eSBsb2FkIG1vZHVsZSBkZXRhaWxzIG9mIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIG5hbWU6IE5hbWUgb2YgcmVxdWVzdGVkIGNvbXBvbmVudFxyXG4gICAqIEByZXR1cm5zOiBsYXp5IGxvYWQgbW9kdWxlIGRldGFpbHNcclxuICAgKi9cclxuICBnZXRMYXp5TG9hZE1vZHVsZURhdGEgKG5hbWU6c3RyaW5nKTogTW9kdWxlRGF0YSB7XHJcbiAgICByZXR1cm4gKHRoaXMubGF6eUxvYWRNb2R1bGVzTWFwICE9IG51bGwgJiYgdGhpcy5sYXp5TG9hZE1vZHVsZXNNYXAuaGFzT3duUHJvcGVydHkobmFtZSkpID8gdGhpcy5sYXp5TG9hZE1vZHVsZXNNYXBbbmFtZV0gOiBudWxsO1xyXG4gIH1cclxuXHJcbi8qKlxyXG4gICAqIFByb2plY3QgdGl0bGVcclxuICAgKi9cclxuICB0aXRsZSA6IHN0cmluZztcclxufVxyXG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvbXBvbmVudC1saXN0Lm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFtQnhELE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO0lBSTdDLE9BQU8sR0FBTSxJQUFJLEdBQUcsRUFBYyxDQUFDO0lBRW5DLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUUxQixPQUFPLENBQUMsSUFBVyxFQUFHLFlBQXFCO1FBQ3pDLElBQUksSUFBSSxHQUFpQixJQUFJLENBQUM7UUFFOUIsSUFBSSxRQUFRLEdBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxZQUFZLEVBQUU7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsbUNBQW1DLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksUUFBUTtZQUNWLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxZQUFZLENBQUMsSUFBVyxFQUFFLGVBQXVCLElBQUk7UUFDbkQsSUFBSSxJQUFJLEdBQWtCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQzFELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxhQUFpQixFQUFHLFFBQTBCO1FBQzNELEtBQUksSUFBSSxHQUFHLElBQUksYUFBYSxFQUFDO1lBQzNCLElBQUksSUFBSSxHQUFrQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFPRCxZQUFZLENBQUUsSUFBVztRQUN2QixJQUFJLElBQUksR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDbkQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUFBLENBQUM7SUFDdkMsQ0FBQztJQU9ELHFCQUFxQixDQUFFLElBQVc7UUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsSSxDQUFDO0lBS0QsS0FBSyxDQUFVO21GQW5FSix5QkFBeUI7a0RBQXpCLHlCQUF5QixXQUF6Qix5QkFBeUIsbUJBRnhCLE1BQU07O2lGQUVQLHlCQUF5QjtjQUhyQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ01vZHVsZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YSB7XHJcbiAgY29tcG9uZW50OmFueTtcclxuICBtb2R1bGVSZWY6TmdNb2R1bGVSZWY8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVEYXRhIHtcclxuICBtb2R1bGVOYW1lOiBzdHJpbmc7XHJcbiAgbW9kdWxlUGF0aDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogTWFuYWdlcyB0aGUgbGlzdCBvZiBjb21wb25lbnRzIGluIGEgcHJvamVjdCwgYW5kIHRoZSBwcm9qZWN0IHRpdGxlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNle1xyXG5cclxuICAvKipcclxuICAgKiBNYXAgb2YgcHJvamVjdCBjb21wb25lbnRzXHJcbiAgICovXHJcbiAgY29tcG9uZW50cyA9IG5ldyBNYXA8c3RyaW5nLENvbXBvbmVudERhdGE+KCk7XHJcbiAgLyoqXHJcbiAgICogTWFwIG9mIHByb2plY3QgZGlhbG9nc1xyXG4gICAqL1xyXG4gIGRpYWxvZ3MgICAgPSBuZXcgTWFwPHN0cmluZyxhbnk+KCk7XHJcblxyXG4gIGxhenlMb2FkTW9kdWxlc01hcCA9IG51bGw7XHJcblxyXG4gIGdldERhdGEobmFtZTpzdHJpbmcsICBtdXN0SGF2ZURhdGE6IGJvb2xlYW4pe1xyXG4gICAgbGV0IGRhdGEgOkNvbXBvbmVudERhdGE9IG51bGw7XHJcblxyXG4gICAgbGV0IGhhdmVEYXRhOiBib29sZWFuICA9dGhpcy5jb21wb25lbnRzLmhhcyhuYW1lKTtcclxuICAgIGlmICghaGF2ZURhdGEgJiYgbXVzdEhhdmVEYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3I6IENvbXBvbmVudDogXCIgKyBuYW1lICsgXCIgZG9lcyBub3QgZXhpc3QgaW4gY29tcG9uZW50cyBtYXBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGhhdmVEYXRhKVxyXG4gICAgICBkYXRhID0gdGhpcy5jb21wb25lbnRzLmdldChuYW1lKVxyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gbmFtZVxyXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgcmVxdWVzdGVkIGNvbXBvbmVudFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXF1ZXN0ZWQgY29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q29tcG9uZW50KG5hbWU6c3RyaW5nLCBtdXN0SGF2ZURhdGE6Ym9vbGVhbiA9IHRydWUpe1xyXG4gICAgbGV0IGRhdGE6IENvbXBvbmVudERhdGEgPSB0aGlzLmdldERhdGEobmFtZSwgbXVzdEhhdmVEYXRhKVxyXG4gICAgcmV0dXJuIGRhdGEgPyBkYXRhLmNvbXBvbmVudCA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBhZGRDb21wb25lbnRzKGNvbXBvbmVudExpc3Q6YW55ICwgbW9kdWxSZWY/Ok5nTW9kdWxlUmVmPGFueT4pe1xyXG4gICBmb3IobGV0IGtleSBpbiBjb21wb25lbnRMaXN0KXtcclxuICAgICBsZXQgZGF0YSA6Q29tcG9uZW50RGF0YSA9IHttb2R1bGVSZWY6bW9kdWxSZWYsIGNvbXBvbmVudDpjb21wb25lbnRMaXN0W2tleV19O1xyXG4gICAgIHRoaXMuY29tcG9uZW50cy5zZXQoa2V5LGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBSZXR1cm4gYSBjb21wb25lbnQgYWNjb3JkaW5nIHRvIG5hbWVcclxuICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgcmVxdWVzdGVkIGNvbXBvbmVudFxyXG4gICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb21wb25lbnRcclxuICAqL1xyXG4gIGdldE1vZHVsZVJlZiAobmFtZTpzdHJpbmcpe1xyXG4gICAgbGV0IGRhdGE6IENvbXBvbmVudERhdGEgPSB0aGlzLmdldERhdGEobmFtZSwgZmFsc2UpXHJcbiAgICByZXR1cm4gZGF0YSA/IGRhdGEubW9kdWxlUmVmIDogbnVsbDs7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGxhenkgbG9hZCBtb2R1bGUgZGV0YWlscyBvZiB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBuYW1lOiBOYW1lIG9mIHJlcXVlc3RlZCBjb21wb25lbnRcclxuICAgKiBAcmV0dXJuczogbGF6eSBsb2FkIG1vZHVsZSBkZXRhaWxzXHJcbiAgICovXHJcbiAgZ2V0TGF6eUxvYWRNb2R1bGVEYXRhIChuYW1lOnN0cmluZyk6IE1vZHVsZURhdGEge1xyXG4gICAgcmV0dXJuICh0aGlzLmxhenlMb2FkTW9kdWxlc01hcCAhPSBudWxsICYmIHRoaXMubGF6eUxvYWRNb2R1bGVzTWFwLmhhc093blByb3BlcnR5KG5hbWUpKSA/IHRoaXMubGF6eUxvYWRNb2R1bGVzTWFwW25hbWVdIDogbnVsbDtcclxuICB9XHJcblxyXG4vKipcclxuICAgKiBQcm9qZWN0IHRpdGxlXHJcbiAgICovXHJcbiAgdGl0bGUgOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -77,4 +77,4 @@ export class EngineMagicService {
77
77
  providedIn: 'root'
78
78
  }]
79
79
  }], null, null); })();
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLm1hZ2ljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9lbmdpbmUubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFZLFdBQVcsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQVV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsVUFBVSxHQUF3QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hELG1CQUFtQixHQUE0QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdELGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsSUFBeUI7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBb0IsQ0FBQztvQkFDbEMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29CQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFtQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLEtBQWE7UUFDL0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYyxFQUFHLFdBQW1CLEVBQUUsS0FBVSxFQUFFLEtBQWM7UUFDaEYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUIsRUFBRSxLQUFVO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRLENBQUMsSUFBVztJQUdwQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLGFBQXNCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzRFQXBGVSxrQkFBa0I7a0RBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBRmpCLE1BQU07O2lGQUVQLGtCQUFrQjtjQUg5QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmltcG9ydCB7SUd1aUV2ZW50LCBNYWdpY0JyaWRnZX0gZnJvbSBcIkBtYWdpYy14cGEvZW5naW5lXCI7XHJcbmltcG9ydCB7R3VpQ29tbWFuZCwgR3VpSW50ZXJhY3RpdmV9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVuZ2luZU1hZ2ljU2VydmljZSB7XHJcbiAgbWFnaWNCcmlkZ2UgPSBNYWdpY0JyaWRnZTtcclxuICBpc1N0dWIgPSBmYWxzZTtcclxuICAvLyB0cnVlIHdoZW4gdXNlciBpcyBsb2dnZWQgaW4gbWFnaWNcclxuICBpc0xvZ2dlZEluID0gZmFsc2U7XHJcbiAgLy9UT0RPIC0gdW5yZWdpc3RlclxyXG4gIHJlZnJlc2hEb206IFN1YmplY3Q8R3VpQ29tbWFuZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIGludGVyYWN0aXZlQ29tbWFuZHM6IFN1YmplY3Q8R3VpSW50ZXJhY3RpdmU+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgc3RhcnRNYWdpY0VuZ2luZShodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBhcmdzOiBNYXA8c3RyaW5nLCBzdHJpbmc+KSB7XHJcbiAgICB0aGlzLm1hZ2ljQnJpZGdlLnJlZ2lzdGVyRXhlY3V0ZUNvbW1hbmRzQ2FsbGJhY2soZGF0YSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5pc1N0dWIpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgbGlzdCA9IGRhdGEgYXMgR3VpQ29tbWFuZFtdO1xyXG4gICAgICAgICAgZm9yIChsZXQgYyBvZiBsaXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaERvbS5uZXh0KGMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgY29uc29sZS5kaXIoZSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnbWFnaWMgZW5naW5lIG5vdCBmb3VuZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ21vdmluZyB0byBzdHViIG1vZGUnKTtcclxuICAgICAgICAgIHRoaXMuaXNTdHViID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubWFnaWNCcmlkZ2UucmVnaXN0ZXJJbnRlcmFjdGl2ZUNhbGxiYWNrKGRhdGEgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdHViKSB7XHJcbiAgICAgICAgICB0aGlzLmludGVyYWN0aXZlQ29tbWFuZHMubmV4dChkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm1hZ2ljQnJpZGdlLkluaXRpYWxpemUoaHR0cENsaWVudCwgYXJncyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB0ZXJtaW5hdGVNYWdpYygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubWFnaWNCcmlkZ2UuVGVybWluYXRlTWFnaWMoKTtcclxuICB9XHJcblxyXG4gIGluc2VydEV2ZW50KGd1aUV2ZW50OiBJR3VpRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1N0dWIpXHJcbiAgICAgIHRoaXMubWFnaWNCcmlkZ2UuaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgR2V0UmFuZ2VkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNCcmlkZ2UuR2V0UmFuZ2VkVmFsdWUodGFza0lkLCBjb250cm9sTmFtZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgR2V0Q29udHJvbFBpY3R1cmVNYXNrKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQnJpZGdlLkdldENvbnRyb2xQaWN0dXJlTWFzayh0YXNrSWQsIGNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIEdldEZvcm1hdHRlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCAgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgcm93SWQ/OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNCcmlkZ2UuR2V0Rm9ybWF0dGVkVmFsdWUodGFza0lkLCBjb250cm9sTmFtZSwgdmFsdWUsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQnJpZGdlLlZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZCwgY29udHJvbE5hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEdldEZsZFJhbmdlcyh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5HZXRGbGRSYW5nZXModGFza0lkLCBjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlRGF0YShkYXRhOnN0cmluZylcclxuICB7XHJcbiAgICAvL3RoaXMubWFnaWNCcmlkZ2Uuc2F2ZURhdGEoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRJc0xvZ2dlZEluKCk6Ym9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLmlzTG9nZ2VkSW47XHJcbiAgfVxyXG5cclxuICBzZXRJc0xvZ2dlZEluKHNldElzTG9nZ2VkSW46IGJvb2xlYW4pe1xyXG4gICAgdGhpcy5pc0xvZ2dlZEluID0gc2V0SXNMb2dnZWRJbjtcclxuICB9XHJcblxyXG4gIFRyYW5zQ2FjaGVFeGlzdHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5UcmFuc0NhY2hlRXhpc3RzKCk7XHJcbiAgfVxyXG5cclxuICBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFnaWNCcmlkZ2UuVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTtcclxuICB9XHJcbn1cclxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLm1hZ2ljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9lbmdpbmUubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFZLFdBQVcsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQVV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVmLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsVUFBVSxHQUF3QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hELG1CQUFtQixHQUE0QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdELGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsSUFBeUI7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsSUFBSTtvQkFDRixNQUFNLElBQUksR0FBRyxJQUFvQixDQUFDO29CQUNsQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTt3QkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3pCO2lCQUNGO2dCQUNELE9BQU8sQ0FBQyxFQUFFO29CQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29CQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNwQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBbUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjLEVBQUUsV0FBbUIsRUFBRSxLQUFhO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWMsRUFBRyxXQUFtQixFQUFFLEtBQVUsRUFBRSxLQUFjO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsS0FBVTtRQUNsRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVc7SUFHcEIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxhQUFzQjtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELDZCQUE2QjtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDbkQsQ0FBQzs0RUFwRlUsa0JBQWtCO2tEQUFsQixrQkFBa0IsV0FBbEIsa0JBQWtCLG1CQUZqQixNQUFNOztpRkFFUCxrQkFBa0I7Y0FIOUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5pbXBvcnQge0lHdWlFdmVudCwgTWFnaWNCcmlkZ2V9IGZyb20gXCJAbWFnaWMteHBhL2VuZ2luZVwiO1xyXG5pbXBvcnQge0d1aUNvbW1hbmQsIEd1aUludGVyYWN0aXZlfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbmdpbmVNYWdpY1NlcnZpY2Uge1xyXG4gIG1hZ2ljQnJpZGdlID0gTWFnaWNCcmlkZ2U7XHJcbiAgaXNTdHViID0gZmFsc2U7XHJcbiAgLy8gdHJ1ZSB3aGVuIHVzZXIgaXMgbG9nZ2VkIGluIG1hZ2ljXHJcbiAgaXNMb2dnZWRJbiA9IGZhbHNlO1xyXG4gIC8vVE9ETyAtIHVucmVnaXN0ZXJcclxuICByZWZyZXNoRG9tOiBTdWJqZWN0PEd1aUNvbW1hbmQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBpbnRlcmFjdGl2ZUNvbW1hbmRzOiBTdWJqZWN0PEd1aUludGVyYWN0aXZlPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHN0YXJ0TWFnaWNFbmdpbmUoaHR0cENsaWVudDogSHR0cENsaWVudCwgYXJnczogTWFwPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgdGhpcy5tYWdpY0JyaWRnZS5yZWdpc3RlckV4ZWN1dGVDb21tYW5kc0NhbGxiYWNrKGRhdGEgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdHViKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGxpc3QgPSBkYXRhIGFzIEd1aUNvbW1hbmRbXTtcclxuICAgICAgICAgIGZvciAobGV0IGMgb2YgbGlzdCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hEb20ubmV4dChjKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZGlyKGUpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ21hZ2ljIGVuZ2luZSBub3QgZm91bmQnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdtb3ZpbmcgdG8gc3R1YiBtb2RlJyk7XHJcbiAgICAgICAgICB0aGlzLmlzU3R1YiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm1hZ2ljQnJpZGdlLnJlZ2lzdGVySW50ZXJhY3RpdmVDYWxsYmFjayhkYXRhID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzU3R1Yikge1xyXG4gICAgICAgICAgdGhpcy5pbnRlcmFjdGl2ZUNvbW1hbmRzLm5leHQoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5tYWdpY0JyaWRnZS5Jbml0aWFsaXplKGh0dHBDbGllbnQsIGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdGVybWluYXRlTWFnaWMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLm1hZ2ljQnJpZGdlLlRlcm1pbmF0ZU1hZ2ljKCk7XHJcbiAgfVxyXG5cclxuICBpbnNlcnRFdmVudChndWlFdmVudDogSUd1aUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdHViKVxyXG4gICAgICB0aGlzLm1hZ2ljQnJpZGdlLmluc2VydEV2ZW50KGd1aUV2ZW50KTtcclxuICB9XHJcblxyXG4gIEdldFJhbmdlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQnJpZGdlLkdldFJhbmdlZFZhbHVlKHRhc2tJZCwgY29udHJvbE5hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEdldENvbnRyb2xQaWN0dXJlTWFzayh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5HZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkLCBjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICBHZXRGb3JtYXR0ZWRWYWx1ZSh0YXNrSWQ6IHN0cmluZywgIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHJvd0lkPzogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQnJpZGdlLkdldEZvcm1hdHRlZFZhbHVlKHRhc2tJZCwgY29udHJvbE5hbWUsIHZhbHVlLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICBWYWxpZGF0ZUNvbnRyb2xWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5WYWxpZGF0ZUNvbnRyb2xWYWx1ZSh0YXNrSWQsIGNvbnRyb2xOYW1lLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBHZXRGbGRSYW5nZXModGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNCcmlkZ2UuR2V0RmxkUmFuZ2VzKHRhc2tJZCwgY29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZURhdGEoZGF0YTpzdHJpbmcpXHJcbiAge1xyXG4gICAgLy90aGlzLm1hZ2ljQnJpZGdlLnNhdmVEYXRhKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNMb2dnZWRJbigpOmJvb2xlYW57XHJcbiAgICByZXR1cm4gdGhpcy5pc0xvZ2dlZEluO1xyXG4gIH1cclxuXHJcbiAgc2V0SXNMb2dnZWRJbihzZXRJc0xvZ2dlZEluOiBib29sZWFuKXtcclxuICAgIHRoaXMuaXNMb2dnZWRJbiA9IHNldElzTG9nZ2VkSW47XHJcbiAgfVxyXG5cclxuICBUcmFuc0NhY2hlRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNCcmlkZ2UuVHJhbnNDYWNoZUV4aXN0cygpO1xyXG4gIH1cclxuXHJcbiAgVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hZ2ljQnJpZGdlLlRlcm1pbmF0ZUNvbnRleHRVc2luZ0ZldGNoQVBJKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==