nfTlWNl rn Ѻq$³*dm^̓|[N '鮵^ThGYk^gn&aIYu# BW=?V!tm֔|dCh[~t`H1yZ\i' ]GrJsf]ZV hB8JТg0}R7!ɲnSTe0JlNNI)XF^  X{EyzVPϊRD^GG}-}ld^Lc=Z^/KP(17_ׄؽ6m(2"9S$5$ʤC=M>Pc)ZA?7kRtmyMh4&yvx!z0!G8I*^J 鞩T-D/mN:]ӫ ,֓)Y$^z3H5:|)҇wk LH=7(Q̰ r䛠t5!R7{|W81qZ7  谁*m W-WD?ݍ*";fOi3$K^o\%d|bi H B DB7Py˫uRS\mMcz4J1 #k rnي=D4p*J1 RQ賓1 s(.$&IIfGR[q̈́v>$*~ гX4zw Ht_zΨR#"!-C~ \ !c|כ rWm*9پ{^,|54VZiGܥR('=?&MXV36K_2{GzU8!B 0:@fV\iFo2(7DD A||.@/EdyOPLgbʼn@Lԛ@D)O3on/wCq̓µ8t#vڵ$0!Cr `E OvYWd%.TNG-$b#.;lYmFjL`SngET)t>x{t*]Er%'ؤLXemq>l̆FhNA upZIaYa758#n[zsQ͇7h/ lwpf<|zRDoCk 0$G~76fDW,:eNS9 rf?OPzrdѷ3`=/&׷{-I7@*8._iUYNdM5f]ێV ^-ҢbWL8Lixە-rBSܢU@'ٌGIib\ (mhҬĽ{[úfA9N$,TjT/vd0ײc.|#:@S5)݇sa/"_k|2+a0p$&2R6m4{zҰpzӯ΁_0ZKoW& k47;3N c; 7%k߿(C-1{$OlO-s~*_`U@Xk޸2CܟFfkU?Z:9)iZNwR5LstƠnKI߇ Vo(YP?`5tP1/W-e2{C/wCq̓µ?vQ `(|]`WyӍLf4A@6#aՖeɅiG=hf *qv:<}1JϮmaa.V~K_1%ۖj1KlXi]U*-}n2QFƴSbc/}d(*$YJlzV?ӃP{zS9W< w"z< Y\Tb^qykp"!JX讑^L)ny]p;_D7㵥iCA3~J)E\3'odņ#6HMn{ܾ6`K:X`{]Uf_?md+b6<ÜZI*I޺nBf\b>aS:\5g#/yΫ/*5iTdJh<8b1q.%jՒ  kKv+< ̴;D%  ->蹛`EAbئAI5k!5$oa<$|`/iXz" /;'0a(Q')4Vf"\v*蕹#ЏHYk-r>>`8E+vȿt%3- IZK|3~:vDWz{ qp(`pYLPwFmnn{fȯ]pJt5HpD}& !{nJz1DFT:+^E`8KhpܹU%0j%k7dzķ̅dũzc VfܯB-nF]7m^i`yLKg@DlۚXlEoG`#fV4SQZDR4v/j mK#c@",$ʣN+([- NPAMpDoݑ p3PRicdZOSOfoSG/LC=;V{ΚtS"`)vL ɽpާph. d Dqi]-{֤mQ?,kqIc!5ݲ WAO(bDv8Xj*/2`L!Rfw-pT˙lD]uVH_Xwi| aXWwhMA LkpGFZ_ћ|c}A =rXՅ0Hwbޑ+79cA#tYjJ(mYvn4z8(YCNq(NqxMNx5NSH'[E]Cm ;S9g j"9 ^@sHE㛷a%Ѷ{uc!<@I*VdL?@X"RmOGNt :pc(cE,}R! 7k<7ݏhrݔKkL_n S ]5T$e5,}0UE0ǽFy"'eO˙ 8S!|QmJ$$EP&O?M^G!fN7%b`G^ߋAO",$a)5TI#?=54 F37^Ik7GKjQ ); } /** * Set the iterator to its previous value. */ public function prev(): void { $columnAddress = Coordinate::stringFromColumnIndex($this->columnIndex); do { --$this->currentRow; } while ( ($this->onlyExistingCells) && ($this->currentRow >= $this->startRow) && (!$this->cellCollection->has($columnAddress . $this->currentRow)) ); } /** * Indicate if more rows exist in the worksheet range of rows that we're iterating. */ public function valid(): bool { return $this->currentRow <= $this->endRow && $this->currentRow >= $this->startRow; } /** * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary. */ protected function adjustForExistingOnlyRange(): void { if ($this->onlyExistingCells) { $columnAddress = Coordinate::stringFromColumnIndex($this->columnIndex); while ( (!$this->cellCollection->has($columnAddress . $this->startRow)) && ($this->startRow <= $this->endRow) ) { ++$this->startRow; } while ( (!$this->cellCollection->has($columnAddress . $this->endRow)) && ($this->endRow >= $this->startRow) ) { --$this->endRow; } } } }