| Line | Source Code | Coverage |
|---|
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | class QSliderPrivate : public QAbstractSliderPrivate | - |
| 8 | { | - |
| 9 | inline QSlider* q_func() { return static_cast<QSlider *>(q_ptr); } inline const QSlider* q_func() const { return static_cast<const QSlider *>(q_ptr); } friend class QSlider; | - |
| 10 | public: | - |
| 11 | QStyle::SubControl pressedControl; | - |
| 12 | int tickInterval; | - |
| 13 | QSlider::TickPosition tickPosition; | - |
| 14 | int clickOffset; | - |
| 15 | void init(); | - |
| 16 | void resetLayoutItemMargins(); | - |
| 17 | int pixelPosToRangeValue(int pos) const; | - |
| 18 | inline int pick(const QPoint &pt) const; | - |
| 19 | | - |
| 20 | QStyle::SubControl newHoverControl(const QPoint &pos); | - |
| 21 | bool updateHoverControl(const QPoint &pos); | - |
| 22 | QStyle::SubControl hoverControl; | - |
| 23 | QRect hoverRect; | - |
| 24 | }; | - |
| 25 | | - |
| 26 | void QSliderPrivate::init() | - |
| 27 | { | - |
| 28 | QSlider * const q = q_func(); | - |
| 29 | pressedControl = QStyle::SC_None; | - |
| 30 | tickInterval = 0; | - |
| 31 | tickPosition = QSlider::NoTicks; | - |
| 32 | hoverControl = QStyle::SC_None; | - |
| 33 | q->setFocusPolicy(Qt::FocusPolicy(q->style()->styleHint(QStyle::SH_Button_FocusPolicy))); | - |
| 34 | QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed, QSizePolicy::Slider); | - |
| 35 | if (orientation == Qt::Vertical) partially evaluated: orientation == Qt::Vertical| yes Evaluation Count:12 | no Evaluation Count:0 |
| 0-12 |
| 36 | sp.transpose(); executed: sp.transpose();Execution Count:12 | 12 |
| 37 | q->setSizePolicy(sp); | - |
| 38 | q->setAttribute(Qt::WA_WState_OwnSizePolicy, false); | - |
| 39 | resetLayoutItemMargins(); | - |
| 40 | } executed: }Execution Count:12 | 12 |
| 41 | | - |
| 42 | void QSliderPrivate::resetLayoutItemMargins() | - |
| 43 | { | - |
| 44 | QSlider * const q = q_func(); | - |
| 45 | QStyleOptionSlider opt; | - |
| 46 | q->initStyleOption(&opt); | - |
| 47 | setLayoutItemMargins(QStyle::SE_SliderLayoutItem, &opt); | - |
| 48 | } executed: }Execution Count:16 | 16 |
| 49 | | - |
| 50 | int QSliderPrivate::pixelPosToRangeValue(int pos) const | - |
| 51 | { | - |
| 52 | const QSlider * const q = q_func(); | - |
| 53 | QStyleOptionSlider opt; | - |
| 54 | q->initStyleOption(&opt); | - |
| 55 | QRect gr = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, q); | - |
| 56 | QRect sr = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, q); | - |
| 57 | int sliderMin, sliderMax, sliderLength; | - |
| 58 | | - |
| 59 | if (orientation == Qt::Horizontal) { partially evaluated: orientation == Qt::Horizontal| no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
| 60 | sliderLength = sr.width(); | - |
| 61 | sliderMin = gr.x(); | - |
| 62 | sliderMax = gr.right() - sliderLength + 1; | - |
| 63 | } else { | 0 |
| 64 | sliderLength = sr.height(); | - |
| 65 | sliderMin = gr.y(); | - |
| 66 | sliderMax = gr.bottom() - sliderLength + 1; | - |
| 67 | } executed: }Execution Count:1 | 1 |
| 68 | return QStyle::sliderValueFromPosition(minimum, maximum, pos - sliderMin, | 1 |
| 69 | sliderMax - sliderMin, opt.upsideDown); executed: return QStyle::sliderValueFromPosition(minimum, maximum, pos - sliderMin, sliderMax - sliderMin, opt.upsideDown);Execution Count:1 | 1 |
| 70 | } | - |
| 71 | | - |
| 72 | inline int QSliderPrivate::pick(const QPoint &pt) const | - |
| 73 | { | - |
| 74 | return orientation == Qt::Horizontal ? pt.x() : pt.y(); executed: return orientation == Qt::Horizontal ? pt.x() : pt.y();Execution Count:2 | 2 |
| 75 | } | - |
| 76 | void QSlider::initStyleOption(QStyleOptionSlider *option) const | - |
| 77 | { | - |
| 78 | if (!option) partially evaluated: !option| no Evaluation Count:0 | yes Evaluation Count:31 |
| 0-31 |
| 79 | return; | 0 |
| 80 | | - |
| 81 | const QSliderPrivate * const d = d_func(); | - |
| 82 | option->initFrom(this); | - |
| 83 | option->subControls = QStyle::SC_None; | - |
| 84 | option->activeSubControls = QStyle::SC_None; | - |
| 85 | option->orientation = d->orientation; | - |
| 86 | option->maximum = d->maximum; | - |
| 87 | option->minimum = d->minimum; | - |
| 88 | option->tickPosition = (QSlider::TickPosition)d->tickPosition; | - |
| 89 | option->tickInterval = d->tickInterval; | - |
| 90 | option->upsideDown = (d->orientation == Qt::Horizontal) ? partially evaluated: (d->orientation == Qt::Horizontal)| no Evaluation Count:0 | yes Evaluation Count:31 |
| 0-31 |
| 91 | (d->invertedAppearance != (option->direction == Qt::RightToLeft)) | - |
| 92 | : (!d->invertedAppearance); | - |
| 93 | option->direction = Qt::LeftToRight; | - |
| 94 | option->sliderPosition = d->position; | - |
| 95 | option->sliderValue = d->value; | - |
| 96 | option->singleStep = d->singleStep; | - |
| 97 | option->pageStep = d->pageStep; | - |
| 98 | if (d->orientation == Qt::Horizontal) partially evaluated: d->orientation == Qt::Horizontal| no Evaluation Count:0 | yes Evaluation Count:31 |
| 0-31 |
| 99 | option->state |= QStyle::State_Horizontal; never executed: option->state |= QStyle::State_Horizontal; | 0 |
| 100 | } executed: }Execution Count:31 | 31 |
| 101 | | - |
| 102 | bool QSliderPrivate::updateHoverControl(const QPoint &pos) | - |
| 103 | { | - |
| 104 | QSlider * const q = q_func(); | - |
| 105 | QRect lastHoverRect = hoverRect; | - |
| 106 | QStyle::SubControl lastHoverControl = hoverControl; | - |
| 107 | bool doesHover = q->testAttribute(Qt::WA_Hover); | - |
| 108 | if (lastHoverControl != newHoverControl(pos) && doesHover) { never evaluated: lastHoverControl != newHoverControl(pos) never evaluated: doesHover | 0 |
| 109 | q->update(lastHoverRect); | - |
| 110 | q->update(hoverRect); | - |
| 111 | return true; never executed: return true; | 0 |
| 112 | } | - |
| 113 | return !doesHover; never executed: return !doesHover; | 0 |
| 114 | } | - |
| 115 | | - |
| 116 | QStyle::SubControl QSliderPrivate::newHoverControl(const QPoint &pos) | - |
| 117 | { | - |
| 118 | QSlider * const q = q_func(); | - |
| 119 | QStyleOptionSlider opt; | - |
| 120 | q->initStyleOption(&opt); | - |
| 121 | opt.subControls = QStyle::SC_All; | - |
| 122 | QRect handleRect = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, q); | - |
| 123 | QRect grooveRect = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, q); | - |
| 124 | QRect tickmarksRect = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderTickmarks, q); | - |
| 125 | | - |
| 126 | if (handleRect.contains(pos)) { never evaluated: handleRect.contains(pos) | 0 |
| 127 | hoverRect = handleRect; | - |
| 128 | hoverControl = QStyle::SC_SliderHandle; | - |
| 129 | } else if (grooveRect.contains(pos)) { never evaluated: grooveRect.contains(pos) | 0 |
| 130 | hoverRect = grooveRect; | - |
| 131 | hoverControl = QStyle::SC_SliderGroove; | - |
| 132 | } else if (tickmarksRect.contains(pos)) { never evaluated: tickmarksRect.contains(pos) | 0 |
| 133 | hoverRect = tickmarksRect; | - |
| 134 | hoverControl = QStyle::SC_SliderTickmarks; | - |
| 135 | } else { | 0 |
| 136 | hoverRect = QRect(); | - |
| 137 | hoverControl = QStyle::SC_None; | - |
| 138 | } | 0 |
| 139 | | - |
| 140 | return hoverControl; never executed: return hoverControl; | 0 |
| 141 | } | - |
| 142 | QSlider::QSlider(QWidget *parent) | - |
| 143 | : QAbstractSlider(*new QSliderPrivate, parent) | - |
| 144 | { | - |
| 145 | d_func()->orientation = Qt::Vertical; | - |
| 146 | d_func()->init(); | - |
| 147 | } executed: }Execution Count:12 | 12 |
| 148 | | - |
| 149 | | - |
| 150 | | - |
| 151 | | - |
| 152 | | - |
| 153 | | - |
| 154 | | - |
| 155 | QSlider::QSlider(Qt::Orientation orientation, QWidget *parent) | - |
| 156 | : QAbstractSlider(*new QSliderPrivate, parent) | - |
| 157 | { | - |
| 158 | d_func()->orientation = orientation; | - |
| 159 | d_func()->init(); | - |
| 160 | } | 0 |
| 161 | | - |
| 162 | | - |
| 163 | | - |
| 164 | | - |
| 165 | | - |
| 166 | QSlider::~QSlider() | - |
| 167 | { | - |
| 168 | } | - |
| 169 | | - |
| 170 | | - |
| 171 | | - |
| 172 | | - |
| 173 | void QSlider::paintEvent(QPaintEvent *) | - |
| 174 | { | - |
| 175 | QSliderPrivate * const d = d_func(); | - |
| 176 | QPainter p(this); | - |
| 177 | QStyleOptionSlider opt; | - |
| 178 | initStyleOption(&opt); | - |
| 179 | | - |
| 180 | opt.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle; | - |
| 181 | if (d->tickPosition != NoTicks) partially evaluated: d->tickPosition != NoTicks| no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
| 182 | opt.subControls |= QStyle::SC_SliderTickmarks; never executed: opt.subControls |= QStyle::SC_SliderTickmarks; | 0 |
| 183 | if (d->pressedControl) { partially evaluated: d->pressedControl| no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
| 184 | opt.activeSubControls = d->pressedControl; | - |
| 185 | opt.state |= QStyle::State_Sunken; | - |
| 186 | } else { | 0 |
| 187 | opt.activeSubControls = d->hoverControl; | - |
| 188 | } executed: }Execution Count:1 | 1 |
| 189 | | - |
| 190 | style()->drawComplexControl(QStyle::CC_Slider, &opt, &p, this); | - |
| 191 | } executed: }Execution Count:1 | 1 |
| 192 | | - |
| 193 | | - |
| 194 | | - |
| 195 | | - |
| 196 | | - |
| 197 | bool QSlider::event(QEvent *event) | - |
| 198 | { | - |
| 199 | QSliderPrivate * const d = d_func(); | - |
| 200 | | - |
| 201 | switch(event->type()) { | - |
| 202 | case QEvent::HoverEnter: | - |
| 203 | case QEvent::HoverLeave: | - |
| 204 | case QEvent::HoverMove: | - |
| 205 | if (const QHoverEvent *he = static_cast<const QHoverEvent *>(event)) never evaluated: const QHoverEvent *he = static_cast<const QHoverEvent *>(event) | 0 |
| 206 | d->updateHoverControl(he->pos()); never executed: d->updateHoverControl(he->pos()); | 0 |
| 207 | break; | 0 |
| 208 | case QEvent::StyleChange: | - |
| 209 | case QEvent::MacSizeChange: | - |
| 210 | d->resetLayoutItemMargins(); | - |
| 211 | break; | 0 |
| 212 | default: | - |
| 213 | break; executed: break;Execution Count:33 | 33 |
| 214 | } | - |
| 215 | return QAbstractSlider::event(event); executed: return QAbstractSlider::event(event);Execution Count:33 | 33 |
| 216 | } | - |
| 217 | | - |
| 218 | | - |
| 219 | | - |
| 220 | | - |
| 221 | void QSlider::mousePressEvent(QMouseEvent *ev) | - |
| 222 | { | - |
| 223 | QSliderPrivate * const d = d_func(); | - |
| 224 | if (d->maximum == d->minimum || (ev->buttons() ^ ev->button())) { partially evaluated: d->maximum == d->minimum| no Evaluation Count:0 | yes Evaluation Count:2 |
partially evaluated: (ev->buttons() ^ ev->button())| no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
| 225 | ev->ignore(); | - |
| 226 | return; | 0 |
| 227 | } | - |
| 228 | | - |
| 229 | | - |
| 230 | | - |
| 231 | | - |
| 232 | ev->accept(); | - |
| 233 | if ((ev->button() & style()->styleHint(QStyle::SH_Slider_AbsoluteSetButtons)) == ev->button()) { partially evaluated: (ev->button() & style()->styleHint(QStyle::SH_Slider_AbsoluteSetButtons)) == ev->button()| no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
| 234 | QStyleOptionSlider opt; | - |
| 235 | initStyleOption(&opt); | - |
| 236 | const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); | - |
| 237 | const QPoint center = sliderRect.center() - sliderRect.topLeft(); | - |
| 238 | | - |
| 239 | | - |
| 240 | setSliderPosition(d->pixelPosToRangeValue(d->pick(ev->pos() - center))); | - |
| 241 | triggerAction(SliderMove); | - |
| 242 | setRepeatAction(SliderNoAction); | - |
| 243 | d->pressedControl = QStyle::SC_SliderHandle; | - |
| 244 | update(); | - |
| 245 | } else if ((ev->button() & style()->styleHint(QStyle::SH_Slider_PageSetButtons)) == ev->button()) { partially evaluated: (ev->button() & style()->styleHint(QStyle::SH_Slider_PageSetButtons)) == ev->button()| yes Evaluation Count:2 | no Evaluation Count:0 |
| 0-2 |
| 246 | QStyleOptionSlider opt; | - |
| 247 | initStyleOption(&opt); | - |
| 248 | d->pressedControl = style()->hitTestComplexControl(QStyle::CC_Slider, | - |
| 249 | &opt, ev->pos(), this); | - |
| 250 | SliderAction action = SliderNoAction; | - |
| 251 | if (d->pressedControl == QStyle::SC_SliderGroove) { evaluated: d->pressedControl == QStyle::SC_SliderGroove| yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
| 252 | const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); | - |
| 253 | int pressValue = d->pixelPosToRangeValue(d->pick(ev->pos() - sliderRect.center() + sliderRect.topLeft())); | - |
| 254 | d->pressValue = pressValue; | - |
| 255 | if (pressValue > d->value) partially evaluated: pressValue > d->value| yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
| 256 | action = SliderPageStepAdd; executed: action = SliderPageStepAdd;Execution Count:1 | 1 |
| 257 | else if (pressValue < d->value) never evaluated: pressValue < d->value | 0 |
| 258 | action = SliderPageStepSub; never executed: action = SliderPageStepSub; | 0 |
| 259 | if (action) { partially evaluated: action| yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
| 260 | triggerAction(action); | - |
| 261 | setRepeatAction(action); | - |
| 262 | } executed: }Execution Count:1 | 1 |
| 263 | } executed: }Execution Count:1 | 1 |
| 264 | } else { executed: }Execution Count:2 | 2 |
| 265 | ev->ignore(); | - |
| 266 | return; | 0 |
| 267 | } | - |
| 268 | | - |
| 269 | if (d->pressedControl == QStyle::SC_SliderHandle) { evaluated: d->pressedControl == QStyle::SC_SliderHandle| yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
| 270 | QStyleOptionSlider opt; | - |
| 271 | initStyleOption(&opt); | - |
| 272 | setRepeatAction(SliderNoAction); | - |
| 273 | QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); | - |
| 274 | d->clickOffset = d->pick(ev->pos() - sr.topLeft()); | - |
| 275 | update(sr); | - |
| 276 | setSliderDown(true); | - |
| 277 | } executed: }Execution Count:1 | 1 |
| 278 | } executed: }Execution Count:2 | 2 |
| 279 | | - |
| 280 | | - |
| 281 | | - |
| 282 | | - |
| 283 | void QSlider::mouseMoveEvent(QMouseEvent *ev) | - |
| 284 | { | - |
| 285 | QSliderPrivate * const d = d_func(); | - |
| 286 | if (d->pressedControl != QStyle::SC_SliderHandle) { never evaluated: d->pressedControl != QStyle::SC_SliderHandle | 0 |
| 287 | ev->ignore(); | - |
| 288 | return; | 0 |
| 289 | } | - |
| 290 | ev->accept(); | - |
| 291 | int newPosition = d->pixelPosToRangeValue(d->pick(ev->pos()) - d->clickOffset); | - |
| 292 | QStyleOptionSlider opt; | - |
| 293 | initStyleOption(&opt); | - |
| 294 | setSliderPosition(newPosition); | - |
| 295 | } | 0 |
| 296 | | - |
| 297 | | - |
| 298 | | - |
| 299 | | - |
| 300 | | - |
| 301 | void QSlider::mouseReleaseEvent(QMouseEvent *ev) | - |
| 302 | { | - |
| 303 | QSliderPrivate * const d = d_func(); | - |
| 304 | if (d->pressedControl == QStyle::SC_None || ev->buttons()) { partially evaluated: d->pressedControl == QStyle::SC_None| no Evaluation Count:0 | yes Evaluation Count:2 |
partially evaluated: ev->buttons()| no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
| 305 | ev->ignore(); | - |
| 306 | return; | 0 |
| 307 | } | - |
| 308 | ev->accept(); | - |
| 309 | QStyle::SubControl oldPressed = QStyle::SubControl(d->pressedControl); | - |
| 310 | d->pressedControl = QStyle::SC_None; | - |
| 311 | setRepeatAction(SliderNoAction); | - |
| 312 | if (oldPressed == QStyle::SC_SliderHandle) evaluated: oldPressed == QStyle::SC_SliderHandle| yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
| 313 | setSliderDown(false); executed: setSliderDown(false);Execution Count:1 | 1 |
| 314 | QStyleOptionSlider opt; | - |
| 315 | initStyleOption(&opt); | - |
| 316 | opt.subControls = oldPressed; | - |
| 317 | update(style()->subControlRect(QStyle::CC_Slider, &opt, oldPressed, this)); | - |
| 318 | } executed: }Execution Count:2 | 2 |
| 319 | | - |
| 320 | | - |
| 321 | | - |
| 322 | | - |
| 323 | QSize QSlider::sizeHint() const | - |
| 324 | { | - |
| 325 | const QSliderPrivate * const d = d_func(); | - |
| 326 | ensurePolished(); | - |
| 327 | const int SliderLength = 84, TickSpace = 5; | - |
| 328 | QStyleOptionSlider opt; | - |
| 329 | initStyleOption(&opt); | - |
| 330 | int thick = style()->pixelMetric(QStyle::PM_SliderThickness, &opt, this); | - |
| 331 | if (d->tickPosition & TicksAbove) partially evaluated: d->tickPosition & TicksAbove| no Evaluation Count:0 | yes Evaluation Count:7 |
| 0-7 |
| 332 | thick += TickSpace; never executed: thick += TickSpace; | 0 |
| 333 | if (d->tickPosition & TicksBelow) partially evaluated: d->tickPosition & TicksBelow| no Evaluation Count:0 | yes Evaluation Count:7 |
| 0-7 |
| 334 | thick += TickSpace; never executed: thick += TickSpace; | 0 |
| 335 | int w = thick, h = SliderLength; | - |
| 336 | if (d->orientation == Qt::Horizontal) { partially evaluated: d->orientation == Qt::Horizontal| no Evaluation Count:0 | yes Evaluation Count:7 |
| 0-7 |
| 337 | w = SliderLength; | - |
| 338 | h = thick; | - |
| 339 | } | 0 |
| 340 | return style()->sizeFromContents(QStyle::CT_Slider, &opt, QSize(w, h), this).expandedTo(QApplication::globalStrut()); executed: return style()->sizeFromContents(QStyle::CT_Slider, &opt, QSize(w, h), this).expandedTo(QApplication::globalStrut());Execution Count:7 | 7 |
| 341 | } | - |
| 342 | | - |
| 343 | | - |
| 344 | | - |
| 345 | | - |
| 346 | QSize QSlider::minimumSizeHint() const | - |
| 347 | { | - |
| 348 | const QSliderPrivate * const d = d_func(); | - |
| 349 | QSize s = sizeHint(); | - |
| 350 | QStyleOptionSlider opt; | - |
| 351 | initStyleOption(&opt); | - |
| 352 | int length = style()->pixelMetric(QStyle::PM_SliderLength, &opt, this); | - |
| 353 | if (d->orientation == Qt::Horizontal) partially evaluated: d->orientation == Qt::Horizontal| no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
| 354 | s.setWidth(length); never executed: s.setWidth(length); | 0 |
| 355 | else | - |
| 356 | s.setHeight(length); executed: s.setHeight(length);Execution Count:1 | 1 |
| 357 | return s; executed: return s;Execution Count:1 | 1 |
| 358 | } | - |
| 359 | void QSlider::setTickPosition(TickPosition position) | - |
| 360 | { | - |
| 361 | QSliderPrivate * const d = d_func(); | - |
| 362 | d->tickPosition = position; | - |
| 363 | d->resetLayoutItemMargins(); | - |
| 364 | update(); | - |
| 365 | updateGeometry(); | - |
| 366 | } executed: }Execution Count:4 | 4 |
| 367 | | - |
| 368 | QSlider::TickPosition QSlider::tickPosition() const | - |
| 369 | { | - |
| 370 | return d_func()->tickPosition; executed: return d_func()->tickPosition;Execution Count:4 | 4 |
| 371 | } | - |
| 372 | void QSlider::setTickInterval(int ts) | - |
| 373 | { | - |
| 374 | d_func()->tickInterval = qMax(0, ts); | - |
| 375 | update(); | - |
| 376 | } executed: }Execution Count:3 | 3 |
| 377 | | - |
| 378 | int QSlider::tickInterval() const | - |
| 379 | { | - |
| 380 | return d_func()->tickInterval; executed: return d_func()->tickInterval;Execution Count:3 | 3 |
| 381 | } | - |
| 382 | | - |
| 383 | __attribute__((visibility("default"))) QStyleOptionSlider qt_qsliderStyleOption(QSlider *slider) | - |
| 384 | { | - |
| 385 | QStyleOptionSlider sliderOption; | - |
| 386 | slider->initStyleOption(&sliderOption); | - |
| 387 | return sliderOption; never executed: return sliderOption; | 0 |
| 388 | } | - |
| 389 | | - |
| 390 | | - |
| 391 | | - |
| 392 | | - |
| 393 | | - |
| | |