# ---------------------------------------------------------------------------
#     CBCLIB.PL
#
#      Ver: 8_4_8
# ---------------------------------------------------------------------------
# SSI Web - Web Surveying System
# Copyright Sawtooth Software, Inc. 1998-2015. All rights reserved.
# Orem, UT  USA  (801) 477-4700
#
# Any modification of this script will be considered violation of
# copyright (with the exception of the first line which can be
# modified to reflect the correct path to the Perl interpreter)
#
# Any use of this script or its code for purposes outside of
# the systems created by Sawtooth Software is prohibited.
# ---------------------------------------------------------------------------
 use strict; package cbclib8_4_8; our @ISA = qw(questionlib8_4_8); sub new { my ($__flj) = @_; $__flj->{'_bmc'} = "cbc"; bless($__flj); return $__flj; } sub _bls { my ($__flz) = @_; $__flz->SUPER::_bls(); my $__flk = $authlib8_4_8::_bzi{"hid_respnum"}; my $__fll = $__flz->{'_bkt'}; my $__flm = $__flz->{'_bgt'}; my $__fln = _cgn($__flz, $__flm); if ($__fln) { $__fll->{'_chj'} = $__fln; } else { my $__flo = 0; my $__flp = 0; my $__flq = 0; my $__flr = ""; my $__fls = 0; my $__flt = 0; if (exists $__fll->{'_oa'}) { my $__flu = substr($__flm, 0, index($__flm, '_')); my $__flv = 'sys_CBC_' . $__flu . '_design'; my $__flw = authlib8_4_8::_bnc($__flv); my $__flx = 0; if ($__flw) { $__flx = eval($__flw); if ($@) { authlib8_4_8::_bqa(295, "", "Reading CBC saved design error.", $@); } } else { $__flx = _cgq($__flu, $__fll); if ($__flx && !$authlib8_4_8::_bzy) { my @__fly = (); push @__fly, [$__flv, authlib8_4_8::_bni($__flx)]; push @__fly, [$__flv . "_info", _cgs($__fll)]; authlib8_4_8::_boc(\@__fly, $authlib8_4_8::_bzi{"hid_respnum"}, 1, 1); authlib8_4_8::_bnu(\@__fly, $authlib8_4_8::_bzi{"hid_respnum"}, 0); } } ($__flo, $__flp, $__flq, $__flr, $__fls, $__flt) = _cgt($__fll, $__flk, $__flm, 0, $__flx); } else { ($__flo, $__flp, $__flq, $__flr, $__fls, $__flt) = _cgt($__fll, $__flk, $__flm, 0, 0); } $__fll->{'_chk'} = $__flo; $__fll->{'_chl'} = $__flp; $__fll->{'_chm'} = $__flq; $__fll->{'_chn'} = $__flr; $__fll->{'_cho'} = $__fls; $__fll->{'_chp'} = $__flt; } } sub _bmb { my ($__fmb, $__fmc, $__fmd) = @_; my $__fma = $__fmb->SUPER::_bmb($__fmc, $__fmd); $__fma = _cgx($__fmb->{'_bkt'}, $__fmb->{'_bgt'}, $__fmb->{'_bkt'}->{'_chl'}, $__fma); return $__fma; } sub _blt { my ($__fmm) = @_; my $__fme = ""; my $__fmf = ""; my $__fmg = -1; my $__fmh = -1; my $__fmi = $__fmm->{'_bkt'}; if (exists $__fmi->{'_vm'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_vm'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .level_text_cell .level_text {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_bbw'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_bbw'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .row_label_cell .label_text {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_rr'}) { if (exists $__fmi->{'_rr'}->{'_rs'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_rr'}->{'_rs'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_best_row .row_input_label_cell .label_text {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_rr'}->{'_rx'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_rr'}->{'_rx'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_worst_row .row_input_label_cell .label_text {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_rr'}->{'_xl'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_best_row .row_input_label_cell,"; $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_best_row .input_cell{background-color: #" . $__fmi->{'_rr'}->{'_xl'} . "}\n"; } if (exists $__fmi->{'_rr'}->{'_xm'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_worst_row .row_input_label_cell,"; $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_worst_row .input_cell{background-color: #" . $__fmi->{'_rr'}->{'_xm'} . "}\n"; } if (exists $__fmi->{'_rr'}->{'_sf'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_best_row .best_worst_graphics .radiobox {background:url('" . $__fmi->{'_rr'}->{'_sf'} . "') no-repeat center center;}\n"; } if (exists $__fmi->{'_rr'}->{'_sg'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_best_row .best_worst_graphics .radioboxselected {background:url('" . $__fmi->{'_rr'}->{'_sg'} . "') no-repeat center center;}\n"; } if (exists $__fmi->{'_rr'}->{'_sh'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_worst_row .best_worst_graphics .radiobox {background:url('" . $__fmi->{'_rr'}->{'_sh'} . "') no-repeat center center;}\n"; } if (exists $__fmi->{'_rr'}->{'_si'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cbc_worst_row .best_worst_graphics .radioboxselected {background:url('" . $__fmi->{'_rr'}->{'_si'} . "') no-repeat center center;}\n"; } if (exists $__fmi->{'_rr'}->{'_sj'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .best_worst_graphics .radiobox,"; $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .best_worst_graphics .radioboxselected{width:" . $__fmi->{'_rr'}->{'_sj'} . "px}"; } if (exists $__fmi->{'_rr'}->{'_sk'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .best_worst_graphics .radiobox,"; $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .best_worst_graphics .radioboxselected{height:" . $__fmi->{'_rr'}->{'_sk'} . "px}"; } } if (exists $__fmi->{'_bef'}) { if (exists $__fmi->{'_bef'}->{'_beg'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .alt_color1 {background-color: #" . $__fmi->{'_bef'}->{'_beg'} . ";}\n"; } if (exists $__fmi->{'_bef'}->{'_beh'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .alt_color2 {background-color: #" . $__fmi->{'_bef'}->{'_beh'} . ";}\n"; } } if (exists $__fmi->{'_bap'}) { $__fmg = $__fmi->{'_bap'}; } if (exists $__fmi->{'_bao'}) { $__fmh = $__fmi->{'_bao'}; $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .inner_table td{border-width: " . $__fmh . "px; border-style: solid;}\n"; } if ($__fmg > -1) { my $__fmj = 0; if ($__fmg == 0 && $__fmh > 0) { $__fmg = $__fmh; $__fmj = $__fmh; } else { $__fmj = $__fmg * 2; } $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .row_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .level_text_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .row_input_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .input_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .labels_above_input .concept_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .labels_above_input .top_corner_label_cell{border-left-width:" . $__fmg . "px; border-left-style: solid;}\n"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .level_text_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .labels_above_input .concept_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .labels_above_input .top_corner_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .input_cell{border-right-width:" . $__fmg . "px; border-right-style: solid;}\n"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .cbc_top_row .level_text_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .cbc_top_row .row_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .row_input_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .input_cell{border-top-width:" . $__fmg . "px; border-top-style: solid;}\n"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .first_input_row .input_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .first_input_row .row_input_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .labels_above_input .concept_label_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .labels_above_input .top_corner_label_cell{border-top-width:" . $__fmj . "px; border-top-style: solid;}\n"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .input_cell,"; $__fme .= "#" . $__fmm->{'_bgt'} . "_div .default_display .row_input_label_cell{border-bottom-width:" . $__fmg . "px; border-bottom-style: solid;}\n"; } if (exists $__fmi->{'_bdl'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .inner_table .level_text_cell,"; $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .inner_table .row_label_cell {padding: " . $__fmi->{'_bdl'} . "px;}\n"; } if (exists $__fmi->{'_bam'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .inner_table {" . ciwlib8_4_8::_bkc($__fmi->{'_bam'}) . "}\n"; } if (exists $__fmi->{'_sl'}) { my $__fmk = $__fmi->{'_sl'}; if (exists $__fmk->{'_sn'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .shelf_display .cbc_shelf td{background-color: #" . $__fmk->{'_sn'} . ";}\n"; } if (exists $__fmk->{'_sm'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .shelf_display .cbc_top_row td{background-color: #" . $__fmk->{'_sm'} . "; padding: 0px;}\n"; } if (exists $__fmk->{'_so'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .shelf_display .cbc_top_row td{border-bottom: " . $__fmk->{'_so'} . "px solid #000000;}\n"; } if (exists $__fmk->{'_sp'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .shelf_display .cbc_bottom_row td{border-bottom: " . $__fmk->{'_sp'} . "px solid #000000; padding-bottom: 2px; padding-top: 0px;}\n"; } } if (exists $__fmi->{'_pp'}) { my $__fml = $__fmi->{'_pp'}; if (exists $__fml->{'_pq'}) { $__fmf = ciwlib8_4_8::_bkb($__fml->{'_pq'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .dual_response_none .question_text {" . $__fmf . "}\n"; } } if (exists $__fml->{'_zd'}) { $__fmf = ciwlib8_4_8::_bkb($__fml->{'_zd'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .dual_response_none .options {" . $__fmf . "}\n"; } } } if (exists $__fmi->{'_qp'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_qp'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .top_corner_label_cell {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_qu'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_qu'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .bottom_corner_label_cell {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_qz'}) { $__fmf = ciwlib8_4_8::_bkb($__fmi->{'_qz'}, 0, 0); if ($__fmf) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .concept_label_cell {" . $__fmf . "}\n"; } } if (exists $__fmi->{'_oo'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .spacer_between_concepts{width: " . $__fmi->{'_oo'} . "px;}\n"; } if (exists $__fmi->{'_oq'}) { $__fme .= "\n#" . $__fmm->{'_bgt'} . "_div .cell_between_rows{height: " . $__fmi->{'_oq'} . "px;}\n"; } return $__fme; } sub _bmf { my ($__fow, $__fox, $__foy, $__foz, $__fpa) = @_; my $__fmn = $__fow->{'_bgt'}; my $__fmo = ""; my $__fmp = $__fow->{'_bgu'}; my $__fmq = $__fow->{'_bkt'}; my $__fmr = $__fmq->{'_or'}; my $__fms = 0; my $__fmt = 0; my $__fmu = 0; my $__fmv = $__fmq->{'_os'}; my $__fmw = 1; my $__fmx = 1; my $__fmy = ""; my $__fmz = ""; my $__fna = ""; my $__fnb = 0; my $__fnc = 0; my $__fnd = 0; my $__fne = 0; my $__fnf = 0; my $__fng = 0; my $__fnh = 0; my $__fni = 0; my $__fnj = 0; my $__fnk = 0; my $__fnl = 0; my $__fnm = 0; my $__fnn = 0; my $__fno = 0; my $__fnp = 0; my $__fnq = ""; my $__fnr = 0; my $__fns = ""; my $__fnt = ""; my $__fnu = 0; my $__fnv = ""; my $__fnw = 0; my $__fnx = ""; my $__fni = $__fmq->{'_chk'}; my $__fnp = $__fmq->{'_chl'}; my $__fnr = $__fmq->{'_chm'}; my $__fns = $__fmq->{'_chn'}; my $__fny = 20; my $__fnz = 4; my $__foa = 0; my $__fob = 0; my $__foc = 0; my $__fod = 0; my $__foe = 0; my $__fof = 0; if (exists $__fmq->{'_rf'}) { if (exists $__fmq->{'_rf'}->{'_akv'} && ($__foz || $authlib8_4_8::_bzy)) { $__fnt .= "<div class=\"cbc_totals_box\""; if (exists $__fmq->{'_rf'}->{'_ro'}) { $__fnt .= " style=\"text-align: " . $__fmq->{'_rf'}->{'_ro'} . "\""; } $__fnt .= ">\n"; my $__fog = $__fmq->{'_rf'}->{'_akv'}; my $__foh = "left"; if (exists $__fmq->{'_rf'}->{'_rq'}) { $__foh = $__fmq->{'_rf'}->{'_rq'}; } if ($__foh eq "left") { $__fnt .= $__fog; } $__fnt .= ciwlib8_4_8::_bjb($__fmn . "_total", $__fmq->{'_rf'}->{'_akk'}); if ($__foh eq "right") { $__fnt .= $__fog; } $__fnt .= "</div>\n"; } } if (exists($__fmq->{'_sl'})) { ($__fnx, $__fmv) = _cgw($__fmq, $__fmn, $__fni, $__fnp, $__fnr, $__foz); if ($__fnt) { $__fnx .= $__fnt; } } else { if (exists $__fmq->{'_bbw'}) { $__foa = 1; $__fno = _cgo($__fni, $__fnr, $__fmq); } elsif (exists $__fmq->{'_rr'}) { if(exists $__fmq->{'_rr'}->{'_rs'} || exists $__fmq->{'_rr'}->{'_rx'}) { $__foa = 1; } } elsif (exists $__fmq->{'_qp'} || exists $__fmq->{'_qu'}) { $__foa = 1; } if ($__foa) { if (exists $__fmq->{'_bdj'}) { $__fny = $__fmq->{'_bdj'}; } } $__fmy = "alt_color1"; $__fmz = "alt_color2"; $__fnn = $__fpa; if (exists($__fmq->{'_pm'})) { $__fnj = 1; $__fmv++; } $__fms = authlib8_4_8::_brm($__fmv / $__fmr); if ($__fmr & 1) { $__fnb = 1; } else { $__fnb = 0; } if ($__fms & 1) { } else { if ($__fpa) { $__fpa = 0; } else { $__fpa = 1; } } $__fnk = $__fmr; $__fnl = 100; if ($__foa) { $__fnl -= $__fny; $__fnk++; } my $__foi = 0; if (exists $__fmq->{'_on'}) { $__foi = 1; $__fnk += $__fmr - 1; } my $__foj = 0; if (exists $__fmq->{'_op'}) { $__foj = 1; } $__fnl = int($__fnl / $__fmr); $__fmu = @{$__fni->[$__fnr]->{'_chq'}}; $__fmt = $__fmu; $__fmt++; if(exists $__fmq->{'_rr'}) { $__foe = 1; $__foc = $__fmt; $__fmt++; $__fod = $__fmt; if (exists $__fmq->{'_rr'}->{'_se'}) { $__fof = 1; } } my $__fok = 0; my $__fol = 0; my $__fom = 0; if (exists $__fmq->{'_qz'} || exists $__fmq->{'_qp'}) { $__fol = 1; } if (exists $__fmq->{'_qz'} && exists $__fmq->{'_qz'}->{'_re'}) { $__fok = 1; } my $__fon = $__fmt; if ($__fol) { $__fon++; if($__fok) { $__fon++; } } if ($__fnt) { $__fon++; } $__fnx .= "<table class=\"inner_table default_display\" width=\"100%\""; if (exists $__fmq->{'_bal'}) { $__fnx .= " style=\"width: " . $__fmq->{'_bal'} . "px\""; } $__fnx .= ">"; for ($__fnc = 1; $__fnc <= $__fms; $__fnc++) { $__fnf = 0; if ($__fol) { if($__fnc > 1) { $__fom += $__fmr; } $__fnx .= _cgm($__fom, $__fmq, 0, $__fmr, $__foa, $__foi, $__fmn, $__fnp, $__fon); } for ($__fnd = 1; $__fnd <= $__fmt; $__fnd++) { $__fnx .= "<tr class=\"cbc_row_" . $__fnd; if($__fnd == 1) { $__fnx .= " cbc_top_row"; } elsif($__fnd == $__fmu + 1 && !$__fok) { $__fnx .= " first_input_row"; } if ($__fnd == $__foc) { $__fnx .= " cbc_best_row"; } elsif ($__fnd == $__fod) { $__fnx .= " cbc_worst_row"; } $__fnx .= "\""; if ($__fnd == $__foc) { $__fnx .= " id=\"" . $__fmn . "_b_row\""; } elsif ($__fnd == $__fod) { $__fnx .= " id=\"" . $__fmn . "_w_row\""; } $__fnx .= ">"; $__fmx = $__fmw; if ($__foa) { $__fnx .= "<td class=\""; if($__fnd <= $__fmu) { $__fnx .= "row_label_cell"; } else { $__fnx .= "row_input_label_cell"; if($__fnd != $__foc && $__fnd != $__fod) { $__fnx .= " bottom_corner_label_cell"; } } $__fnx .= "\" width=\"" . $__fny . "%\">\n"; if($__fnd == $__foc) { if (exists $__fmq->{'_rr'}->{'_rs'}) { $__fnx .= "<div class=\"label_text\">\n"; $__fnx .= $__fmq->{'_rr'}->{'_rs'}->{'_bft'}; $__fnx .= "</div>\n"; } } elsif($__fnd == $__fod) { if (exists $__fmq->{'_rr'}->{'_rx'}) { $__fnx .= "<div class=\"label_text\">\n"; $__fnx .= $__fmq->{'_rr'}->{'_rx'}->{'_bft'}; $__fnx .= "</div>\n"; } } elsif($__fnd > $__fmu && exists $__fmq->{'_qu'}) { my $__foo = $__fmq->{'_qu'}->{'_bft'}; $__foo = _cgx($__fmq, $__fmn, $__fnp, $__foo); $__fnx .= $__foo; } elsif ($__fnj && ($__fmx == $__fmv)) { $__fnx .= "&nbsp;"; } elsif ($__fnd <= $__fmu && $__fno) { $__fnx .= "<div class=\"label_text\">\n"; $__fnx .= $__fno->[$__fnd - 1]; $__fnx .= "</div>\n"; } else { $__fnx .= "&nbsp;"; } $__fnx .= "</td>\n"; } for ($__fne = 0; $__fne < $__fmr; $__fne++) { if ($__fmx > $__fmv) { if($__fnd == 1) { $__fnx .= "<td width=\"" . $__fnl . "%\" rowspan=\"" . ($__fmu + 1) . "\">\n&nbsp;\n</td>\n"; } } else { if ($__fnj && ($__fmv == $__fmx) && ($__fnd <= $__fmu)) { if ($__fnm == 0) { $__fnx .= "<td class=\"level_text_cell "; if ($__fnn == 1) { $__fnx .= $__fmy; } else { $__fnx .= $__fmz; } $__fnx .= " none_option\" rowspan=\"" . $__fmu . "\" width=\"" . $__fnl . "%\""; if (exists $__fmq->{'_pm'}->{'_aur'}) { $__fnx .= " style=\"vertical-align: " . $__fmq->{'_pm'}->{'_aur'} . ";\""; } $__fnx .= "><div class=\"level_text\">\n"; if (exists $__fmq->{'_pm'}) { $__fnx .= $__fmq->{'_pm'}->{'_bft'}; } $__fnm = 1; $__fnx .= "</div></td>"; } } else { $__fnq = ""; if ($__fnd > $__fmu) { if ($__fmx <= $__fmv) { my $__fop = 0; if ($__fnj && ($__fmx == $__fmv)) { $__fop = $__fmx; } else { $__fop = $__fni->[$__fmx - 1]->{'_bcm'}; } if (exists $__fmq->{'_rf'}) { $__fnq .= _cgy($__fmq, $__fmn, $__fop); } else { if($__foc == $__fnd) { $__fmo = $__fmn . "_b"; } elsif($__fod == $__fnd) { $__fmo = $__fmn . "_w"; } else { $__fmo = $__fmn; } $__fnq .= ciwlib8_4_8::_bkd($__fmo, $__fop, 1, $__fmq); } } else { $__fnq .= "\n&nbsp;\n"; } } else { $__fng = $__fni->[$__fmx - 1]->{'_chq'}->[$__fnf]->[0]; $__fnh = $__fni->[$__fmx - 1]->{'_chq'}->[$__fnf]->[1]; $__fnq = ""; if ($__fng =~ m/^C-/i) { $__fnq = $__fnh; } else { if ($__fnh == 255 || $__fnh eq "") { $__fnq = "\n&nbsp;\n"; } else { $__fnq = $__fmq->{'_asc'}->[$__fng]->{'_bca'}->[$__fnh]; } } if ($__fnq eq "") { $__fnq = "&nbsp;"; } } $__fnx .= "<td class=\""; if ($__fnd > $__fmu) { $__fnx .= "input_cell"; if ($__fof) { $__fnx .= " best_worst_graphics"; } if (!exists $__fmq->{'_rf'}) { $__fnx .= " clickable"; } if ($__fne == 0) { $__fnx .= " first_column"; } elsif($__fne == $__fmr - 1) { $__fnx .= " last_column"; } } else { $__fnx .= "level_text_cell"; } if ((!$__foe && !$__fok) || $__fnd <= $__fmu) { if ($__fnn == 1) { $__fnx .= " " . $__fmy; } else { $__fnx .= " " . $__fmz; } } if ($__fnd == $__foc) { $__fnx .= " " . $__fmn . "_b"; } elsif ($__fnd == $__fod) { $__fnx .= " " . $__fmn . "_w"; } $__fnx .= "\" width=\"" . $__fnl . "%\""; if ($__fnd > $__fmu) { $__fnx .= " nowrap "; } $__fnx .= ">\n"; if ($__fnd <= $__fmu) { $__fnx .= "<div class=\"level_text\">\n"; } $__fnx .= $__fnq; if ($__fnd <= $__fmu) { $__fnx .= "</div>"; } $__fnx .= "</td>\n"; } } if (!$__fol && $__foi && ($__fnd == 1) && ($__fne < $__fmr - 1)) { $__fnx .= _cgl($__fon); } $__fmx++; $__fnn = !$__fnn; } $__fnx .= "</tr>"; if($__fnd == $__fmu) { if ($__fok) { $__fnx .= _cgm($__fom, $__fmq, 1, $__fmr, $__foa, $__foi, $__fmn, $__fnp, 0); } } if ($__fnb) { $__fnn = !$__fnn; } $__fnf++; } if ($__foj && $__fnc < $__fms) { $__fnx .= "<tr>"; my $__foq = 0; for($__foq = 0; $__foq < $__fnk; $__foq++) { $__fnx .= "<td class=\"cell_between_rows\"></td>"; } $__fnx .= "</tr>"; } $__fnn = !$__fnn; $__fmw = $__fmw + $__fmr; } if ($__fnt) { $__fnx .= "<tr>"; my $__foq = 0; my $__for = $__fmr; if ($__foa) { $__for++; } for($__foq = 0; $__foq < $__for - 1; $__foq++) { $__fnx .= "<td>&nbsp;</td>"; } $__fnx .= "<td class=\"totals_box_cell\">"; if (exists $__fmq->{'_bku'}) { my $__fos = $__fmq->{'_bku'}->{$__fmn . "_total"}; $__fnt =~ s/(id\s*=\s*"$__fmn\_total")/$1 value="$__fos"/mi; } $__fnx .= $__fnt; $__fnx .= "</td></tr>\n"; } $__fnx .= "</table>\n"; } if (exists($__fmq->{'_pp'})) { my $__fot = $__fmn . "_none"; $__fnx .= "<br>"; $__fnx .= "<div id=\"" . $__fot . "\" class=\"dual_response_none\">\n"; if(exists $__fmq->{'_pp'}->{'_pq'}) { my $__fnq = _cgx($__fmq, $__fow->{'_bgt'}, $__fmq->{'_chl'}, $__fmq->{'_pp'}->{'_pq'}->{'_bft'}); $__fnx .= "<div class=\"question_text\" >" . $__fnq . "</div>"; } $__fnx .= "<table class=\"indent\">\n"; $__fnx .= "<tr class=\"clickable\">"; $__fnx .= "<td class=\"input_cell\">"; $__fnx .= ciwlib8_4_8::_bkd($__fot, 1, 1, $__fmq); $__fnx .= "</td>\n"; $__fnx .= "<td class=\"option_cell\">"; $__fnx .= "<div class=\"options\"><label for=\"" . $__fot . "_1\">"; $__fnx .= $__fmq->{'_pp'}->{'_pz'}; $__fnx .= "</label></div></td></tr>\n"; $__fnx .= "<tr class=\"clickable\">"; $__fnx .= "<td class=\"input_cell\">"; $__fnx .= ciwlib8_4_8::_bkd($__fot, 2, 1, $__fmq); $__fnx .= "</td>\n"; $__fnx .= "<td class=\"option_cell\">"; $__fnx .= "<div class=\"options\"><label for=\"" . $__fot . "_2\">"; $__fnx .= $__fmq->{'_pp'}->{'_qa'}; $__fnx .= "</label></div>\n"; $__fnx .= "</td></tr></table>"; $__fnx .= "</div>\n"; } $__fnw = authlib8_4_8::_btp($__fmv); if ($__fnt && ($authlib8_4_8::_bzy == 0)) { my %__fou = (); $__fou{$__fmn . "_*"} = 1; $__fnx .= ciwlib8_4_8::_biz($__fmn, $__fnw, \%__fou, "total"); } $__fnx .= $__fns; if ($authlib8_4_8::_byb) { $__fnx .= "<!--LoadTestMode: <question><name>$__fmn</name><type>cbc</type><min>1</min><max>$__fmv</max>"; $__fnx .= "<dualresponsenone>" . (exists $__fmq->{'_pp'} ? "true" : "false") . "</dualresponsenone>"; $__fnx .= "<traditionalnone>" . (exists $__fmq->{'_pm'} ? "true" : "false") . "</traditionalnone>"; $__fnx .= "<subtype>"; if (exists $__fmq->{'_rf'}) { $__fnx .= "constantsum"; } elsif (exists $__fmq->{'_rr'}) { $__fnx .= "bestworst"; } else { $__fnx .= "discretechoice"; } $__fnx .= "</subtype>"; if (exists $__fmq->{'_rf'}) { $__fnx .= "<constantsum>"; $__fnx .= "<consum>" . $__fmq->{'_rf'}->{'_akj'} . "</consum>"; $__fnx .= "<min>" . $__fmq->{'_rf'}->{'_bgp'} . "</min>"; $__fnx .= "<max>" . $__fmq->{'_rf'}->{'_aop'} . "</max>"; $__fnx .= "<decimal>" . (exists $__fmq->{'_rf'}->{'_aoe'} ? "true" : "false") . "</decimal>"; $__fnx .= "<wholereq>" . (exists $__fmq->{'_rf'}->{'_aks'} ? "true" : "false") . "</wholereq>"; $__fnx .= "</constantsum>"; } $__fnx .= "<shelfdisplay>" . (exists $__fmq->{'_sl'} ? "true" : "false") . "</shelfdisplay>"; $__fnx .= "</question>-->"; } my %__fov = (); $__fov{'_chr'} = $__fnw; $__fow->{'_bmm'} = \%__fov; return $__fnx; } sub _cgl { my($__fpc) = @_; my $__fpb = ""; $__fpb .= "<td class=\"cell_between_concepts\""; if ($__fpc) { $__fpb .= " rowspan=\"" . $__fpc . "\""; } $__fpb .= "><div class=\"spacer_between_concepts\"></div></td>\n"; return $__fpb; } sub _cgm { my($__fpi, $__fpj, $__fpk, $__fpl, $__fpm, $__fpn, $__fpo, $__fpp, $__fpq) = @_; my $__fpd = ""; $__fpd .= "<tr class=\"concept_labels_row"; if($__fpk) { $__fpd .= " labels_above_input first_input_row"; } $__fpd .= "\">"; if ($__fpm) { $__fpd .= "<td class=\"top_corner_label_cell\">"; if(exists $__fpj->{'_qp'}) { my $__fpe = $__fpj->{'_qp'}->{'_bft'}; $__fpe = _cgx($__fpj, $__fpo, $__fpp, $__fpe); $__fpd .= $__fpe; } else { $__fpd .= "&nbsp;"; } $__fpd .= "</td>"; } my $__fpf = ""; my $__fpg = 0; if (exists $__fpj->{'_qz'}) { $__fpg = @{$__fpj->{'_qz'}->{'_bbw'}}; } my $__fph = 0; for($__fph = 0; $__fph < $__fpl; $__fph++) { if($__fpi < $__fpg) { $__fpf = $__fpj->{'_qz'}->{'_bbw'}->[$__fpi]; $__fpd .= "<td class=\"concept_label_cell\">" . $__fpf . "</td>"; $__fpi++; } else { $__fpd .= "<td>&nbsp;</td>"; } if(!$__fpk && $__fpn && $__fph < ($__fpl - 1)) { $__fpd .= _cgl($__fpq); } } $__fpd .= "</tr>"; return $__fpd; } sub _bmg { my($__fqc, $__fqd, $__fqe, $__fqf) = @_; my $__fpr = $__fqc->{'_bkt'}; my $__fps = 0; my $__fpt = 0; my $__fpu = $__fqc->{'_bgt'}; my $__fpv = $__fqc->{'_bgt'}; my $__fpw = ""; if (exists $__fqc->{'_bmm'}) { my $__fpx = $__fqc->{'_bmm'}; if (exists $__fpx->{'_chr'}) { $__fps = $__fpx->{'_chr'}; } if (exists $__fpx->{'_chs'}) { $__fpt = 1; if (exists $__fpx->{'_cht'}) { $__fpu = $__fpx->{'_cht'}; $__fqf--; } if (exists $__fpx->{'_chu'}) { $__fpv = $__fpx->{'_chu'}; } } if (exists $__fpr->{'_rf'}) { my $__fpy = $__fpr->{'_rf'}; $__fpy->{'_bkv'} = $__fps; $__fpy->{'_bdq'} = 1; if ($__fpt) { $__fpy->{'_bln'} = $__fpu . "*"; } else { $__fpy->{'_bln'} = $__fpu . "_*"; } if (exists $__fpr->{'_bds'}) { $__fpy->{'_bds'} = $__fpr->{'_bds'}; } ciwlib8_4_8::_bjm($__fpy, $__fpv, $__fqd, $__fqe, $__fqf); } elsif (exists $__fpr->{'_rr'}) { my $__fpz = "_b"; my $__fqa = "_w"; if($__fpt) { $__fpz = "best"; $__fqa = "worst"; } $__fpw = "SSI_RadCheck(\"" . $__fpu . $__fpz . "\",\"" . $__fpv . "\",\""; if (exists $__fpr->{'_bds'}) { $__fpw .= ciwlib8_4_8::_bjo($__fpr->{'_bds'}); } $__fpw .= "\"," . $__fqf . ", true)"; push @{$__fqd}, ($__fpw); $__fpw = "SSI_RadCheck(\"" . $__fpu . $__fqa . "\",\"" . $__fpv . "\",\""; if (exists $__fpr->{'_bds'}) { $__fpw .= ciwlib8_4_8::_bjo($__fpr->{'_bds'}); } $__fpw .= "\"," . $__fqf . ", true)"; push @{$__fqd}, ($__fpw); $__fqe->{'_bli'} = 1; $__fpw = "SSI_CheckCBCUnique(\"" . $__fpu . "\", \"" . $__fpv . "\", \"" . $__fpz . "\", \"" . $__fqa . "\", \"" . ciwlib8_4_8::_bjo($__fpr->{'_bds'}) . "\", " . $__fqf . ")"; push @{$__fqd}, $__fpw; $__fqe->{'_fj'} = 1; } else { $__fpw = "SSI_RadCheck(\"" . $__fpu . "\",\"" . $__fpv . "\",\""; if (exists $__fpr->{'_bds'}) { $__fpw .= ciwlib8_4_8::_bjo($__fpr->{'_bds'}); } $__fpw .= "\"," . $__fqf . ", true)"; push @{$__fqd}, ($__fpw); $__fqe->{'_bli'} = 1; } if (exists $__fpr->{'_pp'}) { my $__fqb = $__fpu; if ($__fpt) { $__fqb =~ s/^(.*?)_(.*?)$/$1_none/; } else { $__fqb .= "_none"; } $__fpw = "SSI_RadCheck(\"" . $__fqb . "\",\"" . $__fpv . "\",\""; if (exists $__fpr->{'_pp'}->{'_bds'}) { $__fpw .= ciwlib8_4_8::_bjo($__fpr->{'_pp'}->{'_bds'}); } $__fpw .= "\"," . $__fqf . ", true)"; push @{$__fqd}, ($__fpw); $__fqe->{'_bli'} = 1; } } } sub _cgn { my($__fqv, $__fqw) = @_; my $__fqg = ""; my $__fqh = $__fqv->{'_bkt'}; if (exists $__fqh->{'_bfd'}) { my $__fqi = $__fqh->{'_bfd'}->{'_bft'}; if ($__fqi =~ m/<!--(.*?)SSI_Comment:\s*CUSTOM_CBC_DESIGN(.*?)-->/is) { my $__fqj = $2; my $__fqk = ""; my $__fql = ""; my $__fqm = 0; if ($__fqj =~ m/Free_Format_Base_Name:\s*(.*?)\s/is) { $__fqk = $1; if (!exists($authlib8_4_8::_bwq{$__fqk . "Random1"}) && !exists($authlib8_4_8::_bwq{$__fqk . "Fixed1"})) { $__fqm = 1; if ($authlib8_4_8::_bzy == 0) { authlib8_4_8::_bqa(147, "Custom CBC error.", "Cannot find the question " . $__fqk . "Random1 or " . $__fqk . "Fixed1, in the question list. Please check the Free_Format_Base_Name in the CUSTOM_CBC_DESIGN comment.", ""); } } } else { $__fqm = 1; if ($authlib8_4_8::_bzy == 0) { authlib8_4_8::_bqa(148, "Custom CBC error.", "Cannot find the Free_Format_Base_Name instruction in the CUSTOM_CBC_DESIGN comment. Check syntax.", ""); } } if ($__fqj =~ m/Free_Format_Variable_Name:\s*(.*?)\s/is) { $__fql = $1; } else { $__fqm = 1; if ($authlib8_4_8::_bzy == 0) { authlib8_4_8::_bqa(149, "Custom CBC error.", "Cannot find the Free_Format_Variable_Name instruction in the CUSTOM_CBC_DESIGN comment. Check syntax.", ""); } } if (!$__fqm) { my $__fqn = 1; my $__fqo = ""; if ($__fqj =~ m/Verification:\s*(.*?)\s/is) { $__fqo = $1; if ($__fqo =~ m/^OFF$/i) { $__fqn = 0; } } my $__fqp = $__fqw; $__fqp =~ s/^(.*?)_//i; my $__fqq = $__fqk . $__fqp; my $__fqr = $__fqq . "_" . $__fql; $__fqg .= "<input type=\"hidden\" name=\"hid_Custom_CBC_" . $__fqw . "\" value=\"" . $__fqr . "\">"; $__fqg .= "<input type=\"hidden\" name=\"" . $__fqw . "\" value=\"\">"; if ($__fqn == 0) { $__fqr = ""; $__fqg .= "<input type=\"hidden\" name=\"hid_Custom_CBC_" . $__fqw . "_No_Verification\" value=\"1\">"; } my $__fqs = $__fqh->{'_os'}; if (exists($__fqh->{'_pm'})) { $__fqs++; } if ($authlib8_4_8::_byb) { my $__fqs = $__fqh->{'_os'}; if (exists $__fqh->{'_pm'}) { $__fqs++; } $__fqg .= "<!--LoadTestMode: <question><name>$__fqw</name><type>customcbc</type>"; $__fqg .= "<freeformquest>" . $__fqq . "</freeformquest>"; $__fqg .= "<freeformvars>" . ($__fqq . "_" . $__fql) . "</freeformvars>"; $__fqg .= "<min>1</min><max>" . $__fqs . "</max>"; $__fqg .= "<dualresponsenone>" . (exists $__fqh->{'_pp'} ? "true" : "false") . "</dualresponsenone>"; $__fqg .= "<traditionalnone>" . (exists $__fqh->{'_pm'} ? "true" : "false") . "</traditionalnone>"; $__fqg .= "<subtype>"; if (exists $__fqh->{'_rf'}) { $__fqg .= "constantsum"; } elsif (exists $__fqh->{'_rr'}) { $__fqg .= "bestworst"; } else { $__fqg .= "discretechoice"; } $__fqg .= "</subtype>"; if (exists $__fqh->{'_rf'}) { $__fqg .= "<constantsum>"; $__fqg .= "<consum>" . $__fqh->{'_rf'}->{'_akj'} . "</consum>"; $__fqg .= "<min>" . $__fqh->{'_rf'}->{'_bgp'} . "</min>"; $__fqg .= "<max>" . $__fqh->{'_rf'}->{'_aop'} . "</max>"; $__fqg .= "<decimal>" . (exists $__fqh->{'_rf'}->{'_aoe'} ? "true" : "false") . "</decimal>"; $__fqg .= "<wholereq>" . (exists $__fqh->{'_rf'}->{'_aks'} ? "true" : "false") . "</wholereq>"; $__fqg .= "</constantsum>"; } $__fqg .= "</question>-->"; } my $__fqt = authlib8_4_8::_btp($__fqs); my %__fqu = (); if ($__fqn) { $__fqu{'_chs'} = 1; $__fqu{'_cht'} = $__fqr; $__fqu{'_chu'} = $__fqq; $__fqu{'_chr'} = $__fqt; $__fqv->{'_bmm'} = \%__fqu; } } } } return $__fqg; } sub _cgo { my($__fre, $__frf, $__frg) = @_; my $__fqx = @{$__fre->[$__frf]->{'_chq'}}; my $__fqy = ""; my $__fqz = 0; my $__fra = 0; my $__frb = 0; my $__frc = 0; my @__frd = (); if (exists $__frg->{'_ara'}) { if (exists($__frg->{'_ara'}->{'_wu'})) { $__fra = _cgp($__frg->{'_ara'}->{'_wu'}, $__frg->{'_cho'}); } if (exists($__frg->{'_ara'}->{'_wv'})) { $__fqz = _cgp($__frg->{'_ara'}->{'_wv'}, $__frg->{'_chp'}); } } for ($__frb = 0; $__frb < $__fqx; $__frb++) { $__fqy = ""; $__frc = $__fre->[$__frf]->{'_chq'}->[$__frb]->[0]; if ($__frc eq "C-T") { if ($__fra != 0 && @{$__fra}) { $__fqy = shift @{$__fra}; } } elsif ($__frc eq "C-B") { if ($__fqz != 0 && @{$__fqz}) { $__fqy = shift @{$__fqz}; } } else { if ($__frc =~ m/^C-(\d+)/i) { $__frc = $1; } $__fqy = $__frg->{'_asc'}->[$__frc]->{'_bgt'}; } $__fqy = authlib8_4_8::_bqf($__fqy, 0); push @__frd, $__fqy; } return \@__frd; } sub _cgp { my($__frj, $__frk) = @_; my @__frh = (); my $__fri = 0; for ($__fri = 0; $__fri < @{$__frj}; $__fri++) { if (exists $__frk->{$__fri + 1}) { next; } else { push @__frh, $__frj->[$__fri]; } } return \@__frh; } sub _cgq { my ($__fwy, $__fwz) = @_; my $__frl = $__fwz->{'_oa'}; my $__frm = $authlib8_4_8::_bzi{"hid_respnum"}; my $__frn = $__frl->{'_oc'}; my $__fro = $__frl->{'_od'}; my @__frp = @{$__fwz->{'_asc'}}; my @__frq = (); if (exists $__frl->{'_aqj'}) { @__frq = @{$__frl->{'_aqj'}}; } my $__frr = 0; my $__frs = 0; my $__frt = 7919 * $__frm; my $__fru = @__frp; my $__frv = $__frn * $__fro; my $__frw = @__frq > 0; my $__frx = $__frn >= 4; my @__fry = (); my $__frz = 0; my @__fsa = (); my @__fsb = (); my @__fsc = (); my @__fsd = (); my @__fse = (); my @__fsf = (); my @__fsg = (); my @__fsh = (); my $__fsi = 0; my $__fsj = 1.1; my @__fsk = (); my @__fsl = (); my @__fsm = (); my $__fsn = (($__frn * ($__frn - 1)) / 2) * 100; my $__fso = ($__frn % 2); if ($authlib8_4_8::_bzy) { if ($__frn == 0) { return [[1, 1]]; } if ($__fro == 0) { return [[1, 1]]; } if ($__fru == 1 && @{$__frp[0]->{'_bca'}} == 0) { my @__fsp = ([1, 1]) x $__frn; return \@__fsp; } } authlib8_4_8::_bsj($__frt); for ($__frr = 0; $__frr < $__fru; $__frr++) { push (@__fsh, $__fsn); push (@__fsa, scalar @{$__frp[$__frr]->{'_bca'}}); push (@__fsb, $__frz); my @__fsq = (0) x $__fsa[$__frr]; if ($__fsa[$__frr] == 2 && $__fso) { $__fsl[$__frr] = 0; } my $__fsr = 0; for ($__frs = 0, $__fsr = 0; $__frs < $__frn; $__frs++) { $__fsq[$__fsr]++; $__fsr = ($__fsr + 1) % $__fsa[$__frr]; } my $__fss = 0; for ($__frs = 0; $__frs < @__fsq; $__frs++) { $__fss += ($__fsq[$__frs] * ($__fsq[$__frs] - 1)) / 2; } push (@__fse, $__fss); $__frz += $__fsa[$__frr]; push (@__fsl, $__frp[$__frr]->{'_ny'}); my @__fst = (1..$__fsa[$__frr]); push(@__fsm, \@__fst); my @__fsu = (0..($__fsa[$__frr] - 1)); authlib8_4_8::_bnr(\@__fsu); push (@__fsg, \@__fsu); if ($__frp[$__frr]->{'_nx'} == &authlib8_4_8::_CDF) { my @__fsv = (); for ($__frs = 0; $__frs < $__fsa[$__frr]; $__frs++) { push(@__fsv, $__fsm[$__frr]->[$__frs]); } push(@__fsk, \@__fsv); } elsif ($__frp[$__frr]->{'_nx'} == &authlib8_4_8::_CDG) { my @__fsv = (); for ($__frs = $__fsa[$__frr] - 1; $__frs >= 0; $__frs--) { push(@__fsv, $__fsm[$__frr]->[$__frs]); } push(@__fsk, \@__fsv); } elsif ($__frp[$__frr]->{'_nx'} == &authlib8_4_8::_CDE) { my @__fsv = (); for ($__frs = 1; $__frs <= $__fsa[$__frr]; $__frs++) { my $__fsw = authlib8_4_8::_bnc($__fwy . '_Rating' . ($__frr + 1) . '_' . $__frs); if ($__fsw ne "") { push(@__fsv, $__fsw); } else { push(@__fsv, 0); } } push(@__fsk, \@__fsv); } elsif ($__frp[$__frr]->{'_nx'} == &authlib8_4_8::_CDH) { my @__fsv = (0) x $__fsa[$__frr]; push (@__fsk, \@__fsv); } my @__fsx = sort {$a <=> $b} grep { $_ != 0 } @{$__fsk[$__frr]}; if (@__fsx == 0) { $__fsi++; push (@__fry, {}); } elsif ($__fsx[0] == $__fsx[-1]) { $__fsi++; push (@__fry, {$__fsx[0] => scalar @__fsx, '_bgp' => $__fsx[0], '_aop' => $__fsx[0]}); } else { my %__fsy = (); foreach $__frs (@__fsx) { $__fsy{$__frs}++; } $__fsy{'_bgp'} = $__fsx[0]; $__fsy{'_aop'} = $__fsx[-1]; push (@__fry, \%__fsy); } } my @__fsz = (); my @__fta = (); my @__ftb = (); my @__ftc = (0) x $__fru; my @__ftd = (0 .. ($__fru - 1)); authlib8_4_8::_bnr(\@__ftd); if ($authlib8_4_8::_bzy == 0) { for ($__frr = 0; $__frr < $__frz; $__frr++) { my @__fsv = (0) x $__frz; push (@__fsf, \@__fsv); my @__fsu = @__fsv; push (@__fsd, \@__fsu); } foreach my $__fte (@__frq) { foreach my $__ftf (@{$__fte}) { $__fsh[$__ftf->[0] - 1] = 0; } } my @__ftg = grep { @{$_} == 2 } @__frq; for ($__frr = 0; $__frr < $__fru; $__frr++) { my $__fth = $__fsb[$__frr]; my $__fti = $__frv / $__fsa[$__frr]; for ($__frs = 0; $__frs < $__fsa[$__frr]; $__frs++) { $__fsd[$__fth]->[$__fth] = $__fti; $__fsf[$__fth]->[$__fth] = ($__fti * $__fti) * $__fsj; for (my $__fsr = $__frr + 1; $__fsr < $__fru; $__fsr++) { my $__ftj = $__fsb[$__fsr]; my $__ftk = $__fsa[$__frr] * $__fsa[$__fsr]; foreach my $__ftl (@__ftg) { my $__ftm = $__ftl->[0]->[0] - 1; my $__ftn = $__ftl->[1]->[0] - 1; $__ftk-- if (($__ftm == $__frr && $__ftn == $__fsr) || ($__ftn == $__frr && $__ftm == $__fsr)); } my $__fto = $__frv / $__ftk; for (my $__ftp = 0; $__ftp < $__fsa[$__fsr]; $__ftp++) { my $__ftq = 0; foreach my $__ftl (@__ftg) { my $__ftm = $__ftl->[0]->[0] - 1; my $__ftn = $__ftl->[1]->[0] - 1; my $__ftr = $__ftl->[0]->[1] - 1; my $__fts = $__ftl->[1]->[1] - 1; if (($__ftm == $__frr && $__ftn == $__fsr && $__ftr == $__frs && $__fts == $__ftp) || ($__ftn == $__frr && $__ftm == $__fsr && $__fts == $__frs && $__ftr == $__ftp)) { $__ftq = 1; last; } } unless ($__ftq) { $__fsd[$__fth]->[$__ftj] = $__fto; $__fsf[$__fth]->[$__ftj] = $__fto * $__fto; } $__ftj++; } } $__fth++; } } } my $__ftt = $__fsi != $__fru; my $__ftu = 20000; my $__ftv = 1000; my $__ftw = 2000; my $__ftx = 1; my $__fty = 0; my $__ftz = 0; my $__fua = 0; my @__fub = (); my @__fuc = (); my $__fud = 0; my $__fue = 0; my @__fuf = (); my @__fug = (); my $__fuh = 0; my $__fui = 0; my $__fuj = 0; my $__fuk = 0; my %__ful = (); my @__fum = (0..($__frv - 1)); my $__fun = 0; my $__fuo = 0; my $__fup = 0; my $__fuq = 0; my $__fur = 0; my $__fus = 0.01; if ($authlib8_4_8::_bzy) { $__ftw = 1; $__ftv = 20; $__ftu = 200; } else { $__ful{'_chv'} = { 'VsCounts' => authlib8_4_8::_bsp(\@__fsf), }; eval { require "Time/HiRes.pm"; }; if ($@) { authlib8_4_8::_bqa(0, "Unable to load Time/HiRes.pm<br/><br/>", $@, ""); } $__fup = [Time::HiRes::gettimeofday()]; } while ($__fun < $__ftw && !$__fuo) { $__fua = 0; $__fud = 0; @__fub = (0..($__fro - 1)); @__fuc = (); for ($__frr = 0; $__frr < $__fro; $__frr++) { push (@__fuc, []); } if ($authlib8_4_8::_bzy == 0) { $__fue = 0; $__fuh = 0; $__fui = 0; $__fuj = 0; @__fsf = @{authlib8_4_8::_bsp($__ful{'_chv'}->{'VsCounts'})}; @__fuf = (); @__fug = (); @__fsz = (1) x $__fru; @__fta = (0) x $__fru; @__ftb = (0) x $__fru; @__fsc = (); for ($__frr = 0; $__frr < $__frz; $__frr++) { my @__fsv = (0) x $__frz; push (@__fsc, \@__fsv); } } while ($__fud < $__frv) { $__ftx = 1; $__fty = 0; my @__fut = (0); push (@__fut, (0) x $__fru); my $__fuu = -1; $__ftt = $__fsi != $__fru; while ($__ftx) { $__ftz = 0; if ($__ftt && $__fty == $__ftv) { $__ftt = 0; authlib8_4_8::_bpz($__fwy, "Cannot create a new concept after " . $__ftv . " iterations. Turning off avoid dominated concepts code."); } elsif ($__fty >= $__ftu) { $__fua = 1; authlib8_4_8::_bpz($__fwy, "Cannot create a new concept after " . $__ftu . " iterations. Proceeding with " . $__fud . " concepts."); last; } for ($__frr = 0; $__frr < $__fru; $__frr++) { $__fut[$__frr + 1] = $__fsm[$__frr]->[_chc(\@__fsg, \@__ftc, $__frr)]; } if ($__frw) { $__ftz = _chg(\@__fut, \@__frq); } if (!$__ftz && $__ftt) { $__ftz = _chd(\@__fut, \@__fsk, \@__fry); } unless ($__ftz) { $__frr = 0; while ($__frr < @__fub) { my $__fuv = $__fuc[$__fub[$__frr]]; if (_chi($__fuv, \@__fut, -1)) { $__frr++; next; } if ($__ftt) { if (_chf($__fuv, \@__fut, \@__fsk)) { $__frr++; next; } if ($__frx && _chh($__fuv, \@__fut, -1)) { $__frr++; next; } } $__fuu = $__fub[$__frr]; last; } } if ($__fuu == -1 || $__ftz) { $__fty++; } else { $__ftx = 0; } } if ($__fua) { last; } my $__fuw = $__fuc[$__fuu]; if ($authlib8_4_8::_bzy == 0) { for ($__frr = 0; $__frr < $__fru; $__frr++) { my $__fth = $__fsb[$__frr] + $__fut[$__frr + 1] - 1; my $__fux = $__fsc[$__fth]; my $__fuy = $__fsd[$__fth]; my $__fuz = $__fsf[$__fth]; for ($__frs = $__frr; $__frs < $__fru; $__frs++) { my $__ftj = $__fsb[$__frs] + $__fut[$__frs + 1] - 1; $__fux->[$__ftj]++; my $__fva = ($__fux->[$__ftj] - $__fuy->[$__ftj]) ** 2; $__fva *= $__fsj if ($__fth == $__ftj); $__fuz->[$__ftj] = $__fva; } } for ($__frr = 0; $__frr < @{$__fuw}; $__frr++) { for ($__frs = 0; $__frs < $__fru; $__frs++) { if ($__fut[$__frs + 1] == $__fuw->[$__frr]->[$__frs + 1]) { $__fta[$__frs]++; } } } } push (@{$__fuw}, \@__fut); $__fud++; if (@{$__fuw} == $__frn) { my $__fvb = _cha($__fuu, \@__fub); splice(@__fub, $__fvb, 1); } } my @__fvc = (); if ($authlib8_4_8::_bzy == 0) { $__ftt = $__fsi != $__fru; for ($__frr = 0; $__frr < $__fru; $__frr++) { my $__fvd = $__fta[$__frr] / $__fro; $__fsz[$__frr] = ($__fvd + 1) / ($__fse[$__frr] + 1); my $__fto = abs($__fsz[$__frr] - (1 + $__fsl[$__frr])); push (@__fuf, $__fto); $__fuh += $__fto; if ($__fsl[$__frr] == 0 && $__fvd > $__fse[$__frr]) { $__ftb[$__frr] = $__fvd * $__fsh[$__frr]; } $__fui += $__ftb[$__frr]; } for ($__frr = 0; $__frr < $__frz; $__frr++) { my $__fuz = $__fsf[$__frr]; for ($__frs = $__frr; $__frs < $__frz; $__frs++) { $__fue += $__fuz->[$__frs]; } } if ($__ftt) { for ($__frr = 0; $__frr < $__fro; $__frr++) { my $__fuw = $__fuc[$__frr]; my $__fto = _che($__fuw, \@__fsk); push (@__fug, int($__fto * 100)); $__fuj += $__fug[$__frr]; } } else { @__fug = (0) x $__fro; } $__fuh += $__fus; $__fuk = _cgr($__fuh, $__fue, $__fui, $__fuj); $__fuq = $__fuk; $__fur = 1; $__fuo = _chb($__fup); while ($__fur && !$__fuo) { $__fur = 0; authlib8_4_8::_bnr(\@__fum); for (my $__fve = 0; $__fve < $__frv && !$__fuo; $__fve++) { $__frr = int($__fum[$__fve] / $__frn); $__frs = int($__fum[$__fve] % $__frn); my $__fuw = $__fuc[$__frr]; my $__fvf = $__fuw->[$__frs]; authlib8_4_8::_bnr(\@__ftd); for (my $__fvg = 0; $__fvg < $__fru && !$__fuo; $__fvg++) { my $__fvh = $__ftd[$__fvg]; my $__fvi = $__fvf->[$__fvh + 1]; my $__fvj = $__fvi; my @__fvk = @{$__fvf}; my %__fvl = (); for (my $__fvm = 0; $__fvm < $__fsa[$__fvh]; $__fvm++) { if ($__fsm[$__fvh]->[$__fvm] != $__fvi) { $__fvk[$__fvh + 1] = $__fsm[$__fvh]->[$__fvm]; if ($__frw && _chg(\@__fvk, \@__frq)) { next; } if (_chi($__fuw, \@__fvk, $__frs)) { next; } if ($__ftt) { if ($__frx && _chh($__fuw, \@__fvk, $__frs)) { next; } } my $__fvn = $__fsb[$__fvh] + $__fvi - 1; my $__fvo = $__fsb[$__fvh] + $__fsm[$__fvh]->[$__fvm] - 1; my $__fvp = $__fue; my $__fva = 0; for (my $__fvq = 0; $__fvq < $__fvh; $__fvq++) { my $__fth = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; $__fvp -= $__fsf[$__fth]->[$__fvn]; $__fvp -= $__fsf[$__fth]->[$__fvo]; $__fva = (($__fsc[$__fth]->[$__fvn] - 1) - $__fsd[$__fth]->[$__fvn]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fth]->[$__fvo] + 1) - $__fsd[$__fth]->[$__fvo]) ** 2; $__fvp += $__fva; } $__fvp -= $__fsf[$__fvn]->[$__fvn]; $__fvp -= $__fsf[$__fvo]->[$__fvo]; $__fva = (($__fsc[$__fvn]->[$__fvn] - 1) - $__fsd[$__fvn]->[$__fvn]) ** 2; $__fvp += $__fva * $__fsj; $__fva = (($__fsc[$__fvo]->[$__fvo] + 1) - $__fsd[$__fvo]->[$__fvo]) ** 2; $__fvp += $__fva * $__fsj; for (my $__fvq = $__fvh + 1; $__fvq < $__fru; $__fvq++) { my $__ftj = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; $__fvp -= $__fsf[$__fvn]->[$__ftj]; $__fvp -= $__fsf[$__fvo]->[$__ftj]; $__fva = (($__fsc[$__fvn]->[$__ftj] - 1) - $__fsd[$__fvn]->[$__ftj]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fvo]->[$__ftj] + 1) - $__fsd[$__fvo]->[$__ftj]) ** 2; $__fvp += $__fva; } my $__fvr = 0; my $__fvs = 0; for (my $__fvt = 0; $__fvt < $__frn; $__fvt++) { next if ($__fvt == $__frs); if ($__fuw->[$__fvt]->[$__fvh + 1] == $__fvi) { $__fvr++; } if ($__fuw->[$__fvt]->[$__fvh + 1] == $__fsm[$__fvh]->[$__fvm]) { $__fvs++; } } my $__fvd = ($__fta[$__fvh] - $__fvr + $__fvs) / $__fro; my $__fvu = ($__fvd + 1) / ($__fse[$__fvh] + 1); my $__fvv = abs($__fvu - (1 + $__fsl[$__fvh])); my $__fvw = $__fuh - $__fuf[$__fvh] + $__fvv; my $__fvx = 0; if ($__fsl[$__fvh] == 0 && $__fvd > $__fse[$__fvh]) { $__fvx = $__fvd * $__fsh[$__fvh]; } my $__fvy = $__fui - $__ftb[$__fvh] + $__fvx; my $__fvz = 0; if ($__ftt) { $__fvf->[$__fvh + 1] = $__fsm[$__fvh]->[$__fvm]; my $__fto = _che($__fuw, \@__fsk); $__fvf->[$__fvh + 1] = $__fvi; $__fvz = int($__fto * 100); } my $__fwa = $__fuj - $__fug[$__frr] + $__fvz; my $__fwb = _cgr($__fvw, $__fvp, $__fvy, $__fwa); if ($__fwb < $__fuq) { $__fvj = $__fsm[$__fvh]->[$__fvm]; $__fuq = $__fwb; $__fvl{$__fsm[$__fvh]->[$__fvm]} = [$__fvp, $__fvw, $__fvy, $__fwa, $__fvu, ($__fta[$__fvh] - $__fvr + $__fvs), $__fvx, $__fvv, $__fvz]; } } } if ($__fvj != $__fvi) { $__fur = 1; ($__fue, $__fuh, $__fui, $__fuj, $__fsz[$__fvh], $__fta[$__fvh], $__ftb[$__fvh], $__fuf[$__fvh], $__fug[$__frr]) = @{$__fvl{$__fvj}}; $__fuk = $__fuq; $__fvf->[$__fvh + 1] = $__fvj; my $__fvn = $__fsb[$__fvh] + $__fvi - 1; my $__fvo = $__fsb[$__fvh] + $__fvj - 1; my $__fva = 0; for (my $__fvq = 0; $__fvq < $__fvh; $__fvq++) { my $__fth = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; $__fsc[$__fth]->[$__fvn]--; $__fva = ($__fsc[$__fth]->[$__fvn] - $__fsd[$__fth]->[$__fvn]) ** 2; $__fsf[$__fth]->[$__fvn] = $__fva; $__fsc[$__fth]->[$__fvo]++; $__fva = ($__fsc[$__fth]->[$__fvo] - $__fsd[$__fth]->[$__fvo]) ** 2; $__fsf[$__fth]->[$__fvo] = $__fva; } $__fsc[$__fvn]->[$__fvn]--; $__fva = ($__fsc[$__fvn]->[$__fvn] - $__fsd[$__fvn]->[$__fvn]) ** 2; $__fsf[$__fvn]->[$__fvn] = $__fva * $__fsj; $__fsc[$__fvo]->[$__fvo]++; $__fva = ($__fsc[$__fvo]->[$__fvo] - $__fsd[$__fvo]->[$__fvo]) ** 2; $__fsf[$__fvo]->[$__fvo] = $__fva * $__fsj; for (my $__fvq = $__fvh + 1; $__fvq < $__fru; $__fvq++) { my $__ftj = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; $__fsc[$__fvn]->[$__ftj]--; $__fva = ($__fsc[$__fvn]->[$__ftj] - $__fsd[$__fvn]->[$__ftj]) ** 2; $__fsf[$__fvn]->[$__ftj] = $__fva; $__fsc[$__fvo]->[$__ftj]++; $__fva = ($__fsc[$__fvo]->[$__ftj] - $__fsd[$__fvo]->[$__ftj]) ** 2; $__fsf[$__fvo]->[$__ftj] = $__fva; } } $__fuo = _chb($__fup); } } for ($__frr = 0; $__frr < $__fro && !$__fuo; $__frr++) { my $__fuw = $__fuc[$__frr]; for ($__frs = 0; $__frs < $__frn && !$__fuo; $__frs++) { my $__fvf = $__fuw->[$__frs]; for (my $__fsr = $__frs + 1; $__fsr < $__frn && !$__fuo; $__fsr++) { my %__fvl = (); my $__fwc = -1; my $__fwd = $__fuw->[$__fsr]; authlib8_4_8::_bnr(\@__ftd); for (my $__fvg = 0; $__fvg < $__fru; $__fvg++) { my $__fvh = $__ftd[$__fvg]; my $__fwe = 0; my $__fwf = $__fvf->[$__fvh + 1]; my $__fwg = $__fwd->[$__fvh + 1]; next if ($__fwf == $__fwg); $__fvf->[$__fvh + 1] = $__fwg; $__fwd->[$__fvh + 1] = $__fwf; if ($__frw) { $__fwe = _chg($__fwd, \@__frq) || _chg($__fvf, \@__frq); } if (!$__fwe) { $__fwe = _chi($__fuw, $__fwd, $__fsr) || _chi($__fuw, $__fvf, $__frs); } if ($__fwe) { $__fvf->[$__fvh + 1] = $__fwf; $__fwd->[$__fvh + 1] = $__fwg; next; } my $__fwh = $__fsb[$__fvh] + $__fwf - 1; my $__fwi = $__fsb[$__fvh] + $__fwg - 1; my $__fvp = $__fue; my $__fva = 0; for (my $__fvq = 0; $__fvq < $__fvh; $__fvq++) { my $__fwj = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; my $__fwk = $__fsb[$__fvq] + $__fwd->[$__fvq + 1] - 1; $__fvp -= $__fsf[$__fwj]->[$__fwh]; $__fvp -= $__fsf[$__fwj]->[$__fwi]; $__fvp -= $__fsf[$__fwk]->[$__fwh]; $__fvp -= $__fsf[$__fwk]->[$__fwi]; $__fva = (($__fsc[$__fwj]->[$__fwh] - 1) - $__fsd[$__fwj]->[$__fwh]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fwk]->[$__fwi] - 1) - $__fsd[$__fwk]->[$__fwi]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fwj]->[$__fwi] + 1) - $__fsd[$__fwj]->[$__fwi]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fwk]->[$__fwh] + 1) - $__fsd[$__fwk]->[$__fwh]) ** 2; $__fvp += $__fva; } for (my $__fvq = $__fvh + 1; $__fvq < $__fru; $__fvq++) { my $__fwl = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; my $__fwm = $__fsb[$__fvq] + $__fwd->[$__fvq + 1] - 1; $__fvp -= $__fsf[$__fwh]->[$__fwl]; $__fvp -= $__fsf[$__fwh]->[$__fwm]; $__fvp -= $__fsf[$__fwi]->[$__fwl]; $__fvp -= $__fsf[$__fwi]->[$__fwm]; $__fva = (($__fsc[$__fwh]->[$__fwl] - 1) - $__fsd[$__fwh]->[$__fwl]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fwi]->[$__fwm] - 1) - $__fsd[$__fwi]->[$__fwm]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fwh]->[$__fwm] + 1) - $__fsd[$__fwh]->[$__fwm]) ** 2; $__fvp += $__fva; $__fva = (($__fsc[$__fwi]->[$__fwl] + 1) - $__fsd[$__fwi]->[$__fwl]) ** 2; $__fvp += $__fva; } my $__fvz = 0; if ($__ftt) { my $__fto = _che($__fuw, \@__fsk); $__fvz = int($__fto * 100); } my $__fwa = $__fuj - $__fug[$__frr] + $__fvz; my $__fwb = _cgr($__fuh, $__fvp, $__fui, $__fwa); if ($__fwb < $__fuq) { $__fwc = $__fvh; $__fuq = $__fwb; $__fvl{$__fvh} = [$__fvp, $__fwa, $__fvz]; } $__fvf->[$__fvh + 1] = $__fwf; $__fwd->[$__fvh + 1] = $__fwg; } if ($__fwc != -1) { $__fur = 1; ($__fue, $__fuj, $__fug[$__frr]) = @{$__fvl{$__fwc}}; $__fuk = $__fuq; my $__fwf = $__fvf->[$__fwc + 1]; my $__fwg = $__fwd->[$__fwc + 1]; $__fvf->[$__fwc + 1] = $__fwg; $__fwd->[$__fwc + 1] = $__fwf; my $__fwh = $__fsb[$__fwc] + $__fwf - 1; my $__fwi = $__fsb[$__fwc] + $__fwg - 1; my $__fva = 0; for (my $__fvq = 0; $__fvq < $__fwc; $__fvq++) { my $__fwj = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; my $__fwk = $__fsb[$__fvq] + $__fwd->[$__fvq + 1] - 1; $__fsc[$__fwj]->[$__fwh]--; $__fva = ($__fsc[$__fwj]->[$__fwh] - $__fsd[$__fwj]->[$__fwh]) ** 2; $__fsf[$__fwj]->[$__fwh] = $__fva; $__fsc[$__fwk]->[$__fwi]--; $__fva = ($__fsc[$__fwk]->[$__fwi] - $__fsd[$__fwk]->[$__fwi]) ** 2; $__fsf[$__fwk]->[$__fwi] = $__fva; $__fsc[$__fwj]->[$__fwi]++; $__fva = ($__fsc[$__fwj]->[$__fwi] - $__fsd[$__fwj]->[$__fwi]) ** 2; $__fsf[$__fwj]->[$__fwi] = $__fva; $__fsc[$__fwk]->[$__fwh]++; $__fva = ($__fsc[$__fwk]->[$__fwh] - $__fsd[$__fwk]->[$__fwh]) ** 2; $__fsf[$__fwk]->[$__fwh] = $__fva; } for (my $__fvq = $__fwc + 1; $__fvq < $__fru; $__fvq++) { my $__fwl = $__fsb[$__fvq] + $__fvf->[$__fvq + 1] - 1; my $__fwm = $__fsb[$__fvq] + $__fwd->[$__fvq + 1] - 1; $__fsc[$__fwh]->[$__fwl]--; $__fva = ($__fsc[$__fwh]->[$__fwl] - $__fsd[$__fwh]->[$__fwl]) ** 2; $__fsf[$__fwh]->[$__fwl] = $__fva; $__fsc[$__fwi]->[$__fwm]--; $__fva = ($__fsc[$__fwi]->[$__fwm] - $__fsd[$__fwi]->[$__fwm]) ** 2; $__fsf[$__fwi]->[$__fwm] = $__fva; $__fsc[$__fwh]->[$__fwm]++; $__fva = ($__fsc[$__fwh]->[$__fwm] - $__fsd[$__fwh]->[$__fwm]) ** 2; $__fsf[$__fwh]->[$__fwm] = $__fva; $__fsc[$__fwi]->[$__fwl]++; $__fva = ($__fsc[$__fwi]->[$__fwl] - $__fsd[$__fwi]->[$__fwl]) ** 2; $__fsf[$__fwi]->[$__fwl] = $__fva; } } $__fuo = _chb($__fup); } } } } push(@__fvc, shift(@__fuc)); my $__fwn = $__fvc[0]; my $__fwo = 0; my $__fwp = 0; my $__fwq = 1; while (@__fuc > 0) { for ($__frr = 0; $__frr < @__fuc; $__frr++) { my $__fwr = $__fuc[$__frr]; $__fwq = 1; for (my $__fws = 0; $__fws < $__frn && $__fwq; $__fws++) { my $__fwt = $__fwn->[$__fws]; my $__fwu = 0; for ($__frs = 0; $__frs < $__frn && !$__fwu; $__frs++) { my $__fwv = $__fwr->[$__frs]; $__fwq = 1; for (my $__fsr = 1; $__fsr <= $__fru && $__fwq; $__fsr++) { $__fwq = $__fwt->[$__fsr] == $__fwv->[$__fsr]; } $__fwu = $__fwq; } $__fwq = $__fwu; } if (!$__fwq) { $__fwo = 0; if ($__fwp == 0) { $__fwn = $__fuc[$__frr]; push (@__fvc, $__fwn); splice(@__fuc, $__frr , 1); last; } elsif ($__fwp == -1) { $__fwn = $__fuc[$__frr]; unshift (@__fvc, $__fwn); splice(@__fuc, $__frr, 1); last; } } } if ($__fwq) { if ($__fwo == 1) { $__fwo = 0; $__frs = int(rand(scalar @__fvc)); $__fwn = $__fuc[0]; splice(@__fvc, $__frs, 0, $__fwn); shift(@__fuc); } else { $__fwn = $__fvc[$__fwp]; $__fwp = $__fwp == -1 ? 0 : -1; $__fwo++; } } } } else { @__fvc = @__fuc; } $__fuo = _chb($__fup); if ($__fun == 0 && $__fuo) { my $__fww = "Design optimize timed out. Possibility that design contains more overlap than specified and dominated tasks. Proceeding with current concepts.\n"; $__fww .= "Concepts=" . authlib8_4_8::_bni(\@__fvc) . "\n"; $__fww .= "Level Counts=" . authlib8_4_8::_bni(\@__fsc) . "\n"; $__fww .= "Expected Counts=" . authlib8_4_8::_bni(\@__fsd) . "\n"; $__fww .= "Expected Vs Actual Counts=" . authlib8_4_8::_bni(\@__fsf) . "\n"; my @__fsp = map { $_ / $__fro } @__fta; $__fww .= "Actual Level Repeats=" . authlib8_4_8::_bni(\@__fsp) . "\n"; $__fww .= "Expected Level Repeats=" . authlib8_4_8::_bni(\@__fse) . "\n"; $__fww .= "Target Level Repeats=" . authlib8_4_8::_bni(\@__fsl) . "\n"; $__fww .= "Quotient=" . authlib8_4_8::_bni(\@__fsz) . "\n"; $__fww .= "Difference between Quotient and Target=" . authlib8_4_8::_bni(\@__fuf) . "\n"; $__fww .= "Overlap Penalties=" . authlib8_4_8::_bni(\@__ftb) . "\n"; $__fww .= "Task Dominate Penalty=" . authlib8_4_8::_bni(\@__fug) . "\n"; $__fww .= "Expected vs Actual Counts Sum=" . $__fue . "\n"; $__fww .= "Quotient Sum=" . ($__fuh * $__fuh). "\n"; $__fww .= "Penalty Sum=" . $__fui . "\n"; $__fww .= "Task Dominate Penalty Sum=" . $__fuj . "\n"; $__fww .= "Total Penalty Sum=" . $__fuk . "\n"; authlib8_4_8::_bpz($__fwy, $__fww); } if ($__fun == 0 || $__fuk < $__ful{'_chw'}->{'TotalPenalty'}) { $__ful{'_chw'} = { 'TotalPenalty' => $__fuk, 'Tasks' => authlib8_4_8::_bsp(\@__fvc), }; } $__fun++; } @__fuc = @{$__ful{'_chw'}->{'Tasks'}}; $__fud = 1; my @__fwx = (); for ($__frr = 0; $__frr < $__fro; $__frr++) { for ($__frs = 0; $__frs < $__frn; $__frs++) { $__fuc[$__frr]->[$__frs]->[0] = $__fud++; push(@__fwx, $__fuc[$__frr]->[$__frs]); } } return \@__fwx; } sub _cgr { my ($__fxa, $__fxb, $__fxc, $__fxd) = @_; return $__fxa * $__fxb + $__fxc + $__fxd + rand()*0.00001; } sub _cgs { my($__fxn) = @_; my $__fxe = $__fxn->{'_oa'}; my $__fxf = $__fxe->{'_oc'}; my $__fxg = $__fxe->{'_od'}; my @__fxh = @{$__fxn->{'_asc'}}; my $__fxi = 0; my $__fxj = 1; my @__fxk = (); foreach $__fxi (@__fxh) { push @__fxk, [$__fxj, scalar @{$__fxi->{'_bca'}}, $__fxi->{'_nx'}]; $__fxj++; } my $__fxl = 0; if (exists $__fxn->{'_pm'}) { $__fxl = 1; } my $__fxm = "{"; $__fxm .= "\"atts\"=>" . authlib8_4_8::_bni(\@__fxk) . ","; $__fxm .= "\"tasks\"=>" . $__fxg . ","; $__fxm .= "\"concepts\"=>" . $__fxf . ","; $__fxm .= "\"none\"=>" . $__fxl; $__fxm .= "}"; return $__fxm; } sub _cgt { my ($__gbb, $__gbc, $__gbd, $__gbe, $__gbf) = @_; my $__fxo = ""; my $__fxp = 0; my $__fxq = 0; my $__fxr = 0; my $__fxs = 0; my $__fxt = 0; my @__fxu = (); my @__fxv = (); my $__fxw = ""; my $__fxx = 0; my $__fxy = 0; my $__fxz = $authlib8_4_8::_bwv{'_cba'}; my $__fya = 0; my $__fyb = 0; my $__fyc = 0; my $__fyd = 0; my $__fye = 0; my $__fyf = 0; my $__fyg = 0; my $__fyh = 0; my $__fyi = 0; my $__fyj = 0; my $__fyk = 0; my $__fyl = ""; my %__fym = (); my %__fyn = (); if($__gbd =~ m/_Random(\d+)/i || $__gbd =~ m/_Choice(\d+)/i) { $__fxr = int($1); } elsif ($__gbd =~ m/_Fixed(\d+)/i) { $__fxr = int($1); $__fyb = 1; } if($__gbf) { $__fyj = $__gbb->{'_os'}; $__fyk = @{$__gbb->{'_asc'}}; my $__fyo = ($__fxr - 1) * $__fyj; my $__fyp = 0; my $__fyq = 0; my $__fyr = 0; for($__fxs = 0; $__fxs < $__fyj; $__fxs++) { $__fyp = $__gbf->[$__fyo + $__fxs]; $__fyr = 0; foreach $__fyq(@{$__fyp}) { if($__fyr > 0) { push @__fxu, $__fyq - 1; } $__fyr++; } } } elsif($__fyb) { $__fyj = $__gbb->{'_os'}; $__fyk = @{$__gbb->{'_asc'}}; if (exists $__gbb->{'_ti'}) { push @__fxu, @{$__gbb->{'_ti'}->{$__gbd}}; } } else { my $__fys = $__fxz . $authlib8_4_8::_byz . "_CBC" . $__gbb->{'_ww'} . "_" . $__gbb->{'_wx'} . ".cgi"; my ($__gbg, $__gbh) = authlib8_4_8::_bon($__fys, "read", 1, 1); binmode $__gbg; if (((-s $__fys) != $__gbb->{'_of'}) && ($authlib8_4_8::_bzy == 0)) { close $__gbg; authlib8_4_8::_bqa(150, "CBC design file error.", "The size of the CBC Design file (" . $__fys . ") does not match the size expected by the QST file. Try uploading the file again in binary mode.", ""); } my $__fyt = 25; read ($__gbg, $__fxw, $__fyt); ($__fyc, $__fyd, $__fye, $__fyf, $__fyg, $__fyh, $__fyi, $__fyj, $__fyk) = unpack("VVVVCvvvv", $__fxw); if ($__fyd != $__gbb->{'_ww'}) { close $__gbg; authlib8_4_8::_bqa(151, "CBC design file error.", "Exercise ID in CBC design file (" . $__fyd . ") does not match exercise ID in the QST file (" . $__gbb->{'_ww'} . ").", ""); } elsif ($__fye != $__gbb->{'_wx'}) { close $__gbg; authlib8_4_8::_bqa(152, "CBC design file error.", "Design ID in CBC design file (" . $__fye . ") does not match design ID in the QST file (" . $__gbb->{'_wx'} . ").", ""); } $__fxq = ($__gbc - 1) % $__fyh; $__fyl = _cgv($__gbd, $__fyd, $__fye, $__fxq, $__fyg); $__fxp = $__fyt; $__fxy = $__fyj * $__fyk; $__fxp += ($__fxq * $__fyi * $__fxy); $__fxp += (($__fxr - 1) * $__fxy); seek ($__gbg, $__fxp, 0); read $__gbg, $__fxo, $__fxy; @__fxu = unpack("C*", $__fxo); close $__gbg; } my $__fyu = $__gbb->{'_us'}; my $__fyv = $__gbb->{'_ut'}; my $__fyw = 0; my @__fyx = ("") x $__fyk; my $__fyy = 0; my $__fyz = 0; my $__fza = 1; if(exists $__gbb->{'_og'}) { $__fyy = $__gbb->{'_og'}; } if(($__fyy == 2) && !(exists $__gbb->{'_oh'}) && ($__gbe == 0)) { $__fyz = 1; } if($__gbe && $__fyy != 3) { $__fza = 0; } if ($__fyu > 0) { $__fyw = authlib8_4_8::_bsh($__gbc, $__fyk, 20981, $__fyu, $__fyv); } else { for ($__fxs = 0; $__fxs < $__fyk; $__fxs++) { $__fyx[$__fxs] = $__fxs; } $__fyw = \@__fyx; } my $__fzb = 0; my $__fzc = 0; my $__fzd = 0; my $__fze = 0; my $__fzf = 0; my $__fzg = 0; my $__fzh = ""; my $__fzi = 0; my @__fzj = ("") x 2; my @__fzk = ("") x $__fyj; my $__fzl = 0; my $__fzm = 0; my %__fzn = (); my $__fzo = 1; my $__fzp = 0; my $__fzq = 0; my $__fzr = 0; my $__fzs = 0; my $__fzt = 0; my $__fzu = 0; my @__fzv = ("") x $__fyj; my %__fzw = (); my $__fzx = 0; my @__fzy = ("") x $__fyj; my @__fzz = ("") x $__fyk; my $__gaa = 0; my $__gab = 0; my $__gac = {}; if (exists $__gbb->{'_ara'}) { $__gaa = 1; $__gab = $__gbb->{'_ara'}->{'_arb'}; my $__gad = 0; if (exists $__gbb->{'_ara'}->{'_arw'}) { foreach $__gad (@{$__gbb->{'_ara'}->{'_arw'}}) { $__fzn{$__gad - 1} = $__gad - 1; } } if (exists $__gbb->{'_ara'}->{'_ta'}) { $__gac = $__gbb->{'_ara'}->{'_ta'}; } } if (exists $__gbb->{'_te'} && ($authlib8_4_8::_bzy != 4)) { $__fzt = 1; $__fzu = $__gbb->{'_te'}->{'_tf'} - 1; } for ($__fxs = 0; $__fxs < $__fyj; $__fxs++) { my @__gae = (); for ($__fxt = 0; $__fxt < $__fyk; $__fxt++) { $__fzp = 0; $__fzm = $__fyw->[$__fxt]; $__fzl = $__fxu[($__fyk * $__fxs) + $__fzm]; if($__gaa) { $__fzz[$__fxt] = $__fxu[($__fyk * $__fxs) + $__fxt]; } if ($__fzt && ($__fzm == $__fzu)) { $__fzx = $__fzl; while(exists $__fzw{$__fzx}) { $__fzx += .001; } $__fzv[$__fxs] = $__fzx; } if(!exists $__fzn{$__fzm}) { if($__fzl == 255) { if(($__fxs == 0) && $__fza) { $__fzo = 1; for ($__fze = ($__fxs + 1); $__fze < $__fyj; $__fze++) { if($__fxu[($__fyk * $__fze) + $__fzm] < 255) { $__fzo = 0; last; } } if($__fzo) { $__fzq = 1; if($__gaa) { my $__gaf = 0; foreach $__gaf (@{$__gab}) { if ($__fzm == ($__gaf->{'_aru'} - 1)) { if (!_cgu($__gaf, \@__fxu, $__fyj, $__fyk)) { $__fzq = 0; last; } } } } if ($__fzq) { $__fzn{$__fzm} = $__fzm; $__fzp = 1; } } } if($__fyz) { $__fzp = 1; } } elsif(exists $__gbb->{'_wk'}) { if ($__gbb->{'_wk'}->[$__fzm] == $__fzl) { my $__gag = 0; if($__gaa) { my $__gaf = 0; foreach $__gaf (@{$__gab}) { if ($__fzm == ($__gaf->{'_aru'} - 1)) { $__gag = 1; last; } } } if(!$__gag) { $__fzp = 1; } } } if (!$__fzp) { $__fzj[0] = $__fzm; $__fzj[1] = $__fzl; push @__gae, [@__fzj]; } } } if($__gaa) { my $__gaf = 0; my $__gah = ""; my $__gai = 0; my $__gaj = 0; my $__gak = 0; my $__gal = 0; my $__gam = 0; my $__gan = 0; my $__gao = 0; my $__gap = 0; my @__gaq = (); my @__gar = (); my $__gas = 0; my $__gat = 0; my $__gau = 0; foreach $__gaf (@{$__gab}) { if ($__gaf->{'_aru'} < 0) { if ($__gaf->{'_aru'} == -1) { $__gas++; } elsif ($__gaf->{'_aru'} == -2) { $__gat++; } if (_cgu($__gaf, \@__fxu, $__fyj, $__fyk)) { if ($__gaf->{'_aru'} == -1) { $__fym{$__gas} = 1; } elsif ($__gaf->{'_aru'} == -2) { $__fyn{$__gat} = 1; } next; } } $__gai = 0; $__gam = @{$__gaf->{'_asc'}}; for ($__gak = 0; $__gak < $__gam; $__gak++) { $__gan = 0; $__gao = $__gaf->{'_asc'}->[$__gak]; $__fzc = $__fzz[$__gao - 1]; if ($__fzc == 255) { $__gan = 0; } else { $__gan = $__fzc; if (exists $__gac->{$__gao}) { $__gan++; } } for ($__gal = $__gak + 1; $__gal < $__gam; $__gal++) { $__gap = $__gaf->{'_asc'}->[$__gal]; $__gau = @{$__gbb->{'_asc'}->[$__gap - 1]->{'_bca'}}; if (exists $__gac->{$__gap}) { $__gau++; } $__gan *= $__gau; } $__gai += $__gan; } $__gaj = $__gaf->{'_arn'}->[$__gai]; if ($__gaj == 0) { $__gah = ""; } else { seek $authlib8_4_8::_byh, $__gaj, 0; $__gah = authlib8_4_8::_bps(1); } if ($__gaf->{'_aru'} == -1) { push @__gar, ["C-T", $__gah]; } elsif ($__gaf->{'_aru'} == -2) { push @__gae, ["C-B", $__gah]; } else { my $__gav = 0; my $__gaw = 0; foreach $__gav (@__gae) { if ($__gav->[0] == ($__gaf->{'_aru'} - 1)) { $__gav->[0] = "C-" . $__gav->[0]; $__gav->[1] = $__gah; $__gaw = 1; last; } } } } if (@__gar > 0) { unshift @__gae, @__gar; } } $__fzk[$__fxs] = {'_chq'=>[@__gae], '_bcm'=>($__fxs + 1)}; if ($__fzt) { $__fzw{$__fzv[$__fxs]} = $__fzk[$__fxs]; $__fzy[$__fxs] = $__fxs; } elsif($__fzs < @__gae) { $__fzs = @__gae; $__fzr = $__fxs; } } if ($__fzt) { my $__gax = 0; my $__gay = 0; @__fzk = ("") x $__fyj; @__fzv = sort {$a <=> $b} @__fzv; if (exists $__gbb->{'_te'}->{'_bco'}) { my @__gaz = (); my $__gba = @{$__gbb->{'_asc'}->[$__fzu]->{'_bca'}}; $__fyw = authlib8_4_8::_bsh($__gbc, $__gba, 50221, 1, $__gba); for ($__fxs = 0; $__fxs < $__gba; $__fxs++) { for ($__fxt = 0; $__fxt < $__fyj; $__fxt++) { if ($__fyw->[$__fxs] == int($__fzv[$__fxt])) { while (($__fyw->[$__fxs] == int($__fzv[$__fxt])) && ($__fxt < $__fyj)) { push @__gaz, $__fxt; $__fxt++; } last; } } } if (@__gaz < $__fyj) { for ($__fxt = 0; $__fxt < $__fyj; $__fxt++) { if (int($__fzv[$__fxt]) == 255) { while ((int($__fzv[$__fxt]) == 255) && ($__fxt < $__fyj)) { push @__gaz, $__fxt; $__fxt++; } last; } } } $__gay = \@__gaz; } else { $__gay = \@__fzy; } for ($__fxs = 0; $__fxs < $__fyj; $__fxs++) { $__gax = $__fzw{$__fzv[$__gay->[$__fxs]]}; $__fzk[$__fxs] = $__gax; if ($__fzs < @{$__gax->{'_chq'}}) { $__fzs = @{$__gax->{'_chq'}}; $__fzr = $__fxs; } } } return (\@__fzk, $__fxq, $__fzr, $__fyl, \%__fym, \%__fyn); } sub _cgu { my($__gbm, $__gbn, $__gbo, $__gbp) = @_; my @__gbi = @{$__gbm->{'_asc'}}; my $__gbj = 0; my $__gbk = 1; my $__gbl = 0; foreach $__gbj (@__gbi) { for ($__gbl = 0; $__gbl < $__gbo; $__gbl++) { if($__gbn->[($__gbp * $__gbl) + ($__gbj - 1)] < 255) { $__gbk = 0; last; } } if ($__gbk == 0) { last; } } return $__gbk; } sub _cgv { my($__gca, $__gcb, $__gcc, $__gcd, $__gce) = @_; my $__gbq = ""; my $__gbr = $__gca; $__gbr =~ s/_(.*?)$//; my $__gbs = "sys_CBCDesignID_" . $__gbr; my $__gbt = "CBC" . $__gcb . "_" . $__gcc . "_" . $__gce; my $__gbu = authlib8_4_8::_bnc($__gbs); if ($__gbu ne "") { if ($__gce == 1) { if ($__gbu !~ m/^(.*?)_(\d+)_(\d+)$/ig) { $__gbt =~ s/^(.*?)_(\d+)$/$1/; } } if ($__gbu ne $__gbt) { my $__gbv = "sys_CBCDesignError_" . $__gbr; my $__gbw = authlib8_4_8::_bnc($__gbv); if ($__gbw eq "") { my $__gbx = "CBC Design Error: This data record contains data from two different CBC designs. " . $__gbt; authlib8_4_8::_bse(0, $__gbx . " Call Sawtooth Software (or your Sawtooth Software representative) for assistance."); $authlib8_4_8::_byi{$__gbv} = $__gbx; authlib8_4_8::_bnd($__gbv, $__gbx); } } } else { $authlib8_4_8::_byi{$__gbs} = $__gbt; authlib8_4_8::_bnd($__gbs, $__gbt); } my $__gby = "sys_CBCVersion_" . $__gbr; my $__gbz = $__gcd + 1; if (authlib8_4_8::_bnc($__gby) eq "") { $authlib8_4_8::_byi{$__gby} = $__gbz; authlib8_4_8::_bnd($__gby, $__gbz); } return $__gbq; } sub _cgw { my($__gdm, $__gdn, $__gdo, $__gdp, $__gdq, $__gdr) = @_; my $__gcf = $__gdm->{'_os'}; my $__gcg = 0; my $__gch = ""; if (exists($__gdm->{'_op'})) { $__gcg = 1; } my $__gci = $__gdm->{'_sl'}->{'_ajl'}; my $__gcj = @{$__gci}; my $__gck = 0; if (exists($__gdm->{'_on'})) { $__gck = 1; } my $__gcl = $__gdm->{'_bdl'}; my $__gcm = 0; if (exists($__gdm->{'_sl'}->{'_sq'})) { $__gcm = 1; } my $__gcn = ""; my $__gco = ""; my $__gcp = 0; if (exists($__gdm->{'_pm'})) { $__gco = $__gdm->{'_pm'}->{'_bft'}; $__gcf++; $__gcp = 1; } my $__gcq = @{$__gdo->[$__gdq]->{'_chq'}}; my $__gcr = $__gcq; my $__gcs = 0; my $__gct = 0; my $__gcu = 0; my $__gcv = 0; my $__gcw = ""; my $__gcx = ""; $__gcr++; if(exists $__gdm->{'_rr'}) { $__gcs = 1; $__gct = $__gcr; $__gcr++; $__gcu = $__gcr; if (exists $__gdm->{'_rr'}->{'_se'}) { $__gcv = 1; } if (exists $__gdm->{'_rr'}->{'_rs'}) { $__gcw = $__gdm->{'_rr'}->{'_rs'}->{'_bft'}; } if (exists $__gdm->{'_rr'}->{'_rx'}) { $__gcx = $__gdm->{'_rr'}->{'_rx'}->{'_bft'}; } } my $__gcy = 0; my $__gcz = 1; my $__gda = 1; my $__gdb = 0; my $__gdc = 0; my $__gdd = 0; my $__gde = 0; my $__gdf = 5; my $__gdg = 0; my $__gdh = 0; my $__gdi = 0; my $__gdj = ""; my $__gdk = ""; for ($__gdb = 1; $__gdb <= $__gcj; $__gdb++) { $__gcy = 0; if (($__gdb > 1) && $__gcg) { $__gch .= "<div class=\"cell_between_rows\"></div>"; } $__gde = $__gci->[$__gdb - 1]; if (($__gdb == $__gcj) && $__gco && (!$__gcm)) { $__gdi = 1; $__gde++; } $__gch .= "<table class=\"inner_table shelf_display\">\n"; for ($__gdc = 1; $__gdc <= $__gcr; $__gdc++) { $__gch .= "<tr class=\"cbc_row_" . $__gdc; if ($__gdc == $__gct) { $__gch .= " cbc_best_row"; } elsif ($__gdc == $__gcu) { $__gch .= " cbc_worst_row"; } if ($__gdc == 1) { $__gch .= " cbc_top_row"; } elsif($__gdc == $__gcr) { $__gch .= " cbc_bottom_row"; } if($__gdc > 1) { $__gch .= " cbc_shelf"; } $__gch .= "\""; if ($__gdc == $__gct) { $__gch .= " id=\"" . $__gdn . "_b_row\""; } elsif ($__gdc == $__gcu) { $__gch .= " id=\"" . $__gdn . "_w_row\""; } $__gch .= ">"; $__gda = $__gcz; $__gdj = ""; if ($__gdc <= $__gcq) { $__gdj .= " level_text_cell"; } else { $__gdj .= " input_cell"; if ($__gcv) { $__gdj .= " best_worst_graphics"; } if ($__gdc == $__gct) { $__gdj .= " " . $__gdn . "_b"; } elsif ($__gdc == $__gcu) { $__gdj .= " " . $__gdn . "_w"; } if (!exists $__gdm->{'_rf'}) { $__gdj .= " clickable"; } } for ($__gdd = 0; $__gdd < $__gde; $__gdd++) { if (($__gcw || $__gcx) && $__gdd == 0) { $__gch .= "<td class=\"row_input_label_cell\">\n"; $__gch .= "<div class=\"label_text\">\n"; if ($__gcw && $__gdc == $__gct) { $__gch .= $__gcw; } elsif ($__gcx && $__gdc == $__gcu) { $__gch .= $__gcx; } else { $__gch .= "&nbsp;"; } $__gch .= "</div></td>"; } $__gch .= "<td class=\"shelf_cell " . $__gdj; if ($__gdd == 0) { $__gch .= " first_column"; } elsif($__gdd == $__gde - 1) { $__gch .= " last_column"; } $__gch .= "\""; if ($__gdc > $__gcq) { my $__gdl = 0; $__gch .= " nowrap>"; if ($__gcp && ($__gda == $__gcf)) { $__gdl = $__gcf; } else { $__gdl = $__gdo->[$__gda - 1]->{'_bcm'}; } if (exists $__gdm->{'_rf'}) { $__gch .= _cgy($__gdm, $__gdn, $__gdl); } else { if($__gct == $__gdc) { $__gdk = $__gdn . "_b"; } elsif($__gcu == $__gdc) { $__gdk = $__gdn . "_w"; } else { $__gdk = $__gdn; } $__gch .= ciwlib8_4_8::_bkd($__gdk, $__gdl, 1, $__gdm); } } elsif ($__gdi && ($__gdd == ($__gde - 1))) { $__gch .= ">"; if ($__gdc == 1) { $__gch .= $__gco; } else { $__gch .= "&nbsp;"; } } else { $__gch .= ">"; $__gdg = $__gdo->[$__gda - 1]->{'_chq'}->[$__gcy]->[0]; $__gdh = $__gdo->[$__gda - 1]->{'_chq'}->[$__gcy]->[1]; $__gcn = ""; if ($__gdg =~ m/^C-/i) { $__gcn = $__gdh; } else { if ($__gdh == 255 || $__gdh eq "") { $__gcn = "&nbsp;"; } else { $__gcn = $__gdm->{'_asc'}->[$__gdg]->{'_bca'}->[$__gdh]; } } if ($__gcn eq "") { $__gcn = "&nbsp;"; } $__gch .= "<div class=\"level_text\">\n"; $__gch .= $__gcn; $__gch .= "</div>\n"; } $__gch .= "</td>"; if ($__gck && ($__gdc == 1) && (($__gdd + 1) < $__gde)) { $__gch .= _cgl($__gcr); } $__gda++; } $__gch .= "</tr>"; $__gcy++; } $__gch .= "</table>"; $__gcz = $__gcz + $__gde; } return ($__gch, $__gcf); } sub _cgx { my($__geb, $__gec, $__ged, $__gee) = @_; $__gee = authlib8_4_8::_bsl($__gee); if (exists $__geb->{'_sl'}) { if (exists($__geb->{'_sl'}->{'_sq'})) { if ($__gee =~ m/\[%CBCNONE\(\)%\]/i) { if (exists($__geb->{'_pm'})) { my $__gds = $__geb->{'_pm'}->{'_bft'}; my $__gdt = $__geb->{'_os'} + 1; if (exists $__geb->{'_rf'}) { $__gds .= _cgy($__geb, $__gec, $__gdt); } else { my $__gdu = "<table class=\"cbc_none_table\"><tr class=\"clickable\"><td class=\"input_cell\">"; $__gdu .= ciwlib8_4_8::_bkd($__gec, $__gdt, 1, $__geb); $__gdu .= "</td>"; $__gdu .= "<td><label for=\"" . $__gec . "_" . $__gdt . "\">" . $__gds . "</label></td>"; $__gdu .= "</tr></table>"; $__gds = $__gdu; } $__gee =~ s/\[%CBCNONE\(\)%\]/$__gds/sgi; } } } } if ($__gee =~ m/\[%CBCVERSION\(\)%\]/i) { if ($__gec =~ m/Fixed/i) { $__ged = ""; } else { $__ged++; } my $__gdv = "D - " . $__ged . ", T - " . $__gec; $__gee =~ s/\[%CBCVERSION\(\)%\]/$__gdv/sgi; } if ($__gee =~ m/\[%CBCCURRENTTASK\(\)%\]/i) { my $__gdw = 0; my $__gdx = ""; if ($__gec =~ m/^(.*?)_(.*?)$/) { $__gdx = $2; } if (exists $__geb->{'_ot'}) { $__gdw = $__geb->{'_ot'}->{$__gdx}; } $__gee =~ s/\[%CBCCURRENTTASK\(\)%\]/$__gdw/sgi; } if ($__gee =~ m/\[%CBCTOTALTASKS\(\)%\]/i) { my $__gdy = 0; if (exists $__geb->{'_ot'}) { $__gdy = keys %{$__geb->{'_ot'}}; } $__gee =~ s/\[%CBCTOTALTASKS\(\)%\]/$__gdy/sgi; } if ($__gee =~ m/\[%CBCATTRIBUTELABEL\(\)%\]/i) { my $__gdz = ""; if (exists $__geb->{'_tf'}) { my $__gea = $__geb->{'_tf'}; if(exists $__geb->{'_chx'}) { $__gdz = $__geb->{'_chx'}->{'_asc'}->[$__gea - 1]->{'_bgt'}; } } $__gee =~ s/\[%CBCATTRIBUTELABEL\(\)%\]/$__gdz/sgi; } return $__gee; } sub _cgy { my($__gei, $__gej, $__gek) = @_; my $__gef = ""; my $__geg = ""; my $__geh = "left"; if (exists $__gei->{'_rf'}->{'_uz'}) { $__geg = $__gei->{'_rf'}->{'_uz'}; if (exists $__gei->{'_rf'}->{'_rl'}) { $__geh = $__gei->{'_rf'}->{'_rl'}; } if ($__geh eq "left") { $__gef .= $__geg; } } $__gef .= " <input type=\"tel\" class=\"numeric_input\" name=\"" . $__gej . "_" . $__gek . "\" size=\"" . $__gei->{'_rf'}->{'_akk'} . "\""; if (exists $__gei->{'_bku'}) { if (exists $__gei->{'_bku'}->{$__gej . "_" . $__gek}) { $__gef .= " value=\"" . $__gei->{'_bku'}->{$__gej . "_" . $__gek} . "\""; } } $__gef .= " id=\"" . $__gej . "_" . $__gek . "\"> \n"; if ($__geg ne "" && $__geh eq "right") { $__gef .= $__geg; } return $__gef; } sub _cgz { my($__gfi) = @_; my $__gel = 0; my $__gem = 0; my $__gen = 0; my $__geo = 0; my $__gep = 0; my $__geq = tell $authlib8_4_8::_byh; my @__ger = (); my @__ges = (); my @__get = (); my $__geu = ""; my $__gev = 0; my $__gew = 0; if (exists($authlib8_4_8::_bwq{$__gfi})) { $__gep = $authlib8_4_8::_bwq{$__gfi}->{'_w'}; } else { return 0; } seek $authlib8_4_8::_byh, $__gep, 0; my $__gex = authlib8_4_8::_bps(0); $__geo = $authlib8_4_8::_bzi{"hid_respnum"}; ($__gel, $__gem, $__gen, $__geu, $__gev, $__gew) = _cgt($__gex, $__geo, $__gfi, 1, 0); $__gex->{'_cho'} = $__gev; $__gex->{'_chp'} = $__gew; my $__gey = _cgo($__gel, $__gen, $__gex); my $__gez = 0; my $__gfa = 0; my $__gfb = @{$__gel}; my $__gfc = 0; my $__gfd = 0; my $__gfe = 0; my $__gff = ""; my $__gfg = 0; for ($__gez = 0; $__gez < $__gfb; $__gez++) { $__gfc = @{$__gel->[$__gez]->{'_chq'}}; $__gfg = $__gel->[$__gez]->{'_bcm'}; @__ges = (); @__get = (); for ($__gfa = 0; $__gfa < $__gfc; $__gfa++) { $__gfd = $__gel->[$__gez]->{'_chq'}->[$__gfa]->[0]; $__gfe = $__gel->[$__gez]->{'_chq'}->[$__gfa]->[1]; $__gff = ""; if ($__gfd =~ m/^C-/i) { $__gff = $__gfe; } else { if ($__gfe == 255 || $__gfe eq "") { $__gff = ""; } else { $__gff = $__gex->{'_asc'}->[$__gfd]->{'_bca'}->[$__gfe]; $__gff = authlib8_4_8::_bqf($__gff, 0); } } push @__ges, $__gff; push @__get, $__gfd . "," . $__gfe; } push @__ger, {'_cbl'=>[@__ges], '_bcm'=>$__gfg, '_cbk' => [@__get]}; } if ($__geq > 0) { seek $authlib8_4_8::_byh, $__geq, 0; } my $__gfh = {'_cbj' => \@__ger, '_bbw' => $__gey}; $authlib8_4_8::_bxd{$__gfi} = $__gfh; $authlib8_4_8::_bxd{$__gfi . "_dsgnInfo"} = $__geu; return $__gfh; } sub _cha { my ($__gfm, $__gfn) = @_; if ($__gfn->[0] == $__gfm) { return 0; } elsif ($__gfn->[-1] == $__gfm) { return @{$__gfn} - 1; } my $__gfj = 0; my $__gfk = @{$__gfn}; while ($__gfk >= $__gfj) { my $__gfl = $__gfj + int(($__gfk - $__gfj) / 2); if ($__gfn->[$__gfl] < $__gfm) { $__gfj = $__gfl + 1; } elsif ($__gfn->[$__gfl] > $__gfm) { $__gfk = $__gfl - 1; } else { return $__gfl; } } return -1; } sub _chb { my ($__gfq) = @_; my $__gfo = 0; if ($__gfq) { my $__gfp = Time::HiRes::tv_interval($__gfq); $__gfo = ($__gfp >= 0.99); } return $__gfo; } sub _chc { my ($__gfs, $__gft, $__gfu) = @_; if ($__gft->[$__gfu] == @{$__gfs} - 1) { authlib8_4_8::_bnr($__gfs->[$__gfu]); $__gft->[$__gfu] = 0; } my $__gfr = $__gfs->[$__gfu]->[$__gft->[$__gfu]]; $__gft->[$__gfu]++; return $__gfr; } sub _chd { my ($__ggb, $__ggc, $__ggd) = @_; my $__gfv = 0; my $__gfw = 0; my $__gfx = @{$__ggb} - 1; for (my $__gfy = 0; $__gfy < $__gfx; $__gfy++) { my $__gfz = $__ggb->[$__gfy + 1]; my $__gga = $__ggc->[$__gfy]->[$__gfz - 1]; if ($__gga == $__ggd->[$__gfy]->{'_aop'} && $__ggd->[$__gfy]->{$__gfz} == 1) { $__gfw = 1; } elsif ($__gga == $__ggd->[$__gfy]->{'_bgp'} && $__ggd->[$__gfy]->{$__gfz} == 1) { $__gfv = 1; } else { $__gfw = 0; $__gfv = 0; last; } if ($__gfw && $__gfv) { $__gfw = 0; $__gfv = 0; last; } } return $__gfv || $__gfw; } sub _che { my ($__ggr, $__ggs) = @_; my $__gge = 0; my $__ggf = 0; my $__ggg = 0; my $__ggh = @{$__ggr}; my $__ggi = @{$__ggr->[0]} - 1; for (my $__ggj = 0; $__ggj < $__ggh - 1; $__ggj++) { my $__ggk = $__ggr->[$__ggj]; for (my $__ggl = $__ggj + 1; $__ggl < $__ggh; $__ggl++) { my $__ggm = $__ggr->[$__ggl]; for (my $__ggn = 0; $__ggn < $__ggi; $__ggn++) { my $__ggo = $__ggs->[$__ggn]; my $__ggp = $__ggo->[$__ggk->[$__ggn + 1] - 1]; my $__ggq = $__ggo->[$__ggm->[$__ggn + 1] - 1]; if ($__ggq == 0 || $__ggp == 0) { if ($__ggq == 0 && $__ggp == 0 && $__ggk->[$__ggn + 1] == $__ggm->[$__ggn + 1]) { next; } $__gge = 0; $__ggf = 0; last; } elsif ($__ggq < $__ggp) { $__gge = 1; } elsif ($__ggq > $__ggp) { $__ggf = 1; } elsif ($__ggk->[$__ggn + 1] != $__ggm->[$__ggn + 1]) { $__gge = 0; $__ggf = 0; last; } if ($__gge && $__ggf) { $__gge = 0; $__ggf = 0; last; } } $__ggg += $__gge || $__ggf; } } return $__ggg; } sub _chf { my ($__ghe, $__ghf, $__ghg) = @_; my $__ggt = 0; my $__ggu = 0; my $__ggv = 0; my $__ggw = @{$__ghe}; my $__ggx = @{$__ghf} - 1; for (my $__ggy = 0; $__ggy < $__ggw && !$__ggv; $__ggy++) { my $__ggz = $__ghe->[$__ggy]; for (my $__gha = 0; $__gha < $__ggx; $__gha++) { my $__ghb = $__ghg->[$__gha]; my $__ghc = $__ghb->[$__ggz->[$__gha + 1] - 1]; my $__ghd = $__ghb->[$__ghf->[$__gha + 1] - 1]; if ($__ghd == 0 || $__ghc == 0) { if ($__ghd == 0 && $__ghc == 0 && $__ggz->[$__gha + 1] == $__ghf->[$__gha + 1]) { next; } $__ggt = 0; $__ggu = 0; last; } elsif ($__ghd < $__ghc) { $__ggt = 1; } elsif ($__ghd > $__ghc) { $__ggu = 1; } elsif ($__ggz->[$__gha + 1] != $__ghf->[$__gha + 1]) { $__ggt = 0; $__ggu = 0; last; } if ($__ggt && $__ggu) { $__ggt = 0; $__ggu = 0; last; } } $__ggv = $__ggt || $__ggu; } return $__ggv; } sub _chg { my ($__ghl, $__ghm) = @_; my $__ghh = 0; foreach my $__ghi (@{$__ghm}) { my $__ghj = 1; foreach my $__ghk (@{$__ghi}) { my ($__ghn, $__gho) = @{$__ghk}; if ($__ghl->[$__ghn] != $__gho) { $__ghj = 0; last; } } if ($__ghj) { $__ghh = 1; last; } } return $__ghh; } sub _chh { my ($__ghv, $__ghw, $__ghx) = @_; my $__ghp = @{$__ghv}; my $__ghq = @{$__ghw} - 1; my $__ghr = 0; my $__ghs = 0; my $__ght = 0; if ($__ghp == 0) { return 0; } for ($__ghs = 0; $__ghs < $__ghq && !$__ghr; $__ghs++) { my $__ghu = $__ghw->[$__ghs + 1]; $__ghr = 1; for ($__ght = 0; $__ght < $__ghp && $__ghr; $__ght++) { next if ($__ghx == $__ght); $__ghr = $__ghu == $__ghv->[$__ght]->[$__ghs + 1]; } } return $__ghr; } sub _chi { my ($__gie, $__gif, $__gig) = @_; my $__ghy = @{$__gie}; my $__ghz = @{$__gif} - 1; my $__gia = 0; my $__gib = 0; my $__gic = 0; for ($__gib = 0; $__gib < $__ghy && !$__gia; $__gib++) { next if ($__gig == $__gib); my $__gid = 0; for ($__gic = 0; $__gic < $__ghz && !$__gid; $__gic++) { $__gid = $__gif->[$__gic + 1] != $__gie->[$__gib]->[$__gic + 1]; } $__gia = !$__gid; } return $__gia; } 1;  package cbcratlib8_4_8; our @ISA = qw(questionlib8_4_8); sub new { my ($__gih) = @_; $__gih->{'_bmc'} = "cbcrating"; bless($__gih); return $__gih; } sub _bls { my ($__gil) = @_; $__gil->SUPER::_bls(); my $__gii = $__gil->{'_bgt'}; my $__gij = $__gil->{'_bkt'}; my $__gik = 0; if ($__gii =~ m/_Rating(\d+)/i) { $__gik = $1; } seek $authlib8_4_8::_byh, $__gij->{'_tl'}, 0; $__gij->{'_chx'} = authlib8_4_8::_bps(1); $__gij->{'_tf'} = $__gik; } sub _bmb { my ($__gin, $__gio, $__gip) = @_; my $__gim = $__gin->SUPER::_bmb($__gio, $__gip); $__gim = cbclib8_4_8::_cgx($__gin->{'_bkt'}, $__gin->{'_bgt'}, $__gin->{'_bkt'}->{'_chl'}, $__gim); return $__gim; } sub _blt { my ($__gis) = @_; my $__giq = ""; my $__gir = ""; return $__giq; } sub _bmf { my ($__gjj, $__gjk, $__gjl, $__gjm, $__gjn) = @_; my $__git = ""; my $__giu = $__gjj->{'_bgt'}; my $__giv = $__gjj->{'_bkt'}; my $__giw = $__giv->{'_chx'}; my $__gix = $__giv->{'_tf'}; my $__giy = @{$__giw->{'_asc'}->[$__gix - 1]->{'_bca'}}; my $__giz = 0; my $__gja = 0; my $__gjb = ""; my $__gjc = ""; my $__gjd = @{$__giv->{'_vq'}->{'_vr'}}; my $__gje = 20; if (exists $__giv->{'_bdj'}) { $__gje = $__giv->{'_bdj'}; } if ($__gjd < 2) { $__gjd = 2; } my $__gjf = int((100 - $__gje) / $__gjd); $__git .= "<table class=\"inner_table\" width=\"100%\">\n"; if (exists($__giv->{'_jr'})) { $__git .= "<tr><td>&nbsp;</td>"; $__git .= "<td class=\"scale_header_cell\" colspan=\"" . $__gjd . "\">"; $__git .= "<div class=\"scale_header\" "; $__git .= ciwlib8_4_8::_bkb($__giv->{'_jr'}, 1, 0); $__git .= ">\n" . $__giv->{'_jr'}->{'_bft'}; $__git .= "</div></td></tr>"; } $__git .= "<tr><td>&nbsp;</td>"; for ($__giz = 0; $__giz < $__gjd; $__giz++) { $__git .= "<td width=\"" . $__gjf . "%\" class=\"anchor_text_cell col" . ($__giz + 1); if($__giz == 0) { $__git .= " first_col"; } elsif($__giz == $__gjd - 1) { $__git .= " last_col"; } $__git .= "\""; if($__giv->{'_vq'}->{'_bfw'}->[$__giz] ne "") { $__git .= " style=\"text-align: " . $__giv->{'_vq'}->{'_bfw'}->[$__giz] . "\""; } $__git .= "><div class=\"anchor_text\">\n"; $__gjb = $__giv->{'_vq'}->{'_vr'}->[$__giz]; if ($__gjb eq "") { $__git .= "&nbsp;"; } else { $__git .= $__gjb; } $__git .= "</div></td>"; } $__git .= "</tr>\n"; my $__gjg = 0; my $__gjh = []; my $__gji = 0; if (exists $__giv->{'_hs'}) { $__gji = 1; $__gjh = authlib8_4_8::_bsi($__gjl, $__giy, 7417); } for ($__giz = 0; $__giz < $__giy; $__giz++) { if ($__gji) { $__gjg = $__gjh->[$__giz]; } else { $__gjg = $__giz; } $__git .= "<tr "; $__gjc = $__giu . "_" . ($__gjg + 1); $__git .= "id=\"" . $__gjc . "_row\""; if ($__gjn) { $__git .= " class=\"alt_color1\" "; } else { $__git .= " class=\"alt_color2\" "; } $__git .= ">\n"; $__git .= "<td width=\"" . $__gje . "%\" class=\"row_label_cell " . $__gjc . "\">"; $__git .= "<div class=\"label_text\">\n"; $__git .= $__giw->{'_asc'}->[$__gix - 1]->{'_bca'}->[$__gjg]; $__git .= "</div>\n"; $__git .= "</td>\n"; for ($__gja = 0; $__gja < $__gjd; $__gja++) { $__git .= "<td class=\"input_cell clickable " . $__gjc . " row" . ($__giz + 1) . " col" . ($__gja + 1); if($__giz == $__giy - 1) { $__git .= " last_row"; } if($__gja == $__gjd - 1) { $__git .= " last_col"; } $__git .= "\">"; $__git .= ciwlib8_4_8::_bkd($__gjc, $__gja + 1, 1, $__giv); $__git .= "</td>"; } $__git .= "</tr>\n"; if ($authlib8_4_8::_byb) { $__git .= "<!--LoadTestMode: <question><name>" . $__gjc . "</name><type>cbcrat</type><min>1</min><max>" . $__gjd . "</max></question>-->\n"; } $__gjn = !$__gjn; } $__git .= "</table>\n"; $__git .= "<input type=\"hidden\" name=\"hid_" . $__giu . "_levels\" value=\"" . $__giy . "\">\n"; return $__git; } sub _bmg { my($__gjw, $__gjx, $__gjy, $__gjz) = @_; my $__gjo = $__gjw->{'_bgt'}; my $__gjp = $__gjw->{'_bkt'}; my $__gjq = $__gjp->{'_chx'}; my $__gjr = $__gjp->{'_tf'}; my $__gjs = @{$__gjq->{'_asc'}->[$__gjr - 1]->{'_bca'}}; my $__gjt = 0; my $__gju = ""; my $__gjv = ""; if (exists $__gjp->{'_bds'}) { $__gjv = $__gjp->{'_bds'}; } for ($__gjt = 1; $__gjt <= $__gjs; $__gjt++) { $__gju = "SSI_RadCheck(\"" . $__gjo . "_" . $__gjt . "\",\"" . $__gjo . "\",\"" . $__gjv . "\"," . $__gjz . ", true)"; push @{$__gjx}, ($__gju); } $__gjy->{'_bli'} = 1; } 1;
