ca-components 1.6.1 → 1.6.4

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 (37) hide show
  1. package/assets/theme/variables.scss +1 -0
  2. package/esm2022/lib/components/ca-checkbox-selected-count/ca-checkbox-selected-count.component.mjs +3 -3
  3. package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +1 -1
  4. package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +4 -3
  5. package/esm2022/lib/components/ca-filters/components/ca-location-filter/utils/constants/location-filter.constants.mjs +2 -2
  6. package/esm2022/lib/components/ca-input/base-classes/ca-input-base-helpres.mjs +1 -1
  7. package/esm2022/lib/components/ca-input/base-classes/ca-input-base.mjs +1 -1
  8. package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +1 -1
  9. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +1 -1
  10. package/esm2022/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.mjs +24 -20
  11. package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +1 -1
  12. package/esm2022/lib/components/ca-map/ca-map.component.mjs +1 -1
  13. package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +1 -1
  14. package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +72 -26
  15. package/esm2022/lib/utils/svg-routes/index.mjs +2 -2
  16. package/esm2022/lib/utils/svg-routes/shared-svg.routes.mjs +4 -1
  17. package/esm2022/public-api.mjs +2 -1
  18. package/fesm2022/ca-components.mjs +110 -66
  19. package/fesm2022/ca-components.mjs.map +1 -1
  20. package/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.d.ts +1 -1
  21. package/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.d.ts +2 -1
  22. package/lib/components/ca-input/base-classes/ca-input-base-helpres.d.ts +1 -1
  23. package/lib/components/ca-input/base-classes/ca-input-base.d.ts +2 -2
  24. package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +1 -1
  25. package/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.d.ts +2 -1
  26. package/lib/components/ca-map/ca-map.component.d.ts +1 -1
  27. package/lib/components/ca-tab-switch/ca-tab-switch.component.d.ts +14 -11
  28. package/lib/utils/svg-routes/index.d.ts +1 -1
  29. package/lib/utils/svg-routes/shared-svg.routes.d.ts +3 -0
  30. package/package.json +1 -1
  31. package/public-api.d.ts +1 -0
  32. package/esm2022/lib/components/ca-tab-switch/models/hover-style.model.mjs +0 -2
  33. package/esm2022/lib/components/ca-tab-switch/utils/constants/tab-switch.constants.mjs +0 -7
  34. package/esm2022/lib/utils/svg-routes/shared-svg-routes.mjs +0 -5
  35. package/lib/components/ca-tab-switch/models/hover-style.model.d.ts +0 -4
  36. package/lib/components/ca-tab-switch/utils/constants/tab-switch.constants.d.ts +0 -6
  37. package/lib/utils/svg-routes/shared-svg-routes.d.ts +0 -4
@@ -117,7 +117,8 @@ export class CaLocationFilterComponent {
117
117
  }
118
118
  onTabChange(event, subType) {
119
119
  this.hasSideAnimation = true;
120
- this.areaFilterSelected = event.name;
120
+ if (event.name)
121
+ this.areaFilterSelected = event.name;
121
122
  }
122
123
  setFilterValue() {
123
124
  let queryParams = {};
@@ -242,7 +243,7 @@ export class CaLocationFilterComponent {
242
243
  // modules
243
244
  AngularSvgIconModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: HttpClientModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type:
244
245
  // components
245
- CaTabSwitchComponent, selector: "app-ca-tab-switch", inputs: ["tabs", "type", "hasDashboardHeight", "subPeriodDropdownList", "selectedSubPeriod", "isClearCustomPeriodRangeValue", "isDisabled", "isBold"], outputs: ["switchClicked", "customPeriodRangeEmitter", "customPeriodRangeSubperiodEmitter", "popoverClosedEmitter"] }, { kind: "component", type: CaInputAddressDropdownComponent, selector: "app-ca-input-address-dropdown", inputs: ["placeholderType", "activeAddress", "receivedAddressData", "receivedAddressList", "inputConfig", "commandHandler", "isRouting", "closedBorder", "incorrectValue", "hideEmptyLoaded", "addresList"], outputs: ["sentAddressValue", "selectedAddress", "sentAddressData", "closeDropdown", "commandEvent", "changeFlag", "incorrectEvent"] }, { kind: "component", type: CaNgxSliderComponent, selector: "app-ca-ngx-slider", inputs: ["sliderTemplate", "sliderName", "sliderOptions", "startedValue", "customClass", "minValue", "maxValue", "isDisabled"], outputs: ["onUserValueChange", "onUserHighValueChange"] }], animations: [
246
+ CaTabSwitchComponent, selector: "app-ca-tab-switch", inputs: ["tabs", "type", "hasDashboardHeight", "subPeriodDropdownList", "selectedSubPeriod", "isClearCustomPeriodRangeValue", "isDisabled", "isBold", "isMarginTopDisabled"], outputs: ["switchClicked", "customPeriodRangeEmitter", "customPeriodRangeSubperiodEmitter", "popoverClosedEmitter"] }, { kind: "component", type: CaInputAddressDropdownComponent, selector: "app-ca-input-address-dropdown", inputs: ["placeholderType", "activeAddress", "receivedAddressData", "receivedAddressList", "inputConfig", "commandHandler", "isRouting", "closedBorder", "incorrectValue", "hideEmptyLoaded", "addresList"], outputs: ["sentAddressValue", "selectedAddress", "sentAddressData", "closeDropdown", "commandEvent", "changeFlag", "incorrectEvent"] }, { kind: "component", type: CaNgxSliderComponent, selector: "app-ca-ngx-slider", inputs: ["sliderTemplate", "sliderName", "sliderOptions", "startedValue", "customClass", "minValue", "maxValue", "isDisabled"], outputs: ["onUserValueChange", "onUserHighValueChange"] }], animations: [
246
247
  inOutAnimation('inOutAnimation'),
247
248
  showAnimation('showAnimation'),
248
249
  areaLeftSideAnimation('areaLeftSideAnimation'),
@@ -289,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
289
290
  }], sentAddressData: [{
290
291
  type: Output
291
292
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1sb2NhdGlvbi1maWx0ZXIvY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1sb2NhdGlvbi1maWx0ZXIvY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUNILFdBQVcsRUFDWCxtQkFBbUIsR0FHdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELFFBQVE7QUFDUixPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLGFBQWE7QUFDYixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnR0FBZ0csQ0FBQztBQUVuSSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGNB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QWEsQ0FBQyxlQUFlLENBQUM7WUFDOUIscUJBQXFCLENBQUMsdUJBQXVCLENBQUM7WUFDOUMsc0JBQXNCLENBQUMsd0JBQXdCLENBQUM7U0FDbkQ7OzRGQUVRLHlCQUF5QjtrQkF4QnJDLFNBQVM7K0JBQ0ksd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDTCxVQUFVO3dCQUNWLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsK0JBQStCO3dCQUMvQixvQkFBb0I7cUJBQ3ZCLGNBR1c7d0JBQ1IsY0FBYyxDQUFDLGdCQUFnQixDQUFDO3dCQUNoQyxhQUFhLENBQUMsZUFBZSxDQUFDO3dCQUM5QixxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDOUMsc0JBQXNCLENBQUMsd0JBQXdCLENBQUM7cUJBQ25EO3VGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFVyxnQkFBZ0I7c0JBQWhDLE1BQU07Z0JBR0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1zbGlkZXIvbmd4LXNsaWRlcic7XG5pbXBvcnQge1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIFVudHlwZWRGb3JtR3JvdXAsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgZUxvYWRTdGF0dXMsIGVHZW5lcmFsQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtIH0gZnJvbSAnLi4vLi4vLi4vY2EtbWFwL2VudW1zL3Rvb2xiYXItZmlsdGVyLXN0cmluZy5lbnVtJztcblxuLy8gdmFsaWRhdG9yc1xuaW1wb3J0IHsgYWRkcmVzc1ZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24vdmFsaWRhdG9ycy9jYS1pbnB1dC1hZGRyZXNzLnJlZ2V4LXZhbGlkYXRpb25zJztcblxuLy8gYW5pbWF0aW9uc1xuaW1wb3J0IHsgaW5PdXRBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL2luLW91dC5hbmltYXRpb24nO1xuaW1wb3J0IHsgc2hvd0FuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2FuaW1hdGlvbnMvc2hvdy5hbmltYXRpb24nO1xuaW1wb3J0IHsgYXJlYUxlZnRTaWRlQW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9hcmVhLWxlZnQtc2lkZS5hbmltYXRpb24nO1xuaW1wb3J0IHsgYXJlYVJpZ2h0U2lkZUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2FuaW1hdGlvbnMvYXJlYS1yaWdodC1zaWRlLmFuaW1hdGlvbic7XG5cbi8vIHV0aWxzXG5pbXBvcnQgeyBDYUZpbHRlcnNTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9zdmctcm91dGVzL2NhLWZpbHRlcnMtc3ZnLXJvdXRlcyc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgQXJyYXlTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvYXJyYXktc3RhdHVzLm1vZGVsJztcbmltcG9ydCB7IGZpbHRlck91dHB1dCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWx0ZXItb3V0cHV0Lm1vZGVsJztcbmltcG9ydCB7IGZpbHRlck91dHB1dFdpdGhQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLW91dHB1dC1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgQXJlYUJveFRhYiB9IGZyb20gJy4vbW9kZWxzL2FyZWEtYm94LXRhYi5tb2RlbCc7XG5pbXBvcnQgeyBTZW50QWRkcmVzc0RhdGEgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL21vZGVscy9zZW50LWFkZHJlc3MtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzTGlzdFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2FkZHJlc3MtbGlzdC1yZXNwb25zZS5tb2RlbCc7XG5cbi8vIGNvbnN0YW50c1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uc3RhbnRzL2ZpbHRlci1jb25maWcuY29uc3RhbnRzJztcbmltcG9ydCB7IExvY2F0aW9uRmlsdGVyQ29uc3RhbnRzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMvbG9jYXRpb24tZmlsdGVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NvbmZpZyc7XG5pbXBvcnQgeyBDYUxvY2F0aW9uRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvY2EtbG9jYXRpb24tZmlsdGVyLmNvbmZpZyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhVGFiU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2EtdGFiLXN3aXRjaC9jYS10YWItc3dpdGNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0QWRkcmVzc0Ryb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IENhTmd4U2xpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY2Etbmd4LXNsaWRlci9jYS1uZ3gtc2xpZGVyLmNvbXBvbmVudCc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgQWRkcmVzc0RhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24vbW9kZWxzL2FkZHJlc3MtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzTGlzdCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24vbW9kZWxzL2FkZHJlc3MtbGlzdC5tb2RlbCc7XG5cbi8vIGhlbHBlcnNcbmltcG9ydCB7IEZpbHRlckhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1sb2NhdGlvbi1maWx0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBtb2R1bGVzXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICAvLyBjb21wb25lbnRzXG4gICAgICAgIENhVGFiU3dpdGNoQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0QWRkcmVzc0Ryb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYU5neFNsaWRlckNvbXBvbmVudCxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYS1sb2NhdGlvbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWxvY2F0aW9uLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgaW5PdXRBbmltYXRpb24oJ2luT3V0QW5pbWF0aW9uJyksXG4gICAgICAgIHNob3dBbmltYXRpb24oJ3Nob3dBbmltYXRpb24nKSxcbiAgICAgICAgYXJlYUxlZnRTaWRlQW5pbWF0aW9uKCdhcmVhTGVmdFNpZGVBbmltYXRpb24nKSxcbiAgICAgICAgYXJlYVJpZ2h0U2lkZUFuaW1hdGlvbignYXJlYVJpZ2h0U2lkZUFuaW1hdGlvbicpLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhTG9jYXRpb25GaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdHlwZSE6IHN0cmluZztcbiAgICBASW5wdXQoKSB0b0RvU3ViVHlwZSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc0xlZ2VuZFZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzQXJlYUZpbHRlcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgYWRkcmVzc0xpc3QhOiBBZGRyZXNzTGlzdFtdO1xuXG4gICAgQElucHV0KCkgcmVjZWl2ZWRBZGRyZXNzTGlzdCE6IEFkZHJlc3NMaXN0UmVzcG9uc2U7XG4gICAgQElucHV0KCkgcmVjZWl2ZWRBZGRyZXNzRGF0YSE6IEFkZHJlc3NEYXRhO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZW50QWRkcmVzc1ZhbHVlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQE91dHB1dCgpIHNlbnRBZGRyZXNzRGF0YTogRXZlbnRFbWl0dGVyPFNlbnRBZGRyZXNzRGF0YT4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPFNlbnRBZGRyZXNzRGF0YT4oKTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIGxvY2F0aW9uU2xpZGVyRGF0YTogT3B0aW9ucyA9XG4gICAgICAgIEZpbHRlckNvbmZpZ0NvbnN0YW50cy5MT0NBVElPTl9TTElERVJfREFUQTtcblxuICAgIHB1YmxpYyBsb2NhdGlvbk5hbWVTZXQhOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1YmxpYyBsb2NhdGlvbkZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gICAgcHVibGljIGxvY2F0aW9uUmFuZ2U6IG51bWJlciA9IDI1O1xuICAgIHB1YmxpYyBsb2NhdGlvblJhbmdlU2V0OiBudW1iZXIgPSAyNTtcblxuICAgIHB1YmxpYyBsb25nVmFsOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBsYXRWYWw6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgb3JpZ2luTG9uZ1ZhbDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgb3JpZ2luTGF0VmFsOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGRlc3RMb25nVmFsOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBkZXN0TGF0VmFsOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGxvbmdWYWx1ZVNldDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgbGF0VmFsU2V0OiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIG9yaWdpbkxvbmdWYWxTZXQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIG9yaWdpbkxhdFZhbFNldDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBkZXN0TG9uZ1ZhbFNldDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgZGVzdExhdFZhbFNldDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyB1bnNlbGVjdGVkVmlzaWJsZUNvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhcmVhRmlsdGVyU2VsZWN0ZWQhOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgaXNCdXR0b25BdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNBc2NlbmRpbmdTb3J0T3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHVibGljIGxvYWRTdGF0dXNFbnVtID0gZUxvYWRTdGF0dXM7XG4gICAgcHVibGljIGZpbHRlckFjdGl2ZUFycmF5OiBBcnJheVN0YXR1c1tdID0gW107XG4gICAgcHVibGljIHRvdGFsRmlsdGVyc051bTogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBhcmVhRm9ybSE6IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgcHVibGljIGxvY2F0aW9uU3RhdGUhOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1YmxpYyByYW5nZVZhbHVlOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBkZXN0aW5hdGlvblN0YXRlITogc3RyaW5nO1xuICAgIHB1YmxpYyBvcmlnaW5TdGF0ZSE6IHN0cmluZztcbiAgICBwdWJsaWMgaGFzU2lkZUFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGFyZWFCb3hUYWI6IEFyZWFCb3hUYWJbXSA9IExvY2F0aW9uRmlsdGVyQ29uc3RhbnRzLkFSRUFfQk9YX1RBQjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcblxuICAgICAgICB0aGlzLndhdGNoTG9jYXRpb25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy53YXRjaEFyZWFGb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGdldE9yaWdpbkNvbnRyb2woKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FMb2NhdGlvbkZpbHRlckNvbmZpZy5vcmlnaW5Db250cm9sKCk7XG4gICAgfVxuXG4gICAgZ2V0IGdldERlc3RpbmF0aW9uQ29udHJvbCgpOiBJQ2FJbnB1dCB7XG4gICAgICAgIHJldHVybiBDYUxvY2F0aW9uRmlsdGVyQ29uZmlnLmRlc3RpbmF0aW9uQ29udHJvbCgpO1xuICAgIH1cblxuICAgIGdldCBnZXRBZGRyZXNzQ29udHJvbCgpOiBJQ2FJbnB1dCB7XG4gICAgICAgIHJldHVybiBDYUxvY2F0aW9uRmlsdGVyQ29uZmlnLmFkZHJlc3NDb250cm9sKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7fVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2F0aW9uRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgYWRkcmVzczogW251bGwsIFsuLi5hZGRyZXNzVmFsaWRhdGlvbl1dLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFyZWFGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBvcmlnaW46IFtudWxsLCBbLi4uYWRkcmVzc1ZhbGlkYXRpb25dXSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBbbnVsbCwgWy4uLmFkZHJlc3NWYWxpZGF0aW9uXV0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2F0Y2hMb2NhdGlvbkZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXJlYUZpbHRlclNlbGVjdGVkID0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uTE9DQVRJT047XG5cbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb25Gb3JtKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYW5nZXMuYWRkcmVzcylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb25TdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YXRjaEFyZWFGb3JtVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcmVhRm9ybSkge1xuICAgICAgICAgICAgdGhpcy5hcmVhRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYW5nZXMub3JpZ2luKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5TdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hhbmdlcy5kZXN0aW5hdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb25TdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQXJlYUZpbHRlckNsb3NlKCk6IHZvaWQge1xuICAgICAgICBGaWx0ZXJIZWxwZXIuaGFuZGxlQXJlYUZpbHRlckNsb3NlKFxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbkZvcm0sXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uTmFtZVNldCxcbiAgICAgICAgICAgIHRoaXMubG9uZ1ZhbCxcbiAgICAgICAgICAgIHRoaXMubGF0VmFsLFxuICAgICAgICAgICAgdGhpcy5sb25nVmFsdWVTZXQsXG4gICAgICAgICAgICB0aGlzLmxhdFZhbFNldCxcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25SYW5nZSxcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25SYW5nZVNldFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRhYkNoYW5nZShldmVudDogeyBuYW1lOiBzdHJpbmcgfSwgc3ViVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzU2lkZUFuaW1hdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuYXJlYUZpbHRlclNlbGVjdGVkID0gZXZlbnQubmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RmlsdGVyVmFsdWUoKTogZmlsdGVyT3V0cHV0IHwgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtcyA9IHt9O1xuICAgICAgICBjb25zdCBzdWJUeXBlID1cbiAgICAgICAgICAgIFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUi50b1N0cmluZygpO1xuXG4gICAgICAgIGlmICh0aGlzLmFyZWFGaWx0ZXJTZWxlY3RlZCAhPSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5MT0NBVElPTikge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgb3JpZ2luTGF0VmFsdWU6IHRoaXMub3JpZ2luTGF0VmFsLFxuICAgICAgICAgICAgICAgIG9yaWdpbkxvbmdWYWx1ZTogdGhpcy5vcmlnaW5Mb25nVmFsLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uTGF0VmFsdWU6IHRoaXMuZGVzdExhdFZhbCxcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkxvbmdWYWx1ZTogdGhpcy5kZXN0TG9uZ1ZhbCxcbiAgICAgICAgICAgICAgICByYW5nZVZhbHVlOiB0aGlzLmxvY2F0aW9uUmFuZ2UsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uUmFuZ2VTZXQgPSB0aGlzLmxvY2F0aW9uUmFuZ2U7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbkxhdFZhbFNldCA9IHRoaXMub3JpZ2luTGF0VmFsO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5Mb25nVmFsU2V0ID0gdGhpcy5vcmlnaW5Mb25nVmFsO1xuICAgICAgICAgICAgdGhpcy5kZXN0TG9uZ1ZhbFNldCA9IHRoaXMuZGVzdExvbmdWYWw7XG4gICAgICAgICAgICB0aGlzLmRlc3RMYXRWYWxTZXQgPSB0aGlzLmRlc3RMYXRWYWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBsb25nVmFsdWU6IHRoaXMubG9uZ1ZhbCxcbiAgICAgICAgICAgICAgICBsYXRWYWx1ZTogdGhpcy5sYXRWYWwsXG4gICAgICAgICAgICAgICAgcmFuZ2VWYWx1ZTogdGhpcy5sb2NhdGlvblJhbmdlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5sb25nVmFsdWVTZXQgPSB0aGlzLmxvbmdWYWw7XG4gICAgICAgICAgICB0aGlzLmxhdFZhbFNldCA9IHRoaXMubGF0VmFsO1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvblJhbmdlU2V0ID0gdGhpcy5sb2NhdGlvblJhbmdlO1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbk5hbWVTZXQgPSB0aGlzLmxvY2F0aW9uRm9ybS5nZXQoJ2FkZHJlc3MnKT8udmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYWN0aW9uOiBlR2VuZXJhbEFjdGlvbnMuU0VULFxuICAgICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgICBzdWJUeXBlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBbGwoZXZlbnQ/OiBFdmVudCk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMge1xuICAgICAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMubG9jYXRpb25Gb3JtLnNldFZhbHVlKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFyZWFGb3JtLnNldFZhbHVlKHtcbiAgICAgICAgICAgIG9yaWdpbjogbnVsbCxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2NhdGlvblJhbmdlID0gMjU7XG4gICAgICAgIHRoaXMubG9jYXRpb25TdGF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMubG9uZ1ZhbCA9IDA7XG4gICAgICAgIHRoaXMubGF0VmFsID0gMDtcbiAgICAgICAgdGhpcy5vcmlnaW5Mb25nVmFsID0gMDtcbiAgICAgICAgdGhpcy5vcmlnaW5MYXRWYWwgPSAwO1xuICAgICAgICB0aGlzLmRlc3RMb25nVmFsID0gMDtcbiAgICAgICAgdGhpcy5kZXN0TGF0VmFsID0gMDtcbiAgICAgICAgdGhpcy5sb2NhdGlvbk5hbWVTZXQgPSBudWxsO1xuXG4gICAgICAgIHRoaXMubG9uZ1ZhbHVlU2V0ID0gdGhpcy5sb25nVmFsO1xuICAgICAgICB0aGlzLmxhdFZhbFNldCA9IHRoaXMubGF0VmFsO1xuICAgICAgICB0aGlzLm9yaWdpbkxvbmdWYWxTZXQgPSB0aGlzLm9yaWdpbkxvbmdWYWw7XG4gICAgICAgIHRoaXMub3JpZ2luTGF0VmFsU2V0ID0gdGhpcy5vcmlnaW5MYXRWYWw7XG4gICAgICAgIHRoaXMuZGVzdExhdFZhbFNldCA9IHRoaXMuZGVzdExvbmdWYWw7XG4gICAgICAgIHRoaXMuZGVzdExvbmdWYWxTZXQgPSB0aGlzLmRlc3RMb25nVmFsO1xuICAgICAgICB0aGlzLmxvY2F0aW9uUmFuZ2VTZXQgPSB0aGlzLmxvY2F0aW9uUmFuZ2U7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGFjdGlvbjogZUdlbmVyYWxBY3Rpb25zLkNMRUFSLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UmFuZ2VWYWx1ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKGlucHV0RWxlbWVudC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5MT0NBVElPTl9GSUxURVIpXG4gICAgICAgICAgICB0aGlzLnJhbmdlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZWxzZSB0aGlzLmxvY2F0aW9uUmFuZ2UgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlUmFuZ2VWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIC8vbGVhdmUgdGhpcyBhbnkgZm9yIG5vd1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5MT0NBVElPTl9GSUxURVIpXG4gICAgICAgICAgICB0aGlzLnJhbmdlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZWxzZSB0aGlzLmxvY2F0aW9uUmFuZ2UgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRTZWxlY3QoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbnRBZGRyZXNzVmFsdWUuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMubG9jYXRpb25OYW1lU2V0ID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9yaWdpblNlbGVjdChldmVudDogQWRkcmVzc0RhdGEpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Py5hZGRyZXNzPy5hZGRyZXNzKSB0aGlzLm9yaWdpblN0YXRlID0gZXZlbnQuYWRkcmVzcy5hZGRyZXNzO1xuXG4gICAgICAgIGlmIChldmVudD8ubG9uZ0xhdCAmJiBldmVudD8ubG9uZ0xhdD8ubGF0aXR1ZGUpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luTG9uZ1ZhbCA9IGV2ZW50Py5sb25nTGF0Py5sb25naXR1ZGUgfHwgMDtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luTGF0VmFsID0gZXZlbnQ/LmxvbmdMYXQ/LmxhdGl0dWRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUxvY2F0aW9uQ2hhbmdlKGV2ZW50OiBBZGRyZXNzRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvbmdWYWwgPSBldmVudD8ubG9uZ0xhdD8ubG9uZ2l0dWRlID8/IDA7XG4gICAgICAgIHRoaXMubGF0VmFsID0gZXZlbnQ/LmxvbmdMYXQ/LmxhdGl0dWRlID8/IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURlc3RpbmF0aW9uU2VsZWN0KGV2ZW50OiBBZGRyZXNzRGF0YSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQ/LmFkZHJlc3M/LmFkZHJlc3MpXG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uU3RhdGUgPSBldmVudC5hZGRyZXNzLmFkZHJlc3M7XG5cbiAgICAgICAgaWYgKGV2ZW50Py5sb25nTGF0ICYmIGV2ZW50Py5sb25nTGF0Py5sYXRpdHVkZSkge1xuICAgICAgICAgICAgdGhpcy5kZXN0TG9uZ1ZhbCA9IGV2ZW50Py5sb25nTGF0Py5sb25naXR1ZGUgfHwgMDtcbiAgICAgICAgICAgIHRoaXMuZGVzdExhdFZhbCA9IGV2ZW50Py5sb25nTGF0Py5sYXRpdHVkZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdmdQYXRoKHByb3BlcnR5TmFtZToga2V5b2YgdHlwZW9mIENhRmlsdGVyc1N2Z1JvdXRlcyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDYUZpbHRlcnNTdmdSb3V0ZXNbcHJvcGVydHlOYW1lXSBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUFkZHJlc3NEYXRhKGV2ZW50OiBTZW50QWRkcmVzc0RhdGEpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZW50QWRkcmVzc0RhdGEuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJvcmRlci1maWx0ZXJcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhcmVhRmlsdGVySG9sZGVyXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICA8YXBwLWNhLXRhYi1zd2l0Y2hcbiAgICAgICAgW3RhYnNdPVwiYXJlYUJveFRhYlwiXG4gICAgICAgIChzd2l0Y2hDbGlja2VkKT1cIm9uVGFiQ2hhbmdlKCRldmVudCwgJ1JFUVVFU1RTLUJPWCcpXCJcbiAgICAgICAgW3R5cGVdPVwiJ3R5cGUyLW1vZGFsLXBvcHVwJ1wiXG4gICAgPlxuICAgIDwvYXBwLWNhLXRhYi1zd2l0Y2g+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhcmVhLWFsbC1ob2xkZXIgZC1mbGV4IGZsZXgtd3JhcCBmbGV4LXJvd1wiPlxuICAgIEBpZiAoaXNBcmVhRmlsdGVyICYmIGFyZWFGaWx0ZXJTZWxlY3RlZCAhPT0gJ0xvY2F0aW9uJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1wYXJ0LWhvbGRlclwiIFtAYXJlYVJpZ2h0U2lkZUFuaW1hdGlvbl09XCInaW4nXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhcmVhLWZvcm1zLWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJhcmVhRm9ybVwiXG4gICAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLXNpbmdsZS1mb3JtLWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWFkZHJlc3MtZHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9yaWdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiZ2V0T3JpZ2luQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJUeXBlXT1cIidzaG9ydEFkZHJlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNMaXN0XT1cImFkZHJlc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZEFkZHJlc3MpPVwiaGFuZGxlT3JpZ2luU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJlYS1zaW5nbGUtZm9ybS1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiZ2V0RGVzdGluYXRpb25Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlclR5cGVdPVwiJ3Nob3J0QWRkcmVzcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc0xpc3RdPVwiYWRkcmVzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQWRkcmVzcyk9XCJoYW5kbGVEZXN0aW5hdGlvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXBhcnQtaG9sZGVyXCIgW0BhcmVhTGVmdFNpZGVBbmltYXRpb25dPVwiJ2luJ1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLW1pZGRsZS1ob2xkZXIgbG9jYXRpb24tbWlkZGxlLXBhZGRpbmdcIlxuICAgICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImxvY2F0aW9uRm9ybVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiZ2V0QWRkcmVzc0NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJUeXBlXT1cIidzaG9ydEFkZHJlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgW2FkZHJlc0xpc3RdPVwiYWRkcmVzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAoc2VudEFkZHJlc3NWYWx1ZSk9XCJoYW5kbGVJbnB1dFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlY2VpdmVkQWRkcmVzc0xpc3RdPVwicmVjZWl2ZWRBZGRyZXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWNlaXZlZEFkZHJlc3NEYXRhXT1cInJlY2VpdmVkQWRkcmVzc0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICAoc2VudEFkZHJlc3NEYXRhKT1cImhhbmRsZUFkZHJlc3NEYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRBZGRyZXNzKT1cImhhbmRsZUxvY2F0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmaWx0ZXItbWlkZGxlLWhvbGRlciBsb2NhdGlvbi1zbGlkZXItbWlkZGxlLXBhZGRpbmdcIlxuICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJhbmdlLW5ldy12YWx1ZS1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtdGV4dFwiPlJhbmdlPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtZmxleC1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IChvblVzZXJWYWx1ZUNoYW5nZSk9XCJzZXRSYW5nZVZhbHVlKCRldmVudClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8YXBwLWNhLW5neC1zbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgW3NsaWRlck9wdGlvbnNdPVwibG9jYXRpb25TbGlkZXJEYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXJ0ZWRWYWx1ZV09XCJsb2NhdGlvblJhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjdXN0b20tc2xpZGVyLWZpbHRlcidcIlxuICAgICAgICAgICAgICAgICAgICAob25Vc2VyVmFsdWVDaGFuZ2UpPVwiY2hhbmdlUmFuZ2VWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9hcHAtY2Etbmd4LXNsaWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImJvcmRlci1maWx0ZXIgYm90dG9tLWJvcmRlci1tYXJnaW5cIj48L2Rpdj5cbiJdfQ==
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1sb2NhdGlvbi1maWx0ZXIvY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1sb2NhdGlvbi1maWx0ZXIvY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUNILFdBQVcsRUFDWCxtQkFBbUIsR0FHdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELFFBQVE7QUFDUixPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLGFBQWE7QUFDYixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnR0FBZ0csQ0FBQztBQUVuSSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUxRixRQUFRO0FBQ1IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFVbEYsWUFBWTtBQUNaLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLGFBQWE7QUFDYixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUN2SSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQU10RixVQUFVO0FBQ1YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUEwQm5ELE1BQU0sT0FBTyx5QkFBeUI7SUFpRWxDLFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBbEYxQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxpQkFBWSxHQUFZLElBQUksQ0FBQztRQU1yQixxQkFBZ0IsR0FDN0IsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyQixvQkFBZSxHQUNyQixJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVoQyx1QkFBa0IsR0FDckIscUJBQXFCLENBQUMsb0JBQW9CLENBQUM7UUFLeEMsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IscUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBRTlCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUVuQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUV6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRXZCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFdEIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBRTVCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLDJCQUFzQixHQUFXLENBQUMsQ0FBQztRQUduQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMseUJBQW9CLEdBQVksSUFBSSxDQUFDO1FBRXJDLG1CQUFjLEdBQUcsV0FBVyxDQUFDO1FBQzdCLHNCQUFpQixHQUFrQixFQUFFLENBQUM7UUFDdEMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFJNUIsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUd2QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMsZUFBVSxHQUFpQix1QkFBdUIsQ0FBQyxZQUFZLENBQUM7SUFzQmpCLENBQUM7SUFFL0MsVUFBVTtRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDbkMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztTQUM5QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7UUFFM0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO2lCQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztvQkFDaEIsSUFBSSxDQUFDLGFBQWE7d0JBQ2QsdUJBQXVCLENBQUMsd0JBQXdCLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0wsQ0FBQztJQUVPLHlCQUF5QjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7aUJBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO29CQUNmLElBQUksQ0FBQyxXQUFXO3dCQUNaLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO2dCQUV6RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQ3BCLElBQUksQ0FBQyxnQkFBZ0I7d0JBQ2pCLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNMLENBQUM7SUFFTSxpQkFBaUI7UUFDcEIsWUFBWSxDQUFDLHFCQUFxQixDQUM5QixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQ3hCLENBQUM7SUFDTixDQUFDO0lBRU0sV0FBVyxDQUNkLEtBQWdELEVBQ2hELE9BQWU7UUFFZixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksS0FBSyxDQUFDLElBQUk7WUFBRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxPQUFPLEdBQ1QsdUJBQXVCLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUQsV0FBVyxHQUFHO2dCQUNWLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDakMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhO2dCQUNuQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDcEMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3RDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNqQyxDQUFDO1lBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDSixXQUFXLEdBQUc7Z0JBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNqQyxDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNuRSxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUc7WUFDVCxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDckIsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHO1lBQzNCLFdBQVc7WUFDWCxPQUFPO1NBQ1YsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLEtBQUs7WUFBRSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDdkIsT0FBTyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbkIsTUFBTSxFQUFFLElBQUk7WUFDWixXQUFXLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTNDLE1BQU0sSUFBSSxHQUFHO1lBQ1QsTUFBTSxFQUFFLGVBQWUsQ0FBQyxLQUFLO1lBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSTtTQUN4QixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFZO1FBQzdCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLHVCQUF1QixDQUFDLGVBQWU7WUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7O1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQzlCLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUMsZUFBZTtZQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzs7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBa0I7UUFDeEMsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU87WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRXRFLElBQUksS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxLQUFrQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sdUJBQXVCLENBQUMsS0FBa0I7UUFDN0MsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU87WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRWxELElBQUksS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFTSxVQUFVLENBQUMsWUFBNkM7UUFDM0QsT0FBTyxrQkFBa0IsQ0FBQyxZQUFZLENBQVcsQ0FBQztJQUN0RCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBc0I7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0ExUlEseUJBQXlCO21HQUF6Qix5QkFBeUIsaWJDeEZ0QywyL0dBZ0ZBO2dCRFpRLFVBQVU7Z0JBQ1Ysb0JBQW9CLDhCQUNwQixZQUFZLDhCQUNaLGdCQUFnQiw4QkFDaEIsV0FBVyxrU0FDWCxtQkFBbUI7Z0JBQ25CLGFBQWE7Z0JBQ2Isb0JBQW9CLGlXQUNwQiwrQkFBK0IsNlpBQy9CLG9CQUFvQix5T0FJWjtZQUNSLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoQyxhQUFhLENBQUMsZUFBZSxDQUFDO1lBQzlCLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDO1lBQzlDLHNCQUFzQixDQUFDLHdCQUF3QixDQUFDO1NBQ25EOzs0RkFFUSx5QkFBeUI7a0JBeEJyQyxTQUFTOytCQUNJLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ0wsVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLCtCQUErQjt3QkFDL0Isb0JBQW9CO3FCQUN2QixjQUdXO3dCQUNSLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDaEMsYUFBYSxDQUFDLGVBQWUsQ0FBQzt3QkFDOUIscUJBQXFCLENBQUMsdUJBQXVCLENBQUM7d0JBQzlDLHNCQUFzQixDQUFDLHdCQUF3QixDQUFDO3FCQUNuRDt1RkFHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRVcsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUdHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXItc2xpZGVyL25neC1zbGlkZXInO1xuaW1wb3J0IHtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBVbnR5cGVkRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIG1vZHVsZXNcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuLy8gZW51bXNcbmltcG9ydCB7IGVMb2FkU3RhdHVzLCBlR2VuZXJhbEFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBUb29sYmFyRmlsdGVyU3RyaW5nRW51bSB9IGZyb20gJy4uLy4uLy4uL2NhLW1hcC9lbnVtcy90b29sYmFyLWZpbHRlci1zdHJpbmcuZW51bSc7XG5cbi8vIHZhbGlkYXRvcnNcbmltcG9ydCB7IGFkZHJlc3NWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL3ZhbGlkYXRvcnMvY2EtaW5wdXQtYWRkcmVzcy5yZWdleC12YWxpZGF0aW9ucyc7XG5cbi8vIGFuaW1hdGlvbnNcbmltcG9ydCB7IGluT3V0QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9pbi1vdXQuYW5pbWF0aW9uJztcbmltcG9ydCB7IHNob3dBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL3Nob3cuYW5pbWF0aW9uJztcbmltcG9ydCB7IGFyZWFMZWZ0U2lkZUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2FuaW1hdGlvbnMvYXJlYS1sZWZ0LXNpZGUuYW5pbWF0aW9uJztcbmltcG9ydCB7IGFyZWFSaWdodFNpZGVBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL2FyZWEtcmlnaHQtc2lkZS5hbmltYXRpb24nO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3ZnLXJvdXRlcy9jYS1maWx0ZXJzLXN2Zy1yb3V0ZXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IEFycmF5U3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2FycmF5LXN0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLW91dHB1dC5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1vdXRwdXQtcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IEFyZWFCb3hUYWIgfSBmcm9tICcuL21vZGVscy9hcmVhLWJveC10YWIubW9kZWwnO1xuaW1wb3J0IHsgU2VudEFkZHJlc3NEYXRhIH0gZnJvbSAnLi4vLi4vLi4vY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi9tb2RlbHMvc2VudC1hZGRyZXNzLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc0xpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9hZGRyZXNzLWxpc3QtcmVzcG9uc2UubW9kZWwnO1xuXG4vLyBjb25zdGFudHNcbmltcG9ydCB7IEZpbHRlckNvbmZpZ0NvbnN0YW50cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbnN0YW50cy9maWx0ZXItY29uZmlnLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2NhdGlvbkZpbHRlckNvbnN0YW50cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzL2xvY2F0aW9uLWZpbHRlci5jb25zdGFudHMnO1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jb25maWcnO1xuaW1wb3J0IHsgQ2FMb2NhdGlvbkZpbHRlckNvbmZpZyB9IGZyb20gJy4vY29uZmlnL2NhLWxvY2F0aW9uLWZpbHRlci5jb25maWcnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYVRhYlN3aXRjaENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLXRhYi1zd2l0Y2gvY2EtdGFiLXN3aXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dEFkZHJlc3NEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYU5neFNsaWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLW5neC1zbGlkZXIvY2Etbmd4LXNsaWRlci5jb21wb25lbnQnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IEFkZHJlc3NEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL21vZGVscy9hZGRyZXNzLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc0xpc3QgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duL21vZGVscy9hZGRyZXNzLWxpc3QubW9kZWwnO1xuXG4vLyBoZWxwZXJzXG5pbXBvcnQgeyBGaWx0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtbG9jYXRpb24tZmlsdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gbW9kdWxlc1xuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgLy8gY29tcG9uZW50c1xuICAgICAgICBDYVRhYlN3aXRjaENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dEFkZHJlc3NEcm9wZG93bkNvbXBvbmVudCxcbiAgICAgICAgQ2FOZ3hTbGlkZXJDb21wb25lbnQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtbG9jYXRpb24tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1sb2NhdGlvbi1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIGluT3V0QW5pbWF0aW9uKCdpbk91dEFuaW1hdGlvbicpLFxuICAgICAgICBzaG93QW5pbWF0aW9uKCdzaG93QW5pbWF0aW9uJyksXG4gICAgICAgIGFyZWFMZWZ0U2lkZUFuaW1hdGlvbignYXJlYUxlZnRTaWRlQW5pbWF0aW9uJyksXG4gICAgICAgIGFyZWFSaWdodFNpZGVBbmltYXRpb24oJ2FyZWFSaWdodFNpZGVBbmltYXRpb24nKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUxvY2F0aW9uRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHR5cGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9Eb1N1YlR5cGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNMZWdlbmRWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc0FyZWFGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGFkZHJlc3NMaXN0ITogQWRkcmVzc0xpc3RbXTtcblxuICAgIEBJbnB1dCgpIHJlY2VpdmVkQWRkcmVzc0xpc3QhOiBBZGRyZXNzTGlzdFJlc3BvbnNlO1xuICAgIEBJbnB1dCgpIHJlY2VpdmVkQWRkcmVzc0RhdGEhOiBBZGRyZXNzRGF0YTtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgc2VudEFkZHJlc3NWYWx1ZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBPdXRwdXQoKSBzZW50QWRkcmVzc0RhdGE6IEV2ZW50RW1pdHRlcjxTZW50QWRkcmVzc0RhdGE+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxTZW50QWRkcmVzc0RhdGE+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBsb2NhdGlvblNsaWRlckRhdGE6IE9wdGlvbnMgPVxuICAgICAgICBGaWx0ZXJDb25maWdDb25zdGFudHMuTE9DQVRJT05fU0xJREVSX0RBVEE7XG5cbiAgICBwdWJsaWMgbG9jYXRpb25OYW1lU2V0ITogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaWMgbG9jYXRpb25Gb3JtITogVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIHB1YmxpYyBsb2NhdGlvblJhbmdlOiBudW1iZXIgPSAyNTtcbiAgICBwdWJsaWMgbG9jYXRpb25SYW5nZVNldDogbnVtYmVyID0gMjU7XG5cbiAgICBwdWJsaWMgbG9uZ1ZhbDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgbGF0VmFsOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIG9yaWdpbkxvbmdWYWw6IG51bWJlciA9IDA7XG4gICAgcHVibGljIG9yaWdpbkxhdFZhbDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBkZXN0TG9uZ1ZhbDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgZGVzdExhdFZhbDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBsb25nVmFsdWVTZXQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGxhdFZhbFNldDogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBvcmlnaW5Mb25nVmFsU2V0OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBvcmlnaW5MYXRWYWxTZXQ6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgZGVzdExvbmdWYWxTZXQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGRlc3RMYXRWYWxTZXQ6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgdW5zZWxlY3RlZFZpc2libGVDb3VudDogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgYXJlYUZpbHRlclNlbGVjdGVkITogc3RyaW5nO1xuXG4gICAgcHVibGljIGlzQnV0dG9uQXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzQXNjZW5kaW5nU29ydE9yZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsb2FkU3RhdHVzRW51bSA9IGVMb2FkU3RhdHVzO1xuICAgIHB1YmxpYyBmaWx0ZXJBY3RpdmVBcnJheTogQXJyYXlTdGF0dXNbXSA9IFtdO1xuICAgIHB1YmxpYyB0b3RhbEZpbHRlcnNOdW06IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgYXJlYUZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBsb2NhdGlvblN0YXRlITogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaWMgcmFuZ2VWYWx1ZTogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgZGVzdGluYXRpb25TdGF0ZSE6IHN0cmluZztcbiAgICBwdWJsaWMgb3JpZ2luU3RhdGUhOiBzdHJpbmc7XG4gICAgcHVibGljIGhhc1NpZGVBbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBhcmVhQm94VGFiOiBBcmVhQm94VGFiW10gPSBMb2NhdGlvbkZpbHRlckNvbnN0YW50cy5BUkVBX0JPWF9UQUI7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtKCk7XG5cbiAgICAgICAgdGhpcy53YXRjaExvY2F0aW9uRm9ybVZhbHVlQ2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMud2F0Y2hBcmVhRm9ybVZhbHVlQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIGdldCBnZXRPcmlnaW5Db250cm9sKCk6IElDYUlucHV0IHtcbiAgICAgICAgcmV0dXJuIENhTG9jYXRpb25GaWx0ZXJDb25maWcub3JpZ2luQ29udHJvbCgpO1xuICAgIH1cblxuICAgIGdldCBnZXREZXN0aW5hdGlvbkNvbnRyb2woKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FMb2NhdGlvbkZpbHRlckNvbmZpZy5kZXN0aW5hdGlvbkNvbnRyb2woKTtcbiAgICB9XG5cbiAgICBnZXQgZ2V0QWRkcmVzc0NvbnRyb2woKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FMb2NhdGlvbkZpbHRlckNvbmZpZy5hZGRyZXNzQ29udHJvbCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge31cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbkZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IFtudWxsLCBbLi4uYWRkcmVzc1ZhbGlkYXRpb25dXSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcmVhRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgb3JpZ2luOiBbbnVsbCwgWy4uLmFkZHJlc3NWYWxpZGF0aW9uXV0sXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogW251bGwsIFsuLi5hZGRyZXNzVmFsaWRhdGlvbl1dLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdhdGNoTG9jYXRpb25Gb3JtVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFyZWFGaWx0ZXJTZWxlY3RlZCA9IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkxPQ0FUSU9OO1xuXG4gICAgICAgIGlmICh0aGlzLmxvY2F0aW9uRm9ybSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbkZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFuZ2VzLmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uU3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd2F0Y2hBcmVhRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXJlYUZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuYXJlYUZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFuZ2VzLm9yaWdpbilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luU3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYW5nZXMuZGVzdGluYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uU3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkFyZWFGaWx0ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgRmlsdGVySGVscGVyLmhhbmRsZUFyZWFGaWx0ZXJDbG9zZShcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25Gb3JtLFxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbk5hbWVTZXQsXG4gICAgICAgICAgICB0aGlzLmxvbmdWYWwsXG4gICAgICAgICAgICB0aGlzLmxhdFZhbCxcbiAgICAgICAgICAgIHRoaXMubG9uZ1ZhbHVlU2V0LFxuICAgICAgICAgICAgdGhpcy5sYXRWYWxTZXQsXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uUmFuZ2UsXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uUmFuZ2VTZXRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UYWJDaGFuZ2UoXG4gICAgICAgIGV2ZW50OiB7IGlkOiBudW1iZXI7IG5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgc3ViVHlwZTogc3RyaW5nXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzU2lkZUFuaW1hdGlvbiA9IHRydWU7XG4gICAgICAgIGlmIChldmVudC5uYW1lKSB0aGlzLmFyZWFGaWx0ZXJTZWxlY3RlZCA9IGV2ZW50Lm5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZpbHRlclZhbHVlKCk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMge1xuICAgICAgICBsZXQgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICAgICAgY29uc3Qgc3ViVHlwZSA9XG4gICAgICAgICAgICBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIudG9TdHJpbmcoKTtcblxuICAgICAgICBpZiAodGhpcy5hcmVhRmlsdGVyU2VsZWN0ZWQgIT0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uTE9DQVRJT04pIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIG9yaWdpbkxhdFZhbHVlOiB0aGlzLm9yaWdpbkxhdFZhbCxcbiAgICAgICAgICAgICAgICBvcmlnaW5Mb25nVmFsdWU6IHRoaXMub3JpZ2luTG9uZ1ZhbCxcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkxhdFZhbHVlOiB0aGlzLmRlc3RMYXRWYWwsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb25Mb25nVmFsdWU6IHRoaXMuZGVzdExvbmdWYWwsXG4gICAgICAgICAgICAgICAgcmFuZ2VWYWx1ZTogdGhpcy5sb2NhdGlvblJhbmdlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvblJhbmdlU2V0ID0gdGhpcy5sb2NhdGlvblJhbmdlO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5MYXRWYWxTZXQgPSB0aGlzLm9yaWdpbkxhdFZhbDtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luTG9uZ1ZhbFNldCA9IHRoaXMub3JpZ2luTG9uZ1ZhbDtcbiAgICAgICAgICAgIHRoaXMuZGVzdExvbmdWYWxTZXQgPSB0aGlzLmRlc3RMb25nVmFsO1xuICAgICAgICAgICAgdGhpcy5kZXN0TGF0VmFsU2V0ID0gdGhpcy5kZXN0TGF0VmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgbG9uZ1ZhbHVlOiB0aGlzLmxvbmdWYWwsXG4gICAgICAgICAgICAgICAgbGF0VmFsdWU6IHRoaXMubGF0VmFsLFxuICAgICAgICAgICAgICAgIHJhbmdlVmFsdWU6IHRoaXMubG9jYXRpb25SYW5nZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMubG9uZ1ZhbHVlU2V0ID0gdGhpcy5sb25nVmFsO1xuICAgICAgICAgICAgdGhpcy5sYXRWYWxTZXQgPSB0aGlzLmxhdFZhbDtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25SYW5nZVNldCA9IHRoaXMubG9jYXRpb25SYW5nZTtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25OYW1lU2V0ID0gdGhpcy5sb2NhdGlvbkZvcm0uZ2V0KCdhZGRyZXNzJyk/LnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGZpbHRlclR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFjdGlvbjogZUdlbmVyYWxBY3Rpb25zLlNFVCxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgc3ViVHlwZSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyQWxsKGV2ZW50PzogRXZlbnQpOiBmaWx0ZXJPdXRwdXQgfCBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIHtcbiAgICAgICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmxvY2F0aW9uRm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICBhZGRyZXNzOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcmVhRm9ybS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICBvcmlnaW46IG51bGwsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbjogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9jYXRpb25SYW5nZSA9IDI1O1xuICAgICAgICB0aGlzLmxvY2F0aW9uU3RhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLmxvbmdWYWwgPSAwO1xuICAgICAgICB0aGlzLmxhdFZhbCA9IDA7XG4gICAgICAgIHRoaXMub3JpZ2luTG9uZ1ZhbCA9IDA7XG4gICAgICAgIHRoaXMub3JpZ2luTGF0VmFsID0gMDtcbiAgICAgICAgdGhpcy5kZXN0TG9uZ1ZhbCA9IDA7XG4gICAgICAgIHRoaXMuZGVzdExhdFZhbCA9IDA7XG4gICAgICAgIHRoaXMubG9jYXRpb25OYW1lU2V0ID0gbnVsbDtcblxuICAgICAgICB0aGlzLmxvbmdWYWx1ZVNldCA9IHRoaXMubG9uZ1ZhbDtcbiAgICAgICAgdGhpcy5sYXRWYWxTZXQgPSB0aGlzLmxhdFZhbDtcbiAgICAgICAgdGhpcy5vcmlnaW5Mb25nVmFsU2V0ID0gdGhpcy5vcmlnaW5Mb25nVmFsO1xuICAgICAgICB0aGlzLm9yaWdpbkxhdFZhbFNldCA9IHRoaXMub3JpZ2luTGF0VmFsO1xuICAgICAgICB0aGlzLmRlc3RMYXRWYWxTZXQgPSB0aGlzLmRlc3RMb25nVmFsO1xuICAgICAgICB0aGlzLmRlc3RMb25nVmFsU2V0ID0gdGhpcy5kZXN0TG9uZ1ZhbDtcbiAgICAgICAgdGhpcy5sb2NhdGlvblJhbmdlU2V0ID0gdGhpcy5sb2NhdGlvblJhbmdlO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBhY3Rpb246IGVHZW5lcmFsQWN0aW9ucy5DTEVBUixcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGZpbHRlclR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFJhbmdlVmFsdWUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IE51bWJlcihpbnB1dEVsZW1lbnQudmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uTE9DQVRJT05fRklMVEVSKVxuICAgICAgICAgICAgdGhpcy5yYW5nZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIGVsc2UgdGhpcy5sb2NhdGlvblJhbmdlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVJhbmdlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICAvL2xlYXZlIHRoaXMgYW55IGZvciBub3dcbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uTE9DQVRJT05fRklMVEVSKVxuICAgICAgICAgICAgdGhpcy5yYW5nZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIGVsc2UgdGhpcy5sb2NhdGlvblJhbmdlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUlucHV0U2VsZWN0KGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZW50QWRkcmVzc1ZhbHVlLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmxvY2F0aW9uTmFtZVNldCA9IGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcmlnaW5TZWxlY3QoZXZlbnQ6IEFkZHJlc3NEYXRhKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudD8uYWRkcmVzcz8uYWRkcmVzcykgdGhpcy5vcmlnaW5TdGF0ZSA9IGV2ZW50LmFkZHJlc3MuYWRkcmVzcztcblxuICAgICAgICBpZiAoZXZlbnQ/LmxvbmdMYXQgJiYgZXZlbnQ/LmxvbmdMYXQ/LmxhdGl0dWRlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbkxvbmdWYWwgPSBldmVudD8ubG9uZ0xhdD8ubG9uZ2l0dWRlIHx8IDA7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbkxhdFZhbCA9IGV2ZW50Py5sb25nTGF0Py5sYXRpdHVkZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVMb2NhdGlvbkNoYW5nZShldmVudDogQWRkcmVzc0RhdGEpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb25nVmFsID0gZXZlbnQ/LmxvbmdMYXQ/LmxvbmdpdHVkZSA/PyAwO1xuICAgICAgICB0aGlzLmxhdFZhbCA9IGV2ZW50Py5sb25nTGF0Py5sYXRpdHVkZSA/PyAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVEZXN0aW5hdGlvblNlbGVjdChldmVudDogQWRkcmVzc0RhdGEpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Py5hZGRyZXNzPy5hZGRyZXNzKVxuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvblN0YXRlID0gZXZlbnQuYWRkcmVzcy5hZGRyZXNzO1xuXG4gICAgICAgIGlmIChldmVudD8ubG9uZ0xhdCAmJiBldmVudD8ubG9uZ0xhdD8ubGF0aXR1ZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdExvbmdWYWwgPSBldmVudD8ubG9uZ0xhdD8ubG9uZ2l0dWRlIHx8IDA7XG4gICAgICAgICAgICB0aGlzLmRlc3RMYXRWYWwgPSBldmVudD8ubG9uZ0xhdD8ubGF0aXR1ZGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBDYUZpbHRlcnNTdmdSb3V0ZXMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gQ2FGaWx0ZXJzU3ZnUm91dGVzW3Byb3BlcnR5TmFtZV0gYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVBZGRyZXNzRGF0YShldmVudDogU2VudEFkZHJlc3NEYXRhKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VudEFkZHJlc3NEYXRhLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiYXJlYUZpbHRlckhvbGRlclwiIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCI+XG4gICAgPGFwcC1jYS10YWItc3dpdGNoXG4gICAgICAgIFt0YWJzXT1cImFyZWFCb3hUYWJcIlxuICAgICAgICAoc3dpdGNoQ2xpY2tlZCk9XCJvblRhYkNoYW5nZSgkZXZlbnQsICdSRVFVRVNUUy1CT1gnKVwiXG4gICAgICAgIFt0eXBlXT1cIid0eXBlMi1tb2RhbC1wb3B1cCdcIlxuICAgID5cbiAgICA8L2FwcC1jYS10YWItc3dpdGNoPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXJlYS1hbGwtaG9sZGVyIGQtZmxleCBmbGV4LXdyYXAgZmxleC1yb3dcIj5cbiAgICBAaWYgKGlzQXJlYUZpbHRlciAmJiBhcmVhRmlsdGVyU2VsZWN0ZWQgIT09ICdMb2NhdGlvbicpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tcGFydC1ob2xkZXJcIiBbQGFyZWFSaWdodFNpZGVBbmltYXRpb25dPVwiJ2luJ1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJlYS1mb3Jtcy1ob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiYXJlYUZvcm1cIlxuICAgICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJlYS1zaW5nbGUtZm9ybS1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmlnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImdldE9yaWdpbkNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyVHlwZV09XCInc2hvcnRBZGRyZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzTGlzdF09XCJhZGRyZXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRBZGRyZXNzKT1cImhhbmRsZU9yaWdpblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWFkZHJlc3MtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtc2luZ2xlLWZvcm0taG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzdGluYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImdldERlc3RpbmF0aW9uQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJUeXBlXT1cIidzaG9ydEFkZHJlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNMaXN0XT1cImFkZHJlc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZEFkZHJlc3MpPVwiaGFuZGxlRGVzdGluYXRpb25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1hZGRyZXNzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1wYXJ0LWhvbGRlclwiIFtAYXJlYUxlZnRTaWRlQW5pbWF0aW9uXT1cIidpbidcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1taWRkbGUtaG9sZGVyIGxvY2F0aW9uLW1pZGRsZS1wYWRkaW5nXCJcbiAgICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJsb2NhdGlvbkZvcm1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImdldEFkZHJlc3NDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyVHlwZV09XCInc2hvcnRBZGRyZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthZGRyZXNMaXN0XT1cImFkZHJlc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbnRBZGRyZXNzVmFsdWUpPVwiaGFuZGxlSW5wdXRTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWNlaXZlZEFkZHJlc3NMaXN0XT1cInJlY2VpdmVkQWRkcmVzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICBbcmVjZWl2ZWRBZGRyZXNzRGF0YV09XCJyZWNlaXZlZEFkZHJlc3NEYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbnRBZGRyZXNzRGF0YSk9XCJoYW5kbGVBZGRyZXNzRGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQWRkcmVzcyk9XCJoYW5kbGVMb2NhdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtYWRkcmVzcy1kcm9wZG93bj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLW1pZGRsZS1ob2xkZXIgbG9jYXRpb24tc2xpZGVyLW1pZGRsZS1wYWRkaW5nXCJcbiAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyYW5nZS1uZXctdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLXRleHRcIj5SYW5nZTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWZsZXgtaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAob25Vc2VyVmFsdWVDaGFuZ2UpPVwic2V0UmFuZ2VWYWx1ZSgkZXZlbnQpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGFwcC1jYS1uZ3gtc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgIFtzbGlkZXJPcHRpb25zXT1cImxvY2F0aW9uU2xpZGVyRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGFydGVkVmFsdWVdPVwibG9jYXRpb25SYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCInY3VzdG9tLXNsaWRlci1maWx0ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uVXNlclZhbHVlQ2hhbmdlKT1cImNoYW5nZVJhbmdlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYXBwLWNhLW5neC1zbGlkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyIGJvdHRvbS1ib3JkZXItbWFyZ2luXCI+PC9kaXY+XG4iXX0=
@@ -8,7 +8,7 @@ export class LocationFilterConstants {
8
8
  {
9
9
  id: 2,
10
10
  name: 'Route',
11
- },
11
+ }
12
12
  ]; }
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tZmlsdGVyLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1sb2NhdGlvbi1maWx0ZXIvdXRpbHMvY29uc3RhbnRzL2xvY2F0aW9uLWZpbHRlci5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHVCQUF1QjthQUMzQixpQkFBWSxHQUFHO1FBQ3BCO1lBQ0UsRUFBRSxFQUFFLENBQUM7WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsQ0FBQztZQUNMLElBQUksRUFBRSxPQUFPO1NBQ2Q7S0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIExvY2F0aW9uRmlsdGVyQ29uc3RhbnRzIHtcbiAgc3RhdGljIEFSRUFfQk9YX1RBQiA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIG5hbWU6ICdMb2NhdGlvbicsXG4gICAgICBjaGVja2VkOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDIsXG4gICAgICBuYW1lOiAnUm91dGUnLFxuICAgIH0sXG4gIF07XG59XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tZmlsdGVyLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1sb2NhdGlvbi1maWx0ZXIvdXRpbHMvY29uc3RhbnRzL2xvY2F0aW9uLWZpbHRlci5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHVCQUF1QjthQUMzQixpQkFBWSxHQUFHO1FBQ3BCO1lBQ0UsRUFBRSxFQUFFLENBQUM7WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsQ0FBQztZQUNMLElBQUksRUFBRSxPQUFPO1NBQ2Q7S0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIExvY2F0aW9uRmlsdGVyQ29uc3RhbnRzIHtcbiAgc3RhdGljIEFSRUFfQk9YX1RBQiA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIG5hbWU6ICdMb2NhdGlvbicsXG4gICAgICBjaGVja2VkOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDIsXG4gICAgICBuYW1lOiAnUm91dGUnLFxuICAgIH1cbiAgXTtcbn0iXX0=
@@ -234,4 +234,4 @@ export class CaInputBaseHelpersComponent {
234
234
  return array.includes(name);
235
235
  }
236
236
  }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYmFzZS1oZWxwcmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWJhc2UtaGVscHJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sVUFBVSxDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRS9GLE1BQU0sT0FBZ0IsMkJBQTJCO0lBQWpEO1FBU0ksbUJBQW1CO1FBQ1osZ0NBQTJCLEdBQVcsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQW1VdkMsYUFBYTtJQUNqQixDQUFDO0lBaFVHLHFDQUFxQztJQUM5QiwwQkFBMEIsQ0FBQyxLQUFVO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBaUMsQ0FBQztRQUVsRSxzQkFBc0I7UUFDdEIsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLGNBQXdCLENBQUM7UUFFN0QseURBQXlEO1FBQ3pELElBQ0ksY0FBYyxHQUFHLENBQUM7WUFDbEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQ2hELENBQUM7WUFDQyxPQUFPO1FBQ1gsQ0FBQztRQUVELG9HQUFvRztRQUNwRyxJQUNJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxH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LFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhO0lBRWIsVUFBVTtJQUNILGNBQWM7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUMzQyxvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUNELGFBQWE7SUFFYix5QkFBeUI7SUFDbEIsY0FBYyxDQUFDLEtBQWUsRUFBRSxJQUFZO1FBQy9DLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBa0IsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0Q29tbWFuZHNBY3Rpb24sIElucHV0U3RyaW5nRW51bSB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IElDYUlucHV0IH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9oZWxwZXJzL21ldGhvZHMtY2FsY3VsYXRpb25zLmhlbHBlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYUlucHV0QmFzZUhlbHBlcnNDb21wb25lbnQge1xuICAgIGFic3RyYWN0IGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgYWJzdHJhY3QgbGFzdEN1cnNvclNwYWNlUG9zaXRpb246IG51bWJlcjtcbiAgICBhYnN0cmFjdCBzdXBlckNvbnRyb2w6IE5nQ29udHJvbDtcbiAgICBhYnN0cmFjdCBfaW5wdXRDb25maWc6IElDYUlucHV0O1xuXG4gICAgYWJzdHJhY3QgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgIHB1YmxpYyBudW1iZXJPZkNvbnNlY3V0aXZlbHlQb2ludHM6IG51bWJlciA9IDA7XG4gICAgcHVibGljIG51bWJlck9mUG9pbnRzOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBvbmVTcGFjZU9ubHlDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGlucHV0Q29tbWFuZHNUaW1lb3V0ITogTm9kZUpTLlRpbWVvdXQgfCBudW1iZXI7XG5cbiAgICAvLyAjcmVnaW9uIERpc2FibGVDb25zZWN1dGl2ZWx5U3BhY2VzXG4gICAgcHVibGljIGRpc2FibGVDb25zZWN1dGl2ZWx5U3BhY2VzKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gR2V0IGN1cnNvciBwb3NpdGlvblxuICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXI7XG5cbiAgICAgICAgLy8gSWYgdGhlIGN1cnNvciBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCwgYWxsb3cgc3BhY2VzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uID4gMCAmJlxuICAgICAgICAgICAgIS9cXHMvLnRlc3QoaW5wdXRFbGVtZW50LnZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV0pICYmXG4gICAgICAgICAgICAhL1xccy8udGVzdChpbnB1dEVsZW1lbnQudmFsdWVbY3Vyc29yUG9zaXRpb25dKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIHR5cGluZyBhIHNwYWNlIGFuZCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGlzIGEgc3BhY2UsIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQua2V5ID09PSAnICcgJiZcbiAgICAgICAgICAgIC9cXHMvLnRlc3QoaW5wdXRFbGVtZW50LnZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV0pXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNhdmUgdGhlIGN1cnNvciBwb3NpdGlvbiBmb3IgdGhlIG5leHQgaW5wdXQgZXZlbnRcbiAgICAgICAgdGhpcy5sYXN0Q3Vyc29yU3BhY2VQb3NpdGlvbiA9IGN1cnNvclBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gRGlzYWJsZUNvbnNlY3V0aXZlbHlQb2ludHNcblxuICAgIHB1YmxpYyBkaXNhYmxlQ29uc2VjdXRpdmVseVBvaW50cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgfCBib29sZWFuIHtcbiAgICAgICAgaWYgKC9eWy5dKiQvLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpKSB7XG4gICAgICAgICAgICB0aGlzLm51bWJlck9mQ29uc2VjdXRpdmVseVBvaW50cysrO1xuICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyT2ZDb25zZWN1dGl2ZWx5UG9pbnRzID4gMSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5udW1iZXJPZkNvbnNlY3V0aXZlbHlQb2ludHMgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBEaXNhYmxlTXVsdGlwbGVQb2ludHNcblxuICAgIHB1YmxpYyBkaXNhYmxlTXVsdGlwbGVQb2ludHMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHwgYm9vbGVhbiB7XG4gICAgICAgIGlmICgvXlsuXSokLy50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCkuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm51bWJlck9mUG9pbnRzKys7XG4gICAgICAgICAgICBpZiAodGhpcy5udW1iZXJPZlBvaW50cyA+IDEpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZQb2ludHMgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIEVuYWJsZU9uZVNwYWNlT25seVxuICAgIHB1YmxpYyBlbmFibGVPbmVTcGFjZU9ubHkoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAvXlxccyokLy50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpKSB8fFxuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWU/LmluY2x1ZGVzKCcgJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm9uZVNwYWNlT25seUNvdW50ZXIrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub25lU3BhY2VPbmx5Q291bnRlciA+IDEgJiZcbiAgICAgICAgICAgIC9eXFxzKiQvLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gSGFuZGxlUG1JbmNyZW1lbnREZWNyZW1lbnRcbiAgICBwdWJsaWMgaGFuZGxlUG1JbmNyZW1lbnREZWNyZW1lbnQoYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnRUaG91c2FuU2VwSW5OdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uREVDUkVNRU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50UG1WYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uSU5DUkVNRU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50UG1WYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uUkVTRVQ6XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFBtVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldElucHV0Q3Vyc29yQXRUaGVFbmQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIERlY3JlbWVudFBtVmFsdWVcbiAgICBwcml2YXRlIGRlY3JlbWVudFBtVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgPj0gMTAwMDAgJiYgdmFsdWUgPCAyMDAwMCkge1xuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIDEwMDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDIwMDAxICYmIHZhbHVlIDwgNTAwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSAzMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSA1MDAwMSAmJiB2YWx1ZSA8IDEwMDAwMCkge1xuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIDUwMDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDEwMDAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlIC0gMTAwMDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDEwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSA1MDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gUmVzZXRQbVZhbHVlXG4gICAgcHJpdmF0ZSByZXNldFBtVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZz8uZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0Q29uZmlnPy5kZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIFJlc2V0UG1WYWx1ZVxuICAgIHByaXZhdGUgaW5jcmVtZW50UG1WYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA+IDEwMDAwICYmIHZhbHVlIDwgMjAwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKyAxMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAyMDAwMSAmJiB2YWx1ZSA8IDUwMDAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlICsgMzAwMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gNTAwMDEgJiYgdmFsdWUgPCAxMDAwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKyA1MDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxMDAwMCkge1xuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSArIDEwMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKyA1MDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gU2V0SW5wdXRDdXJzb3JBdFRoZUVuZFxuICAgIHB1YmxpYyBzZXRJbnB1dEN1cnNvckF0VGhlRW5kKGlucHV0OiBhbnksIHRpbWU6IG51bWJlciA9IDEyMCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBpbnB1dC5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGlmIChpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgfSwgdGltZSk7XG4gICAgfVxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gSGFuZGxlSW5jcmVtZW50RGVjcmVtZW50XG4gICAgcHVibGljIGhhbmRsZUluY3JlbWVudERlY3JlbWVudChhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5pbnB1dENvbW1hbmRzVGltZW91dCk7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uREVDUkVNRU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMCkgLSAxXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5JTkNSRU1FTlQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSArIDFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uXG5cbiAgICBwdWJsaWMgaGFuZGxlTW9udGhzKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmlucHV0Q29tbWFuZHNUaW1lb3V0KTtcblxuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBJbnB1dENvbW1hbmRzQWN0aW9uLk1JTlVTOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50TW9udGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5QTFVTOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50TW9udGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkgPCAxIHx8XG4gICAgICAgICAgICBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkgPiAxMlxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldElucHV0Q3Vyc29yQXRUaGVFbmQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBEZWNyZW1lbnRNb250aFxuICAgIHByaXZhdGUgZGVjcmVtZW50TW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKSA9PT0gMSB8fFxuICAgICAgICAgICAgIXRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5ibHVyT25Db21tYW5kcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgICAgID8gcGFyc2VJbnQodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWUpXG4gICAgICAgICAgICAgICAgOiAwKSAtIDFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIEluY3JlbWVudE1vbnRoXG4gICAgcHJpdmF0ZSBpbmNyZW1lbnRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKSA9PT0gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuYmx1ck9uQ29tbWFuZHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWVcbiAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICAgICAgICAgIDogMCkgKyAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvblxuICAgIHB1YmxpYyBibHVyT25Db21tYW5kcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dENvbW1hbmRzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gdGhpcy5zZXRJc1Zpc2libGVDb21tYW5kcyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENvbmZpZy5ibGFja0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBDaGVja05hbWVBcnJheVxuICAgIHB1YmxpYyBjaGVja05hbWVBcnJheShhcnJheTogc3RyaW5nW10sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYXJyYXkuaW5jbHVkZXMoPElucHV0U3RyaW5nRW51bT5uYW1lKTtcbiAgICB9XG4gICAgLy8gI2VuZHJlZ2lvblxufVxuIl19
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYmFzZS1oZWxwcmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWJhc2UtaGVscHJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sVUFBVSxDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRS9GLE1BQU0sT0FBZ0IsMkJBQTJCO0lBQWpEO1FBU0ksbUJBQW1CO1FBQ1osZ0NBQTJCLEdBQVcsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQW1VdkMsYUFBYTtJQUNqQixDQUFDO0lBaFVHLHFDQUFxQztJQUM5QiwwQkFBMEIsQ0FBQyxLQUFVO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBaUMsQ0FBQztRQUVsRSxzQkFBc0I7UUFDdEIsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLGNBQXdCLENBQUM7UUFFN0QseURBQXlEO1FBQ3pELElBQ0ksY0FBYyxHQUFHLENBQUM7WUFDbEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQ2hELENBQUM7WUFDQyxPQUFPO1FBQ1gsQ0FBQztRQUVELG9HQUFvRztRQUNwRyxJQUNJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxH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LFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhO0lBRWIsVUFBVTtJQUNILGNBQWM7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUMzQyxvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUNELGFBQWE7SUFFYix5QkFBeUI7SUFDbEIsY0FBYyxDQUFDLEtBQWUsRUFBRSxJQUFZO1FBQy9DLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBa0IsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0Q29tbWFuZHNBY3Rpb24sIElucHV0U3RyaW5nRW51bSB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IElDYUlucHV0IH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9oZWxwZXJzL21ldGhvZHMtY2FsY3VsYXRpb25zLmhlbHBlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYUlucHV0QmFzZUhlbHBlcnNDb21wb25lbnQge1xuICAgIGFic3RyYWN0IGlucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgYWJzdHJhY3QgbGFzdEN1cnNvclNwYWNlUG9zaXRpb246IG51bWJlcjtcbiAgICBhYnN0cmFjdCBzdXBlckNvbnRyb2w6IE5nQ29udHJvbDtcbiAgICBhYnN0cmFjdCBfaW5wdXRDb25maWc6IElDYUlucHV0O1xuXG4gICAgYWJzdHJhY3QgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgIHB1YmxpYyBudW1iZXJPZkNvbnNlY3V0aXZlbHlQb2ludHM6IG51bWJlciA9IDA7XG4gICAgcHVibGljIG51bWJlck9mUG9pbnRzOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBvbmVTcGFjZU9ubHlDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGlucHV0Q29tbWFuZHNUaW1lb3V0ITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXI7XG5cbiAgICAvLyAjcmVnaW9uIERpc2FibGVDb25zZWN1dGl2ZWx5U3BhY2VzXG4gICAgcHVibGljIGRpc2FibGVDb25zZWN1dGl2ZWx5U3BhY2VzKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gR2V0IGN1cnNvciBwb3NpdGlvblxuICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXI7XG5cbiAgICAgICAgLy8gSWYgdGhlIGN1cnNvciBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCwgYWxsb3cgc3BhY2VzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uID4gMCAmJlxuICAgICAgICAgICAgIS9cXHMvLnRlc3QoaW5wdXRFbGVtZW50LnZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV0pICYmXG4gICAgICAgICAgICAhL1xccy8udGVzdChpbnB1dEVsZW1lbnQudmFsdWVbY3Vyc29yUG9zaXRpb25dKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIHR5cGluZyBhIHNwYWNlIGFuZCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGlzIGEgc3BhY2UsIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQua2V5ID09PSAnICcgJiZcbiAgICAgICAgICAgIC9cXHMvLnRlc3QoaW5wdXRFbGVtZW50LnZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV0pXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNhdmUgdGhlIGN1cnNvciBwb3NpdGlvbiBmb3IgdGhlIG5leHQgaW5wdXQgZXZlbnRcbiAgICAgICAgdGhpcy5sYXN0Q3Vyc29yU3BhY2VQb3NpdGlvbiA9IGN1cnNvclBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gRGlzYWJsZUNvbnNlY3V0aXZlbHlQb2ludHNcblxuICAgIHB1YmxpYyBkaXNhYmxlQ29uc2VjdXRpdmVseVBvaW50cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgfCBib29sZWFuIHtcbiAgICAgICAgaWYgKC9eWy5dKiQvLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpKSB7XG4gICAgICAgICAgICB0aGlzLm51bWJlck9mQ29uc2VjdXRpdmVseVBvaW50cysrO1xuICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyT2ZDb25zZWN1dGl2ZWx5UG9pbnRzID4gMSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5udW1iZXJPZkNvbnNlY3V0aXZlbHlQb2ludHMgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBEaXNhYmxlTXVsdGlwbGVQb2ludHNcblxuICAgIHB1YmxpYyBkaXNhYmxlTXVsdGlwbGVQb2ludHMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHwgYm9vbGVhbiB7XG4gICAgICAgIGlmICgvXlsuXSokLy50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCkuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm51bWJlck9mUG9pbnRzKys7XG4gICAgICAgICAgICBpZiAodGhpcy5udW1iZXJPZlBvaW50cyA+IDEpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZQb2ludHMgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIEVuYWJsZU9uZVNwYWNlT25seVxuICAgIHB1YmxpYyBlbmFibGVPbmVTcGFjZU9ubHkoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAvXlxccyokLy50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpKSB8fFxuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWU/LmluY2x1ZGVzKCcgJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm9uZVNwYWNlT25seUNvdW50ZXIrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub25lU3BhY2VPbmx5Q291bnRlciA+IDEgJiZcbiAgICAgICAgICAgIC9eXFxzKiQvLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gSGFuZGxlUG1JbmNyZW1lbnREZWNyZW1lbnRcbiAgICBwdWJsaWMgaGFuZGxlUG1JbmNyZW1lbnREZWNyZW1lbnQoYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnRUaG91c2FuU2VwSW5OdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uREVDUkVNRU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50UG1WYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uSU5DUkVNRU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50UG1WYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uUkVTRVQ6XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFBtVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldElucHV0Q3Vyc29yQXRUaGVFbmQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIERlY3JlbWVudFBtVmFsdWVcbiAgICBwcml2YXRlIGRlY3JlbWVudFBtVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgPj0gMTAwMDAgJiYgdmFsdWUgPCAyMDAwMCkge1xuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIDEwMDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDIwMDAxICYmIHZhbHVlIDwgNTAwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSAzMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSA1MDAwMSAmJiB2YWx1ZSA8IDEwMDAwMCkge1xuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIDUwMDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDEwMDAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlIC0gMTAwMDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDEwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSA1MDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gUmVzZXRQbVZhbHVlXG4gICAgcHJpdmF0ZSByZXNldFBtVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZz8uZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0Q29uZmlnPy5kZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIFJlc2V0UG1WYWx1ZVxuICAgIHByaXZhdGUgaW5jcmVtZW50UG1WYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSA+IDEwMDAwICYmIHZhbHVlIDwgMjAwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKyAxMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAyMDAwMSAmJiB2YWx1ZSA8IDUwMDAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlICsgMzAwMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gNTAwMDEgJiYgdmFsdWUgPCAxMDAwMDApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKyA1MDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxMDAwMCkge1xuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSArIDEwMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKyA1MDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gU2V0SW5wdXRDdXJzb3JBdFRoZUVuZFxuICAgIHB1YmxpYyBzZXRJbnB1dEN1cnNvckF0VGhlRW5kKGlucHV0OiBhbnksIHRpbWU6IG51bWJlciA9IDEyMCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25FbmQgPSBpbnB1dC5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGlmIChpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgfSwgdGltZSk7XG4gICAgfVxuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gSGFuZGxlSW5jcmVtZW50RGVjcmVtZW50XG4gICAgcHVibGljIGhhbmRsZUluY3JlbWVudERlY3JlbWVudChhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5pbnB1dENvbW1hbmRzVGltZW91dCk7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uREVDUkVNRU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMCkgLSAxXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5JTkNSRU1FTlQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSArIDFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uXG5cbiAgICBwdWJsaWMgaGFuZGxlTW9udGhzKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmlucHV0Q29tbWFuZHNUaW1lb3V0KTtcblxuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBJbnB1dENvbW1hbmRzQWN0aW9uLk1JTlVTOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVjcmVtZW50TW9udGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5QTFVTOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVtZW50TW9udGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkgPCAxIHx8XG4gICAgICAgICAgICBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkgPiAxMlxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldElucHV0Q3Vyc29yQXRUaGVFbmQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBEZWNyZW1lbnRNb250aFxuICAgIHByaXZhdGUgZGVjcmVtZW50TW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKSA9PT0gMSB8fFxuICAgICAgICAgICAgIXRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5ibHVyT25Db21tYW5kcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgICAgID8gcGFyc2VJbnQodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWUpXG4gICAgICAgICAgICAgICAgOiAwKSAtIDFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIEluY3JlbWVudE1vbnRoXG4gICAgcHJpdmF0ZSBpbmNyZW1lbnRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKSA9PT0gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuYmx1ck9uQ29tbWFuZHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWVcbiAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICAgICAgICAgIDogMCkgKyAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvblxuICAgIHB1YmxpYyBibHVyT25Db21tYW5kcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dENvbW1hbmRzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gdGhpcy5zZXRJc1Zpc2libGVDb21tYW5kcyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENvbmZpZy5ibGFja0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBDaGVja05hbWVBcnJheVxuICAgIHB1YmxpYyBjaGVja05hbWVBcnJheShhcnJheTogc3RyaW5nW10sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYXJyYXkuaW5jbHVkZXMoPElucHV0U3RyaW5nRW51bT5uYW1lKTtcbiAgICB9XG4gICAgLy8gI2VuZHJlZ2lvblxufVxuIl19