PK!Uhypdb/__init__.py# fair db initPK!V$hypdb/core/MultipleTrreatmentTest.pyfrom modules.core.XDB import * if __name__ == '__main__': treatment = ['carrier'] outcome = ['carrier'] table = 'qtable3level' detector = discovery(table, treatment, outcome) X = detector.naive_groupby() print(X) answers=X[0]['mean'].values print(answers) boundary = [ 'yyear', 'quarter', 'dayofweek', 'month', 'originwac'] scovarite = [] print(boundary) odist=var(answers) for i in range(0, len(boundary)): candidate = boundary[i] scovarite.insert(0, candidate) print(scovarite) res = detector.adjusted_groupby(scovarite) if res==None: print('no-overlap') continue second = res[0]['mean'].values overlap = res[2] ndis = var(second) if ndis-odist < 0 : #print(first) ##print(second) print(ndis) odist = ndis else: if scovarite.__contains__(candidate): scovarite.remove(candidate) print('removed') print(candidate) print(scovarite) adj2 = scovarite print(scovarite) print(res) print(odist) PK!hypdb/core/__init__.pyPK!e> > hypdb/core/att_filtering.pyfrom pylab import * from scipy.stats import spearmanr from utils.read_data import read_from_csv import modules.infotheo.info_theo as info def get_high_entropy_atts(data, start=0.3, end=0.4, steps=0.01, cut=0.0001, alpha=0.01, debug=False): # treatment="'"+treatment+"'" samplesizez = [] dic = dict() black = [] white = [] basesample = data.sample(frac=0.3, replace=False) features=data.columns.values size = len(data.index) while start <= end: start = start + steps sample = basesample.sample(frac=start, replace=False) samplesizez.insert(0, (len(sample.index))) inf=info.Info(sample) for col in features: if col in dic: list = dic[col] list.insert(0, inf.entropy(col, size)) dic[col] = list else: dic[col] = [inf.entropy(col, size)] for col in features: if not any(dic[col]): continue rho, pval1 = spearmanr(samplesizez, dic[col]) if debug == True: print(col) print(pval1) print("#####") plt.plot(dic[col]) plt.show() if pval1 <= alpha: black.insert(0, col) else: white.insert(0, col) # self.features=np.array(white) return black def get_fds(data, targets, cut=0.0001, debug=False, blacklist=None): fds=list() features = data.columns.values size = len(data.index) inf = info.Info(data) if not blacklist: blacklist=[] for att in targets: for col in features: if col not in att and col not in blacklist: x = inf.CH(att, col) if debug: print('#############') print(col) print(x) if x <= cut: fds.insert(0, col) if debug: print('Functional depedancy detected'+ str(col)) print('#############') y = inf.CH(col,att) if debug: print('#############') print(col) print(y) if y <= cut: fds.insert(0, col) if debug: print('Functional depedancy detected'+ str(col)) print('#############') return fds if __name__ == '__main__': data=read_from_csv('/Users/babakmac/Documents/XDBData/binadult.csv') treatment = ['sex'] outcome = ['income'] X=get_high_entropy_atts(data) X=get_fds(data,treatment, debug=True) print(X)PK!chypdb/core/cov_selection.pyimport copy import FairDB.modules.statistics.cit as test from FairDB.utils.read_data import * import FairDB.modules.infotheo.info_theo as info from FairDB.utils.util import * import time from scipy.stats import chi2,spearmanr,pearsonr from math import sqrt from pprint import pprint import itertools def findsubsets(S,m): return set(itertools.combinations(S, m)) def diff(list1, list2): if len(list1)==0: return list2 if len(list2)==0: return list1 return [x for x in list1 if x not in list2] class FairDB(object): def recommend_covarite(self, treatment, outcome, potential): inf = info.Info(self.data) init_cmi = inf.CMI(treatment,outcome) recom_cov=[] while 1>0: cur_recom_cov=recom_cov.copy() for item in potential: ad_cmi=inf.CMI(treatment, outcome, [item] + recom_cov) if ad_cmi pvalue: res = 1 else: res = 0 #self.cithash[tuple(X + Y + Z)] = [res, I] return [res, I] elif method == 'hybrid': self.flag = False self.ngtest += 1 if isinstance(X, str): X = tuple([X]) elif isinstance(X, list): X = tuple(X) if isinstance(Y, str): Y = tuple([Y]) elif isinstance(Y, list): Y = tuple(Y) if isinstance(Z, str): Z = tuple([Z]) elif isinstance(Z, list): Z = tuple(Z) if self.isshrink: if self.isshrink: print('good') self.datainfo.data = self.pre_com_view self.datainfo.iscont = True i = self.datainfo.get_distinct(X) j = self.datainfo.get_distinct(Y) if Z: k = self.datainfo.get_distinct(Z) else: k = 1 else: print('bad') self.datainfo.iscont = False self.datainfo.data = self.data i = self.datainfo.get_distinct(X) j = self.datainfo.get_distinct(Y) if Z: k = self.datainfo.get_distinct(Z) else: k = 1 dof = (i - 1) * (j - 1) * k if dof<=self.size/5: #self.datainfo.data = self.data #self.datainfo.iscont = False if self.isshrink: self.datainfo.data = self.pre_com_view self.datainfo.iscont = True I = self.datainfo.CMI(X, Y, Z) else: self.datainfo.data = self.data self.datainfo.iscont = False I = self.datainfo.CMI(X, Y, Z) gscore = 2 * self.size * I # /(log(2)/log(10))) #dof=(i*j*k-1)-(i+j+k-3) pval1 = 1 - chi2.cdf(gscore, dof) # pval2=stats.norm.cdf(gscore, (Js-1)*Ks, (Js-1)*Ks) res = 0 self.flag=False if debug: print('I: ' + str(I)) print('gscore: ' + str(gscore)) print('Degree of Fredom: ' + str(dof)) print("p-value: " + str(pval1)) if pval1 < pvalue: res = 0 else: res = 1 self.ngtest += 1 else: self.nptest += 1 if self.isshrink: pval, I = test.ulti_fast_permutation_tst(self.pre_com_view, X, Y, Z, pvalue=pvalue, ratio=ratio, debug=debug, num_samples=num_samples, loc_num_samples=loc_num_samples, fraction=fraction) else: pval, I = test.ulti_fast_permutation_tst(self.data, X, Y, Z, pvalue=pvalue, ratio=ratio, debug=debug, num_samples=num_samples, loc_num_samples=loc_num_samples, fraction=fraction,view=False) if debug: print('I: ' + str(I)) print("p-value: " + str(pval)) if pval > pvalue: res = 1 else: res = 0 return [res, I] elif method == 'g2': self.flag=False self.ngtest += 1 if isinstance(X, str): X = tuple([X]) elif isinstance(X, list): X = tuple(X) if isinstance(Y, str): Y = tuple([Y]) elif isinstance(Y, list): Y = tuple(Y) if isinstance(Z, str): Z = tuple([Z]) elif isinstance(Z, list): Z = tuple(Z) if self.isshrink: if self.isshrink: #print('good') self.datainfo.data = self.pre_com_view self.datainfo.iscont = True #print(len(self.pre_com_view)) I = self.datainfo.CMI(X, Y, Z) i = self.datainfo.get_distinct(X) j = self.datainfo.get_distinct(Y) if Z: k = self.datainfo.get_distinct(Z) else: k = 1 else: #print('bad') self.datainfo.iscont = False #print(len(data.index)) self.datainfo.data=self.data I = self.datainfo.CMI(X, Y, Z) i = self.datainfo.get_distinct(X) j = self.datainfo.get_distinct(Y) n = self.size if Z: k = self.datainfo.get_distinct(Z) else: k = 1 gscore = 2 * self.size * I # /(log(2)/log(10))) dof = (i - 1) * (j - 1) * k #dof=(i*j*k-1)-(i+j+k-3) pval1 = 1 - chi2.cdf(gscore, dof) # pval2=stats.norm.cdf(gscore, (Js-1)*Ks, (Js-1)*Ks) res = 0 if debug: print('I: ' + str(I)) print('gscore: ' + str(gscore)) print('Degree of Fredom: ' + str(dof)) print("p-value: " + str(pval1)) if pval1 < pvalue: res = 0 else: res = 1 end = time.time() #print(end-start,Z) return [res, I] def parent_test(self, x, y, z, alpha=0.0001, pvalue=0.05, method='norm', debug=False): res, I = test.CIT(self.data, x, y, z, alpha=alpha, pvalue=pvalue, method=method, coutious=True) if debug: print('########') print(x) print(y) print(z) print('########') if res == 0: return 1, I # c and b are parents of x else: return 0, I # on or both of them are non-parents of x def grow_shrink(self, target, method, maxmc=100,pvalue=0.05, blacklist=None, whitelist=None, fraction=1, debug=False, coutious=True, ratio=1, loc_num_samples=100, num_samples=1000, istreatment=[], optimized=False): self.data = self.orgdata.copy() self.datainfo.data=self.orgdata self.saminfo.data=self.orgdata alpha=20 flag= 0 self.isshrink = False if isinstance(target,str): target=[target] startalg = time.time() if target[0] in self.mbs.keys(): boundary = self.mbs[target[0]] # print("already computed: ", target, ':::::: white list:', whitelist, 'optimized: ', optimized) return boundary, self.causes,0 if target[0] in self.rev_mbs.keys(): whitelist = self.rev_mbs[target[0]] # print(white) boundary=[] # print("Computing boundary of: ",target, ':::::: white list:', whitelist, 'optimized: ',optimized) optimized=optimized # if True materlizes selected views cndl = copy.copy(self.features) cndl = cndl.tolist() # remove the blacke lists from the feature list if blacklist: for item in blacklist: if item in cndl: cndl.remove(item) # remove the white lists from the feature list #if target in self.rev_mbs.keys(): # whitelist=remove_dup(whitelist+ detector.rev_mbs[target[0]]) if whitelist: for t in whitelist: if cndl.__contains__(t): cndl.remove(t) # remove the target variables from the feature list if target[0] in cndl: cndl.remove(target[0]) rank1 = dict() rank2 = dict() self.saminfo.iscont=False self.datainfo.iscont=False self.datainfo.iscont = False for att in cndl: rank1[att] = [self.saminfo.CMI(att, target)] if istreatment!=[]: for att in cndl: rank2[att] = [self.saminfo.CH(istreatment, att)] ranked_res1=dict_to_rank(rank1,0) ranked_res2=dict_to_rank(rank2, 0) rank = dict() for item in rank1.keys(): if ranked_res1[item]>3: ranked_res2[item]=1000 elif ranked_res1[item]<=3: ranked_res1[item]=0 for item in rank1.keys(): rank[item] = [ranked_res1[item] + ranked_res2[item]] else: rank=rank1 cndl = top_kdict(rank, len(rank)) if not istreatment: cndl.reverse() if debug: print(cndl) if whitelist: B = whitelist.copy() else: B=[] if debug: print(whitelist) reduc=len(self.features)-(len(cndl)) if reduc>52: self.isshrink = True self.pre_com_view = pd.DataFrame(self.data.groupby(remove_dup(cndl +whitelist+ target+B)).size().reset_index(name="count")) self.pre_info = info.Info(self.pre_com_view, cont=True) else: self.isshrink=False discarded=[] for step in list(range(1, 3)): i = 0 if step==5 and optimized: self.isshrink = False #self.pre_com_view = self.data discarded.clear() # pass #self.pre_com_view= self.pre_com_view.groupby(B + target)['count'].sum().reset_index() while i < len(cndl): ''' rank.clear() for att in cndl: if att not in discarded: if att not in B: rank[att] = [self.saminfo.CMI(att, target,B)] C=top_kdict(rank, len(rank)) C.reverse() ''' c = cndl[i] if flag==1: if not self.isshrink: # self.isshrink self.isshrink = True fes = diff(cndl, discarded) self.pre_com_view = pd.DataFrame( self.data.groupby(remove_dup(target + fes + whitelist)).size().reset_index(name="count")) else: print(remove_dup(fes + target + whitelist)) self.isshrink = True self.pre_com_view = self.pre_com_view.groupby(remove_dup(fes + target + whitelist))[ 'count'].sum().reset_index() flag=0 if c not in B: if debug: print("Testing: " + str(c)) if debug: print('test started') #print(self.datainfo.CMI(target, c, B)) x, I = self.CIT(target, c, B,pvalue=pvalue, method=method, debug=debug,fraction=fraction, coutious=coutious,ratio=ratio,loc_num_samples=loc_num_samples, num_samples=num_samples, maxmcs=maxmc) if debug: print(x,I) print('test completed') if x == 0: B.insert(0, c) else: if optimized and step==2: discarded.insert(0, c) if len(discarded) % alpha==0: print("Matrlized views") flag=1 i = i + 1 if debug: print("Boundary: " + str(B)) if debug: print('########Shrink started##########') #self.shrinkgroups=self.shrinkgroups.groupby(B+target).size() #self.shrinkinfo=info.Info(self.shrinkgroups,cont=True) #self.groups = pd.DataFrame(self.shrinkgroups.groupby(B+target).size().reset_index(name="count")) #self.df_size = self.groups['count'].sum() if optimized: print("Matrlized views") self.pre_com_view = pd.DataFrame(self.data.groupby(remove_dup(B + target)).size().reset_index(name="count")) if not self.isshrink: self.isshrink = True start=time.time() self.pre_com_view = pd.DataFrame(self.data.groupby(remove_dup(B + target)).size().reset_index(name="count")) end=time.time() print(end-start,'######################################') else: self.pre_com_view = self.pre_com_view.groupby(remove_dup(B + target))['count'].sum().reset_index() tmp = B.copy() discarded.clear() for b in tmp: if whitelist: if b in whitelist: continue B.remove(b) if debug: print('test started') #print(self.datainfo.CMI(target,b,B)) x, I = self.CIT(target, b, B, pvalue=pvalue, method=method, debug=debug, fraction=fraction, coutious=coutious, ratio=ratio, loc_num_samples=loc_num_samples, num_samples=num_samples,maxmcs=maxmc) if debug: print('test completed') if x == 0: B.insert(0, b) else: discarded.insert(0, c) if optimized: if len(discarded) % alpha == 0: print("Matrlized views") self.pre_com_view = self.pre_com_view.groupby(remove_dup(B + target))['count'].sum().reset_index() if debug: print("Boundary: " + str(B)) for item in B: self.rev_mbs[item] = target self.mbs[target[0]]=B.copy() endalg = time.time() #print("Boundary of "+str(target[0]), str(B), ' ::::::: elapsed time:', endalg-startalg) return B, self.causes,endalg-startalg def grow_shrink2222(self, target, method,pvalue=0.05, blacklist=None, whitelist=None, fraction=1, shfraction=1, debug=False, coutious=True,ratio=1,loc_num_samples=100,num_samples=1000,istreatment=[]): if not target[0] in self.mbs.keys(): if target[0] in self.rev_mbs.keys(): whitelist=remove_dup(self.rev_mbs[target[0]]+whitelist) print("Computing boundary of: ",target, ':::::: white list:', whitelist) start=time.time() cndl = copy.copy(self.features) cndl = cndl.tolist() if blacklist: for item in blacklist: if item in cndl: cndl.remove(item) # remove the target variables from the feature list if isinstance(target, str): target = [target] for t in target: if cndl.__contains__(t): cndl.remove(t) if whitelist: for t in whitelist: if cndl.__contains__(t): cndl.remove(t) ''' for att in cndl: rank1[att] = [self.saminfo.CMI(att, target)] if istreatment!=[]: for att in cndl: rank2[att] = [self.saminfo.CH(istreatment, att)] ranked_res1=dict_to_rank(rank1,0) ranked_res2=dict_to_rank(rank2, 0) rank = dict() for item in rank1.keys(): if ranked_res1[item]>3: ranked_res2[item]=1000 elif ranked_res1[item]<=3: ranked_res1[item]=0 for item in rank1.keys(): rank[item] = [ranked_res1[item] + ranked_res2[item]] else: rank=rank1 cndl = top_kdict(rank, len(rank)) if not istreatment: cndl.reverse() if debug: print(cndl) #cndl.reverse() ''' if whitelist: B = whitelist.copy() else: B=[] if debug: print(whitelist) reduc=len(self.features)-(len(cndl)) self.pre_info=info.Info(self.data) if reduc>=2: self.isshrink = True self.pre_com_view = pd.DataFrame(self.data.groupby(remove_dup(cndl +whitelist+ target+B)).size().reset_index(name="count")) self.pre_info.data=self.pre_com_view self.pre_info.iscont = True else: self.isshrink=False discarded=[] nsam = len(self.sample) for step in list(range(1, 3)): tmp = cndl.copy() # pass #self.pre_com_view= self.pre_com_view.groupby(B + target)['count'].sum().reset_index() rank = dict() while len(tmp)>0: rank.clear() for att in tmp: #rank[att] = [self.saminfo.CMI(target, att,B)] x, I = self.CIT(att, target, B, pvalue=pvalue, method=method, debug=debug, fraction=fraction, coutious=coutious, ratio=ratio, loc_num_samples=loc_num_samples, num_samples=num_samples, maxmc=maxmc) #I = self.datainfo.CMI(target, att,B) if x= alpha: return 1 # c and b are parents of x else: return 0 # on or both of them are non-parents of x def get_parents(self, target, pvalue=0.05, method='adj_g2', ratio=0.1, fraction=0.1, num_samples=1000, loc_num_samples=100, blacklist=[], whitelist=[], debug=False, coutious=False, IStime=False, maxmc=100,k=10,optimized=False,fullcheck=False): start=time.time() targetboundary, causes,timeeee = self.grow_shrink(target, pvalue=pvalue, method=method ,ratio=ratio, fraction=fraction, num_samples=num_samples, blacklist=blacklist, whitelist=whitelist, debug=debug, coutious=coutious, loc_num_samples=loc_num_samples,maxmc=maxmc,optimized=optimized) end=time.time() tdur=end-start self.isshrink=False # print("*****\n") # print(targetboundary, causes,timeeee) # print("\n*****") parents = self.learn_parents(target, target_boundary=targetboundary, pvalue=pvalue, method=method ,ratio=ratio, fraction=fraction, num_samples=num_samples, blacklist=blacklist, whitelist=whitelist, debug=debug, coutious=coutious, loc_num_samples=loc_num_samples, deep=True,k=k,maxmc=maxmc,optimized=optimized) # print("*****\n") # print(parents) # print("\n*****") #print(parents,'heree') if fullcheck==True and parents: if optimized: self.pre_com_view = pd.DataFrame( self.data.groupby(remove_dup(targetboundary + parents + target)).size().reset_index(name="count")) self.datainfo.data = self.pre_com_view self.datainfo.iscont = True for par in parents: #boundary, causes, time2 = self.grow_shrink(par, pvalue=pvalue, method=method # , ratio=1, fraction=fraction, num_samples=num_samples, # blacklist=[], whitelist=[], debug=debug, # coutious=coutious, # loc_num_samples=loc_num_samples, maxmc=maxmc, # optimized=optimized) #boundary.remove(item) boundary=targetboundary if target[0] in boundary: boundary.remove(target[0]) tretametboundary=targetboundary.copy() tretametboundary.remove(par) #if len(cov)>len(boundary): # cov=boundary.copy() cov=tretametboundary for i in list(range(0, min(k, len(cov)))): # print(i) found=False can = findsubsets(cov, i) for verc in can: tmp = cov.copy() for item in verc: tmp.remove(item) res, I = self.CIT(target, par, tmp, pvalue=pvalue, method=method, debug=debug, fraction=fraction, coutious=coutious, ratio=ratio, num_samples=num_samples, loc_num_samples=loc_num_samples, maxmcs=maxmc) if res==1: parents.remove(par) found=True break print('par removed') if found==True: break if found == True: break #if parents: #if len(parents)<2: # parents=[] if IStime: return targetboundary,parents,tdur else: return targetboundary, parents def get_indep(self,target,B, pvalue=0.05, method='fpermu', ratio=1, fraction=1, num_samples=1000, debug=False, coutious=False,loc_num_samples=100,maxmc=100): indep = [] for c in B: if not c == target: x, I = self.CIT(target, c, pvalue=pvalue, method=method, debug=debug, fraction=fraction, coutious=coutious, ratio=ratio, num_samples=num_samples,loc_num_samples=loc_num_samples, maxmcs=maxmc) if x == 1: indep.insert(0, c) return indep, I if __name__ == '__main__': black = ['fnlwgt', 'educationnum'] #data = read_from_csv('/Users/babakmac/Documents/XDBData/berkeley.csv') #data-read_from_db('qexpriment718') #filename='dag5008' #10 m filename = 'dag84att10' # data = read_from_db(filename) #print(len(data)) #data.drop(data.columns[[0]], axis=1, inplace=True) ## drop the first column #print(data.columns) detector = FairDB(data,1,cube=True,cubename='small10cubes') # expricube12 cube 12 expricube10 small10cubes #detector = FairDB(data) #detector = FairDB(data, 1, database=True, tablename=filename) whitelist = [] black = [""] # ['fid', 'flightdate','origincityname', 'flightnum', 'tailnum','origincityname', 'depdelay', 'distance', 'arrdelayminutes', 'flights','yyear'] rown = 100000 start = time.time() print(len(data.index)) target = ['b'] fraction = 1 method = 'g2' pvalue = 0.01 num_samples = 1000 loc_num_samples = 100 debug = False coutious = 'yes' k=1000 start=time.time() cov1, par1 = detector.get_parents(target, pvalue=pvalue, method=method ,ratio=1, fraction=fraction, num_samples=num_samples, blacklist=black, whitelist=whitelist, debug=False, coutious=coutious, loc_num_samples=loc_num_samples,maxmc=1000,fullcheck=True,optimized=False) end = time.time() print(cov1) print(par1) print('g test',detector.ngtest) print('p test',detector.nptest) print(end-start) ''' Boundary: ['arrdelay', 'destcityname', 'yyear'] Boundary of delayed ['arrdelay', 'destcityname', 'yyear'] ::::::: elapsed time: 8.304201126098633 ['arrdelay', 'destcityname', 'yyear'] {} g test 0 p test 42 8.304222106933594 Boundary of carrier ['dest', 'yyear', 'crsdeptime', 'quarter'] ::::::: elapsed time: 0.7893519401550293 ['dest', 'yyear', 'crsdeptime', 'quarter'] {} g test 42 p test 0 0.7893698215484619 Boundary of carrier ['dest', 'origincityname', 'yyear', 'crsdeptime', 'month'] ::::::: elapsed time: 5.857375860214233 ['dest', 'origincityname', 'yyear', 'crsdeptime', 'month'] {} g test 0 p test 42 5.857398986816406 ['f', 'b', 'c', 'm', 'k'] heree ['m', 'f', 'k', 'b', 'c'] ['f', 'b', 'c', 'm', 'k'] g test 643 p test 0 16.728121995925903 ['m', 'f', 'k', 'b', 'c'] ['b', 'c', 'f', 'm', 'k'] g test 112 p test 0 220.87081718444824 190 ['a', 'f', 'e', 'i', 'g', 'd', 'b'] ['f', 'e', 'b', 'a', 'd'] g test 694 p test 0 125.43286299705505 Boundary of a ['b', 'c'] ::::::: elapsed time: 0.13115215301513672 [] heree ['c', 'a'] [] g test 40 p test 0 2.0020599365234375 g test 40 p test 0 2.037764072418213 '''PK!Gshypdb/core/explanation.py from math import * import numpy as np from FairDB.utils.read_data import * from FairDB.utils.util import * import numpy as np from itertools import combinations, permutations def _build_graph(ranks): n_voters, n_candidates = ranks.shape edge_weights = np.zeros((n_candidates, n_candidates)) for i, j in combinations(range(n_candidates), 2): preference = ranks[:, i] - ranks[:, j] h_ij = np.sum(preference < 0) # prefers i to j h_ji = np.sum(preference > 0) # prefers j to i if h_ij > h_ji: edge_weights[i, j] = h_ij - h_ji elif h_ij < h_ji: edge_weights[j, i] = h_ji - h_ij return edge_weights def rankaggr_lp(ranks): """Kemeny-Young optimal rank aggregation""" n_voters, n_candidates = ranks.shape # maximize c.T * x edge_weights = _build_graph(ranks) c = -1 * edge_weights.ravel() idx = lambda i, j: n_candidates * i + j # constraints for every pair pairwise_constraints = np.zeros(((n_candidates * (n_candidates - 1)) / 2, n_candidates ** 2)) for row, (i, j) in zip(pairwise_constraints, combinations(range(n_candidates), 2)): row[[idx(i, j), idx(j, i)]] = 1 # and for every cycle of length 3 triangle_constraints = np.zeros(((n_candidates * (n_candidates - 1) * (n_candidates - 2)), n_candidates ** 2)) for row, (i, j, k) in zip(triangle_constraints, permutations(range(n_candidates), 3)): row[[idx(i, j), idx(j, k), idx(k, i)]] = 1 constraints = np.vstack([pairwise_constraints, triangle_constraints]) constraint_rhs = np.hstack([np.ones(len(pairwise_constraints)), np.ones(len(triangle_constraints))]) constraint_signs = np.hstack([np.zeros(len(pairwise_constraints)), # == np.ones(len(triangle_constraints))]) # >= obj, x, duals = lp_solve(c, constraints, constraint_rhs, constraint_signs, xint=range(1, 1 + n_candidates ** 2)) x = np.array(x).reshape((n_candidates, n_candidates)) aggr_rank = x.sum(axis=1) return obj, aggr_rank def kendalltau_dist(rank_a, rank_b): tau = 0 n_candidates = len(rank_a) for i, j in combinations(range(n_candidates), 2): tau += (np.sign(rank_a[i] - rank_a[j]) == -np.sign(rank_b[i] - rank_b[j])) return tau def rankaggr_brute(ranks): min_dist = np.inf best_rank = None n_voters, n_candidates = ranks.shape for candidate_rank in permutations(range(n_candidates)): dist = np.sum(kendalltau_dist(candidate_rank, rank) for rank in ranks) if dist < min_dist: min_dist = dist best_rank = candidate_rank return min_dist, best_rank def top_k_explanation(data, treatment, outcome, covariate, k=5, method='2', debug=False): # The function returnm top k core for a group by SQL query # # n = len(data.index) cov_states = data[covariate].drop_duplicates().values tre_states = data[treatment].drop_duplicates().values out_states = data[outcome].drop_duplicates().values messure_dic = dict() explanation_df=pd.DataFrame(columns = [covariate[0],treatment[0], outcome[0],'SumofRanks',covariate[0]+'->'+treatment[0],covariate[0]+'->'+outcome[0],'RankofTotalCorrelation','TotalCorrelation']) if method: for out in out_states: y = data.loc[data[outcome[0]].isin(out)].index.values for tre in tre_states: x = data.loc[data[treatment[0]].isin(tre)].index.values xy = np.intersect1d(x, y) px = len(x) / n py = len(y) / n pxy = len(xy) / n if px == 0 or py == 0 or pxy == 0: continue Ixy = (pxy * log(pxy / (px * py))) for cv in cov_states: z = data.loc[data[covariate[0]].isin(cv)].index.values xz = np.intersect1d(x, z) yz = np.intersect1d(y, z) xyz = np.intersect1d(xy, z) pz = len(z) / n pxz = len(xz) / n pyz = len(yz) / n pxyz = len(xyz) / n if pz == 0 or py == 0 or px == 0 or pxyz == 0: continue Iyz = pyz * log(pyz / (py * pz)) Ixz = pxz * log(pxz / (px * pz)) # if method=='tc': tc = pxyz * log(pxyz / (px * py * pz)) rank1 = Ixz # /(px*log(px)) rank2 = Iyz # /(py*log(py)) #key = str(treatment[0]) + ': ' + str(tre[0])+ ' <-- ' + \ # str(covariate[0]) + ': ' + str(cv[0])+ ' --> ' + str(outcome[0]) + ': ' + str(out[0]) key = str(cv[0])+','+str(tre[0])+ ','+str(out[0]) if tc>0: messure_dic[key] = [rank1, rank2, tc] # res1 = sorted(messure_dic.items(), key=lambda e: e[1][0]) # print(messure_dic) ranked_res1 = dict_to_rank(messure_dic, 0) ranked_res2 = dict_to_rank(messure_dic, 1) ranked_res3 = dict_to_rank(messure_dic, 2) scorelist=[ranked_res1,ranked_res2] #FLRA = FullListRankAggregator() #aggRanks = FLRA.aggregate_ranks(scorelist) col=list(ranked_res1.keys()) rank1=[] rank2=[] rank3=[] for item in col: rank1.insert(0, ranked_res1[item]) rank2.insert(0, ranked_res2[item]) rank3.insert(0, ranked_res3[item]) rank1.reverse() rank2.reverse() rank3.reverse() ranked_res1_val=ranked_res1.values() rank1=np.array(rank1) rank2 = np.array(rank2) rank3 = np.array(rank3) lent=7 if method == '3': print('3 ranks aggregated') ranks = np.array([rank1[0:lent], rank2[0:lent], rank3[0:lent]]) else: print('2 ranks aggregated') ranks = np.array([rank1[0:lent], rank2[0:lent]]) #dist, aggr = rankaggr_brute(ranks) #_, aggr = rankaggr_lp(ranks) cols=messure_dic.keys() #[cols[i] for i in np.argsort(aggr)] #np.argsort(aggr) col=col[0:lent] aggRanks = dict() i=0 for item in col: #aggRanks[item]=aggr[i] i=i+1 explanation = dict() for item in col: if messure_dic[item][2]<0: continue #print(ranked_res1[item]) #print(ranked_res2[item]) agg=(ranked_res1[item]+ranked_res2[item]+ranked_res3[item])*(abs(ranked_res1[item]-ranked_res2[item])+1) #print(agg) explanation[item] = [agg,ranked_res1[item] , ranked_res2[item], ranked_res3[item], messure_dic[item][2]] #res = dict() res = sorted(explanation.items(), key=lambda e: e[1][0]) res = res[:k] for exp in res: item=exp[0].split(',')+exp[1] #print(item) explanation_df.loc[k] =item # adding a row explanation_df.index = explanation_df.index - 1 # shifting index #df = explanation_df.sort() return explanation_df if __name__ == '__main__': data=read_from_csv('/Users/babakmac/Documents/XDBData/binadult.csv') treatment = ['sex'] outcome = ['income'] cov=['maritalstatus'] top=top_k_explanation(data,treatment,outcome,cov) print(top) ''' data = read_from_csv('/Users/babakmac/Documents/XDBData/staples(b).csv') treatment = ['income'] outcome = ['price'] cov=['distance'] top=top_k_explanation(data,treatment,outcome,cov) print(top) '''PK!|0Qhypdb/core/matching.pyimport copy import pandas as pd from FairDB.utils.read_data import * import FairDB.modules.infotheo.info_theo as info from FairDB.utils.util import * def get_respon2(data,treatment, outcome, covariates): resp1 = dict() resp2 = dict() temp = covariates.copy() if treatment[0] in covariates: covariates.remove(treatment[0]) inf=info.Info(data) base=inf.CMI(treatment[0],outcome[0]) for att in covariates: temp.remove(att) after = inf.CMI(treatment[0], outcome[0], att) loss = (base - after) if loss>0: resp1[att] = loss temp.insert(0, att) else: resp2[att] = loss total=0 for key,value in resp1.items(): total+=value sum=0 for key, value in resp1.items(): resp1[key]=value/total sum+=resp1[key] total = 0 for key,value in resp2.items(): total+=value sum=0 for key, value in resp2.items(): resp2[key]=value/total sum+=resp2[key] sorted_x1 = reversed(sorted(resp1.items(), key=lambda e: e[1])) sorted_x2 = reversed(sorted(resp2.items(), key=lambda e: e[1])) return dict(sorted_x1),dict(sorted_x2) def get_respon(data,treatment, outcome, covariates): resp = dict() temp = covariates.copy() if treatment[0] in covariates: covariates.remove(treatment[0]) inf=info.Info(data) base=inf.CMI(treatment[0],covariates) for att in covariates: temp.remove(att) after = inf.CMI(treatment[0], temp,att) loss = (base - after) #print(base) #print(loss) resp[att] = loss temp.insert(0, att) total=0 for key,value in resp.items(): total+=value sum=0 for key, value in resp.items(): resp[key]=value/total sum+=resp[key] sorted_x = reversed(sorted(resp.items(), key=lambda e: e[1])) return dict(sorted_x) def adjust_overlap(data,treatment, cov): if isinstance(treatment,str): treatment=[treatment] treatmentlevel=get_distinct(data,treatment) ovelap = data.groupby(cov).agg({treatment[0]: pd.Series.nunique}).reset_index() if ovelap.empty: print('No Overlap wrt. ', cov) return None ovelap.rename(columns=lambda x: x.replace(treatment[0], 'counts'), inplace=True) x = copy.copy(cov) x.insert(0, 'counts') pruned = data.merge(ovelap[x], on=cov, how='inner') pruned = pruned[pruned['counts'] == treatmentlevel] n1 = len(pruned.index) n2 = len(data.index) #n1=treatmentlevel #n2 = get_distinct(pruned, cov) val = pd.DataFrame({'counts': pruned.groupby(treatment).size()}).reset_index() return [(n1 / n2) * 100, pruned, n1, n2, val['counts'].values] def matching(data,treatment,outcome,cov,threshould=0): rank=get_respon(data, treatment, outcome, cov) inf=info.Info(data) #for att in cov: # rank[att] = inf.CH(treatment,att) cov = top_kdict(rank, len(rank)) adj_set = cov.copy() ## to-do compute subclasses here pruned, overlapped, after, before, min= adjust_overlap(data,treatment,adj_set) treatment = treatment[0] while pruned < threshould: adj_set.remove(adj_set[0]) if adj_set: pruned, overlapped, after, before, min = adjust_overlap(data, treatment, adj_set) else: return None return overlapped,adj_set,pruned if __name__ == '__main__': data=read_from_csv('/Users/babakmac/Documents/XDBData/binadult.csv') data=read_from_db('qexpriment718') treatment = ['carrier'] outcome = ['delayed'] cov=['origin'] overlapped, adj_set, pruned=matching(data,treatment, outcome,cov,threshould=90) print(adj_set) #overlapped, adj_set, pruned = matching(data, treatment, outcome, cov, threshould=50) #print(adj_set) #overlapped, adj_set, pruned = matching(data, treatment, outcome, cov, threshould=10) #print(adj_set) X=get_respon(data,treatment, outcome,cov) print(X) PK!vi##hypdb/core/query.py from FairDB.utils.read_data import * from FairDB.core.matching import matching from FairDB.utils.util import * from pylab import * import json import numpy def naive_groupby(data,treatment,outcome,where=[]): ate = data.sort_values(by=treatment).groupby(treatment)[outcome].mean().reset_index() return ate def remove_dup(lst): lst=set(lst) return list(lst) # mediatpor and init not needed for total effect def adjusted_groupby(data,treatment,outcome,covariates,mediatpor=[],init=[],threshould=0): print(treatment,outcome,covariates,mediatpor,init) #print(data) #print(list(data.columns.values)) #print(covariates) matcheddata ,adj_set,pur=matching(data, treatment, outcome, remove_dup(covariates+mediatpor), threshould=threshould) size = len(matcheddata.index) if mediatpor: tmp = matcheddata[matcheddata[treatment[0]].isin(init)] prob1 = pd.DataFrame({'prob1': tmp.groupby(remove_dup(mediatpor+covariates)).size() / size}).reset_index() #print(prob1) if covariates: prob2 = pd.DataFrame({'prob2': matcheddata.groupby(covariates).size() / size}).reset_index() #print(prob2) counts = pd.DataFrame({'count': matcheddata.groupby(treatment).size()}).reset_index() #print(counts) covariates.insert(0,treatment[0]) #print(covariates) #print(list(data.columns.values)) ate = data.groupby(remove_dup(mediatpor+covariates))[outcome].mean().reset_index() #print(ate) ate.rename(columns={outcome[0]: 'ATE_X'}, inplace=True) covariates.remove(treatment[0]) if covariates and not mediatpor: ate = ate.merge(prob2, on=covariates) W_ATEX = ate['ATE_X'] * ate['prob2'] if mediatpor and covariates: ate = ate.merge(prob2, on=covariates) ate = ate.merge(prob1, on=mediatpor) W_ATEX = ate['ATE_X'] * ate['prob1'] * ate['prob2'] if mediatpor and not covariates: ate = ate.merge(prob1, on=mediatpor) W_ATEX = ate['ATE_X'] * ate['prob1'] ate['WATE_X'] = W_ATEX wate = pd.DataFrame({outcome[0]: ate.groupby(treatment).sum()['WATE_X']}).reset_index() ate = wate.merge(counts, on=treatment, how='inner') return ate,matcheddata ,adj_set,pur def plot(res,treatment,outcome,ylable='',title='',fontsize=10): outJSON = [] outcomes = res[outcome[0]].values attrs = [[] for index in range(len(outcomes))] for i in range(len(outcomes)): for j in range(len(treatment)): attrs[i].append(res[treatment[j]].values[i]) for i, j in zip(attrs, outcomes): temp = {} for k in range(len(treatment)): if type(i[k]).__module__ == 'numpy': temp[treatment[k]] = float(i[k]) else: temp[treatment[k]] = i[k] if type(i[k]).__module__ == 'numpy': temp[outcome[0]] = float(j) else: temp[outcome[0]] = j outJSON.append(temp) #print(outJSON) #print(json.dumps(outJSON)) return outJSON """ par1 parents of the treatments cov1 boundary of the treatments par2 parents of the outcome cov2 boundary of the outcome """ def graph(cov1, par1, cov2, par2, treatment, outcome, outJSON): outJSON['graph'] = {'nodes': [], 'links': [], 'correlation': {'dashed': True, 'treatment': treatment, 'outcome': outcome}} # in boundary of each other if treatment[0] in par2: outJSON['graph']['correlation']['dashed'] = False # edge doesn't exist but we need it for the graph if not outcome[0] in cov1 and not treatment[0] in cov2: outJSON['graph']['links'].append({'source': treatment[0], 'target': outcome[0]}) # nodes for node in set(cov1 + cov2 + treatment + outcome): outJSON['graph']['nodes'].append({'id': node, 'label': node}) # directed for node in par1: outJSON['graph']['links'].append({'source': node, 'target': treatment[0]}) #print('par1', node, treatment[0]) for node in par2: outJSON['graph']['links'].append({'source': node, 'target': outcome[0]}) #print('par2', node, outcome[0]) # undirected for node in set(cov1) - set(par1): outJSON['graph']['links'].append({'source': treatment[0], 'target': node}) #print('cov1', node, treatment[0]) for node in set(cov2) - set(par2): outJSON['graph']['links'].append({'source': outcome[0], 'target': node}) #print('cov2', node, outcome[0]) outJSON['graph']['links'] = [dict(t) for t in {tuple(d.items()) for d in outJSON['graph']['links']}] #print(outJSON['graph']['links']) #print(json.dumps(outJSON)) # outJSON['graph']['treatment']['attributes'] = treatment # outJSON['graph']['treatment']['boundary'] = cov1 # outJSON['graph']['treatment']['parents'] = par1 # outJSON['graph']['outcome']['attributes'] = outcome # outJSON['graph']['outcome']['boundary'] = cov2 # outJSON['graph']['outcome']['parents'] = par2 def grouped_bar(df): pos = list(range(len(df['pre_score']))) width = 0.25 # Plotting the bars fig, ax = plt.subplots(figsize=(10, 5)) # Create a bar with pre_score data, # in position pos, plt.bar(pos, # using df['pre_score'] data, df['pre_score'], # of width width, # with alpha 0.5 alpha=0.5, # with color color='#EE3224', # with label the first value in first_name label=df['first_name'][0]) # Create a bar with mid_score data, # in position pos + some width buffer, plt.bar([p + width for p in pos], # using df['mid_score'] data, df['mid_score'], # of width width, # with alpha 0.5 alpha=0.5, # with color color='#F78F1E', # with label the second value in first_name label=df['first_name'][1]) # Create a bar with post_score data, # in position pos + some width buffer, plt.bar([p + width * 2 for p in pos], # using df['post_score'] data, df['post_score'], # of width width, # with alpha 0.5 alpha=0.5, # with color color='#FFC222', # with label the third value in first_name label=df['first_name'][2]) # Set the y axis label ax.set_ylabel('Score') # Set the chart's title ax.set_title('Test Subject Scores') # Set the position of the x ticks ax.set_xticks([p + 1.5 * width for p in pos]) # Set the labels for the x ticks ax.set_xticklabels(df['first_name']) # Setting the x-axis and y-axis limits plt.xlim(min(pos) - width, max(pos) + width * 4) plt.ylim([0, max(df['pre_score'] + df['mid_score'] + df['post_score'])]) # Adding the legend and showing the plot plt.legend(['Pre Score', 'Mid Score', 'Post Score'], loc='upper left') plt.grid() plt.show() if __name__ == '__main__': ''' data=read_from_csv('/Users/babakmac/Documents/XDBData/paperexample2.csv') x=naive_groupby(data,['carrier'], ['delayed']) print(x) cov = ['crsdeptime', 'yyear','deptime','arrdelay','origin'] orderedcov=get_respon(data, ['carrier'], ['delayed'], cov) print(orderedcov) matched,adj_set=matching(data,['carrier'], ['delayed'],orderedcov,threshould=100) ratio, matcheddata, n1, n2, counts=matched x=adjusted_groupby(matcheddata,['carrier'], ['delayed'],adj_set) print(x) #NMI=info.Info.CMI(data,['carrier'], ['delayed'],adj_set,normilized=True) #print(NMI) treatment=['sex'] outcome=['income'] cov=['age', 'education', 'maritalstatus', 'occupation', 'race', 'capitalgain', 'capitalloss', 'hoursperweek','nativecountry'] #cov=['maritalstatus'] data = read_from_csv('/Users/babakmac/Documents/XDBData/binadult.csv') x = naive_groupby(data, treatment, outcome) print(x) orderedcov = get_respon(data, treatment, outcome, cov) print(orderedcov) matched, adj_set = matching(data, treatment, outcome, orderedcov, threshould=100) ratio, matcheddata, n1, n2, counts = matched x = adjusted_groupby(matcheddata, treatment, outcome, adj_set) print(x) ''' #data = read_from_csv('/Users/babakmac/Documents/XDBData/binadult.csv') data = read_from_db('qexpriment1037') treatment = ['carrier'] outcome = ['delayed'] cov1=['dest', 'origin', 'yyear', 'crsdeptime', 'month'] cov2=['arrdelay', 'yyear', 'crsdeptime'] x = naive_groupby(data, treatment, outcome) print(x) ate, matcheddata, adj_set, pur = adjusted_groupby(data, treatment, outcome, covariates=['origin', 'yyear', 'month'], mediatpor=[], init=[], threshould=90) print(ate) #plot(ate,treatment,outcome,'idadf','asffa') PK!i f: winer = treatstates[0] res2 = pd.DataFrame( {'ATE': df.groupby([treatment[0] , cv])[outcome[0]].mean()}).reset_index() covstates = np.unique(df[cv]) flag = 0 for c in covstates: x = res2[res2[cv] == c] t1 = x[x[treatment[0]] == treatstates[0]] t2 = x[x[treatment[0]] == treatstates[1]] if t1['ATE'].values > t2['ATE'].values and winer == treatstates[1]: flag = flag + 1 elif t1['ATE'].values < t2['ATE'].values and winer == treatstates[0]: flag = flag + 1 return flag / len(covstates) if __name__ == '__main__': ''' data=read_from_csv('/Users/babakmac/Documents/XDBData/paperexample2.csv') x=naive_groupby(data,['carrier'], ['delayed']) print(x) cov = ['crsdeptime', 'yyear','deptime','arrdelay','origin'] orderedcov=get_respon(data, ['carrier'], ['delayed'], cov) print(orderedcov) matched,adj_set=matching(data,['carrier'], ['delayed'],orderedcov,threshould=100) ratio, matcheddata, n1, n2, counts=matched x=adjusted_groupby(matcheddata,['carrier'], ['delayed'],adj_set) print(x) #NMI=info.Info.CMI(data,['carrier'], ['delayed'],adj_set,normilized=True) #print(NMI) ''' treatment=['sex'] outcome=['income'] cov=['age', 'education', 'maritalstatus', 'occupation', 'race', 'capitalgain', 'capitalloss', 'hoursperweek','nativecountry'] #cov=['maritalstatus'] data = read_from_csv('/Users/babakmac/Documents/XDBData/binadult.csv') x = SimposonReversal(data, treatment, outcome,cov) print(x) PK!hypdb/core/test.sqlWITH wights AS ( SELECT count(*)/N AS wight, Z FROM D GROUP BY Z), groups AS ( SELECT T, Z, avg(Y) AS intavg FROM D GROUP BY T,Z), SELECT sum(lte*prob) FROM groups, wights WHERE groups.Z=wights.Z GROUP BY TPK!"hypdb/modules/infotheo/__init__.pyPK!Û44#hypdb/modules/infotheo/info_theo.pyfrom pylab import * import scipy.stats as stats from math import * from FairDB.utils.read_data import read_from_csv from FairDB.utils.util import get_distinct from math import * import functools import scipy.stats as stats from pylab import * from FairDB.utils.read_data import read_from_csv from scipy.special import entr import time from scipy.special import entr import pandas as pd #from modules.statistics.hypothesis_test import * import numpy_indexed as npi from FairDB.utils.util import * import numba import os import psycopg2 from FairDB.utils.read_data import * class Info(object): def __init__(self,data,cont=False,cube=False, database=False,cubename='',tablename=''): #ent_vec={('2',): 0.6624251009169959, ('1',): 0.46486016281731624, ('2', '1'): 1.1260786508720364, ('3',): 0.6592182242592086, ('3', '1'): 1.1241257685185306, ('4',): 0.6360546499180026, ('4', '1'): 1.1003435629709328, ('5',): 0.6020225086355226, ('5', '1'): 1.066778439454538, ('6',): 0.3515538832282088, ('6', '1'): 0.7531694433216624, ('7',): 0.6928896290293375, ('7', '1'): 1.1577611828266903, ('8',): 0.5973876856921985, ('8', '1'): 1.0527193582646281, ('1', '6'): 0.7531694433216624, ('2', '6'): 1.0139696982518867, ('2', '1', '6'): 1.4120730374929606, ('3', '6'): 1.010787728813978, ('3', '1', '6'): 1.4124543349865937, ('4', '6'): 0.9763749940590742, ('4', '1', '6'): 1.377607314855839, ('5', '6'): 0.9535956722306906, ('5', '1', '6'): 1.3550341078445212, ('7', '6'): 1.044453826932347, ('7', '1', '6'): 1.4461518246665037, ('8', '6'): 0.9489757373207992, ('8', '1', '6'): 1.3330613804023321, ('1', '8', '6'): 1.3330613804023321, ('2', '6', '8'): 1.5053420706231968, ('1', '6', '8'): 1.3330613804023321, ('2', '1', '6', '8'): 1.8894889971454922, ('6', '8'): 0.9489757373207992, ('3', '6', '8'): 1.6080524788576307, ('3', '1', '6', '8'): 1.9917195167979074, ('4', '6', '8'): 1.5661962207734064, ('4', '1', '6', '8'): 1.9502606521258898, ('5', '6', '8'): 1.546116906690437, ('5', '1', '6', '8'): 1.930259646737758, ('7', '6', '8'): 1.641944200527769, ('7', '1', '6', '8'): 2.02603952718671, ('6', '6', '8'): 0.9489757373207992, ('6', '1', '6', '8'): 1.3330613804023321, ('8', '6', '8'): 0.9489757373207992, ('8', '1', '6', '8'): 1.3330613804023321, ('1', '2'): 1.1260786508720364, ('3', '2'): 1.320372770279152, ('4', '2'): 1.2580425508625563, ('5', '2'): 1.2465089624682792, ('6', '2'): 1.0139696982518867, ('7', '2'): 1.3553420762380817, ('8', '2'): 1.1537340355196224, ('2', '8'): 1.1537340355196224, ('1', '8'): 1.0527193582646281, ('1', '2', '8'): 1.6090254189461148, ('3', '8'): 1.2564293295425961, ('3', '2', '8'): 1.8117530514767837, ('4', '8'): 1.2263480316179498, ('4', '2', '8'): 1.749307571036738, ('5', '8'): 1.194466538243339, ('5', '2', '8'): 1.7373503005391828, ('6', '2', '8'): 1.5053420706231966, ('7', '8'): 1.2903246602572875, ('7', '2', '8'): 1.8463751613713952, ('2', '4', '8'): 1.749307571036738, ('1', '4', '8'): 1.6803620649909552, ('1', '2', '4', '8'): 2.203064258729314, ('3', '4', '8'): 1.8854165336241393, ('3', '2', '4', '8'): 2.4072843499901393, ('5', '4', '8'): 1.8213666160499338, ('5', '2', '4', '8'): 2.3328723309557033, ('6', '4', '8'): 1.5661962207734066, ('6', '2', '4', '8'): 2.086917179319415, ('7', '4', '8'): 1.919349557425984, ('7', '2', '4', '8'): 2.4420008152734223, ('2', '5', '4', '8'): 2.332872330955704, ('1', '4', '5', '8'): 2.2755011137581382, ('2', '4', '5', '8'): 2.3328723309557033, ('1', '2', '4', '5', '8'): 2.786891378220611, ('4', '5', '8'): 1.8213666160499338, ('3', '4', '5', '8'): 2.434161474023957, ('3', '2', '4', '5', '8'): 2.94563414616066, ('6', '4', '5', '8'): 2.161395705281423, ('6', '2', '4', '5', '8'): 2.670724041364189, ('7', '4', '5', '8'): 2.5142254070918186, ('7', '2', '4', '5', '8'): 3.025511999458211, ('2', '6', '4', '5', '8'): 2.670724041364189, ('1', '6', '4', '5', '8'): 2.545576314356484, ('1', '2', '6', '4', '5', '8'): 3.054862674958047, ('3', '6', '4', '5', '8'): 2.7742733410984988, ('3', '2', '6', '4', '5', '8'): 3.28366212213697, ('7', '6', '4', '5', '8'): 2.8544809407341774, ('7', '2', '6', '4', '5', '8'): 3.3633318653176407, ('4', '6', '4', '5', '8'): 2.1613957052814228, ('4', '2', '6', '4', '5', '8'): 2.670724041364189, ('5', '6', '4', '5', '8'): 2.1613957052814228, ('5', '2', '6', '4', '5', '8'): 2.6707240413641884, ('6', '6', '4', '5', '8'): 2.161395705281423, ('6', '2', '6', '4', '5', '8'): 2.670724041364189, ('8', '6', '4', '5', '8'): 2.161395705281423, ('8', '2', '6', '4', '5', '8'): 2.6707240413641893, ('1', '7'): 1.1577611828266903, ('2', '7'): 1.3553420762380815, ('3', '7'): 1.352053161532893, ('4', '7'): 1.3289907659391305, ('5', '7'): 1.294708461426641, ('6', '7'): 1.044453826932347, ('8', '7'): 1.2903246602572873} self.data = data self.iscont = False self.iscube=cube self.database = database self.columns=list(data.columns) self.cubename=cubename self.tablename=tablename if cube or database: self.iscube=cube myConnection = psycopg2.connect(host='localhost', user='bsalimi', password='1', dbname='postgres') # conn.cursor will return a cursor object, you can use this cursor to perform queries self.cursor = myConnection.cursor() if cont==True: self.df_size = self.data['count'].sum() self.iscont=True else: self.df_size = len(self.data.index) self.distint=dict() self.ent_vec = dict() self.numberofentropies=0 self.entropycalculation=0 def CH(self, X, Y=None,base=e): if isinstance(X, str): X = tuple([X]) elif isinstance(X, list): X = tuple(X) if isinstance(Y, str): Y = tuple([Y]) elif isinstance(Y, list): Y = tuple(Y) if Y: XY = X + Y HY = self.entropy(Y,base) HXY = self.entropy(XY,base) return HXY - HY else: self.entropy(X) def CMI(self, X, Y, Z=[], base=e,normilized=False): if isinstance(X,str): X=tuple([X]) elif isinstance(X,list): X = tuple(X) if isinstance(Y,str): Y=tuple([Y]) elif isinstance(Y,list): Y = tuple(Y) if len(Z)!=0: if isinstance(Z, str): Z = tuple([Z]) elif isinstance(Z, list): Z = tuple(Z) XZ = X + Z YZ = Y + Z XYZ = X + Y + Z HXZ=self.entropy(XZ, base=base) HYZ=self.entropy(YZ, base=base) HXYZ=self.entropy(XYZ, base=base) HZ=self.entropy(Z, base=base) I = HXZ + HYZ - HXYZ - HZ if normilized: if HXZ and HYZ: I = I*(log(self.df_size)/log(e)) #*min(HXZ , HYZ)) I = I / sqrt(HXZ * HYZ) #I = I * (log(n) / log(e)) else: I=0 else: I=HXZ+HYZ-HXYZ-HZ return I else: XY = X + Y HX = self.entropy(X,base=base) HY = self.entropy(Y,base=base) HXY = self.entropy(XY,base=base) if normilized: I = HX + HY - HXY if HX and HY: I = I/min(HX,HY) #I = I * (log(n) / log(e)) #* min(HX, HY)) else: I=0 else: I=HX + HY - HXY return I @functools.lru_cache(maxsize=None) def get_distinct(self,att): # print('#################') # print(att) # print(type(att)) ##data=np.array(data[att]) # dtype = data.dtype.descr * ncols # struct = data.view(dtype) if att in self.distint: return self.distint[att] else: if self.iscont: freqlist = self.data.groupby(att).size() else: freqlist = self.data.groupby(att).size() # uniq = np.unique(struct) # uniq = uniq.view(data.dtype).reshape(-1, ncols) # states=np.unique(data[att]) # df= data[att].drop_duplicates() # print(freqlist) return len(freqlist) def gb_count(self,df,X): df=df[X] hasht=dict() for index, row in df.iterrows(): t=row[0] if t in hasht.keys(): hasht[t]+=1 else: hasht[t] = 1 return list(hasht.values()) @functools.lru_cache(maxsize=None) def entropy(self,X,base=e): ent=0 #X=remove_dup(X) string='' if self.database==True: for item in X: if string: string = string + ',' + str(item) else: string = string + str(item) query = 'SELECT count(*) FROM {} group by {}'.format(self.tablename, string) print(query) self.cursor.execute(query) iout = self.cursor.fetchall() freqlist = [] for item in iout: freqlist.insert(0, item[0]) self.distint[X] = len(freqlist) probs = np.divide(freqlist, sum(freqlist)) ent = entr(probs) # h=self.get_distinct(X) ent = np.sum(ent) self.ent_vec[X] = ent # cashe[X[0]]=ent end = time.time() self.numberofentropies = self.numberofentropies + 1 return ent if self.iscube: for item in self.columns: if item=='count': continue if item in X: if string: string=string+' and '+str(item)+' is not null ' else: string = string + str(item) + ' is not null ' else: if string: string=string+' and '+str(item)+' is null ' else: string = string + str(item) + ' is null ' query = 'SELECT count FROM {} where {}'.format(self.cubename,string) print(query) self.cursor.execute(query) iout=self.cursor.fetchall() freqlist=[] for item in iout: freqlist.insert(0,item[0]) self.distint[X] = len(freqlist) probs = np.divide(freqlist, sum(freqlist)) ent = entr(probs) # h=self.get_distinct(X) ent = np.sum(ent) self.ent_vec[X] = ent # cashe[X[0]]=ent end = time.time() self.numberofentropies = self.numberofentropies + 1 return ent start=time.time() if isinstance(X, str): X = tuple([X]) elif isinstance(X, list): X = tuple(X) if X in self.ent_vec.keys(): return self.ent_vec[X] ##print(self.iscont) else: if self.iscont==False: start = time.time() freqlist = self.data.groupby(X).size() #print(freqlist) end=time.time() #print(X,end-start) #freqlist = self.gb_count(self.data,X).size() else: freqlist = self.data.groupby(X)['count'].sum() self.distint[X]=len(freqlist) probs =np.divide(freqlist,self.df_size) ent=entr(probs) #h=self.get_distinct(X) ent=np.sum(ent) self.ent_vec[X]=ent #cashe[X[0]]=ent end=time.time() self.entropycalculation=self.entropycalculation+end-start self.numberofentropies=self.numberofentropies+1 return ent ''' def entropy(data,X,base=e): # return entropy of a set of attributs of a dataframe dis = get_distinct(data, X) n = len(data.index) freqlist = data.groupby(X).size() return stats.entropy(freqlist,base=base) #+(dis-1)/(2*n) ''' if __name__ == '__main__': data=read_from_csv('/Users/babakmac/Documents/XDBData/lungcancer.csv') #c = inf.get_distinct(tuple(['dayofweek', 'dayofmonth', 'monthh', 'yyear', 'crsdeptime', 'origin', 'dest', 'deptime', 'arrtime', 'arrdelay'])) #data = read_from_db('dag8new') inf=Info(data) start=time.time() s1 = inf.CMI(['peer_pressure'], ['anxiety']) s=inf.CMI(['peer_pressure'],['anxiety'],['smoking']) end = time.time() print('ffff',end-start) print('MUTUALLLL',s,s1) print(end-start) print(s) #data = read_from_csv('/Users/babakmac/Documents/XDBData/NEWDATA/DAG2cube_1_2_5000 .csv') inf=Info(data,database=True,tablename='dag8new') start=time.time() s=inf.entropy(tuple(['a','b'])) end = time.time() print('sss',end-start) #Y=ci_mi(X,3,34000,0.99) #print(Y) #0.01770305633544922 #24685 PK!8Soffhypdb/modules/kbutil/LICENSE@author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PK!6!  hypdb/modules/kbutil/MANIFEST.ininclude README LICENSE PK!Vhypdb/modules/kbutil/READMEAuthor : Kevin S. Brown (kevin.s.brown@uconn.edu, github.com/thelahunginjeet) Assorted python utilities that I find myself repeatedly reinventing/repeating in multiple projects. -listutil.py : utilties for working with lists and dictionaries -plotting.py : making prettier or specialized plots -rand.py : generating random numbers -statistics.py : correlation matrices, smoothing, bootstrapping correlations, z-scoring PK!B66 hypdb/modules/kbutil/__init__.py__all__ = ["plotting","statistics","rand","listutil"] PK!B661hypdb/modules/kbutil/build/lib/kbutil/__init__.py__all__ = ["plotting","statistics","rand","listutil"] PK!O8 8 1hypdb/modules/kbutil/build/lib/kbutil/listutil.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import collections,operator def unique(seq, idfun=repr): """ Returns a list of unique items in a sequence of items. There are lots of ways to do this; here is one. """ seen = {} return [seen.setdefault(idfun(e),e) for e in seq if idfun(e) not in seen] def flatten(l): """ Generator that flattens a list. """ for el in l: if isinstance(el,collections.Iterable) and not isinstance(el,basestring): for sub in flatten(el): yield sub else: yield el def sort_by_value(D,reverse=False): """ There are many ways to sort a dictionary by value and return lists/tuples/etc. This is one recommended in PEP265. """ return sorted(D.items(),key=operator.itemgetter(1),reverse=reverse) def circshift(s,n): """ Circularly shifts the input string or list s by n positions. n > 0 will do a shift to the left, and n < 0 to the right. """ return s[n:]+s[:n] PK!++1hypdb/modules/kbutil/build/lib/kbutil/plotting.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import pylab from numpy import ceil,log2,histogram,abs,linspace,zeros,inf,log,vstack from numpy import min as npmin from numpy import max as mpmax from numpy.random import randn from scipy.stats import gaussian_kde from matplotlib.ticker import FuncFormatter from matplotlib import colors _colors = ('k','r','orange','gold','g','b','purple','magenta', 'firebrick','coral','yellow','limegreen','dodgerblue','indigo','orchid', 'tomato','darkorange','greenyellow','darkgreen','deepskyblue','indigo','deeppink') _symbols = ('o','s','^','<','>','x','D','h','p') _lines = ('-','--','-.',':') def color_wheel(colors=_colors,symbols=_symbols,lines=_lines): """ Returns a generator that cycles through a selection of colors,symbols, lines styles for matplotlib.plot. Thanks to Ryan Gutenkunst for this idiom. """ if not colors: colors = ('',) if not symbols: symbols = ('',) if not lines: lines = ('',) while 1: for l in lines: for s in symbols: for c in colors: yield (c,s,l) def pylab_pretty_plot(lines=2,width=3,size=4,labelsize=16,markersize=10,fontsize=20,lfontsize=16,lframeon=False,usetex=True): """ Changes pylab plot defaults to get nicer plots - frame size, marker size, etc. Parameters: ------------ lines : linewidth width : width of framelines and tickmarks size : tick mark length labelsize : font size of ticklabels markersize : size of plotting markers fontsize : size of font for axes labels lfontsize : legend fontsize usetex : use latex for labels/text? """ pylab.rc("lines",linewidth=lines) pylab.rc("lines",markeredgewidth=size/3) pylab.rc("lines",markersize=markersize) pylab.rc("ytick",labelsize=labelsize) pylab.rc("ytick.major",pad=size) pylab.rc("ytick.minor",pad=size) pylab.rc("ytick.major",size=size*1.8) pylab.rc("ytick.minor",size=size) pylab.rc("xtick",labelsize=labelsize) pylab.rc("xtick.major",pad=size) pylab.rc("xtick.minor",pad=size) pylab.rc("xtick.major",size=size*1.8) pylab.rc("xtick.minor",size=size) pylab.rc("axes",linewidth=width) pylab.rc("text",usetex=usetex) pylab.rc("font",size=fontsize) pylab.rc("legend",fontsize=lfontsize) pylab.rc("legend",frameon=lframeon) def plot_pylab_colormaps(): """ Makes a plot of all the pylab colormaps; useful for picking colormaps. Returns a figure to either save or show. """ # get list of colormaps cmap_list = pylab.cm._cmapnames nrows = len(cmap_list) # set up a massive array of subplots gradient = vstack((linspace(0,1,256),linspace(0,1,256))) fig,axes = pylab.subplots(nrows=nrows) fig.subplots_adjust(top=0.95,bottom=0.01,left=0.2,right=0.99,wspace=1.0) # fill in the subplots for ax,name in zip(axes,cmap_list): ax.imshow(gradient,aspect='auto',cmap=getattr(pylab.cm,name)) pos = list(ax.get_position().bounds) x_text = pos[0] - 0.01 y_text = pos[1] + pos[3]/2 fig.text(x_text,y_text,name,va='center',ha='right',fontsize=8) # turn off all the ticks on all the axes for ax in axes: ax.set_axis_off() # return the figure return fig def plot_hist(x,nbins=None,kde=False,color='k',ax=None): """ Plots a histogram (bar plot) of the data in x, with an optional kernel density estimate added. Returns the axes object. Parameters: ------------- x : array-like, required data to plot nbins : integer, optional if None, defaults to 1 + ceil(log2(len(x))) kde : boolean, optional set to True to overlay a kernel density estimate of x color : string, optional color for the bars and optional kde ax : pylab axes object, optional use to pass in a custom set of axes """ if nbins is None: nbins = 1 + ceil(log2(len(x))) if ax is None: ax = pylab.axes(frameon=False) # compute bin counts counts,bin_edges = histogram(x,bins=nbins,density=True) bin_edges = bin_edges[0:-1] barwidth = 0.9*(bin_edges[1] - bin_edges[0]) # bar plot ax.bar(bin_edges,counts,color=color,width=barwidth,alpha=0.5) lpoint = min(x) - 0.025*abs(min(x)) rpoint = max(x) - 0.025*abs(max(x)) # kde if desired if kde is True: kde = gaussian_kde(x) support = linspace(lpoint,rpoint,256) mPDF = kde(support) ax.plot(support,mPDF,color=color,lw=3) # pretty things up ax.get_xaxis().tick_bottom() ax.get_yaxis().set_visible(False) ax.set_xlim([lpoint,rpoint]) ax.set_ylim(bottom=-0.01) return ax def plot_points_plus_kde(xlist,labels,markx=False,lines=3,size=9,ax=None): """ Accepts a list of one-dimensional densities and plots each as points on a line with a KDE on top. Parameters: ------------- xlist : list of array-like objects data to produce density plot for labels : list of legend labels; len(labels) should equal len(xlist) markx : bool, optional put tick labels at the min/max values in x? lines : integer, optional line/marker edge thickness size : integer, optional marker size color : string, optional color for points and kde ax : pylab axes object, optional """ if ax is None: ax = pylab.axes(frameon=False) # cycles through colors cw = color_wheel(lines=('-'),symbols=('o')) for i in xrange(0,len(xlist)): # spin the color wheel (c,s,l) = cw.next() # make the point plot ax.plot(xlist[i],zeros(xlist[i].shape),c+s,markersize=size,mew=lines,alpha=0.5) # kde kde = gaussian_kde(xlist[i]) lpoint = min(xlist[i]) - 0.025*abs(min(xlist[i])) rpoint = max(xlist[i]) + 0.025*abs(max(xlist[i])) support = linspace(lpoint,rpoint,512) mPDF = kde(support) ax.plot(support,mPDF,color=c,lw=lines,label=labels[i]) # prtty things up ax.get_yaxis().set_visible(False) ax.set_ylim(bottom=-0.1) if markx: major_formatter = pylab.FormatStrFormatter('%1.2f') ax.get_xaxis().set_major_formatter(major_formatter) ax.get_xaxis().tick_bottom() minx = min([min(x) for x in xlist]) maxx = max([max(x) for x in xlist]) ax.get_xaxis().set_ticks([minx,maxx]) else: ax.get_xaxis().set_ticks([]) # legend ax.legend(loc='best') return ax def plot_scatter_plus_marginals(x,y,sColor='k',xColor='k',yColor='k',xlim=None,ylim=None): """ Makes a scatter plot of 2D data along with marginal densities in each coordinate, drawn using kernel density estimates. Parameters: ------------- x : 1D array-like object y : 1D array-like object sColor : string, optional color for scatterplot points xColor : string, optional color for KDE(x) yColor : string, optional color for KDE(y) xlim : list, optional x limits for plot; computed from x if none provided ylim : list, optional y limits for plot; computed from y if None """ # axis formatter def my_formatter(x,pos): return '%2.2f'%x # kde/limits kdepoints = 512 inflation = 0.25 # compute axis limits if not provided if xlim is None: xlim = [0,0] xlim[0] = min(x) - inflation*abs(min(x)) xlim[1] = max(x) + inflation*abs(max(x)) if ylim is None: ylim = [0,0] ylim[0] = min(y) - inflation*abs(min(y)) ylim[1] = max(y) + inflation*abs(max(y)) # plot and axis locations left, width = 0.1,0.65 bottom,height = 0.1,0.65 bottom_h = left_h = left + width + 0.05 mainCoords = [left,bottom,width,height] xHistCoords = [left,bottom_h,width,0.2] yHistCoords = [left_h,bottom,0.2,height] f = pylab.figure(1,figsize=(8,8)) # scatter plot axMain = pylab.axes(mainCoords,frameon=False) axMain.scatter(x,y,c=sColor,marker='o',alpha=0.5) axMain.set_xlim(xlim) axMain.set_ylim(ylim) axMain.get_xaxis().set_visible(False) axMain.get_yaxis().set_visible(False) # x histogram axxHist = pylab.axes(xHistCoords,frameon=False) axxHist.get_yaxis().set_visible(False) kdex = gaussian_kde(x) xsupport = linspace(xlim[0],xlim[1],kdepoints) mPDF = kdex(xsupport) axxHist.plot(xsupport,mPDF,xColor,lw=3) # add axis line, clean up axxHist.plot(xlim,[0,0],'k-',lw=3) axxHist.set_xlim(xlim) axxHist.set_xticks(xlim) axxHist.tick_params(axis='x',direction='in',top=False) axxHist.xaxis.set_major_formatter(FuncFormatter(my_formatter)) axxHist.set_yticks([]) # y histogram axyHist = pylab.axes(yHistCoords,frameon=False) axyHist.get_xaxis().set_visible(False) kdey = gaussian_kde(y) ysupport = linspace(ylim[0],ylim[1],kdepoints) mPDF = kdey(ysupport) axyHist.plot(mPDF,ysupport,yColor,lw=3) # add axis line, clean up axyHist.plot([0,0],ylim,'k-',lw=3) axyHist.set_ylim(ylim) axyHist.set_yticks(ylim) axyHist.tick_params(axis='y',direction='in',right=False) axyHist.yaxis.set_major_formatter(FuncFormatter(my_formatter)) axyHist.set_xticks([]) return axMain PK!@l^ -hypdb/modules/kbutil/build/lib/kbutil/rand.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from numpy.random import randint def randchoice(l): ''' Returns and element from list l chosen at random. ''' return l[randint(len(l))] def randbit(size=None): ''' Generates an array of shape size of random {0,1} bits. ''' return randint(2,size=size) def randspin(size=None): ''' Generates an array of shape size of random {-1,1} spin variables. ''' return 2*randbit(size=size) - 1 def randrot(dim=2): ''' Grenerate a random rotation matrix drawn from the Haar distribution (the only uniform distribution on SO(n)). See: Stewart, G.W., 'The efficient generation of random orthogonal matrices with an application to condition estimators', SIAM Journal on Numerical Analysis, 17(3), pp. 403-409, 1980. For more details. INPUT: dim: int, optional the rotation matrix will be dim x dim ''' H = eye(dim) D = ones((dim,)) for n in range(1, dim): x = normal(size=(dim-n+1,)) D[n-1] = sign(x[0]) x[0] -= D[n-1]*sqrt((x*x).sum()) # Householder transformation Hx = eye(dim-n+1) - 2.*outer(x, x)/(x*x).sum() mat = eye(dim) mat[n-1:,n-1:] = Hx H = dot(H, mat) # Fix the last sign such that the determinant is 1 D[-1] = -D.prod() H = (D*H.T).T return H PK!+I::3hypdb/modules/kbutil/build/lib/kbutil/statistics.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from numpy import arange,correlate,newaxis,dot,sort,int,floor,log2,sqrt,abs,log from numpy import ceil,interp,isnan,ones,asarray,argsort,zeros,linspace,power from numpy import hanning,hamming,bartlett,blackman,r_,convolve,percentile from numpy import histogram,argmin,argmax from numpy.random import randint from numpy.linalg import svd from scipy.stats import pearsonr,spearmanr,kendalltau,skew from scipy.special import gammaln def iqr(x): """ Computes the interquartile range of x. """ q75,q25 = percentile(x,[75,25]) return q75 - q25 def bin_calculator(x,method='sturges'): """ Estimates the 'appropriate' number of bins for histograms of x, using a variety of rules in the literature. For methods which calculate the bin width, the number of bins can be computed via k = ceil((max(x) - min(x))/h). Supported methods (with N = len(x)) are: 'sturges' : k = ceil(log2(N)) + 1 'sqrt' : k = ceil(sqrt(N)) 'rice' : k = ceil(2*N^(1/3)) 'doane' : k = 1 + ceil(log2(N) + log2(1 + |s|/sigma_s)) here s = skew(x), and sigma_s = sqrt(6*(N-1)/(N+1)(N+3)) 'scott' : h = 3.5*sigma/N^(1/3) here sigma is the sample standard deviation 'fd' (Freedman-Diaconis) : h = 2*IQR(x)/N^(1/3) 'meansq' : computes the optimal bin width (due to Stone) via minimization of mean squared error of the density estimate. Numerically computes: argmin_h J(h,x) where J(h,x) = {2/(h*(n-1)) - (n+1)/(n^2(n-1)h) sum_k N_k^2}. N_k is the number of samples in bin k. This function is extremely noisy so a brute force search is performed. 'bayes' : maximizes the log posterior of a piecewise constant model (following Knuth arXiv:physics/0605197v2); performs brute search in the range 1 to 100 bins. In all cases, this function returns the number of bins to use for the data in x. Unsupported methods default to sturges. """ N = len(x) if method is 'sturges': k = ceil(log2(N)) + 1 elif method is 'sqrt': k = ceil(sqrt(N)) elif method is 'rice': k = ceil(2*power(N,1./3.)) elif method is 'doane': s = skew(x) sigma_s = sqrt((6.*(N-1))/((N+1)*(N+3))) k = ceil(1 + log2(N) + log2(1 + abs(s)/sigma_s)) elif method is 'scott': h = 3.5*x.std()/power(N,1./3.) k = ceil((max(x) - min(x))/h) elif method is 'fd': h = 2*iqr(x)/power(N,1./3.) k = ceil((max(x) - min(x))/h) elif method is 'meansq': # define a function that computes J def J(h,x): N = len(x) k = ceil((max(x) - min(x))/h) Nk,_ = histogram(x,bins=k) return 2./(h*(N-1.)) - ((N+1.)/(h*(N-1.)*N**2))*(Nk**2).sum() # do a brute force search in h hmax = (max(x) - min(x))/5 htry = linspace(0.01,hmax,256) jofh = zeros(len(htry)) for i in xrange(len(htry)): jofh[i] = J(htry[i],x) hopt = htry[argmin(jofh)] k = ceil((max(x) - min(x))/hopt) elif method is 'bayes': maxk = 100 logp = zeros(maxk) for M in xrange(1,maxk+1): Nk,_ = histogram(x,bins=M) logp[M-1] = N*log(M) + gammaln(M/2.) - gammaln(N+M/2.) - M*gammaln(1./2.) + gammaln(Nk + 0.5).sum() k = argmax(logp) + 1 else: print('ERROR: Unsupported method. Defaulting to \'sturges\'') k = ceil(log2(N)) + 1 return int(k) def spearman_footrule_distance(s,t): """ Computes the Spearman footrule distance between two full lists of ranks: F(s,t) = sum[ |s(i) - t(i)| ]/S, the normalized sum over all elements in a set of the absolute difference between the rank according to s and t. As defined, 0 <= F(s,t) <= 1. S is a normalizer which is equal to 0.5*len(s)^2 for even length ranklists and 0.5*(len(s)^2 - 1) for odd length ranklists. If s,t are *not* full, this function should not be used. s,t should be array-like (lists are OK). """ # check that size of intersection = size of s,t? assert len(s) == len(t) sdist = sum(abs(asarray(s) - asarray(t))) # c will be 1 for odd length lists and 0 for even ones c = len(s) % 2 normalizer = 0.5*(len(s)**2 - c) return sdist/normalizer def standardize(X,stype='row'): """ Standardizes (mean subtraction + conversion to unit variance) the array X, according to either rows or columns. """ if stype == 'row': return (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] return (X - X.mean(axis=0)[newaxis,:])/X.std(axis=0)[newaxis,:] def autocovariance(X,norm=False): """ Computes the autocovariance function of X: phi(T) = 1/(N-T) sum_i X'(t_i)*X'(t_i - T) As T gets closer and closer to N, the autocovariance becomes less and less well estimated, since the number of valid samples goes down. This version computes phi(T) at all T (0,...N-1). If norm = True, the autocorrelation (phi(T)/phi(0)), rather than the bare autocovariance is returned. """ Xp = X - X.mean() phi = (1.0/(len(X) - arange(0,len(X))))*correlate(Xp,Xp,"full")[len(X)-1:] if norm: return phi/phi[0] return phi def cross_corrmatrix(X,Y): """ For two data matrices X (M x T) and Y (N x T), corrmatrix(X,Y) computes the M x N set of pearson correlation coefficients between all the rows of X and the rows of Y. X and Y must have the same column dimension for this to work. """ assert X.shape[1] == Y.shape[1] # row standardize X and Y X = (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] Y = (Y - Y.mean(axis=1)[:,newaxis])/Y.std(axis=1)[:,newaxis] return dot(X,Y.T)/X.shape[1] def covmatrix(X): ''' Computes the N x N covariance matrix for an N x p data matrix X. ''' cX = X - X.mean(axis=1)[:,newaxis] return dot(cX,cX.T)/(cX.shape[0] - 1) def corrmatrix(X): ''' Computes the N x N correlation matrix for an N x p data matrix X. ''' sX = (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] return dot(sX,sX.T)/(sX.shape[0] - 1) def empirical_ci(x,alpha=0.05): """ Computes an empirial (alpha/2, 1-alpha/2) confidence interval for the distributional data in x. Returns a tuple (lb,ub) which are the lower and upper bounds for the coverage interval. """ assert alpha > 0.0 xtilde = sort(x) xl = (alpha/2)*len(x) xu = (1.0 - alpha/2)*len(x) l1 = int(floor(xl)) l2 = int(ceil(xl)) u1 = int(floor(xu)) u2 = int(ceil(xu)) lb = interp(xl,[l1,l2],[xtilde[l1],xtilde[l2]]) up = interp(xu,[u1,u2],[xtilde[u1],xtilde[u2]]) return lb,ub def bootstrap_correlation(x,y,cType='pearson',p=0.05,N=5000): """ Computes a simple bootstrap CI on simple correlation coefficients. The CI is computed using the interval method. This won't work properly if x or y are time-series with significant autocorrelation. You need to downsample or use a more complicated bootstrap that preserves that structure. Parameters: ------------ x,y : (1D) lists or arrays of data cType : string, optional should be 'pearson', 'spearman', or 'kendall' p : float, optional the coverage interval will cover 1-p of the cumulative distribution N : integer, optional number of bootstrap replications Returns: ------------ rho,rL,rU : r(x,y) and lower, upper bounds for 1-p CI """ corrTable = {'pearson': pearsonr, 'spearman': spearmanr, 'kendall': kendalltau} try: corr = corrTable[cType] except KeyError: # default to pearson print 'WARNING: Correlation type not supported. Defaulting to Pearson.' corr = pearsonr rho = corr(x,y)[0] rhobs = list() nSamp = len(x) iB = 0 while iB < N: randx = randint(nSamp,size=(nSamp,)) val = corr(x[randx],y[randx])[0] if not isnan(val): rhobs.append(val) iB = iB + 1 # obtain the coverage interval rL,rU = empirical_ci(rhobs,alpha=p) return rho,rL,rU def smooth(x,wlen=11,window='flat'): """Smooth the data using a window with requested size. This method is based on the convolution of a scaled window with the signal. The signal is prepared by introducing reflected copies of the signal (with the window size) in both ends so that transient parts are minimized in the begining and end part of the output signal. Parameters: ------------ x : array type, required the input signal to smoothed wlen : integer, odd, optional the size of the smoothing window; should be an odd integer window : string, optional the type of window. allowed choices are: 'flat', 'hanning', 'hamming', 'bartlett', 'blackman' 'flat' produces a moving average. Returns: ------------ y : array type the smoothed signal Example: ------------ t=linspace(-2,2,0.1) x=sin(t)+randn(len(t))*0.1 y=smooth(x) Stolen from the scipy cookbook and modified. """ if x.ndim != 1: raise ValueError, "smooth only accepts 1 dimension arrays." if x.size < wlen: raise ValueError, "Input vector needs to be bigger than window size." if wlen < 3: return x # dictionary of allowed windows winTable = {'flat' : ones, 'hanning' : hanning, 'hamming' : hamming, 'bartlett' : bartlett, 'blackman' : blackman} try: w = winTable[window] except KeyError: # default to flat print 'WARINING: Unsupported window type. Defaulting to \'flat\'.' w = winTable['flat'] w = w(wlen) # wrap ends around and convolve with the scaled window s=r_[2*x[0]-x[wlen-1::-1],x,2*x[-1]-x[-1:-wlen:-1]] y=convolve(w/w.sum(),s,mode='same') # return vector with bogus ends trimmed return y[wlen:-wlen+1] def discrete_frequency_calculator(intList): ''' Accepts a list of integer values, returning two numpy arrays of values and frequencies. The output frequencies are normalized so that sum(Pn) = 1.0. Input values are requried to be integer; no binning is performed for floating point values. INPUT ------ intList: list of integers, required input list of data of integer type OUTPUT ------ n,Pn : two lists of values and freq(values) frequencies are normalized so that sum(Pn) = 1.0, and the two returned arrays are in 1-1 correspondence, sorted in order of increasing n ''' assert all([type(x) == int for x in intList]) freq = {} n = len(intList) for k in intList: pkinc = 1.0/n if not freq.has_key(k): freq[k] = pkinc else: freq[k] += pkinc # sorting indx = argsort(freq.keys()) return asarray([freq.keys()[x] for x in indx]),asarray([freq.values()[x] for x in indx]) def cdf_sparse(data): ''' Computes the (empirical) cumulative distribution F(x) of data, defined as: F(x) = int_a^b p(x) dx or as a sum. This function only computes F(x) at the data values; to get a "stairstep" plot of the cdf use cdist_dense. INPUT ------ data : array-like, required input data OUTPUT ------ dsort : array sorted data (increasing) cdf : array cdf, evaluated at the values in dsort ''' # sort the data data_sorted = sort(data) # calculate the proportional values of samples p = 1. * arange(len(data)) / (len(data) - 1) return data_sorted,p def cdf_dense(data,limits,npts=1024): ''' Computes the (empirical) cumulative distribution F(x) of samples in data, over a specified range and number of support points. F(x) is defined as: F(x) = int_a^b p(x) dx or as a sum. INPUT ------ data : array-like, required input data limits : array-like, required cdf is computed for npts values between limits[0] and limits[1] npts : int, optional number of support points to evaluate cdf OUTPUT ------ x : array support for the cdf cdf : array cdf, evaluated at the values x ''' # sort the data data_sorted = sort(data) x = linspace(limits[0],limits[1],npts) Fofx = zeros(len(x)) for i in xrange(0,len(x)): Fofx[i] = sum(data_sorted <= x[i]) return x,1.0*Fofx/len(data) def pca(X,k): ''' PCA decomposition of matrix X. X is assumed to be N x p, where p is the number of samples (backwards from many PCA implementations). If you want the p x N version, just transpose what comes out of this function. k is the number of components to retain (probably determined by some PCA stopping rule). Returns the matrix of eigenvectors of X (the "mixing matrix") and the "signals" (projection of the data onto the first k components). ''' # row center the data matrix cX = X - X.mean(axis=1)[:,newaxis] C = covmatrix(cX) # singular value decomp _,s,W = svd(C) # select first k columns W = W[:,:k] # compute signal matrix S = dot(W.T,X) # need to do something about the units return W,S PK!O8 8 hypdb/modules/kbutil/listutil.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import collections,operator def unique(seq, idfun=repr): """ Returns a list of unique items in a sequence of items. There are lots of ways to do this; here is one. """ seen = {} return [seen.setdefault(idfun(e),e) for e in seq if idfun(e) not in seen] def flatten(l): """ Generator that flattens a list. """ for el in l: if isinstance(el,collections.Iterable) and not isinstance(el,basestring): for sub in flatten(el): yield sub else: yield el def sort_by_value(D,reverse=False): """ There are many ways to sort a dictionary by value and return lists/tuples/etc. This is one recommended in PEP265. """ return sorted(D.items(),key=operator.itemgetter(1),reverse=reverse) def circshift(s,n): """ Circularly shifts the input string or list s by n positions. n > 0 will do a shift to the left, and n < 0 to the right. """ return s[n:]+s[:n] PK!++ hypdb/modules/kbutil/plotting.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import pylab from numpy import ceil,log2,histogram,abs,linspace,zeros,inf,log,vstack from numpy import min as npmin from numpy import max as mpmax from numpy.random import randn from scipy.stats import gaussian_kde from matplotlib.ticker import FuncFormatter from matplotlib import colors _colors = ('k','r','orange','gold','g','b','purple','magenta', 'firebrick','coral','yellow','limegreen','dodgerblue','indigo','orchid', 'tomato','darkorange','greenyellow','darkgreen','deepskyblue','indigo','deeppink') _symbols = ('o','s','^','<','>','x','D','h','p') _lines = ('-','--','-.',':') def color_wheel(colors=_colors,symbols=_symbols,lines=_lines): """ Returns a generator that cycles through a selection of colors,symbols, lines styles for matplotlib.plot. Thanks to Ryan Gutenkunst for this idiom. """ if not colors: colors = ('',) if not symbols: symbols = ('',) if not lines: lines = ('',) while 1: for l in lines: for s in symbols: for c in colors: yield (c,s,l) def pylab_pretty_plot(lines=2,width=3,size=4,labelsize=16,markersize=10,fontsize=20,lfontsize=16,lframeon=False,usetex=True): """ Changes pylab plot defaults to get nicer plots - frame size, marker size, etc. Parameters: ------------ lines : linewidth width : width of framelines and tickmarks size : tick mark length labelsize : font size of ticklabels markersize : size of plotting markers fontsize : size of font for axes labels lfontsize : legend fontsize usetex : use latex for labels/text? """ pylab.rc("lines",linewidth=lines) pylab.rc("lines",markeredgewidth=size/3) pylab.rc("lines",markersize=markersize) pylab.rc("ytick",labelsize=labelsize) pylab.rc("ytick.major",pad=size) pylab.rc("ytick.minor",pad=size) pylab.rc("ytick.major",size=size*1.8) pylab.rc("ytick.minor",size=size) pylab.rc("xtick",labelsize=labelsize) pylab.rc("xtick.major",pad=size) pylab.rc("xtick.minor",pad=size) pylab.rc("xtick.major",size=size*1.8) pylab.rc("xtick.minor",size=size) pylab.rc("axes",linewidth=width) pylab.rc("text",usetex=usetex) pylab.rc("font",size=fontsize) pylab.rc("legend",fontsize=lfontsize) pylab.rc("legend",frameon=lframeon) def plot_pylab_colormaps(): """ Makes a plot of all the pylab colormaps; useful for picking colormaps. Returns a figure to either save or show. """ # get list of colormaps cmap_list = pylab.cm._cmapnames nrows = len(cmap_list) # set up a massive array of subplots gradient = vstack((linspace(0,1,256),linspace(0,1,256))) fig,axes = pylab.subplots(nrows=nrows) fig.subplots_adjust(top=0.95,bottom=0.01,left=0.2,right=0.99,wspace=1.0) # fill in the subplots for ax,name in zip(axes,cmap_list): ax.imshow(gradient,aspect='auto',cmap=getattr(pylab.cm,name)) pos = list(ax.get_position().bounds) x_text = pos[0] - 0.01 y_text = pos[1] + pos[3]/2 fig.text(x_text,y_text,name,va='center',ha='right',fontsize=8) # turn off all the ticks on all the axes for ax in axes: ax.set_axis_off() # return the figure return fig def plot_hist(x,nbins=None,kde=False,color='k',ax=None): """ Plots a histogram (bar plot) of the data in x, with an optional kernel density estimate added. Returns the axes object. Parameters: ------------- x : array-like, required data to plot nbins : integer, optional if None, defaults to 1 + ceil(log2(len(x))) kde : boolean, optional set to True to overlay a kernel density estimate of x color : string, optional color for the bars and optional kde ax : pylab axes object, optional use to pass in a custom set of axes """ if nbins is None: nbins = 1 + ceil(log2(len(x))) if ax is None: ax = pylab.axes(frameon=False) # compute bin counts counts,bin_edges = histogram(x,bins=nbins,density=True) bin_edges = bin_edges[0:-1] barwidth = 0.9*(bin_edges[1] - bin_edges[0]) # bar plot ax.bar(bin_edges,counts,color=color,width=barwidth,alpha=0.5) lpoint = min(x) - 0.025*abs(min(x)) rpoint = max(x) - 0.025*abs(max(x)) # kde if desired if kde is True: kde = gaussian_kde(x) support = linspace(lpoint,rpoint,256) mPDF = kde(support) ax.plot(support,mPDF,color=color,lw=3) # pretty things up ax.get_xaxis().tick_bottom() ax.get_yaxis().set_visible(False) ax.set_xlim([lpoint,rpoint]) ax.set_ylim(bottom=-0.01) return ax def plot_points_plus_kde(xlist,labels,markx=False,lines=3,size=9,ax=None): """ Accepts a list of one-dimensional densities and plots each as points on a line with a KDE on top. Parameters: ------------- xlist : list of array-like objects data to produce density plot for labels : list of legend labels; len(labels) should equal len(xlist) markx : bool, optional put tick labels at the min/max values in x? lines : integer, optional line/marker edge thickness size : integer, optional marker size color : string, optional color for points and kde ax : pylab axes object, optional """ if ax is None: ax = pylab.axes(frameon=False) # cycles through colors cw = color_wheel(lines=('-'),symbols=('o')) for i in xrange(0,len(xlist)): # spin the color wheel (c,s,l) = cw.next() # make the point plot ax.plot(xlist[i],zeros(xlist[i].shape),c+s,markersize=size,mew=lines,alpha=0.5) # kde kde = gaussian_kde(xlist[i]) lpoint = min(xlist[i]) - 0.025*abs(min(xlist[i])) rpoint = max(xlist[i]) + 0.025*abs(max(xlist[i])) support = linspace(lpoint,rpoint,512) mPDF = kde(support) ax.plot(support,mPDF,color=c,lw=lines,label=labels[i]) # prtty things up ax.get_yaxis().set_visible(False) ax.set_ylim(bottom=-0.1) if markx: major_formatter = pylab.FormatStrFormatter('%1.2f') ax.get_xaxis().set_major_formatter(major_formatter) ax.get_xaxis().tick_bottom() minx = min([min(x) for x in xlist]) maxx = max([max(x) for x in xlist]) ax.get_xaxis().set_ticks([minx,maxx]) else: ax.get_xaxis().set_ticks([]) # legend ax.legend(loc='best') return ax def plot_scatter_plus_marginals(x,y,sColor='k',xColor='k',yColor='k',xlim=None,ylim=None): """ Makes a scatter plot of 2D data along with marginal densities in each coordinate, drawn using kernel density estimates. Parameters: ------------- x : 1D array-like object y : 1D array-like object sColor : string, optional color for scatterplot points xColor : string, optional color for KDE(x) yColor : string, optional color for KDE(y) xlim : list, optional x limits for plot; computed from x if none provided ylim : list, optional y limits for plot; computed from y if None """ # axis formatter def my_formatter(x,pos): return '%2.2f'%x # kde/limits kdepoints = 512 inflation = 0.25 # compute axis limits if not provided if xlim is None: xlim = [0,0] xlim[0] = min(x) - inflation*abs(min(x)) xlim[1] = max(x) + inflation*abs(max(x)) if ylim is None: ylim = [0,0] ylim[0] = min(y) - inflation*abs(min(y)) ylim[1] = max(y) + inflation*abs(max(y)) # plot and axis locations left, width = 0.1,0.65 bottom,height = 0.1,0.65 bottom_h = left_h = left + width + 0.05 mainCoords = [left,bottom,width,height] xHistCoords = [left,bottom_h,width,0.2] yHistCoords = [left_h,bottom,0.2,height] f = pylab.figure(1,figsize=(8,8)) # scatter plot axMain = pylab.axes(mainCoords,frameon=False) axMain.scatter(x,y,c=sColor,marker='o',alpha=0.5) axMain.set_xlim(xlim) axMain.set_ylim(ylim) axMain.get_xaxis().set_visible(False) axMain.get_yaxis().set_visible(False) # x histogram axxHist = pylab.axes(xHistCoords,frameon=False) axxHist.get_yaxis().set_visible(False) kdex = gaussian_kde(x) xsupport = linspace(xlim[0],xlim[1],kdepoints) mPDF = kdex(xsupport) axxHist.plot(xsupport,mPDF,xColor,lw=3) # add axis line, clean up axxHist.plot(xlim,[0,0],'k-',lw=3) axxHist.set_xlim(xlim) axxHist.set_xticks(xlim) axxHist.tick_params(axis='x',direction='in',top=False) axxHist.xaxis.set_major_formatter(FuncFormatter(my_formatter)) axxHist.set_yticks([]) # y histogram axyHist = pylab.axes(yHistCoords,frameon=False) axyHist.get_xaxis().set_visible(False) kdey = gaussian_kde(y) ysupport = linspace(ylim[0],ylim[1],kdepoints) mPDF = kdey(ysupport) axyHist.plot(mPDF,ysupport,yColor,lw=3) # add axis line, clean up axyHist.plot([0,0],ylim,'k-',lw=3) axyHist.set_ylim(ylim) axyHist.set_yticks(ylim) axyHist.tick_params(axis='y',direction='in',right=False) axyHist.yaxis.set_major_formatter(FuncFormatter(my_formatter)) axyHist.set_xticks([]) return axMain PK!@l^ hypdb/modules/kbutil/rand.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from numpy.random import randint def randchoice(l): ''' Returns and element from list l chosen at random. ''' return l[randint(len(l))] def randbit(size=None): ''' Generates an array of shape size of random {0,1} bits. ''' return randint(2,size=size) def randspin(size=None): ''' Generates an array of shape size of random {-1,1} spin variables. ''' return 2*randbit(size=size) - 1 def randrot(dim=2): ''' Grenerate a random rotation matrix drawn from the Haar distribution (the only uniform distribution on SO(n)). See: Stewart, G.W., 'The efficient generation of random orthogonal matrices with an application to condition estimators', SIAM Journal on Numerical Analysis, 17(3), pp. 403-409, 1980. For more details. INPUT: dim: int, optional the rotation matrix will be dim x dim ''' H = eye(dim) D = ones((dim,)) for n in range(1, dim): x = normal(size=(dim-n+1,)) D[n-1] = sign(x[0]) x[0] -= D[n-1]*sqrt((x*x).sum()) # Householder transformation Hx = eye(dim-n+1) - 2.*outer(x, x)/(x*x).sum() mat = eye(dim) mat[n-1:,n-1:] = Hx H = dot(H, mat) # Fix the last sign such that the determinant is 1 D[-1] = -D.prod() H = (D*H.T).T return H PK!xxhypdb/modules/kbutil/setup.py#!/usr/bin/env python from distutils.core import setup,Command """ class PyTest(Command): user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): import sys,subprocess errno = subprocess.call([sys.executable,'tests/runtests.py']) raise SystemExit(errno) """ setup(name='kbutil', version='1.0', description='Python utility functions', author='Kevin Brown', author_email='kevin.s.brown@uconn.edu', url='https://github.com/thelahunginjeet/kbutil', packages=['kbutil'], package_dir = {'kbutil': ''}, license='BSD-3', classifiers=[ 'License :: OSI Approved :: BSD-3 License', 'Intended Audience :: Developers', 'Intended Audience :: Scientists', 'Programming Language :: Python', ], ) PK!+I::"hypdb/modules/kbutil/statistics.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from numpy import arange,correlate,newaxis,dot,sort,int,floor,log2,sqrt,abs,log from numpy import ceil,interp,isnan,ones,asarray,argsort,zeros,linspace,power from numpy import hanning,hamming,bartlett,blackman,r_,convolve,percentile from numpy import histogram,argmin,argmax from numpy.random import randint from numpy.linalg import svd from scipy.stats import pearsonr,spearmanr,kendalltau,skew from scipy.special import gammaln def iqr(x): """ Computes the interquartile range of x. """ q75,q25 = percentile(x,[75,25]) return q75 - q25 def bin_calculator(x,method='sturges'): """ Estimates the 'appropriate' number of bins for histograms of x, using a variety of rules in the literature. For methods which calculate the bin width, the number of bins can be computed via k = ceil((max(x) - min(x))/h). Supported methods (with N = len(x)) are: 'sturges' : k = ceil(log2(N)) + 1 'sqrt' : k = ceil(sqrt(N)) 'rice' : k = ceil(2*N^(1/3)) 'doane' : k = 1 + ceil(log2(N) + log2(1 + |s|/sigma_s)) here s = skew(x), and sigma_s = sqrt(6*(N-1)/(N+1)(N+3)) 'scott' : h = 3.5*sigma/N^(1/3) here sigma is the sample standard deviation 'fd' (Freedman-Diaconis) : h = 2*IQR(x)/N^(1/3) 'meansq' : computes the optimal bin width (due to Stone) via minimization of mean squared error of the density estimate. Numerically computes: argmin_h J(h,x) where J(h,x) = {2/(h*(n-1)) - (n+1)/(n^2(n-1)h) sum_k N_k^2}. N_k is the number of samples in bin k. This function is extremely noisy so a brute force search is performed. 'bayes' : maximizes the log posterior of a piecewise constant model (following Knuth arXiv:physics/0605197v2); performs brute search in the range 1 to 100 bins. In all cases, this function returns the number of bins to use for the data in x. Unsupported methods default to sturges. """ N = len(x) if method is 'sturges': k = ceil(log2(N)) + 1 elif method is 'sqrt': k = ceil(sqrt(N)) elif method is 'rice': k = ceil(2*power(N,1./3.)) elif method is 'doane': s = skew(x) sigma_s = sqrt((6.*(N-1))/((N+1)*(N+3))) k = ceil(1 + log2(N) + log2(1 + abs(s)/sigma_s)) elif method is 'scott': h = 3.5*x.std()/power(N,1./3.) k = ceil((max(x) - min(x))/h) elif method is 'fd': h = 2*iqr(x)/power(N,1./3.) k = ceil((max(x) - min(x))/h) elif method is 'meansq': # define a function that computes J def J(h,x): N = len(x) k = ceil((max(x) - min(x))/h) Nk,_ = histogram(x,bins=k) return 2./(h*(N-1.)) - ((N+1.)/(h*(N-1.)*N**2))*(Nk**2).sum() # do a brute force search in h hmax = (max(x) - min(x))/5 htry = linspace(0.01,hmax,256) jofh = zeros(len(htry)) for i in xrange(len(htry)): jofh[i] = J(htry[i],x) hopt = htry[argmin(jofh)] k = ceil((max(x) - min(x))/hopt) elif method is 'bayes': maxk = 100 logp = zeros(maxk) for M in xrange(1,maxk+1): Nk,_ = histogram(x,bins=M) logp[M-1] = N*log(M) + gammaln(M/2.) - gammaln(N+M/2.) - M*gammaln(1./2.) + gammaln(Nk + 0.5).sum() k = argmax(logp) + 1 else: print('ERROR: Unsupported method. Defaulting to \'sturges\'') k = ceil(log2(N)) + 1 return int(k) def spearman_footrule_distance(s,t): """ Computes the Spearman footrule distance between two full lists of ranks: F(s,t) = sum[ |s(i) - t(i)| ]/S, the normalized sum over all elements in a set of the absolute difference between the rank according to s and t. As defined, 0 <= F(s,t) <= 1. S is a normalizer which is equal to 0.5*len(s)^2 for even length ranklists and 0.5*(len(s)^2 - 1) for odd length ranklists. If s,t are *not* full, this function should not be used. s,t should be array-like (lists are OK). """ # check that size of intersection = size of s,t? assert len(s) == len(t) sdist = sum(abs(asarray(s) - asarray(t))) # c will be 1 for odd length lists and 0 for even ones c = len(s) % 2 normalizer = 0.5*(len(s)**2 - c) return sdist/normalizer def standardize(X,stype='row'): """ Standardizes (mean subtraction + conversion to unit variance) the array X, according to either rows or columns. """ if stype == 'row': return (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] return (X - X.mean(axis=0)[newaxis,:])/X.std(axis=0)[newaxis,:] def autocovariance(X,norm=False): """ Computes the autocovariance function of X: phi(T) = 1/(N-T) sum_i X'(t_i)*X'(t_i - T) As T gets closer and closer to N, the autocovariance becomes less and less well estimated, since the number of valid samples goes down. This version computes phi(T) at all T (0,...N-1). If norm = True, the autocorrelation (phi(T)/phi(0)), rather than the bare autocovariance is returned. """ Xp = X - X.mean() phi = (1.0/(len(X) - arange(0,len(X))))*correlate(Xp,Xp,"full")[len(X)-1:] if norm: return phi/phi[0] return phi def cross_corrmatrix(X,Y): """ For two data matrices X (M x T) and Y (N x T), corrmatrix(X,Y) computes the M x N set of pearson correlation coefficients between all the rows of X and the rows of Y. X and Y must have the same column dimension for this to work. """ assert X.shape[1] == Y.shape[1] # row standardize X and Y X = (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] Y = (Y - Y.mean(axis=1)[:,newaxis])/Y.std(axis=1)[:,newaxis] return dot(X,Y.T)/X.shape[1] def covmatrix(X): ''' Computes the N x N covariance matrix for an N x p data matrix X. ''' cX = X - X.mean(axis=1)[:,newaxis] return dot(cX,cX.T)/(cX.shape[0] - 1) def corrmatrix(X): ''' Computes the N x N correlation matrix for an N x p data matrix X. ''' sX = (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] return dot(sX,sX.T)/(sX.shape[0] - 1) def empirical_ci(x,alpha=0.05): """ Computes an empirial (alpha/2, 1-alpha/2) confidence interval for the distributional data in x. Returns a tuple (lb,ub) which are the lower and upper bounds for the coverage interval. """ assert alpha > 0.0 xtilde = sort(x) xl = (alpha/2)*len(x) xu = (1.0 - alpha/2)*len(x) l1 = int(floor(xl)) l2 = int(ceil(xl)) u1 = int(floor(xu)) u2 = int(ceil(xu)) lb = interp(xl,[l1,l2],[xtilde[l1],xtilde[l2]]) up = interp(xu,[u1,u2],[xtilde[u1],xtilde[u2]]) return lb,ub def bootstrap_correlation(x,y,cType='pearson',p=0.05,N=5000): """ Computes a simple bootstrap CI on simple correlation coefficients. The CI is computed using the interval method. This won't work properly if x or y are time-series with significant autocorrelation. You need to downsample or use a more complicated bootstrap that preserves that structure. Parameters: ------------ x,y : (1D) lists or arrays of data cType : string, optional should be 'pearson', 'spearman', or 'kendall' p : float, optional the coverage interval will cover 1-p of the cumulative distribution N : integer, optional number of bootstrap replications Returns: ------------ rho,rL,rU : r(x,y) and lower, upper bounds for 1-p CI """ corrTable = {'pearson': pearsonr, 'spearman': spearmanr, 'kendall': kendalltau} try: corr = corrTable[cType] except KeyError: # default to pearson print 'WARNING: Correlation type not supported. Defaulting to Pearson.' corr = pearsonr rho = corr(x,y)[0] rhobs = list() nSamp = len(x) iB = 0 while iB < N: randx = randint(nSamp,size=(nSamp,)) val = corr(x[randx],y[randx])[0] if not isnan(val): rhobs.append(val) iB = iB + 1 # obtain the coverage interval rL,rU = empirical_ci(rhobs,alpha=p) return rho,rL,rU def smooth(x,wlen=11,window='flat'): """Smooth the data using a window with requested size. This method is based on the convolution of a scaled window with the signal. The signal is prepared by introducing reflected copies of the signal (with the window size) in both ends so that transient parts are minimized in the begining and end part of the output signal. Parameters: ------------ x : array type, required the input signal to smoothed wlen : integer, odd, optional the size of the smoothing window; should be an odd integer window : string, optional the type of window. allowed choices are: 'flat', 'hanning', 'hamming', 'bartlett', 'blackman' 'flat' produces a moving average. Returns: ------------ y : array type the smoothed signal Example: ------------ t=linspace(-2,2,0.1) x=sin(t)+randn(len(t))*0.1 y=smooth(x) Stolen from the scipy cookbook and modified. """ if x.ndim != 1: raise ValueError, "smooth only accepts 1 dimension arrays." if x.size < wlen: raise ValueError, "Input vector needs to be bigger than window size." if wlen < 3: return x # dictionary of allowed windows winTable = {'flat' : ones, 'hanning' : hanning, 'hamming' : hamming, 'bartlett' : bartlett, 'blackman' : blackman} try: w = winTable[window] except KeyError: # default to flat print 'WARINING: Unsupported window type. Defaulting to \'flat\'.' w = winTable['flat'] w = w(wlen) # wrap ends around and convolve with the scaled window s=r_[2*x[0]-x[wlen-1::-1],x,2*x[-1]-x[-1:-wlen:-1]] y=convolve(w/w.sum(),s,mode='same') # return vector with bogus ends trimmed return y[wlen:-wlen+1] def discrete_frequency_calculator(intList): ''' Accepts a list of integer values, returning two numpy arrays of values and frequencies. The output frequencies are normalized so that sum(Pn) = 1.0. Input values are requried to be integer; no binning is performed for floating point values. INPUT ------ intList: list of integers, required input list of data of integer type OUTPUT ------ n,Pn : two lists of values and freq(values) frequencies are normalized so that sum(Pn) = 1.0, and the two returned arrays are in 1-1 correspondence, sorted in order of increasing n ''' assert all([type(x) == int for x in intList]) freq = {} n = len(intList) for k in intList: pkinc = 1.0/n if not freq.has_key(k): freq[k] = pkinc else: freq[k] += pkinc # sorting indx = argsort(freq.keys()) return asarray([freq.keys()[x] for x in indx]),asarray([freq.values()[x] for x in indx]) def cdf_sparse(data): ''' Computes the (empirical) cumulative distribution F(x) of data, defined as: F(x) = int_a^b p(x) dx or as a sum. This function only computes F(x) at the data values; to get a "stairstep" plot of the cdf use cdist_dense. INPUT ------ data : array-like, required input data OUTPUT ------ dsort : array sorted data (increasing) cdf : array cdf, evaluated at the values in dsort ''' # sort the data data_sorted = sort(data) # calculate the proportional values of samples p = 1. * arange(len(data)) / (len(data) - 1) return data_sorted,p def cdf_dense(data,limits,npts=1024): ''' Computes the (empirical) cumulative distribution F(x) of samples in data, over a specified range and number of support points. F(x) is defined as: F(x) = int_a^b p(x) dx or as a sum. INPUT ------ data : array-like, required input data limits : array-like, required cdf is computed for npts values between limits[0] and limits[1] npts : int, optional number of support points to evaluate cdf OUTPUT ------ x : array support for the cdf cdf : array cdf, evaluated at the values x ''' # sort the data data_sorted = sort(data) x = linspace(limits[0],limits[1],npts) Fofx = zeros(len(x)) for i in xrange(0,len(x)): Fofx[i] = sum(data_sorted <= x[i]) return x,1.0*Fofx/len(data) def pca(X,k): ''' PCA decomposition of matrix X. X is assumed to be N x p, where p is the number of samples (backwards from many PCA implementations). If you want the p x N version, just transpose what comes out of this function. k is the number of components to retain (probably determined by some PCA stopping rule). Returns the matrix of eigenvectors of X (the "mixing matrix") and the "signals" (projection of the data onto the first k components). ''' # row center the data matrix cX = X - X.mean(axis=1)[:,newaxis] C = covmatrix(cX) # singular value decomp _,s,W = svd(C) # select first k columns W = W[:,:k] # compute signal matrix S = dot(W.T,X) # need to do something about the units return W,S PK!g7u<<(hypdb/modules/lpsolve_dev/liblpsolve55.a! / 1462526215 0 0 0 19080 ` +JJJJJJ______________________________________<<<<<<<<<<<<< d d d d d d dOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtOtxxYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX||||||||||IpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIp"""""""""""""""""""""ppppppppppppppppp :4 :4 9 9 9 9 9 9 9 9 9 9 [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ M\ hDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhDhhhhhhhhhhhhhhhhhhincludeMDOverifyMDOmdo_freemdo_callocprepareMDOgetMDOintpowmodfindIndexfindIndexExcompareCHARcompareINTcompareREALQS_swapQS_addfirstQS_appendQS_replaceQS_insertQS_deleteQS_sortQS_finishsortByREALsortByINTsortREALByINTprintvecblockWriteREALblockWriteBOOLblockWriteINTtimeNowqsortex_finishqsortex_swapqsortex_sortqsortexhpsorthpsortexso_stdnamestrcpylostrtolostrcpyupstrtoupQS_executeprintmatSQprintmatUTgcdmm_is_validmm_typecode_to_strmm_write_mtx_array_sizemm_write_mtx_crd_sizemm_read_mtx_crd_entrymm_read_mtx_crd_datamm_read_mtx_array_sizemm_read_mtx_crd_sizemm_read_bannermm_read_mtx_crdmm_write_bannermm_write_mtx_crdmm_read_unsymmetric_sparseis_nativeBLAShBLASdaxpyBLAS_daxpymy_daxpydcopyBLAS_dcopymy_dcopydscalBLAS_dscalmy_dscalddotBLAS_ddotmy_ddotdswapBLAS_dswapmy_dswapdloadBLAS_dloadmy_dloadidamaxBLAS_idamaxmy_idamaxdnormiBLAS_dnormimy_dnormisubmatposmatrandomseedddrandrandomdensload_BLASmustinitBLASunload_BLASinit_BLASini_closeini_readdataini_writedataini_writecommentini_writeheaderini_openini_createcolamd_recommendedcolamd_set_defaultscolamdsymamdsymamd_reportcolamd_reportlp_yy_flush_bufferlp_yyget_extralp_yyget_linenolp_yyget_columnlp_yyget_inlp_yyget_outlp_yyget_lenglp_yyget_textlp_yyset_extralp_yyset_inlp_yyset_outlp_yyget_debuglp_yyset_debuglp_yyget_lvallp_yyset_lvallp_yyfreelp_yy_delete_bufferlp_yyalloclp_yyrealloclp_yylex_init_extralp_yylex_initlp_yyset_columnlp_yyset_linenolp_yypush_buffer_statelp_yy_switch_to_bufferlp_yy_scan_bufferlp_yy_create_bufferlp_yylex_destroylp_yypop_buffer_statelp_yy_scan_byteslp_yy_scan_stringread_lp1LP_readhandleread_LP1read_lpexread_lpread_LPlp_yyrestartlp_yylexlp_yyparseguess_basiscrash_basisbfp_compatiblebfp_statusbfp_indexbasebfp_rowoffsetbfp_pivotmaxbfp_pivotvectorbfp_efficiencybfp_pivotcountbfp_refactcountbfp_isSetIbfp_rowextrabfp_restartbfp_implicitslackbfp_colcountbfp_canresetbasisbfp_pivotallocbfp_finishfactorizationbfp_prepareupdatebfp_pivotRHSbfp_btran_doublebfp_namebfp_nonzerosbfp_memallocatedbfp_findredundantbfp_freebfp_btran_normalbfp_ftran_preparebfp_ftran_normalbfp_finishupdatebfp_LUSOLtightenbfp_LUSOLidentitybfp_preparefactorizationbfp_LUSOLsetcolumnbfp_resizebfp_createMDObfp_initbfp_updaterefactstatsbfp_mustrefactorizebfp_LUSOLfactorizebfp_factorizeLUSOL_pivotLabelLUSOL_setpivotmodelLUSOL_getSingularityLUSOL_findSingularityPositionLUSOL_informstrLUSOL_vecdensityrelationCharHDOWNHUPLU6L0T_vLU6LLU6LDLU6U0_vLU6UTLU1PQ1LU1PQ2LU1PQ3LU1SLKLU1MARLU1MCPLU1MRPLU1MSPLU1MXRLU1OR2LU1OR4LU1PENLU7RNKLU7ZAPLUSOL_matfreeLUSOL_dumpLU7CYCLU1OR3LU1OR1LU1GAULUSOL_clearLU1MXCLU1DPPLU1DCPLU1FULprint_L0LUSOL_reportLU1RECLU7FORLU7ELMLU7ADDLUSOL_timerLUSOL_addSingularityclean_reallocLUSOL_createHBUILDHINSERTLUSOL_tightenpivotLU6CHKHCHANGEHDELETELUSOL_matcreateLU1L0LU6LTLU1U0LU6ULU6SOLLUSOL_btranLUSOL_ftranLUSOL_realloc_aLUSOL_loadColumnLUSOL_realloc_rLU8RPCLUSOL_replaceColumnLUSOL_realloc_cLUSOL_freeLUSOL_assignLUSOL_sizetoLUSOL_expand_aLU1FADLU1FACLUSOL_factorizehashvalcreate_hash_tablefree_hash_itemfree_hash_tablefindhashputhashdrophashfind_varfind_rowcopy_hash_tablelp_solve_versionput_bb_nodefuncput_bb_branchfuncput_abortfuncput_logfuncput_msgfuncset_timeoutget_timeoutset_verboseget_verboseset_print_solget_print_solset_debugis_debugset_traceis_traceset_anti_degenget_anti_degenis_anti_degenset_presolveget_presolveget_presolveloopsis_presolveset_maxpivotget_maxpivotset_bb_ruleget_bb_ruleis_bb_ruleis_bb_modeset_actionclear_actionis_actionset_bb_depthlimitget_bb_depthlimitset_obj_boundget_obj_boundset_mip_gapget_mip_gapis_infiniteget_infiniteset_epsperturbget_epsperturbset_epspivotget_epspivotset_epsintget_epsintset_epsbget_epsbset_epsdget_epsdset_epselget_epselset_epslevelset_scalingget_scalingis_scalemodeis_scaletypeset_scalelimitget_scalelimitis_integerscalingset_improveget_improveset_lag_traceis_lag_traceget_pivotingget_piv_ruleget_str_piv_ruleis_piv_ruleis_piv_modeset_break_at_firstis_break_at_firstset_bb_floorfirstget_bb_floorfirstset_break_at_valueget_break_at_valueset_negrangeget_negrangeget_max_levelget_total_nodesget_total_iterset_solutionlimitget_solutionlimitget_solutioncountget_Nrowsget_Norig_rowsget_Lrowsget_Ncolumnsget_Norig_columnsget_statusget_statustextis_obj_in_basisset_obj_in_basisvarmap_canunlockvarmap_addvarmap_compactinc_rowsinc_columnsis_add_rowmodeis_splitvarset_simplextypeget_simplextypeset_preferdualset_bounds_tighterget_bounds_tighterset_senseis_maximis_chsignget_str_constr_classget_str_constr_typeset_OF_overridemodifyOF1is_OF_nzset_callbacksadd_columnadd_columnexadd_constraintadd_constraintexadd_lag_conadd_SOScolumn_in_lpcopy_lpdefault_basisdel_columndel_constraintdelete_lpdualize_lpfree_lpget_basisget_basiscrashget_col_nameget_columnexget_constr_typeget_constr_valueget_constraintsget_dual_solutionget_lambdaget_lowboget_lp_indexget_lp_nameget_matget_mat_byindexget_multipriceget_nameindexget_nonzerosget_objectiveget_orig_indexget_origcol_nameget_origrow_nameget_partialpriceget_primal_solutionget_pseudocostsget_ptr_constraintsget_ptr_dual_solutionget_ptr_lambdaget_ptr_primal_solutionget_ptr_sensitivity_objget_ptr_sensitivity_objexget_ptr_sensitivity_rhsget_ptr_variablesget_rhget_rh_rangeget_rowget_rowexget_row_nameget_sensitivity_objget_sensitivity_objexget_sensitivity_rhsget_upboget_var_branchget_var_dualresultget_var_primalresultget_var_priorityget_variablesget_working_objectivehas_BFPhas_XLIis_binaryis_constr_typeis_feasibleis_unboundedis_intis_nativeBFPis_nativeXLIis_negativeis_semicontis_SOS_varmake_lpprint_constraintsprint_debugdumpprint_dualsprint_lpprint_objectiveprint_scalesprint_solutionprint_strprint_tableauread_MPSread_XLIread_basisreset_basisreset_paramsresize_lpset_add_rowmodeset_basisset_basiscrashset_BFPset_binaryset_boundsset_col_nameset_constr_typeset_unboundedset_infiniteset_intset_lowboset_lp_nameset_matset_maximset_minimset_multipriceset_objset_obj_fnset_obj_fnexset_outputfileset_outputstreamset_partialpriceset_pivotingset_pseudocostsset_rhset_rh_rangeset_rh_vecset_rowset_rowexset_row_nameset_semicontset_upboset_var_branchset_var_weightsset_XLIsolvestr_add_columnstr_add_constraintstr_add_lag_constr_set_obj_fnstr_set_rh_vectime_elapsedunscalewrite_lpwrite_LPwrite_mpswrite_freempswrite_MPSwrite_freeMPSwrite_XLIwrite_basisuserabortset_basisvarobtain_columnget_basiscolumnget_OF_activeget_basisOFis_use_namesset_use_namesMIP_countSOS_countGUB_countcompute_violationfeasibilityOffsetisPrimalSimplexisPhase1isP1extrafeasiblePhase1isDegenerateBasisisBasisVarFeasibleis_BasisReadyverify_basisvalidate_boundscompare_basisget_pseudobranchcostcompute_thetacheck_degeneracyget_refactfrequencyis_fixedvarget_accuracyset_break_numeric_accuracyget_break_numeric_accuracytransfer_solution_varrefactRecentfindNonBasicSlackfindBasisPosreplaceBasisVarpost_MIPOBJbb_bettervarmap_validatefree_dualsfree_pseudoclassunset_OF_p1extraimpose_boundsperturb_boundsset_rh_lowerset_rh_uppercompute_dualslackscompute_feasibilitygapconstruct_sensitivity_dualsget_pseudorangeis_sc_violatedget_rh_lowerget_rh_upperconstruct_dualsscaled_floorfind_sos_bbvarscaled_ceilrestore_basispop_basissingleton_columnpush_basisis_slackbasisunload_BBrename_varinit_rowcol_namesconstruct_solutionset_var_priorityadd_GUBvarmap_cleardel_varnameexset_columnexset_columninc_lag_spaceinc_rowcol_spaceinc_col_spaceinc_row_spaceshift_rowcoldatavarmap_lockmemopt_lpyieldformessagesread_freempsexread_mpsexread_freempsread_mpsread_freeMPSget_pseudonodecostupdate_pseudocostisPrimalFeasiblefind_sc_bbvarisDualFeasiblerow_decimalstransfer_solutionfindBasicFixedvarfree_pseudocostshift_basisshift_rowdataappend_rowsset_OF_p1extraunload_basisconstruct_sensitivity_objbin_countshift_coldataappend_columnsrow_plusdeltaMIP_stepOFpre_MIPOBJinit_pseudocostvarmap_deletedel_splitvarsdel_columnexdel_constraintexget_columnfind_int_bbvarget_boundssolution_is_introw_intstatscheck_if_lessidentify_GUBpostprocessinitialize_solutionrecompute_solutionverify_solutionexpand_columnperformiterationget_constr_classprepare_GUBpreprocesscheck_solutionwrite_lpcommentwrite_lprowwrite_lpexLP_writehandleLP_writefilemat_collengthmat_nonzerosmat_rowcompactmat_colcompactmat_nz_unusedmat_get_datamat_set_rowmapmat_findcolumncountsUndoLadderftranbtranvec_compressvec_expandget_colIndexAprod_xA2prod_xAbsolve_xA2bsolvefsolvemat_computemaxmat_findinsmat_findelmmat_getitemmat_freefreeUndoLadderbimprovemat_validateinvertmat_multrowmat_indexrangemat_rowlengthmat_memoptmat_expandcolumnmat_equalRowsmat_multaddmat_multcolmat_checkcountsmat_shiftcolsdecrementUndoLadderrestoreUndoLaddermat_shiftrowsinc_matcol_spaceincrementUndoLaddermat_transposeinc_matrow_spaceinc_mat_spacemat_appendvaluemat_setvalueappendUndoPresolvemat_setitemmat_appendcolmat_appendrowmat_setrowmat_setcolmat_mergematmat_mapreplacemat_additemprod_Axfimprovemat_zerocompactmodifyUndoLaddermat_createcreateUndoLaddermat_extractmataddUndoPresolvepresolve_BBinitcuts_BBupdatecuts_BBfindself_BBpre_BBpost_BBprobe_BBfindnode_BBrcfbound_BBfreecuts_BBfree_BBnextbranch_BBfillbranches_BBinitbranches_BBcreate_BBsolve_LPsolve_BBpop_BBpush_BBrun_BBstrongbranch_BBnamecpyspaceslenfieldMPS_writeBASMPSnameFIXEDMPSnameFREEappendmpsitemaddmpscolumnscan_lineFREEMPS_readBASscan_lineFIXEDMPS_writefileexMPS_writehandleMPS_writefileMPS_readexMPS_readhandleMPS_readfilewrite_paramsread_paramspresolve_rebuildUndopresolve_rowlengthexisnz_origobjset_dv_boundsget_dv_lowerget_dv_uppercompRedundantcompSparsitycompAggregatepresolve_setstatusexpresolve_getcolumnEQpresolve_invalideq2presolve_rowlengthdebugpresolve_debugcheckpresolve_debugmappresolve_rowtalliespresolve_rowremovepresolve_SOS1presolve_singularitiespresolve_freepsrecpresolve_freepresolve_debugdumppresolve_finalizepresolve_initpsrecpresolve_setEQpresolve_impliedcolfixpresolve_coltightenpresolve_freeUndopresolve_createUndoinc_presolve_spacepresolve_reduceGCDpresolve_candeletevarpresolve_singletonboundspresolve_altsingletonvalidpresolve_storeDualUndopresolve_colremovepresolve_validatepresolve_makesparserpresolve_initpresolve_knapsackpresolve_SOScheckpresolve_statuscheckpresolve_probetighten01presolve_probefix01presolve_rowfeasiblepresolve_rangeorigpresolve_multiboundspresolve_impliedfreepresolve_makefreepresolve_rowtightenpresolve_debugrowtalliespresolve_boundconflictpresolve_colsingletonpresolve_colfixpresolve_updatesumspresolve_testrowpresolve_redundantSOSpresolve_aggregatepresolve_coldominance01presolve_rowdominancepresolve_rowfixzeropresolve_fixSOS1presolve_elimeq2presolve_mergerowspresolve_rowfixpresolve_preparerowspostsolvepresolve_colfixdualpresolve_shrinkpresolve_rowspresolve_columnspresolve_freeandslackspresolvepresolve_fillUndopresolve_setOrigvalidImprovementVarvalidSubstitutionVarpartial_countBlockspartial_activeBlocksverify_stabilitylongdual_testsetpartial_blockStartpartial_blockEndpartial_blockNextPospartial_blockSteppartial_isVarActivemulti_mustupdatemulti_sizemulti_usedmulti_restartmulti_valueInitmulti_valueListmulti_getvarmulti_recomputemulti_removevarmulti_enteringthetamulti_populateSetupdate_reducedcostsmulti_truncatingvarmulti_resizemulti_freepartial_freeBlocksmulti_createpartial_createBlockspartial_findBlockscompareSubstitutionVarcompareImprovementVarserious_facterrorcompute_reducedcostsfind_rowReplacementmakePriceLoopaddCandidateVarcompareBoundFlipVarcollectMinorVarcompareSubstitutionQSmulti_enteringvarmulti_indexSetrowdualcompareImprovementQScolprimrowprimcoldualfindImprovementVarfindSubstitutionVarsimplexPricerverifyPricerfreeWeightsfreePricerformWeightsrestartPricergetPricerresizePricerupdatePricerinitPricerREPORT_mat_mmsaveREPORT_tableauREPORT_constraintsREPORT_objectiveREPORT_scalesREPORT_lpREPORT_dualsREPORT_solutionblockWriteLREALblockWriteBMATblockWriteAMATREPORT_debugdumpreportREPORT_modelinfoREPORT_extendedprint_indentexplainREPORT_constraintinfodebug_print_solutiondebug_print_boundsdebug_printscaled_valueunscaled_valuescaled_matunscaled_matscale_updatecolumnsscale_updaterowsscale_rowsscale_columnstransform_for_scaleCurtisReidMeasureminmax_to_scaleroundPower2unscale_columnsaccumulate_for_scaleundoscalescalefinalize_scalingCurtisReidScalesscaleCRauto_scalestallMonitor_creepingObjstallMonitor_resetget_artificialRowfindAnti_artificialfindBasicArtificialstallMonitor_finishheuristicsspx_solvelag_solvemake_lagclear_artificialseliminate_artificialsadd_artificialstallMonitor_shortStepsstallMonitor_createstallMonitor_updatelin_solvestallMonitor_checkdualloopprimloopspx_runSOS_member_countSOS_get_typeSOS_is_satisfiedfree_SOSrecdelete_SOSrecfree_SOSgroupSOS_membershipsSOS_member_indexSOS_infeasibleSOS_member_deleteSOS_member_updatemapappend_SOSreccreate_SOSrecresize_SOSgroupcreate_SOSgroupappend_SOSgroupSOS_set_GUBSOS_is_GUBSOS_is_markedclean_SOSgroupSOS_fix_unmarkedSOS_is_activeSOS_unmarkSOS_is_feasibleSOS_is_member_of_typeSOS_set_markedSOS_fix_listSOS_get_candidatesSOS_member_sortlistSOS_shift_colmake_SOSchainSOS_is_memberSOS_is_fullSOS_can_activatecomp_bitsroundVectorswapINTswapREALswapPTRsearchForisOrigFixedchsign_boundssizeLinkisActiveLinkcountActiveLinkcountInactiveLinkfirstActiveLinklastActiveLinkappendLinkinsertLinknextActiveLinkprevActiveLinknextInactiveLinkprevInactiveLinkremoveLinkpushPackedVectorfreePackedVectorfreeLinkmempool_releaseVectorallocFREEcreatePackedVectorcompareLinkcreateLinkmempool_createrand_uniformisINTrestoreINTroundToPrecisionnormalizeVectorallocLREALallocREALunpackPackedVectorcloneREALallocINTcloneINTallocMYBOOLcloneMYBOOLmempool_obtainVectorallocCHARfirstInactiveLinklastInactiveLinkfillLinkmempool_freepopPackedVectorgetvaluePackedVectorsetLinkcloneLinkverifyLinkadd_rowadd_sos_rowcheck_int_sec_sos_free_declset_sos_typeset_sos_weightnegate_constraintrhs_storenull_tmp_storeset_titleadd_constraint_nameread_errorlex_fatal_erroryacc_readset_sec_thresholdstore_re_opvar_storestore_boundsstorevarandweightlp_MDO.o/ 1462526190 1000 1000 100644 5280 ` ELF> @@ Ht Hcƀ<f.AWIAVAUATIDE1UHS1HBAL,IM9t`BTBt9}uHcE1ML)MA:x19EtA;;~II9~uAʅɸt1LA 1H[]A\A]A^A_ff.ff.AWAVIAUATUSHhMD$G|$GHL$(H HT$0H|$8LD$ HL$Ht HL$()Ѕ҉D$@BE1E1HHD$@@MgIcA<YD$@|$Gt HD$(FlIL;L$dHD$0HT$8FDA9~HT$HHD$`HJ8D)‰HHDE9VIMH\$P1ۀ|$GAGD)L$f.HL9THcA<tt AHL$PH|$8HT$`DDD$LL$HYHD$`DD$LL$tfD|$GuHL$ IcIcŋHL$(Af.AGD)L$HL9hTHcA<tt!HL$ HcIcAHL$(DHT$PH|$8DDD$LL$HZHT$`HD$`DD$LL$tTfH|$8HT$`DDD$LL$L$DD$LL$L$>|$GuHT$(IcAD$@Hh[]A\A]A^A_D1ۀ|$GtwAGD)L$fDAHL93TuHL$PH|$8HT$`DDD$LL$HYHD$`DD$LL$uDAGD)L$0HcTHL$ IcAHL$(HL9DuHT$PH|$8DDD$LL$HZHT$`HD$`DD$LL$tffff.AWAVAUIATIUSHHH*DH$8HL$ 1DD$HDŽ$0D}HDŽ$(DH$8E1LLHH$8HcՅDH$(IcLH-H$8H$(1@HcDADH91HtHDŽ$8H$0HtHDŽ$0H$(HtH|$ tHD$ (HH[]A\A]A^A_EBH$0AV1HDD$1DD$xCMH$0bH11)1A|HǍBH9}DvA)DDH$(1H߉‰D$,H$(L$0HH\$0LLH|$H?HD$0HD$8tA9tQH$(L$8H$T$,IىDH$$H$8WH$(IcLHH$(H$8L$ILHD$H$H$8@H1H9}1verifyMDO: Invalid MDO input structure generated (error %d) ?zRx 44BJB B(J0D8H@l4CBBE B(A0A8D4 BBB E(D0A8JGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.8.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @X &,12=@ R M \ %eE E u@p     $-2 =D0COY `iplp_MDO.c.LC2includeMDOverifyMDOmdo_freefreemdo_calloccallocprepareMDOmodifyOF1getMDOallocINTmemcpycolamd_recommendedcolamd_set_defaultscolamdsymamd     B _]{H`< D I! 8  p    0 commonlib.o/ 1462526191 1000 1000 100644 20312 ` ELF>6@@ ~fDDžøtDuf.@U,ADMSD9A AȉHcDHcDIcD9t j@EDD)IcE9H|fAHE999tDDAD9EDO[D]DD)~9tSD9~.DBIcDCHcDVf}DJIcfAA2DEA"DA[D]9QfDcff.AWMAVAUATUՃSH89H|$Ht$DD$ D$pT$$ <T II˃E1D$,D$(D$ HIċD$(D$ HIŋD$ HHD$HD$0fM)؃~:LH|$AׅtHt$0H|$AׅLl$0)؃fDD$ Ht$HH99}ACLd$Lcl$ D$ HIfM9}6LL)H|$AADt$,ExEuH8[]A\A]A^A_@E~fLH|$AADt$,A|Vtnl$(D$ HHD$HD$0TLl$D$(D$ HI9\$$ЉOl\$(D$ Ld$HI묋\$(H|$AADt$,+D8|Љff.9|Љfff.f.w 1f.fHcHcHHH47HHHLFHHGHFHLGfffff.H71f.~HcHHfD1HHcHH7@9~9HcHLLHLIIIAII@I9|HcHH9~9HcHLDHH IHI@IHAH9|ÐAW)AVIAUATUSHT$1҃H|$t$ HĨ[]A\A]A^A_ËT$T$ IHHHIHcD$ LHHHхtHMD$AAH$HUH$I$HEID$HEI $IT$HcD$H\$HHHHAօ~0HMDl$EHL$pHUHT$xHHEHCHEH HSHLAօ~/I $Dl$HL$`IT$HT$hHI$HCID$H HSDl$I $D|$ AHL$PIT$IcHHD$HT$XHHD$ HI$HCID$D$ Ld$H HSH$H$HHHD$(IfDAH$LAօAEH\$HcHH fHHAH$HAօHUE9ZI$HT$D$HD$@ID$HHD$HHI$HBID$HD$@HHD$HHBIHD$(Rf.HT$HT$(H\$ H|$H2Ht$0HJHL$8HHHCHBH3Dt$ HKLT$H|$AwLL$D$D$$) %2d:%12g %2d:%12g %18gTRUE %5sFALSE %1d %5dlib@@zRx 64 LEAN4lBHB B(A0F8Ip2 4 LId?4| BFE B(A0A8G4ABIE B(A0A8D,WBBB B(A0A8,XBBB B(A0A8,LbBBB B(A0A8$|BED A(D0,BEK A(D04BBE K(D0D8F@4 BBE K(A0D8F@D,D 4\BGB B(A0A8G$+JMQP4BIE B(A0A8D$}TQ4"BBB B(A0D8Fp4TBBB B(A0D8FJL XBGD @ADD XBGD  @ADD 4,$BDB B(A0C8D4dBBB E(A0A8DP4.BBB B(A0A8DP$WTGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @/BH &0,01208@80R@0MK \86%e]6]6uX:  X@%  6@ PE'3?JV 2^`jp t I?0 @A W XP b `,,4: IP+]j}ry~`"!"X#@@#X#@#$ %&.!@'commonlib.c.LC9intpowmodfindIndexfindIndexExcompareCHARcompareINTcompareREALQS_swapQS_addfirstQS_appendQS_replaceQS_insertQS_deleteQS_sortQS_finishsortByREALsortByINTsortREALByINTprintvec__printf_chkputcharblockWriteREALfputsfputc__fprintf_chkblockWriteBOOLblockWriteINTtimeNowftimeqsortex_finishmemcpyqsortex_swapqsortex_sortqsortexmallocfreehpsorthpsortexso_stdnamestrlenstrcpystrrchrstrcatstrcpylo__ctype_tolower_locstrtolostrcpyup__ctype_toupper_locstrtoupQS_executeprintmatSQprintmatUTgcd   6 L!" #"!" $  #" *#"!"T /c#"' #)X))+))))=)V)d)))s*-*~*+8***D--+( ..- )d))))Q)-d))f ) ) )"!)!2!3!4" 4"5$"26"2"2"7#7a#:#:$x%  %% %%&  && & '/?Q"w"")~.N!.x!/ 8 @P Pp       `  p8 P h  0 @    P P     ` H `       `X  ! " # @# #0 #h % & @'mmio.o/ 1462526191 1000 1000 100644 12376 ` ELF>@@ ?Mt 1At*WRt1PuGMt31IH߹1H[fFA(@@ H=@HHȉ|$T$D$D$HL$HVH|$Ht$IL@Hf?Iҋ E ~mf. ztaɺx^EɸfDxoMDHcITH IcHDf(YHAXAI9})EHHy)AHHxfffff.HHH|$T$H|$DD$ HT$LD$ Hffff.?IE~WҾxYExpHLHcIt1HIcALfHAHHLD9}f)ƒEHH4y)AHHwfDH|$T$D$HL$HVH|$Ht$HË?~*HHfYH9}HHH|$T$H|$DD$ HT$LD$ Hffff.?IEfWɅ~YҾxUExlHLfWHcIt1AHIcHDAHYHD9X}f(ø)ƒEHH4y)AHH{fDHHH|$T$H|$DD$ HT$LD$ Hffff.?IE~]ҾxYExpHLHcIt1LIcALfHHAHHLLD9})ƒEHH4y)AHHwfDH|$T$D$HL$HVH|$Ht$HATIUS~;t@ҹHc¾HHcIDH9}[]A\Dغ$I))Љ)ƒLH9G…t9A$tdAA)DAEt4f(1fIf(fDf)H9rDE9tHcIDH9}6B9+HcȃLH)Ӻ%I$HItI,HM\MTH)ljML MD()HH)HLIH8EH8H8AI8AI8AI8AI8H9u[]A\f)HCfffff.HH|$$H|$HHfffff.?~X~TtHHcHfTHHfTf.vf(ȉȃ9}1ffff.HH|$H|$H@?fWɅ~;HcfWHLHTGHH)HH9fT_uf(fD׍DD׍2fDG@GGG NFf.AWAVAUATUSGDhEHcLQyLALI ]L$IAC!-A%dA AA:**^^X*^X,*)\fTAKMD9A))iұ)iǫ H颋.A A8#))iҰ)iǬAA ȉωL$A))iҲ)T$D$)iA A=vAAcvAAsvAAD[]A\A]A^A_ffff.AUAA}ATIHcUHSHHD$L$$HHźLDHٺHDE~ZAE11H-@D$\D$AYDXD$ADHH9t$f.DwILHH9uHH[]A\A]fATUSHHH=dH%(H$1HtHHJHH/HHH1HtHj)HHHHHH! t€DHAHDHHA8.t}HHHH11H$dH3%(BH[]A\DH4xsyxofmxfDofV=rH=rHHHHHHHHfHH=HH=HH=HH=HH=HH=HkH=]H=OH=AH=3H*H=H= @HHHHHHHHf1fH=t1Hlib.sodscaldcopydaxpydswapddotidamax@@@@zRx  4>D Ld3D |0D 83D 3D  $0D <BDA \"DtcDJ  ,BDB B(A0C8$4BIG E(G@$\~BAA J DGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @ @ &`,h12h,@ M`['X j%s   # 17>=HPQ 3Wb`k0q|@83p3`0"c @J   #* 5<Ap ~KS`hu|  myblas.c.LC0.LC1.LC2.LC3.LC4is_nativeBLAShBLASdaxpyBLAS_daxpymy_daxpydcopyBLAS_dcopymy_dcopydscalBLAS_dscalmy_dscalddotBLAS_ddotmy_ddotdswapBLAS_dswapmy_dswapdloadBLAS_dloadmy_dloadidamaxBLAS_idamaxmy_idamaxdnormiBLAS_dnormimy_dnormisubmatposmatrandomseedddrandrandomdensmallocfreeload_BLASdlclose__strcpy_chkstrrchr__strcat_chkdlopenmustinitBLASdlsym__stack_chk_failunload_BLASinit_BLASEf J7"% 3(b ! / 7? / - -  2  3 4  5Y a 5n 6x  1  5 7  # * . : > E I P T [ %_ &f "j #q (u )  8    8    8    8    8  %  8  % + 9 G ^ "l (          % & " # ( ) 7 9717j 0 1 8 P Ph   `  @   p ( `@ ` x    @    8  ` p    ini.o/ 1462526191 1000 1000 100644 3224 ` ELF>@@ ff.AUIHLATUSH1HtlLIĉ~dIcIL-H01HD)HH~8HDF u݃AD-~ A}[u9]tTH[]A\A]@HcúADH[]A\A]D;LHUMSIuLHcAD-HtIH1@HѾ1fff.H1fff.H\$Hl$HHHu(HHHl$H\$1HH~H޿ fDfD%s=%s %s ; %s [%s] rwzRx $4BMA A(F0\4tZN   GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rela.eh_frame.comment.note.GNU-stack @  &,,,12,EH@ O%X==hp  X  %+2@GN4\jP{pZ  ini.cini_closefcloseini_readdatafgetsstrlen__ctype_b_locstrchrmemcpyini_writedata__fprintf_chkini_writecommentini_writeheaderftellfputcini_openfopenini_create( ? P 9 T      (@` 8 ` x P p  fortify.o/ 1462526191 1000 1000 100644 931 ` ELF>@@ GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.text.data.bss.comment.note.GNU-stack@!@'@,@%5eeE  fortify.c colamd.o/ 1462526192 1000 1000 100644 13600 ` ELF>)@@ x:x6x2gfff)AzHH@TBf.f.HHE1ҹHtHAAA)DAEt3fW1Hf.f)H9rD)EE9tIcHHHuH?HHGDAW1IAVAUATUSHH$(|$׉t$LD$H$(1H$(H؃RAfEA)H9w)AABt0fH$(1@fHA9wA)9tH$(HcHHAuH$(H$(H$(IC HH IMHL$H\$FFH|$t$L$HcD$Ht$L$A,$Mw\$D$t$l$HHcӉ\$HR DP*9H$(BB 1zH[]A\A]A^A_H$(T$@ P1H$(B B1H$(\$1A YF 1H$(1G H$(1G ok)D)Hclj|$M4D$twHL$A1A+AFMVHL$L1#ALAA+AHABIBB BB9t$D$H$(H$(DHHFIHD$D$t/D$1҃HHHL$DD HH9ul$H\$M^E1HcIHcCI,H9 x9L$$H$(t$1C DSKsHr9|_HcHHD$HT$HT$DAMD;P tG@H9DP s@x9D$@fDʉH9}HcHHD$D;P uA+AHID9T$A$HL$AA |$~5D$1҃HHH\$LDLLHH9uH$(~ \$E1L\$tHIcI4IcCIH9s%HcHHHD$PHcʃH9EPwAID9T$DD$Et/D$1҃HHHH|$DD DHH9uH$(x 2*D$f(AY f.fWf.1uf.,*D$f(AYIf. f.E1ۄuf.D,ًl$DL$HcDL$1H@I HA0uA@DHH;T$uE1ҋxBD9Y~9t$t$=DL$Et+HT$1HHL$DD ExD HH9uD$LT$0Ht$8I9Lt$+t$fDE IIcH@I Ƌ9xpD Q<$HA= %d, but given only Alen = %d. Column %d has a negative number of nonzero entries (%d). Row index (row %d) out of bounds (%d to %d) in column %d. Internal error! Please contact authors (davis@cise.ufl.edu).zRx F44LMBGB B(A0A8G4 BDB B(A0C8JpJY0  GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @#@08 &$,$12$@2$O (b0(]x4 l8)%u])])-  / 0 p  F/PCMJP Q^ck# y# colamd.cprint_report.LC2colamd_recommendedcolamd_set_defaultscolamdsymamd__printf_chkputsputcharsymamd_reportcolamd_report9  K   y  ! hF! (P!d! 8! !! 0!! p!! !!! !" (")" he" f" " " # $# 54# A# SF#Q# a# X# # u# |:!C"""## 8 PP  P 0 # #lp_rlp.o/ 1462526193 1000 1000 100644 38600 ` ELF>XZ@@Ht?HGG HG@HV(HOG,G<HHOt HFH;fff.H~ff.H~ff.G|fff.~|fff.HHHHHHcҾHHÐff.HSHt?HV(Ht HFHH;8t1C$u H[H{H[fD[fDHfDff.ff.UHSHHHHHH1HHH*HB(HBHB HB@BHBLBTBXHB`HBHBH[]H[]f H[]fHSHtHHH~1HHHB(HBHB HB@BHBLBTBXHB`HBHB[[fD [fffff.HHV(HtHFHHtx4HfDH=1HHV(HtHFHHtx0HfDH=1H\$Hl$HHH(HtfHS HBH9CsH\$Hl$HfBHcH4HHC(tTH{ 1HH{(HHk @HHC(t1HHC HC{H;HH;HHC(UHSHHHHHC(HHKHHH:tJC0HS@Hs(HKHC@HHHBC4B tlHH:tHAHHS(HCHH*H ΋A HQC4HHS@HHCCPC0H[]@HK1HHfDUHHSHH,Hs(1HtHKHH9tbHtgHKH<t$C0HS@HKHs(HC@HHBC4B E HUH,ΉC4HEHS@HHCCPC0H[]HKfH\$Hl$HLl$Ld$HLt$H(HIw$E1LH$Hl$Ld$Ll$Lt$ H(Ð|7uՀ|7uο@HIItSHCLLInInIFAF$IAF AF(AF,AF8AF<iI}LH\$Hl$HLd$Ll$ILt$H(HHID0HCC HC@HU(HKC,C<HHKt HEH;t1HL#C8tHEHH9tC0C4MtFL~.S(EuH$Hl$Ld$Ll$Lt$ H(f.1@C HM@HE4HHEE0^DHU(PH\$Hl$HLd$Ll$H(I@AHHteIcH{HHHCt4HLHC$oHHl$H\$Ld$Ll$ H(H}HDH}HDUHSHH(HHEHHHK$H!HH}(HEHHt1HtS$HHEH}(HHtHHEHtHEH HcA HQHE4HHU@HHEEPE0:H}`HE(HE(HEHHE HE@EHELETEXHE`HEHEH1[]fDH{fH{ff.SHxH?H{8Ht HC8H{@Ht HC@[fUHSHHW(HtvHGHHHtfs$HupHHEHU(HHuCHt6HEH Ht)A HQE4HHU@HHEEPE0H[]ÐHHEfDH{{ff.AVIAUATIUSCLcLHH~~*w^1@ADH9HcIDDI>L1C$H[]A\A]A^@@uID$H9vh111t%@AofDH9r9wHcI HTHH9OHEI9fDB|-f9B|-@)@HHteIEHkHkC$HLHCC HC(C,C8C<I>LmI>LIEHkHkC$HLHCC 1C(C,C8C<VH\$Ld$HHIHLH\$Ld$Hfff.Hl$Ll$ILt$L|$`H\$Ld$HH|$I։L$MHH6H\$E10LHHH$HHHD$LHHHHHF(HFHF HF@FHFLFTFXHF`HFHFLoHGIH|$t$AHLLuLmHHHH$H$L$L$L$L$HÐ1 1o@AA} `1111HSHtH?IȉѺHH[H\$Hl$1Ld$Ll$ILt$H(IHAHHt!LMDHHHHH$Hl$Ld$Ll$Lt$ H(fIȉHH1fffff.IЉH1fff.H\$Hl$1Ld$Ll$H(AIHHt 1MDHHHHH\$Hl$Ld$Ll$ H(fH\$Ld$HHl$Ll$ILt$L|$H8HV(HtoHFH H+HHc]4KII\$H,MLH9H]@ IAAt DHcf6tMhLup6AHc9 6Hc~AD뽋u8 HE(HUHHHcƀ| B,u8HMHcu8~$HUHE(H HHcր| A,ELE8 HHLMLE(| KB,KHUHc@0HxHBAE8HcHLMLE(| K A,KHEHꌠ9Y>)FHcR0LxI\$HHPAD$HHHHHDA u- E8 LHElHIP E0H]@LMLE(K4HVHBH9sfE4H~LT:HH H9s$HIALMLE(K4H;NwH~DЉ}4~ )HHIKH@HH9{ A HKDkuHUHE(HЃh0LHM@E0E8-HcHLMLE(| K A,KHEHcR0HxHPFU8^ 1<+tAH9G H<-uV<+9FU8ˋE81HcHLMLE(| K A,KHUHc@0HxHBHHA A!A%E8HcHLMLE(| K A,KHUHc@0HxHBHHA #A!A%E8HcHLMLE(| K A,KHUHc@0HxHBHHA A#A% E8vHcHLMLE(| K A,KHEHcR0HxHP{$ HHC 7C$ )E8MHcHLMLE(| K A,HEKLxHcR0I|$8HPHtID$8HHID$8H DE8HcHLMLE(| K A,KHUHc@0HxHBHHA AA&A% /E89HcHLMLE(| K A,HEKLxHcR0I|$8HPHtID$8HHID$8HHHX@ I;\$8r.H HI;\$8rHHDP ujE8gHcHLMLE(| K A,HEKHxHcR0H{8HPHt HC8HHC8E8HcHLMLE(| K A,KHEHcR0HPE8%HcHLMLE(| K A,KHEHcR0HPbE8HHLMLE(| KB,KHUHc@0HxHBA E8_HHLMLE(| KB,KHUHc@0HxHBAE8HcHLMLE(| K A,KHEHcR0HPoE8HHLMLE(| KB,KHUH1Hc@0HBHEID@01B E4HEB<H3H}HLE(LMHM@HLO$5HLE(LMLE(LMHLE(LMHGLE(LMLE(LMLE(LMH LE(LMLE(LMfLE(LMH3LE(LMLE(LM#LE(LM3LE(LMLE(LMLE(LM`LE(LMLE(LMdLE(LMLE(LMHOLE(LMLE(LMHRLE(LM*ILM9 IHck)D$~.1AADH9T$LE(LMO$LA|$<uSIT$HID$It$LHHID$tTDHu(D)HID$HE@HEL$ƋD$AD$OHL}@LDED$$Ml$EuID$H}HHHHID$jLm= LHct$It$IxHxA+LMLE(De4KD` U4E1u |$KA@<U4L$O$ȍ HcI;L$E4KAH@HUHE(HHcU4H@DLMLE(KHzHAyEHcD$DB,IDELHH9H]@IAt  Icf?tDEhLup?HcA9t"D?AIc~ ILM9DxL 'I|$4HcLMLE(ID$KHxD$E4HcE4AD$ TA%IGI9w IEI9|$111t,AofADH9wII9t$1AADH;D$| H 1HfC*XULEPH}@p#VH}H?H}H AD$fCH}HoHcT$KHHp,uLIH9HU@IIAt  LcfCtuhLMpCHc9t!CLc~ ILM9zLcCftuhHUpACAHc9CLc~AD H}HAU4LE(LMIIuLH}HD$E4LE(LMHc=tIuLIfDIZAH]@fffff.AWAVE1AUATUSH8L$pLd$PH|$(dH%(H$(1Ht$ D$0LD$4L|$MHD$8HT$8fDuLd$HIDWH9H|$8' HD$8HD$8'HH='HGD$8IHD$8MI|H|?HHa L)LHHHHT-IEHLHHHHD$HL;|$tLHH)HH H)HD$8H)HCH9 Ll$HHII)McA$tL|$0D$0|$0w HcD$0swHc9A$HcDHD$D)HADD$DBPwT$HD$ H8Hx{ { CHKSsCfDIcHHH)ŋD$DI)MLMmBHT$HcswHc9DHLd$Hff.D$4T|$4u;|$0D$0u(fDL9HIHEtލCswHu~ $ IAD$4AE)HD$ H8HxxnxdxZxxfDzDbf.L;|$tLH$(dH3%(@H8[]A\A]A^A_ÐD$01_Ht$ H|$(Ht$ H$ D$0jD$0|$4AփT$4DD$0ID$0$ AEDHT$ HHxBBgN@DHD$ HH8HxHV ~%F*DF&V#fF(N%v!HT$ HHxB$B%HT$ HHx@HT$ L"I$x{%Hs@Ls(LS#s!DC&LC%C,C0aHD$ L I$x{%$CHL0HT$ HHx@HT$ HHxH{@Ht HC@H{8HC@HD$ H8Hxx%fx(H7SfDHT$ HHxP@PHT$ H:HxHs8 CXHD$ H8HxCCCCC+HT$ HƀHT$ HHx@H\@X@HHT$ HHx@HT$ H:Hxx@HT$ L"I$xC%z,{%Hs8LC,L*C,aHD$ L I$x{%Hs8L{%1HT$ H:Hx@H HT$ H:Hxx%fx(X@H,fp(HD$ L I$x{%s(L*C0LHD$ H8Hx*@0eHT$ HHx@MHT$ L"I$x{PSCS fHD$ H8Hxxxxt'@PxfW@Pt@XX@P@XHPp@PHHT$ HHx@ @|HT$ HHx@dHD$ H8HxxKxAH7fHT$ HHxP@P HD$ H8Hxx@@t@@DH@>D@HPAEE?HT$ H:HxxwxmfDZfHT$ HHx@@@@@@$HD$ L HI$xHC{tLCCCCLCHT$ H:HxCSCCCCCC{CHD$ H8HxKSsDCCHCXFHT$ HHx@@*HT$ HƀHt$ H|$(I߻{ 6SHCHHCPCC{|CHfWCHjxCrA11{u{ ftCCH?HCPCt{t{uCPfWCPKSLDCHs8CPCCCCSH{@Ht HC@H{8HC@{G{fDuCP{fWCPtCXXCPCXKSLsCPlx@@fQDC0H$1ADC0H$LS#s!DC&LHs@C%LC,C,hDC0H$1ADC0H$LS#s!DC&LC%C,{H7I4$LI4$LfDH7lp_yyset_column called with no bufferlp_yyset_lineno called with no bufferout of dynamic memory in lp_yyensure_buffer_stack()out of dynamic memory in lp_yy_scan_buffer()out of dynamic memory in lp_yy_create_buffer()out of dynamic memory in lp_yy_scan_bytes()bad buffer in lp_yy_scan_bytes()calloc of %d bytes failed on line %d of file %s flex scanner push-back overflowfatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflowout of dynamic memory in lp_yy_get_next_buffer()fatal flex scanner internal error--no action found%s ../lp_rlp.crLEX ERROR : %s lineno %d read() in flex scanner failedparse errorvar_store failedUnsupported SOS type (0)SOS type not expectedSOS%dsyntax errormemory exhausted . @(*(C;4T<#CRWJKILRR[ U  oq  @F IJMNPU_fiBlPuf'AwuiwUj[_m./%*01*6JvKw !"#$YECLDQSWZ \ iVQj:;<./g bcexrS+Hs5^-yo8Gz6pg`qd    /.!789:;34<5"-,10#$%26>'()@=&CBAQJLSDPTEONUF?MRVQW+XHG*IY !!"#"%&'$()*(++,-,/.001232444556677889::;;<<<<<>=@?AABCBDEDFFGGHHIIJKLMNNOOPPUQH"FMD+ ,BP]fu 2>=n347&'()9?@AFIXltMN[TUhROak   !"#$% !"#$%"        >>>>>>>>>>>>>>>>>>>$$&+-n0>R(0<ZF<A[QJUfJ}94`uX@3-&S~Al!m |(/g,`-DHR7OD68 Yahot{      CC00:((V:(DDV$$$++$$&&&BB+&,&,,-1-B4--5;,|<={1?14W45;5;<=<=?Z?Wx<5;G4wtHsZ=>?pQoGmGjHNHa>O>QGQP>HRN_N>ONOS>PYPRORTY^P]SYS\R[XTT\TUUU\bcSMdebcdbdbcfrdregfrULefrgeehhhgkKlqgkkllqukvlqJuqvIuuvvyuFvzAyzy}z}z9}~~}~872~'%     ` "#"#$$$(()%%*0$$$0%+%,,203DD230-4020356$$23%2%320<L;((07M=8293-DD:2>$$$BB?%%&&&BB-&+&,,C0C-0DD00-002032W3223322332Z3XOHNWG|Z{[P0Tp0xXw3t[03p2032Y30Q\02o3R2b30S2132c30kndm2131eEEg2l3hhh111fa1s11rq111111z1g11j`1111Q1hhh11_111u1v1111111^1y1]}1~11}V~1U1hhh11111K11W11Z1J1IE1AX'3@[/3!!!!!!!!&&.'&11111FFFiiiiii?zRx o4L)d)| $<TlGZDADG D4ODLODdJG ADG AGG JY0)JML0JQ0$ADD D>A\ADD ,|BEB D(A04JG $Jc(F ~JLL0,D\nJP0$|MJ^@4BBB B(A0D8DP4ZBBE B(A0A8G GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.8.rodata.str1.1.rela.rodata.rodata.cst16.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @(9o`&h9,h912h9k@2;T< Oh( \PTj`T|hT(w8 Y%YY^ % i3 4)F0 >d 9j ,u  @ ,`TT {@`t`{Z@Z 88%t   0 6  <oOp^)n)~ 0@P`p%*Z> IP0]e@y O0O`@")0D Up k0 |P4@(p~0nM :AOX_)Zjq{ %lp_rlp.clp_input_lp_yyinlp_yyensure_buffer_stacklp_yy_init_bufferlp_yy_delete_allocated_memoryparselp_yy_baselp_yy_acceptlp_yy_eclp_yy_deflp_yy_metalp_yy_chklp_yy_nxtlp_yy_rule_can_match_eollp_yypactlp_yytranslatelp_yychecklp_yydefactlp_yyr2lp_yyr1lp_yypgotolp_yydefgotolp_yytable.LC25.LC21lp_yy_flush_bufferlp_yyget_extralp_yyget_linenolp_yyget_columnlp_yyget_inlp_yyget_outlp_yyget_lenglp_yyget_textlp_yyset_extralp_yyset_inlp_yyset_outlp_yyget_debuglp_yyset_debuglp_yyget_lvallp_yyset_lvalfreadlp_yyfreefreelp_yy_delete_bufferlp_yyallocmalloclp_yyreallocrealloclp_yylex_init_extra__errno_locationlp_yylex_initlp_yyset_columnstderr__fprintf_chkexitlp_yyset_linenolex_fatal_errorlp_yypush_buffer_statelp_yy_switch_to_bufferlp_yy_scan_bufferfilenoisattylp_yy_create_bufferlp_yylex_destroylp_yypop_buffer_statelp_yy_scan_byteslp_yy_scan_stringstrlenread_lp1callocyacc_readreportLP_readhandleread_LP1fopenfcloseread_lpexread_lpread_LPlp_yyrestartlp_yylexstdinstdoutstrtodcheck_int_sec_sos_free_declfwrite__ctype_b_loc__strdupstrtollp_yyparsememcpyrhs_storestore_boundsread_errorstorevarandweightset_sos_typeset_sos_weightadd_constraint_nameadd_rowstore_re_opnegate_constraintnull_tmp_store__stack_chk_failvar_store__sprintf_chk46[9==/9== @  !A+B[@` (e qA{B;94 P<DF PNDD9F D=nHuI 9/ 9u } D  D 6 6 6 6 6 6 6< KJ 6` 6 6 6J 9  D| 9 F  D  D@FeOQ9 0   9R6= * @:ST YP V PW N VVk sP~WZ9t9 D D       @     `# .  L  c     8D ]^99_N_s  `      " `2 @ J abH6]cmOB6WcgOb 6 c!  "S<" A"D# #  R$;$ $D%  &  &  '& `5& @ L& c& &;k'd' 'D' 'D' x'D:(  F(  Y(  i( `v( @ ( ( (  (  ( `( @ ) )[>) ,F)DT) \)D}) *9*f*f*6#+ Z+ @l+ `}+ `+ + 0+g6, @C, U, `e, , , - `- -h-6 . .i..\}.  /`i/ju/k/`/l 060cO0 gY0i0m0n1j1l1j1l%2":2ke2kw2l2l+3#W3g3 J3i`4o4p5n35q5o5 6i!6rm6#6o6# 7sN76_7c7#7g7  8t8j58`L8jf8 8t8j8`8 8i8 J8i9 V9i666!91;MP P$9ea|O (08O@OHPXh!`hbpx$-, u  !!P1 (048,@5H0P,X0`,h,p,x,,,,0,h05<54x430@-,11,.,p32 ,(,0282@3H3P,X,`,h,p.x,,53///+,,,,,,,,,/,.'0, ,(,0/8,@C2H1P,X2`1h,p,x,,,,1N1/G/ 8 pP h        0 @( P@ `X pp       0 @   8 P 0h  ` @   (  H 0 ` p  0  P  @ p0 H ` 0   )  9lp_crash.o/ 1462526194 1000 1000 100644 11336 ` ELF>@@ Ll$H\$IHl$Ld$Lt$L|$HHT$ Ht$D$tH \$|HDŽ$D$@HDŽ$T$x1HH$u=H$H$L$L$L$L$H\$|H$Lu>1H$HtHDŽ$H$HpfH$LtLH$D$\H$H$DT$\HR(H[ H@0EHT$`H\$hHD$HE11ZHT$HfWZf.ztfWDDLHT$hAHcHT$HD9t$\YXD$ E~WHT$`LD$IcDH,H$HD$hD<ED$ dHD$HXsDHc|$tHcT$xHt$H<H$HHDL$|EnE1MfDLLD$Pf(D$PA fTf.rf(fTf.sTH$D$@d$PH  Xf.v}f(\fWf.ztfWH$HD$D$H9l$|9l$tA8+\$tLLD$Pf(-f(\D$@f.vf(L|$L$\gf(fTf.*f(fW\D$Pf.9QDH$T$|E1H|$D$tH$1EHcH$HLt$HT$(1LHDD$tHL$E~x#f.HcA|H9|$t|GA3Q)9T$t}+T$tH$HcHS8H)HcHHC(HcA$9t$||8HT$HcH 3)9T$t|Hc‰tH9t$|}ۋL$tD$tLd$1ۃILxA|t1HIL9t[Tu1LA|uADHc|LHD$H<A$A1$A)$f.$9T$|Hl$Hl$(D$|u+D$t9t$tLt|_@LcLJH$D$0L$0H$T$@\ fB.sBL9tJHu9t$t}H$Hc+t$tL$\d$@d$8f.D$8r]D$t~9D$tH\$1ɃH4fHT$D 3T )ЉD HH9uD$@f.$tf(\fWf. %f(f(\T$P\fWf.Lt$f(L$fff.AWIAVAUATUSHH HD$( H IHt@ I HtA u<P A t?D$7D$7H[]A\A]A^A_xu}H|$(t1LHDŽ$HDŽ$HDŽ$HDŽ$HDŽ$AH$1LqD$7H$AHT$ Ht$ 1H$A1HHL$H$H$|$7H$HtHDŽ$H$HtHDŽ$H|$H|$ fH|$(@uA Nf1LHDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$AH$LH$HT$ 1H$D$7HD$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H|$ H|$AH$1LkAH$1LD$7G=AH$LAH$1LAH$1L`H|$(HL$(AHY(LQ LY011L$,@H$AAHA9]Hc 3Ic2AsfTHH$HHH$tHH$f.vHH$f.vfA.rAhD$7=AH$Ip HcHA~&fDH$ރA9}EE~$@H$ރA9}H$DhEH|$(Ht$(H\$(AH$D$DHv H[(HcHt$`H1H\$XDd$DEJ1E11ېHT$`HD$XH$D$D,Dt.H$fWIcf.ztIcAHH$H9l$DEH$H$ƉLcʼn\$@u&qf~>l$@H$tMLcl$@H$LcBB9}MfDH|$(t$@H|$(9MHD$(H$1HP8LHD,F$HT$(D$Hj(HZ0AHcHD;$?IcD$<HD$HL$Lt1fDA.H$AlH$HcD$PH$^D$Pt D$PfTf.D$Hv D$H\$fWHH$IcHT$(H,E1D$xD$fHBHHL$(D$Hc(HA0 HA fT H$Yf.rHcHH$(H$ $ $H$H$D$Y0f.IPHcHT$(fWHt$( fWfTfU HBHfVHc(HF0fTfUfVH$fTfUf(*H$fVʋXȍ*\f.L$xv L$xAHT$(AHHBPF9$0EH$DHL$(IcL Hy8HHI(HS0t;4}]HcL$H HHHL$AYfTf.rHHH$(B94Et$8LD$$A9guess_basis: Internal errorcrash_basis: 'Most feasible' basis crashing selected crash_basis: 'Least degenerate' basis crashing selected K7A`??zRx $TJ^4D0BEB B(A0A8GGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst16.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @# &,12@2qOp ]oxj,0 y %EE p!    %T1>HMZgqy`0 *:IWdolp_crash.c.LC1.LC2.LC5.LC6.LC7guess_basismat_validateallocREALfreeget_nonzerosunscaled_matis_chsignmemmoveget_rh_lowerget_rh_upperget_lowboget_upbosortByREALmemsetreportswapINTcrash_basisdefault_basisallocINTcreateLinkfreeLinkmat_nonzerosmemcpyappendLinkisActiveLinkfirstActiveLinknextActiveLinkmat_collengthset_basisvarremoveLinkget_constr_typeis_unbounded$CO 0x  3 t Ub  )")5 8~#$$ > T %^ %v    #X v      % %/ S  #   &  ' (N (v &  )C*W++,,!) ]-n.. #9$(/ #<$ 0(H*h +. = t )1.5 k- H `lp_LUSOL.o/ 1462526194 1000 1000 100644 17952 ` ELF>H(@@ Ht t1fH fDf.1Nffffff.H H@0@SHH` *f.D$uz*D$H߾` *^D$H[fDH @hDtuH @P@H @LDt@H @Tffff.H @{@HHHfDH 1HtHB@BDBHBLBPBTBhHB0B{1ffff.H @ D1ffff.f.Hl$H\$HLd$HL A\$D 9|dA\$H1H` 9}1H` AD$HAD$xH\ 0H AD$yAD$hH$Hl$Ld$HfDH AD$DL H HfWAPHcAp A@tAxxA@8IH0tA@xf.Hf(L fWf.z Hx f(Džx[f(1f(f(f( Y\f(fTf.vf(f( H_9}ÉHt8 I9p0f(tA@8fIp0KH\$Hl$HLd$HHHMtH Ht,LH LHHHl$H$Ld$HAH$Hl$Ld$HDf.@H t@tH@PxPtËPHf.P@f.H HxpPDD0C Tr ʍ W8t#BDЋG@BDЉIcH@G@BDЉLl$L|$MH\$Hl$ILd$Lt$HxHɉt$HT$HL$T$Ht$@1LHD$0HD$8HD$@u/1H\$HHl$PLd$XLl$`Lt$hL|$pHxT$Ht$81LtAu-LAD$E1f11ҋsLD$LT$~Cl$AIcADAHE9e}111EuHHD$ L$t$DHHD$ T$EtDMfDID9HL$@HT$8LAt$LD$T$HL$8Ht$@H|$ AA9tA1AٺL1A H|$ H|$@HtHD$@H|$8HC9fDMDfAH|$ 1uHD$ 1D@`1AP9T$|NHD$ HcHt$H HDD$HTH@HFHH9ul$D)ʼnHT$D$E11T$Ht$0LKT$HD$  LXHhD$HfIc0wfTHHD$0f.vHH9uH|$0DHT$ H HhIcHH9^uHHD$0H|$0fDfffff.Hl$H\$HH HHtHH{pHt HCpH{(Ht HC(H{HHDž H\$Hl$Hfff.Ld$H\$1Hl$HH IH}HH)uH$Hl$Ld$HH}EI$ I$`I$hIMhLIHl$H$Ld$HH*ºALd$H\$1Hl$HH IH}HH)uH$Hl$Ld$HH}EI$ I$`I$hIMhLIHl$H$Ld$HH*ºAfLd$H\$1Hl$HH IH}1HH)uH$Hl$Ld$HfDH}EI$ I$`I$hIMhLIHl$H$Ld$HH*ºAfAU1ATIUSH8H UxLm@tExDE EhȋE)9E~m 9E~E @E tfA$ID$4~IHfW Hf.ztfWA$9}Չ|$4HD$ DE1E1HD$HD$(LHD$HD$4H$t$4tqLI$ I$`I$hIMhLH*ºӋD$4|$4H8[]A\A]AAE| *AExAEt*D$(A*TYT$ ^f(YD$ 1L$(f.v}hEy|$4gf.1ҾLA$0 AuHt$4LI$ HI$`I$hLH*D1ҾLA$0 t$4LI$ HI$`I$hLH*L1A$ qffff.UHSHH Hxu#L HH[]1A@,tAGfIc H @7H HAD9l$H|$DHL$HcЉHHHcHHD H)H LcF<D)H Hcʀ<H H4 H Ht u;~ H \ 0 f.Ic HH f(fTf. sHx 1fB. @1H DEL 1Ҿ6@H  7f(fTf. sVDHHA9|&A< AutH Hc 7f. v봅t$H HcH4 DH1 HT$011HT$T$ t3\$$[AAHAqL$ 9L$ @LUSOL v2.2.1.0iesybfp_findredundant: Error %d while loading column %d with %d nz bfp_btran_normal: Failed at iter %.0f, pivot %d; %s bfp_ftran_prepare: Failed at iter %.0f, pivot %d; %s bfp_ftran_normal: Failed at iter %.0f, pivot %d; %s bfp_finishupdate: Failed at iter %.0f, pivot %d; %s bfp_finishupdate: Insufficient memory at iter %.0f; %s bfp_finishupdate: Recovery attempt unsuccessful at iter %.0f; %s bfp_finishupdate: Correction or recovery was successful. bfp_factorize: Very hard numerics, but cannot tighten LUSOL thresholds further. bfp_factorize: Frequent refact pivot count %d at iter %.0f; tightened thresholds. bfp_factorize: LUSOL switched to %s pivoting model to enhance stability. bfp_createMDO: Internal error %d in minimum degree ordering routinebfp_factorize: Resolving %d singularit%s at refact %d, iter %.0f bfp_factorize: Replacement slack %d is already basic! bfp_factorize: Could not find replacement slack variable! bfp_factorize: LUSOL was unable to recover from a singular basis ??@|a2U???zRx 4 Ld | ZAL  C G,XD\ tJL FkJL ,6Dy$\J^tN U U U $BDD A(D`$ADD $DBJD A(D0lhAAG ]BHG *U ,BKB A(D0JMG0{N 4IEV04TzBDE B(D0A8DP4BBB E(D0D8DpGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @8x &$,$12$@2@*Op"8\" o"j`B y'%''H, 4   %+ 1(70 =L W0e@ sPp Z C@ PpX ":FLYkj@sP6y t  '7@ IU f w~ h]* 4 BIRY`g{}@Izlp_LUSOL.c.LC0.LC1.LC7.LC8.LC9.LC10.LC18.LC20.LC21bfp_compatiblebfp_statusbfp_indexbasebfp_rowoffsetbfp_pivotmaxbfp_pivotvectorbfp_efficiencybfp_pivotcountbfp_refactcountbfp_isSetIbfp_rowextrabfp_restartbfp_implicitslackbfp_colcountbfp_canresetbasisbfp_pivotallocbfp_finishfactorizationbfp_prepareupdatebfp_pivotRHSbfp_btran_doublebfp_namebfp_nonzerosbfp_memallocatedbfp_findredundantallocINTallocREALLUSOL_createLUSOL_sizetoLUSOL_loadColumnLUSOL_freefreeLUSOL_factorizebfp_freebfp_btran_normalLUSOL_btranLUSOL_informstrbfp_ftran_prepareLUSOL_ftranbfp_ftran_normalbfp_finishupdateLU8RPCpowbfp_LUSOLtightenLUSOL_tightenpivotLUSOL_pivotLabelbfp_LUSOLidentityLUSOL_clearbfp_preparefactorizationbfp_LUSOLsetcolumnLUSOL_replaceColumnbfp_resizeLUSOL_setpivotmodelbfp_createMDOmallocbfp_initcallocstrlenstrcpybfp_updaterefactstatstimeNowbfp_mustrefactorizebfp_LUSOLfactorizecreateLinkremoveLinkfirstActiveLinknextActiveLinkmemcpysortByINTbfp_factorizeLUSOL_getSingularity K A y-.:/]01 2%3A34'.H 37 3M 3^ 2f 3 7 88 @z : 8 x7 :n 8 W  = 8 O v  >  > 8 Xb8z   @ A+ t 8C1@C/.L0y/H0@J 3,LMJNPPsC154ISTUKFsVWX.FZC14-R 13T??  (Zw  p i R  (4F 8  P 0h @ P p    @ P0 pH ` x       @0 PH `      @     ( H p         8 @X  lusol.o/ 1462526197 1000 1000 100644 90088 ` ELF>x@@HcG8H|Cw8Bwktp@t~Hףp= ?H$^?fDHHH@@H9@f.H<@H@f.HY@H$@f.H$@H@oH@H@OH@Hףp= ?/GL9|1|,t%tHcHHDGPfHcHHHHc@F vwHFHHDtfWE~AA@fW 1H<1@DAfTf.GHH9u*A*^f(Ð>f.w !Ѓ<AUMcAATIJUJ SD)(1A9~.ofH A9B HcBEfAEMcGAD9~IcHD f.vAIcH f.rJJ D)Ic[]EA\A]DEff.ATLcуAAUHJSJD" ~e1LcBf.v&PAAMcBf.wSAADMcӃBAJcBD\uH_HVAIcD" D\[]A\HcAHHATUHSHHcHVALL^ A@Ic AD9HH9ufDE11A~9CL@HAL9tD=tHHL9uES~/B1HET9DT>D>HH9u~tIE1ۿ@AIIcA<9|)ABtHcIHAHA<9}LfHcAHA9}[]A\HFH9A11AAB t+fffDfADHD9r9DQIcHH<I@AHHD9}vfDIAH95hff.AWAVIAUATIUSH\$HLL$LD$LL$@FE1L<ClHD$HL$CDFTHcŋ4HA9tiL,HT$8D)E]A$IcA9H }fABHH @AxD9tHcIcIcAD9HD9AHcA,A}IM9Z[]A\A]A^A_9D9tHcIcIcADGAAHD9|A~wFIE1HtDAIIcI9Aff(af.rf.rf.ff.@ff.@D\$Df.rf.rf.Fff.@.ff(Df.f.f.DIHXLxLABD$HAA9|^A9AfTfD.wDf(^DT$Hl$hDD9UtSl$Lt$f(f(A.Lt$`Hl$hEADUAIHD9wf.ff.s#f.fsfDf(%faf.rf.s]AWAVAUIATUSHHL$HL$8HT$H\$Ht$DD$HcAH|$ȉH\$AEffWM=HL$DAf(D$Aff.H|$HL$ȋHclj|$DbIDC,A9H\$IcEH H4MxDIXuE9f(fA(tIh 0fTf.wdf(^D9HD$҉8H|$D$H|$؉tff(f(AHHD9|%Aҋ< HcAPAD9xDD$|$'AIHD$D9|$[]A\A]A^A_DAf.rf.rf.sHf.@\f0AWf(AVAUATIUSHAHD$Pt$ԉT$ЉL$LD$LL$%E8fWAf(AD$D$D$D$HD$E~\$9\$DT$E9$tI$HL$A$\$89T$vHcM$M$hHT$H$I$LT$HD$H$HL$H\$DT$DIcHcBA\H<9fT^|$M$XI$xH<E1f.I;A4LcBDD9xATUfTf.wgf(HT$XYBf.wND$LT$PA9t-HD$HL$H\$P0DH[]A\A]A^A_fDf.rf.I9aD$E~ DT$D9T$~D$H$D$9D$D;t$~E~dT$9T$ZD$9D$tHL$P|$AƋD$9D$SL$HD$A9ΉL$HJH9w9)‰DE_OH<$~ $$_$fn$1ɉ\$LIfbfnT$Lfn$fb~fo flfoDffH9rDD9t#H$pHcHfD8HA9}H8[]A\A]A^A_H$pH$$D$Dt $@HIAWf(AVAUATUHSH$8t$|T$xDD$pDL$lL$@L$wD$kt;$~7~3LLIcD HA9t}HcD$|IV1T$ H$H$HHH$$T$ 9$\$d$Hc$HAD+$$LLHD$XHIHL$PHI@Jc!EALAA9}jD)IcLH H4HTLXHhLIc HAAH7HL9HIuHT$XI;\$d#D\$pHL$XdLc$HL|$P|$wHL$PH$HLL$0DD$lHf(T$ HDL$pH$HD$T$ HhH$T$ H$HT$p9T$lNT$lT$ ҉$B\$pT$pL$|Lt$PLD\$xHcH)HH$HT$HH$$T$l$ILf(HD$HDŽ$HL|$X\$f.wf.!ȃ\$0HT$ D$0AHAFHH8[]A\A]A^A_HT$ e\$0D$0Ld$ A$LHT$ HoMDؐff.AWAVAUIATMUHLSHHtk:tn>CtH[]A\A]A^A_ILHѺ1HHL[]A\LA]A^A_fDLE1HHH[]LLA\A]A^A_fDWtGpT$W|ADP$HL`LhLXAWLABLAA)IcIc f(fTf.vM~IB1HIH$PH$XƄ$Ƅ$+$$1$$t'$$؉$;$,Ƅ$$D$B$$ $$D$Ƅ$Ƅ$IxIcIL$8H$H$Hc$D$$$AH$P$;$1~N$;$gCD$$1L1D $Aɋ$l$$ $+$1$+$$+$$+$$$$$9~$+$;$*$Y$ A$At,$)99}hIL$MMXLLH$$MX$Hclj$AD$)9$)9: H$MxM`At1LH$IH$H$$I`Hc‰$D$$)9Hc$I$$$$$$9͉$$ "Lc$$L$IN A9tJHc$$H HH99$$}HcALA$I$B Hc$$$$$9ω$$!Lc$MX$ML$IO A9tLHc$$I fHH99$$}HcAMA$Mh$C Hc$L$IDKTHCTb $$$$Lc$f(H$H$$fT9$D$CTB H$$L$hf(G _ $ f(_  ]Q$Hc$MMLL$HTL$H<D$L$JcHI*M H$AE $LcD9ALcD$G9t0BLcK HIpD9tIA9щ$}LcHc$KDII9IDIcHc$A,Hc$Hc$ADH$fT_IDIDAAAHc$$$H$pA N$IH$$Hc$Ix$9$IH$ Hc$H$$$Hc$I`H$HL HcLH4$+$HTLDC B IIHcщDA 4$3HM9uD$D)$$$$D$D9$$[D+$H$H$I`HDHH4$$ HHH9uH$hH$$IIILL,M`H$x$E1ۃHH$GtL$xH$CDIcGDDHE9tiH<H$IcE9Ћ7L A@HL AAH9tHcHcHcDD4A IE9HcDtIL;$NH$pL$$IIII\ODDŽ$ H$H$1ۅL$$HH$L$H$H$ ElADD\IcDHE9tsLtE9A6L$ACHME fAAH9tHcHcHctAIE9E)D$ HcD,AHH;$<$t$4$$$$M9ى H$ HcIHIc THcHI` T9ʉHMhf.H IHcIHc D Hc‰H4IXB 9щ H5~>;Hu/@;t!B;HqHH5|Hc ATf(HfTӋ;fTfUfVHc9$H=I|HIxH|fDA 9tHcHcHcDD4AAAIE9|IH$$ IxH$ Hc$$$H$ $L$D$,Hc$E $;$k;$^$;$$;$$$9$-$I$@A;t$ $D$ $D$$$$H$IcEL@A9tHcHcHctAAAIE9|+9I`!$+$$AAt$+$$+$$+$9$M$$PH$IHc$D$ D9$^ʉ$Hc$Hc$AD$IMxHL4HH$IEH$$HH$L$ H$HH,$A)D$H$L$L$ McJIx8$C$PTA**f.$*$4$Y$AY 1H^f(qD$H$E$l$E1DŽ$E111HcE8f(f(T$$0D $$XEH $tA$H$1D$ HDD$PDd$Dl$DD$P_fD$hT~:HL@ATH9~DTEAALH` LXHhC4"DTJ<`EHcL`HHHcJHA HhEA4AHH8uVL@HcHHHcJHA HhAd|_$BLH L(BQH  BAD ,,BBB B(A0A8,\+BNE B(A0A8,]BEB B(V0G8,BYR L(H0A8BCD , (BDE B(D0A8<T4l] BGB B(A0A8G`, BBB E(A0A84BFB B(D0A8DP, BDB B(A0A8,< BOB B(A0A8$lBHC A(BGC ,4BJE E(A0A8,BEB B(D0A8,BHB B(A0A8DD\BHD |SJK BDF 4BEE G(A0D8GP4zBFB B(A0A8J,JL 4LBEB E(A0A8D@43BIB B(A0A8I4P BEB B(A0A8G43BFB B(A0D8G4,BBB B(A0D8D@dJO4BEB B(D0D8Dp4 BEB B(A0A8G4BHE E(A0D8G4,BEB B(A0D8Dd|JY0UEGQ BJLO0,BGB B(A0A8 G$4<BBB B(A0C8J$tBMD A(9DHJLQ0$J^@4BBB B(D0A8GP$4 -J^@4\ %BBE B(A0D8Gp4 BBB E(D0G8G@ EQ0 JQ@$ J^@44 rBEE E(D0D8GP$l J[@4 BBE B(A0A8J MATP4 BBB B(D0D8D`,$ CBDB A(A04T >BBB E(D0A8D`$ J^P$ J[p4 6BEB B(A0A8G4 BBB B(A0D8GL D GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rela.rodata.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @X&0&,<12N@2(T@ OHW\Xi 0|P` wX  % ( x! ` `( /(7?HQ[0bj s8z        ( 0 8 @ H P   I`>-=_N@[`a0ensp+y]   ( ]   "@% P'0)@*4,@/ 11$+13S8@4GN5U6z\0>h0@ovA3}PGP R3XZ`\^ !j(pm/`p;pPV^qUlqBy@s`t0uv}@9HЀ`@-p%pPr/Ж?pF`MZjCu>0  6lusol.cpivotText.4840informText.4921K.7207IC.7206LC.7208LC2.7210LC1.7209AMAX.7214J.7205LR.7211LR1.7212I.7204LR2.7213.LC11.LC12.LC29.LC28.LC32.LC3.LC42.LC38.LC43.LC52.LC53.LC54.LC68.LC2LUSOL_pivotLabelLUSOL_setpivotmodelLUSOL_getSingularityLUSOL_findSingularityPositionLUSOL_informstrLUSOL_vecdensityrelationCharHDOWNHUPLU6L0T_vLU6LLU6LDLU6U0_vLU6UTLU1PQ1LU1PQ2LU1PQ3LU1SLKLU1MARLU1MCPLU1MRPLU1MSPLU1MXRLU1OR2LU1OR4LU1PENLU7RNKLU7ZAPLUSOL_matfreefreeLUSOL_dumpblockWriteREALblockWriteINTfclosefopenLU7CYCmemmoveLU1OR3memsetLU1OR1LU1GAULUSOL_clearLU1MXCidamaxLU1DPPdscaldaxpyLU1DCPLU1FULmemcpyprint_L0callocstdout__fprintf_chkfputcLUSOL_report__vsprintf_chk__vfprintf_chkfflushstderr__stack_chk_failLU1RECLU7FORLU7ELMLU7ADDLUSOL_timerLUSOL_addSingularitylog10reallocclean_reallocLUSOL_createinit_BLASHBUILDHINSERTLUSOL_tightenpivotLU6CHKHCHANGEHDELETELUSOL_matcreatemallocLU1L0LU6LTLU1U0sqrtLU6ULU6SOLLUSOL_btranLUSOL_ftranLUSOL_realloc_aLUSOL_loadColumnLUSOL_realloc_rLU8RPCLUSOL_replaceColumnLUSOL_realloc_cLUSOL_freeis_nativeBLASunload_BLASLUSOL_assignLUSOL_sizetoLUSOL_expand_apowLU1FADLU1FACLUSOL_factorize ` 02   5=|UcIb"K%z%$%%%%&&$&' '',' '*'0'46'2-51EH1E\1Ep1E1E1E1  1G1 2H2 #2H;2 C2H[2 c2H{2 2H2 #2H2 (2H2 -2H2 23H3 8#3H;3 >C3H[3 Dc3H3 3 3J3L&4N;5NX5N5G789NT:>N>N>N>N>N>N ?N?N8?Na?Nr?N?N?N?N?N?N@N@N@SASACLD{DUDVGVISJLPLULVQVQYSNTTTY@UXWY[7Z\GZ J]Z]lZ\zZ^Z [~[`[a[b\cI\aP\d] ]_(_k_fLfLfNiekkmenBoeoLpLpNgp Olp P qkq q9qlqlqN#r[soJulu yuuvNv,ww!xkx y$ylyy>z!uzt{k|{{{l-|| (|_}!}!pt[wwwwwiE|EEEEEE*E?ETEiEzE[vEfxEEEćEهEEd[ш{v=Eϊ~ ͎tz03\2ݐ>5X3YҒ}AYh} l(NLlilNlNY `h_ElklllllxNNl˜NؘlNlN&l7NhKKPfq ɛ_ x_yKKȝf @ _bB ߠg7}l7lMlclyll̢lklmӣmm]NslNNlѤNlNl#N9lLNN٥lNl2lFPhEEEEǦEۦEEE-EEE]EqENɧlڧNEmmЪmlʫNl l?NlNȬE}"# l'NLlnlL L!L"NlNN$  _eeBcq4z ,,$4,47AK$Zg s+~ 4YAPeft _SH:S) g5_<S4 , ,%4NU$_4t4$ + 4 ,_P:A< _ "_PXe _se!sE'E?EWEoEE"l_llOK W_^%C& 0_ _f Hn&_ ` `J_0N@C66? p_ @NcN~lN  _  _ _s2s3I?NZEsiexp_Ny~|05E  ((0*8*@`HPX`>hBpFxJ 8 P `h    @ ` 0 0 ` p       @  X p     "@ @%p P' 0) @* , @/H  1` 1 3 4 5 60 0>P 0@ A PG R0 Xh Z `\ ^ j0 pmh `p p q q @s `t( 0u@ vx } @  Ѐ `8 @` p  p  8 Pp Ж p ` ( X  0    P lp_Hash.o/ 1462526198 1000 1000 100644 5704 ` ELF> @@ 11҄t/DЉt11Hu1ATAAUSHAHHHDNf1H,tL/A9}(HcHþHAD$kDc CHH[]A\D$ffffff.SHHH8H;H[ATIUSH_Hu "fDHH;HkHHuI<$[]LA\U11HSHLvt7fDЉt11Hu1HcHIHu@H[HtH3HuHH[]fffff.AWAAVIAUIATUHSHHtHcHH8tHM11IuEeHt8fDЉt11Hu1AHcHHHu3H[Ht'H3HuHH[]A\A]A^A_fDDH D$HIHP11LI<$HE|$AEMtIcM$HcL$IUHID$L$I}tIE HtL`Me XMef.AW1AVIAUATUHSHL:DjH4$D'EtDHD1fDЉt11Hu1AHcHIHu @H[HH3Hu11Et9AЉt11HDeEu1AHcHIHHH9fHH@HtH9uH9|IFHH9fHH@HtH9uH9tRH<$DtHcCH$HH;HAnH[]A\A]A^A_HtMHCHArHDtHCHB@1fDHCHIF{IF nH@H&fff.AUAATIUHSHHHMH01D@1Ht9Љt11Hu1AHcHHHu3H[Ht'H3HuCH[]A\A]f.Et1HLUHSHHHMH01D@1Ht3Љt11Hu1AHcHHHu+H[HtH3HuCH[]fDH[]fff.AWAVAUIATUHSHGDw HH9ADMAHDNf1DH,D9~(HcIľIA\$H]I$AFEt$ HAD$umDH[Ht_sH;LLHuI\$Hu"fDHH;HkHHuI<$E1LHL[]A\A]A^A_$+find_var: Unknown variable name '%s' s !';b}{@ c)7I%0 C 8 ǽ D%P5\g%&-% =KKL[j zKTwzRx =$4BQA G\ AtIBDA AHD 4VBEE E(A0D8D@4BDE B(A0D8D@$$BED D(D0LADD 4lDBGB J(A0D8GGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.8.rodata.rela.eh_frame.comment.note.GNU-stack @$p &d,d12h&@ MX HX W %`  p     =@/6 EJIZ`cjVryPP0Dlp_Hash.cC.17.7783hashvalcreate_hash_tablecallocfree_hash_itemfreefree_hash_tablefindhashstrcmpputhashstrlenallocCHARstrcpydrophashfind_varreportfind_rowcopy_hash_tableN   3;I    Z m U 8 @` x  `  P( PP 0p lp_lib.o/ 1462526202 1000 1000 100644 214360 ` ELF>@@HtHtHtHtfH H ÐH H ÐHP HX ÐH` Hh ÐHx H ff.H H ffff@@ff9tf.濉Ëf|DЉf.1҉ff.9tf.fHL Aff9ÐfD 7ffff.!7ff.f. f f@ @ @u x fp @u x fp  fTf.      h h _  ffffff. _  ffffff. _  ffffff. 9t1I|=I:0yE>IIz>Hh㈵>H-C6?Hư>H|=Hp Hx L L L H H Hh @I& .>IIz>Iư>H,C6*?HMbP?Hh㈵>H& .>sDIdy=I& .>I:0yE>H>Hh㈵>HHz>L*@I-q=I|=I& .>HH׊>Hh㈵>HHz>Hdy=DfffD9Ð fTff.ff@f%@HcH@%9ffffff.1t ff.@@0 0 fWf(fTfV f  fH H`HhÐffff uHX @DHh 1HtBffff.f uHX @ DftutktatWtMtC t9 t/ t% t tHDHfff.@@ HX V ;F;~ ~0HV HcDEtgAHH@HtN~5HVHct/AHH@Htf1fDATUS LX t9|O:ML$)HLHcHH H)LMSDA HCIL9u~"ML$Hc1HAH9[]A\ATUSLX Eb 2|A11AMZ7fDD9}HcAtD9|PIB Hc҉HcIB AID9}[]A\B"IJ )HDIR DHfffff.tGLMt;9}6HcHIH9|1H u pfDp @tGLMt;9}6HcHIH9|1H t"pHh Ht DHE~p Dp ff.H ÐH0 Ht HcƋx 1f.ff ff.@@H A1HtA8@ % fTf(fWf.0 fTf.Hp f(f.~xDE~Mf(fHHPf(f.ztf(fW˃H9}˃\ AfWwEucf(fW0 /fDEfWt!fWf.zDtf(fW@ f(Df.u{fffff.H 1HtfH Hcf w$DfDff.f.f.f.f.f.f.f.f.t~$ttfuDHXHf(ȨtX u=Y fT f.wH1fD9~fWP f.zHP)Hcf.vwf(D)9|4fWf.zt<H f.zft*^DDf.-'H1\@ff.HPfWHcf. @HHGHGHGHG HG(HG0HG8HG@HGHHGPHGXHG`HGhHGpHGxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ0HLJ8HLJ@HLJHHLJPHLJXHLJ`HLJhHLJpHLJxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ0HLJ8HLJ@HLJHHLJPHLJXHLJ`HLJhHLJpHLJxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ0HLJ8HLJ@HLJHHLJPHLJXHLJ`HLJHLJhHLJpHLJxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ0HLJ8HLJ@HLJHHLJPHLJXHLJ`HLJhHLJpHLJxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ@HLJHHLJPHLJXHLJ`HLJhHLJpHLJxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ0HLJ8HLJ@HLJHHLJPHLJXHLJ`HLJhHLJpHLJxHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJHLJ HLJ(HLJ0HLJ8HLJ@HLJHHLJPHLJXHLJhHLJ`HLJpHLJxHLJHLJHLJ HLJ HLJ HLJHLJ HLJ HLJ HLJ( HLJ0 HLJ8 HLJH HLJ@ f.H @H @1ffff.SHIDHX HH~E1HtfWDf(H9AtEHHcA9MA} D)HX f(fTf.vAH9AIcuHtD D[EH HE11fWIDSHA9|DA9}D)HfWADSf.ztAIc4E1HtfWf(H9 BHHcA9I  } D)HcX f(fTf.vAf.E1ABE1fWH47D)HfWf. ADKAHH9DA9|IDKHHH HÀ uHX @)9OÐHX HcHHB0f uHX @)9OÐHX HcHHB 0fHHHDfff.@u @u @fHP 1ɋ $ HtJfffff.HP 1HtBffff.H@ 1HtBffff.Hx Hc H fWf(‹fTf.w2fWf(f.v$H f(H\ f(fTf.vf(f(fD_f@tKHP1fWHDDHH9]f(uf(@ ~>Hx 1Bf.]GȃH9f(~*f(fWf.DDDX EfWf.P  ‰Hx Hp  \fTf.fDH Hc  Hx f(fTf.wH Hc\fTf.@H Hcf(Hx fW1f.wH HcX f.~3@H JH H H9}H 9|)HcѐH H H9}H Ƈ \ f f fƇ  tHX ;At1f;A uA~KL L AADC HcA<t ؅EB AID9}Ԅt^~TD9|OL HA95A< Au$H ڀ<IcDEADA9}¸fff.H 8fH BDD9L HHѺA<u'ffDA~YD9fDNHHA<tA9~E~)A@H 1HH@|FEHH9ufD1DfDfffff.H HcDH HcIcH H Ht@ DfHHHtSDE~8IVf.w(L AAf.wH 1f.WvH@D9LTf.wADf.wDHf.wA9}D9뷐L MAAAB9|\fDICFH D;@t)H¹@9|aD;BHuAIAB9}~+IK<t2H <t%H9}fDtfD1fDffffff.H SHH~\HHL AAE1JDIS(AJD IS JDIJD ID9}HɸtH B [fHr1[@HD}L IAIS IAAIHD2HD;~~DL AAIS(HFAHJDID;~>9}$H HDE~^HHL AAE1DIC(AJDJDIC JDIJDID9}Hɸt'H @ Hn1@HtzL AIC AHD0HHBHD;~@L AfIC(AHDHHFHD;~J@A9}4uHW HcHDf.HW(HcHDfffff.H HcI Ef(DHx YH Ic,tOfWA f.f(\\fT‡ fTfUfV^ADfudA fWf(Xf.wf(\f.v f.rWfTfUfVYA DA fWA  f.vX\5DfWADf.IӋE1 Lx fWBE1L f(f(XNAHL9tGA Jf(fTf.wH HcH \ fTf.v\NHAL9uf.MtEfffff.H\$Ld$HLl$Hl$H(H`HhAH+p1H+x EAu6H ~LH *f(H\$Hl$Ld$Ll$ H(fEAOH**^DH HHH*AD$*^fffff.H Htd;~<t3H HcH  \f.H  Hcf.D9| H  Hcf.DH HcH  \f.ffff.H HtH t @u Ð1fD@D    t>t2HX HHBHcBHHHHHH t‰Hffff.~&Hc<tAHH fHtufDHtC~(Hc94t AHHfDH9tuH fffff.HcH4HcHcAAfDf.HSE1A  H Ht ADщAtNx AEEv11[f$p fD8 ( \f.wf(Etf. zt fWf(EXif(A\fTX^Q~f. zt fWEtf. zt fWf.[@89f.z D$f(fWDHEP f.EH Hhf. zt fWf(\qf0 [@ Kf(A\[fTf.fP XEu3Hx  f.%zfWHx  H Hh)fWHx ;H Hc֋HfD1Hff.Hx&;H Hc֋9H@11HfDH9}$11Hf.~H HcH@H9}$11Hf.~HcfWH4IL( fA.zD9OD92tIRHc9BO9u7I9}ŸD1H1H[]AH1H1[]EDŹYffff.HDEt t'HtHHHHD11HHDEt t7HtHcHHHHf.11HHx0HX ;p$u8HHcH@1fWH@HHcH@H tstHf(HfDDEuH HtuSHx f. u{@fWf.1fWHf(fHx qHDEt tHH1fWHfDHc1H S9H}$H1[D~HHtHcD<t [[ffffff.HH1SHHHtHǃH HtHǃ H(HtHǃ(H0HtHǃ0HHHtHǃHH8HtHǃ8H@HtHǃ@[fDUHSHHH{(Ht HC(H{ Ht HC H}H[0Ht HEHH]H[]ffff.SHHLJP HXHtHǃX[H\$Hl$HLd$Ll$H(H IIԉtH u#1H\$Hl$Ld$Ll$ H(@LLH fDH\$Hl$HLd$HHHHAtiHt!H H9tHcHHt$H H9tHHcHH Htƀ\ \ DH$Hl$Ld$Hfffff.H Ht@Hh Ht4@t-H HcHHHHf11HHHt t.HHǃHcHHD11HHHt t.HcHHHHHfD11HHHt t6HcHcH4HHHH11HAWAVE1AUATIUSHHһLNPHvXGAD؄E1D9EHcE1HI,L,R@AMUf.zt#9A$ f.@HID92A$9fWAMf.zUfDA$\ HD[]A\A]A^A_DE$.HcE1HI,L,[@fWfA.EUfA.$ sA$ f.HIA9iA$9~A$ UfA.EvL$AXAM$AY$ \AMA$ f.uf.LAXAY$ XEE6A$ f.LL$AXAM$AY$ \AMA$ f.LAXAY$ XEEUufDUfA.$ vff.AWIAVAUATUSHHA,f(DHAHD9CD5AoH fWLt-f(Lp f(fT@pH f(Ћ(fTfUӃfVuf(DH$fW$f.zWf(DHfWJ\ H[]A\A]A^A_fH\$Hl$HLd$H(9H Lcf(B fTf.Hp H B \fWf(fTƒ fTfVBH\$Hl$Ld$ H(1H1fDfWf(f.zftf(fWJH f(fTf. r9Hp B$_fH B FfHp B\\f(fT f.vHH Bf.v1H$$H Hp $$JJfff.H\$Hl$HLd$H(9H Lcf(BJH f(fTf. Hp B\\f(fT f.fWf.vr1H$$H Hp $$J:1H1H\$Hl$Ld$ H(@Hp B$@ fTf.sfHp f(H BX f(fTfWƒ fTfVBqfWH BfDH B 9fUf(SHH9}#H1H1[]@|tvH HcHtsfT f.v{f. zf(f(HHp \ H[]DH 1Ht1uKfWf.uYzV Hf(f.wH @pfTfWfVf(w1fT;DHfW@f(fW+Uf(f(SHH89}'H1H81[]~f(%\ fTf.wrf.X fWf.f(f.vXf(H HcŃ\ H H8[]fDf.zf(@{ tf(ÉHT$ f)$$f(f($$H f(fTT$ @pfTfWf(fVP@ 5f(‰H\$f)$$f(f($$H fT\$Hpf.v5 fW@f(L@ ff.Uf(ȉSHH9})1H1H[]f.~f(fT f.v!H f(@pfTfWfVf(ȉHf(f(tlHcH f.f.H f.I\ HcH[]f H \ fWHc_ H[]yH 뇐H1H1[]Uf(ȉSHH9})1H1H[]f.~f(fT f.v!H f(@pfTfWfVf(ȉHf(f(tTH Hcf.wqH f.U\  H[]fD H \ ]HcH[]@H1H1[]H\$Hl$HL|$Ld$Ll$Lt$H\ E HIID$>u Lt$HLl$@HHD$HHD$@D$??I>5|$> I}DH` 'D1H‰HIfWIU 1 1YHT$IU$1M  LIHH` 1LI6T$f(ʋ1EH IMf(^L3ff.ztfWf.w&HL9t^HcD<tf.v\f.fWf(H\$XHl$`Ld$hLl$pLt$xL$HĈ|$>t"I}HtL$ L$ IE|$?tI>HtL$ IL$ wH` 1LfWZfDLH߃fLH߃fLf.w7HL9HcD<uf.zftfWf.fDv]f(fDfD@ Lx unfWۃH4f(f(f(_HH9f(A Hf.wH HcH f.v\fWۃH4f(f(ff(HXH9t:A Hf.wH HcH f.v\HH9XufDD11Ҿ1fDfWff.AVAUATUHSHpHHHtHDžHH(HtHDž(H0HtHDž0Ht$hHu~H|$hHtHD$hHHHtHDžHH(HtHDž(H01HtHDž01Hp[]A\A]A^ÐHHH]H(H8H0HD  D$HE+ AAfEWfWL$@ f(f(fD(f.YSH(D$@B(f.H0B4(D9D$@fD.zH B(f.zt0H B<0uf(A\fD(f.vfD.w fA(H DHt$0D$BX(t$0D$A)HHIcAFII9H EB<0HT$h D$HE11DHt$0D$t$0D$FLD$hf(f(fD(DH<Df(fA.rfA.v]f(H f(HcH f.fA(D9\^}WHL$HB(fTf.r6fD.v/H fA(B(fD(fTfDUfDVDfD.Ef(fA.rfD.oHH9AHf(fTf.D$HvHx D9D HfA(^}VHL$HB(fTf.r5fD.v.H fA(B(fD(fTfDUfDV@fD.fD.f(fAWf.ofA.h@^fA(DVHDHt$0LH(|$ B(DD$D$Pf(D$L$Pt$0\|$ DD$D$ OHf(DHt$0DD$LH0B (D$L$XXD$Xt$0DD$D$f(f(fD(f.H B<0u f(f(f(D9H Bsf(f(f(bDfA.f(fW%f.fA.fA(]f(H|$hH1DfDt H?HcH( H\$Hl$HH(  HH$‰f.v\$HHc f.w1H\$Hl$HfDf. $fffff.AWAVAUIATIUSHHH $Z;HD$0HcH,cfA+I( fWHH f.3fWfA. #HA9|}A؉L)HAI D$(f.D$rA+LHA I L$@(L$@f.x0AXI` EHD$EAHD$8HT$0H\$8HB8HJ(HR0D$HH\$8D$$D;d$$}_Ic1H LGH;~ǃ\ H[]ffffff.Hl$Ld$HLl$H\$H(H AHAtVHC(H H{Ht HCH{Ht HCHEtH tHDH\$Hl$Ld$Ll$ H(H\$Hl$Ld$H(HHMt0BqMtA$H\$Hl$Ld$ H(fD1H$HcH$HcD멐Hl$Ld$ILl$Lt$IH\$ؾH(0IHHt#CHu LHu*HH$Hl$Ld$Ll$Lt$ H(f.A$Hu1LtMMA$~;L~tЉщHHEHA9$}A$H}LHcHI$ HHE(t4EE I$ M$ IEM$ 9ATU1SHH u9H[]A\Ht$HD$E11DED~QD¾@H91H 9HHD$8tWADƒH9~H|$HtHD$E?DH1#DDfff.H\$Hl$HLd$H9A}-1H1H$Hl$Ld$Hf~HHtHcDd̐AtH11҅~DHBH;|Hffff.UHS1HH HuH HuH[]Ll$H\$Ld$Hl$AH(HA1AA)ŀt uZH HtkEExEHH1HH\$Hl$Ld$Ll$ H(HIcHHtH(HuH 1ɺHtH oDLl$H\$Ld$Hl$AH(HA1AA)ŀt uZH HtkEExEHH1HH\$Hl$Ld$Ll$ H(HIcHHtH(HuH 1ɺHtH oDu 1D1fHcLd$Ll$L|$H\$IHl$Lt$HHH,H<$IMHD$HEHHD$LHH9ItxH<$AVHH}LILSHHID$H\$Hl$ Ld$(Ll$0Lt$8L|$@HHILLH|$LsfH\$Hl$HHHHtGHHPHHHH\$Hl$HDHHtHDžHDžHl$Ld$ILl$Lt$IL|$H\$H8MLLd$@L|$HHP H;pH@HcMH\t HsLMtCAEMtC$AHtNC MEtC~?MtrLK(HS0AA AAD HJIDOHD9E} f1H\$Hl$Ld$Ll$ Lt$(L|$0H8LK(f.AADH;M~fSHurHcHHc1HHƃH[f.AUATIUHSH8dH%(H$(1H HtHDž 1MlLH/LLH1Ht HZD)HHmHHHH! t€DHAHDHHA8.HHHH HHH 5 HЄY1H1HIncompatHible verH$H$H$DŽ$ sionƄ$$MH1H$(dH3%(H8[]A\A]ÀxsxoxfH|1H1HFile notH$DŽ$ fouH$fDŽ$ndƄ$:1H1HNo versiH$H$Hon dataH$H H H H H H H t^H tTH tJHtEISuccessfIully loaH$L$L$DŽ$ dedF@1HHMissing IfunctionI headerH$H$L$L$ 1fff.AUIATUHSH8dH%(H$(1H tH HtHDž MLH/LLH1Ht HZD)HHPHHHH! t€DHAHDHHA8.HHHH HHH  HЄ 1HHIncompatH$DŽ$ sionH$Hible verƄ$$H$1MHH$(dH3%(H8[]A\A]DHxsxofxfDf1H fDxHDž HDž HDž HDž HDž` HDž HDž HDž HDž HDž HDž0 HDž@ HDž8 HDžH HDžX HDžh HDžp HDžx HDž HDž HDž HDž HDž HDž HDž HDž HDž( HDžP HDž HDž HDž HDž HDž HDž f.1HHFile notH$DŽ$ fouH$fDŽ$ndƄ$D1HIon dataHNo versiH$L$H$BH H H H H H H H H` H H H H H H H H H H H H0 H H@ H H8 H HH H HX H Hh H Hp H Hx H H H H H H H H H H H H H H H H H H( H HP H H H H H H H H H H H H H H H H` H H H H H tH0 fH@ XH8 JHH <HX .Hh  Hp Hx H H H H H H H H H( HP t|H trH thH t^H tTH tJHtEHSuccessfH$DŽ$ dedH$Hully loa1H$11HHMissing HfunctionH headerH$H$H$H$ USHH(HL$ LL$LD$@t9HD$HD$ HcH tFYHD$ tHD$HߋHD$ 0H([]ÐfDH\$Hl$Ld$H(IՉT$ t$;;@H T$ t$xYI$ HcI$ HF0Hc f(LٺL1fWH\$Hl$Ld$ H(fHPHc H t8f(1LfDH|$ Ht$I$ @f. ztfWfDHF0Hc f. zfWff.AWAVIAUATUSHH H Ht$PHt$pD$hH$ A1QIX fWHA~HcHA(LAHL$pCH9.uIp L1fWA@EwD9:HcHT$pM H HIHHHA9}~OM f.A9~!H\$pHIx HXJH9}̍oA9LcH\$pN,LLI B< uII BX(LIIHA9|I B< tAAGfWAHDŽ$D$HfAH$A9B*H\$pHf.D$H$ztIPH$D1LD$XHY$H$H$H\$pHB8XD$XDdHJ(HR0A9ĉ$}hIc1H LA A fT f.vA$H9}H[zKIH9|ڋX A BA t-)9&H f.t^A  Eu3A fT f.vA$H9}\A9}P f.tA f.vIf(@z\A @A$H9BA A9A | A fT f.vfDP f.uZfzV\A f.H`Hh$H*ȸ$f.A f.vIf([HXH߃LXATE1UHSH Htf@tmH{HC(HH t HCH{Ht HCHH t|HAH Hu[]DA\@H{HC(HH t HCH{Ht HCHAH Hu[]DA\Ð[A]DA\@SHh㈵>HH H Hdy=I^ZH|=HH׊>HHz>H H@H H H Hh Hƃ1ǃǃǃǃ ǃǃHǃ"H ǃǃƃǃ%Dǃ Hǃ(  f.f(H@ Hǃ 0 ǃHtH;=ttsHǃƃǃƃƃHƃ[fD f.rVf(fWKff. tFf.ff(fWDz fzf( ffff.AWAVAAUATIUHSHhHT$(|DE1E~TM$fWE1D$ fDHf.D$ ztHT$(IcAAƒ;~HhD[]A\A]A^A_H pH MHD$8?HT$8E1HT$8D$3HBPIc֋LD$4H L$@uH D$3D$49D$@VMHcD$@HT$(HL$P\$@HL$L<IcL4M$HT$`HD$XHT$HD$HL$8LL$LD$HHAHJc8HA HL$D$D HD$PtHD$XHHD$`0H tHcT$DH D$3|$3tfWf.ztfWD$DAIIA$I9\$47L$@)L$4Dl$4,DfWLd$(E1D$ fDHf.D$ AD$ƒ IA9}1DHMWf.z @HD$(A$AHcD$@HT$PHL$X\$@HT$HL$L$HD$`HD$HT$8HL$8LL$LD$HHBHJc HA HL$D4 HD$PtHD$XHHD$`0H IcրtH D$3|$3tfWf.ztfWI9\$4HD$(BT$@)T$4Dl$4H|$(1HcHf.HL$(Affffff.Hx(; tH u,Hs1HHgH9}$1H~H u HHHx0;(tH u41H11HfD1衦HHl$H\$HLd$Ll$Lt$L|$HHDŽ$HDŽ$HDŽ$H8HtHDž8H@HtHDž@H$H&H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H8HtHDž8H@1Ht1HDž@H$HtHDŽ$H$HtHDŽ$H$HtH$H$L$L$L$L$HH$1HH$HH8HlH@HGH`   D$hL$p1H¾!HHD$XuH` Ht$X1fWH$ 11HYT$pf(T$`H$Ht$XE1 1D$pHI$H$1HDEl$hA|$pAfW-fW=l$x|$P@H ALcB<0~'H 9Wulf9HCtkH9ى}T$xL$hH8AB H@B ID9{H` Ht$X1һH$ D$`1HH$Ht$X1 E1D$pHI$H -<u-d$hf(܅f(ܻ5@H <usH fWL,f.vUH$f(fTf.D$pv4<H$f(B(t Y|$pf.CH9qB41H Ht ƒ@8t f(f(f(l$hT$xf.vH$B \L$hf.vH$f(BX HHB$H f(|$pB\f.;H fWBf.zX|$p\f.L$hH$1DHBH Htdt_H fWB<018t%f.D$PvH$L$hB \H$T$xB \H B<0H f(l$pB\f./H fWBf.zX|$p\f.T$x{^1DH\$@d$0l$ t$fTH H$\$@<B (d$0l$ t$tYYfWf.w f.vf(RGf.vf(2fH\$Ld$HLl$L|$IHl$Lt$H8 IIϺH@MA@H8HH@@tHI$EtH@HIEMtHHHtYHIMt IH\$Hl$Ld$Ll$ Lt$(L|$0H8fEt]fDHP 1ɋ $ HtJȅH 1H1rfDHP 1ɋ $ HtJȅ~ H HL$H8L$HtH@1 HL$HHL$H1fE11fDH\$Hl$HLd$Ll$HLt$HH IIM1IMHL$LDHT$MHD$HDMHDHHE1҄HtHt$HtHcHHMtHt$HtHcLHMtHt$HtHcLHMt]H4$HtTHcLHH\$ Hl$(Ld$0Ll$8Lt$@HH@11fE11fDAUATUSHH8@E1E1D$(f)D$9H HHc\D$( fTD$f.v9H HHcf(fT  AEf.DG9mH8D[]A\A]Ëh;HcL$E1D$(f)D$H HB \D$( AEfTD$f.DGI9}H8D[]A\A]@H1Ld$L$fE1*AWAAVAUATUSHH(H t$H $H H $Ht$DEL8 Mt<;t$|6~211I4;D$|DH9LX MtF;t$|@H ~611f.I4;D$| DH H9ދL0 AM;t$A1At$H HcH( HHPHHXHtHH8 Ht HL)4HHtDH0 HtHHtHcHA9Xt$H $E1HDHP HtDoE~T$L$E1D1t$E1H $DHtEHHt9A79}4HcH@HH9B>DH t9DxHh Ht D`E~Dx H([]A\A]A^A_Dx f.H $Ht$DE^H<$$  ?H<$uZ+1H9IH1H<$A;EuH HcH Hct$ fD~YDA@M ;A 1);D$|DHAAHAD9};t$B>HcLL$LHcAL L,H,fDH 2:H( JJ HPJJ HXHtJJ H8 HtB*HHt D2D:H0 HtB"B*HHtB0AHHcHHAHHIIAIIHID9T$*DH<$Af.9H Hc *H( HHHPHHHXHtHHHHt D D*H0 HtHHt8HHcHHH<$DeHLH8 NHt$ HHD$ A~BAE1@H<$Dt H|$ AD,/AHD9}L8 M8-H|$ E1E11Ic ~IcAAAHA9|LX MtJDH 1E1E~31Ic ~HcƃADH AHE9|׉H HtHD$ +F< Bf.HX EDf HP 1u;nL 9RE1H|$ EL0 MtVDE~JEADM3A1);D$|DAH)AH9}ˋl$D)9LcT1H;tfH1Ul$ID)9~sՅA;EuH B u H B t$ Etf둃 HP 1tL ;]A9(LcE1D)NLcЉJN4J<HD$IMH BBH( H:JHPH:JHXHtH:JH8 HtHL$H LATATHHt BDBDH0 HtB"B*HHtTHHHcHыIIIHIIAI9t$L8 Mt\~XE1E11&B9IcAAt$AHA9}(A 9D)99}IcAA t$LX MH E1҅~UE11&B9IcAAH t$AHD9~(A 9D)99}IcAA H t$DH Zfffff.USHH1҄u H[]ÐHX  t7~3HrUHH HDHfHH9uH1ɃH[]ffff.AWAVIAUATUSHL AHPT$THL$HLD$@HD$xxADx11D9gDLc)N$1fW҉D$8GL1T$T$HT$@fIIA9fA.$zt9l$TfDtA9|~I B(tA$1LT$T$u%T$8Ht$x1LD$ T$D$ H|$xHcIIA9]HT$HHT$@D:Eu<fWH|$xD$XHtD$XHĈ[]A\A]A^A_IUPHcƋLDFHH<I9HHOA9tHσHcMcH<AE,9CI$ B0I$ Ht@ LHI$0 HtIDŽ$0 []A\A]A^fUHHSHHHH tH[]@HtHIHHE1H[]DH\$Hl$Ld$HHE؅~;~.1ٺH1H$Hl$Ld$HH HcӋu~ u<1ɺHA1ɺDH t-fDA1ɺAHDfDHtHE1HAHffffff.ATAUSH9} 9}Hu[]A\)tD9|=D fDfDA9}Hu[]A\DHA)[]DA\fffff.ATIUHSDE~Hup@LHLH te[]A\H HcӋuLtx9}ȉٺH1HzHMHHE1[]A\H\$Hl$1Ld$Ll$HLt$H(AIIu'Hl$H$Ld$Ll$Lt$ H( HX tHRH1ɺHH ALLDx& bHIH11fH;~$11Hf.~H u1vH1HLd$Lt$IH\$Hl$ILl$L|$HD HBXHRPHt$8HL$0EHD$hHT$ptD.HDŽ$E~A1H$H$L$L$L$L$HH Ht,H Ѓ|tHT$8fDfDAƄ$ $D$~$$tA A; $ID$Ƅ$~$$$@$D$$AH$1LH|$0tHD$0AD$$AD$LADŽ$HDŽ$aL1AE$*$AAH$D9>$I8 DHt H$,9|~I LcAEBtIcLLL$HH$IHT$hAH$HD$pLL$f.z@$E$D$LH$HcD$L,I B;$@Ƅ$8LD$011DLAD$$$f.T$LH$HL$8҉A A D$@~!~$$@@$D$}A4D$@I?AE1HDŽ$fWAL\$`D$P|$D$XYD$`|$~$tb|$tCI Ht%t 1LfWf.1LD$X$YD$X$|$}t0fW$f.ztfW $f.$f.D$Pv/f(D$PAX f.B$AD$PH$AID9/?B?AADD|$?I Ht%t 1LfWf.LF1LD$XD$EtLD$`$NA HT$pHcHL$hL\|$~tYD$X|$}tfWf.ztfWYD$`$@|$} HcD$EHDDIHcI ºD$XLD$01ɺDLDT$LL$DT$AD$$fE1`IHcI ºfIHcH$IIcH$f(L$ L$ \\ fTfT f.^Gf1LfWD$XIHc݉LHD$p$$HD$hL\$$|$~$\f(fTf(f(f(f(fTfUfVtY\$X|$}tfWf.ztfWY\$`$IHcH$f(؀|$~f(\f(f(fTf(f(f(fTfUfVtYT$X|$}tfWf.ztfWYT$`$$zf.DgEH$HD$8E1H$1ɃLHDŽ$@H$M L$HcAȃAH9L$L}t$LAH<$A!LAH$HtHDŽ$H$U1LfWD$Xt$LH$M L$f.HcAAH;L$L~8f.H\$Hl$Ld$Ll$H(9HII}51ٺH1H\$Hl$Ld$Ll$ H(@~Ht H HcA$Mt;5H HHcAEyfDٺH1fW@H\$Hl$HLd$Ll$H(HLcAՉB1҄t EuH\$Hl$Ld$Ll$ H(H Htd;~<t3H H  BB\f.fDH  fB.v;(H  fB.NfH H  BB\f.H\$Hl$HLd$HHHL%t>uvHHtH;=tMLHƃ}uIHǃH$Hl$Ld$HfDHI1Moƃ}ufDfDdƃfHHNffff.H H@  fTf.r@ 0 fTf.rfW0 Hp fWf(f.zt fW~Of(@HHPf(f.ztf(fW˃H;~˃\ DLd$Ll$AH\$Hl$ALt$H(E= HHI1HHƅƅƅHDž ƅDž1H1H@H1HƅƅƅDžDžHH` ƅb ƅc CD%11HHDž HDžHDž8 H8 HH H( DžDž Dž Dž$ DžL DžH HDžX DžDžDžDD DDHƅ AuHH HDžh HDž HDžHDž(HDž0HDžHHDž8HDž@At$HH H  HHDž HDž HDž HDžƅ ƅ ƅ DžX HP Dž, HDž`HDžhHDžpHDžxDžDžHH HtHꌠ9Y>)Hꌠ9Y>)Fu Hꌠ9Y>)FHHH@ tu Hꌠ9Y>)ƋH0 x.H 11fDHꌠ9Y>)FH4H;~Hꌠ9Y>)FHH HƠ>H HDžP HDžX HDž` HDžh HDžp HDžx Dž HDž  DLH$Hl$Ld$Ll$Lt$ H(E1ۿ:fff.H Ht @ % fTf(fWf.r(fWf.ztf(fW@ f(0 fTf.r f.uzf(fW0 Hp f(f.zzuxDE~Uf(f.HHPf(f.ztf(fW˃H;~˃\ DfWwAWAVAUAATUHSHHhL T$$LD$LL$LD$(uD$(Hh[]A\A]A^A_DHL$PDHEEGIWPIcDtH?D)A9ƉT$(H$fWH HT$HT$H$IcD$,D)HT$0IH1HD$7HD$0fWHTHPf.u8z6l$(HIH;l$tlEA4.tHD$0HTIGHHcIG ;L$$u|EHPH1HBIH;l$H$u*D$,^D$PH$A@;~xH1,LL$8LD$HHL$@H HD$8tHD$HHߋHD$@0H$~H HcHT$EHPH1BfWf.vHD$f(H|$XfT YL$Pf(Y X f.;H$ujL$X,D$,LL$8LD$@HL$HH HD$8PHD$@HߋHD$H05D$XHc|$,HL$`HT$dH,D$,Hl$H\$HLd$Ll$H(9}@H1E1LH\$Hl$Ld$Ll$ H(@~HX HPHt c AA1A)ŀu>L Mt{ExEHL1ktHIcHHtL M@fDHDbH 1ɺHL [ffff.H\$Hl$H(D$Hh L$L$\f.L$v 1uH\$Hl$ H(HL$HD$H1fff.AW1AVIAUATUSHH(T$ Ht$ $AHAAL|$fAIE9|oHLHLH\$ HL$H9uHL11AdžH|$ HtH([]A\A]A^A_Atʃ|$ Ld$ |$ |$ D$1LIh 11HtHcGHH,$Ip ALAYD$1D$I T$ HIx (L$ L11fD$0ffff.AWAVAUATUHSHxH @t$HD$0u$D$$D$$Hx[]A\A]A^A_fHtЋ~D$D$$HD$@H HL$@KHp t$HHfWHT$0D$(HL$@ HBPHT$@fTfU‹ DdfVD9L$ D$8dD$(IcL4E1fTD$XDٺH1AALL$XLD$`HL$hDH HD$XtHD$`f(HHD$h0f(f( \D$(XL$^fTf. Eu ;1ٺH$EHD$H$ٺH1$fW$YT$H fW\T$(YT$8f.wtfWf.ujzhAID9d$ HT$0HL$0HBHJc0HA A;EyH Hc{AD$HD$@9T$4H H$Hc$D$H;H H$Hc$f(D;d$ eD$$|$t|$IHD$@H  /fAWAVIAUATUSHH(Ht$AHAAL|$AAID9|THLHLH\$HL$H9uHL11AdžL|$fAL|$1ff(‰LHA;C,A_I fWL,f(Mp f(fT@pI f(ЋfTfUӃfVuf(‰L$fW$f.z\f(‰LfWOL|$A\ MtLH([]A\A]A^A_ûL|$@UHSHHH HtHDž HHtHDžH HtHDž H H H t 1HH t 1HHXHDžP HtHDžXHPHtHDžPHp HtHDžp Hx HtHDžx H HtHDž H8 HtHDž8 HHtHDžH( HtHDž( H0 HtHDž0 H HtHDž H HtHDž H HtHDž H HtHDž H HtHDž H HtHDž H HtHDž H HtafH{(Ht HC(H{ Ht HC H H[0HtHDž HH uH t?HH* H Hu H HuH HtKH{HC(HH t HCH{Ht HCHH HuH HtHDž HH H H HHtHDžHHtHDžHHtHDžHH` HHHtHDžHHtHDžHHtHDžH HtHDž H(HtHDž(H0HtHDž0HHHtHDžHH8HtHDž8H@HtHDž@H HtHDž DH E~HX HtHDžX HP H@ H Hh t`Hp HtHDžp H HtHDž Hx HtHDžx Hh HH[]DHHtHDžHHtHDžHHH HHDž HHtH;=tHƅH1 H[]fffffff.HSHtH?HtH[fffffff.H\$Hl$HLd$Ll$ILt$L|$1H8I1IEHHtLƀDLHtYHL t }HDELHLHAфtBHHl$H\$Ld$Ll$ Lt$(L|$0H8@H1fH1fDfffff.Hl$DH\$؍ELd$Ll$Lt$H8HAIID$w61҄uFH\$Hl$Ld$ Ll$(Lt$0H8fDD11 DLX ArtnDD9IcAQM@H<AAHcD)H H)HDA8HAHH9uHcAp1ɺHH Hclj,Hc׋Hp D$MDHcNjH LAL HiH 1҃HcHH H'tD$f.z#f(Hp fW M M@A1H1AW1AVIAUATUSHH(T$Ht$D$EE~yHAAL|$ AIE9|OHLHLH\$HL$ H9uHL11Adž/D1AtHT$DD$1D$1LH|$HtH([]A\A]A^A_fffff.AWIAVAUATIUSHH0 H9A$HcH,HHt/y9tA$M$ D3McC<D,0McC<2M$ ~@HcE;H<t>FHH<I9HHOA9tHσHcMcH<AE,9CI$ B0I$ Ht@ LHI$0 HtIDŽ$0 A$HL[]A\A]A^L1A_H\$Hl$H9H}-1ٺH1H\$Hl$HfD~H Hcu1H Hcf.uz։H\ fT f.{H\$Hl$HLd$Ll$AH(B9}3H11҉H\$Hl$Ld$Ll$ H(Å~9H HcՋuDA/H H HcL,HHH EAEċ H ƒ8tTH LHp f. ztfW\ EuHp H J*\ ƃ AA)D1҄ DLX ArDD9JCD IcMCH HH<AAD)H)HDAHA8HH9uE~/AUHcMCH HDHfAHH9up1DH; 1HDH HcL,Hf1҉Zf.AEADH11>fH\$Hl$Ld$H(9H f(f.f(f(fT f.;H LcBu'f.H$$H BnfDfWf.aH f(fT@pf.OfWf(B1ٺH1H\$Hl$Ld$ H(@Hf.ٺH1$Lc$fDH\$Hl$HLd$Ll$H(9HX HPHc HcD$EDDDAE1A)ŀt H HEExEHH1HH\$Hl$Ld$Ll$ H(AuH11fDHIcHHcH(HuVH 1ɺHsH FHH<I9HHOA9tHσHcMcH<AE,9CH B0H Ht@ DHAHEL0 MLtHDž0 $ƅb HX[]A\A]A^A_fDL0 M=ttH=t HftH@H1mH( B0f.7H HcE ff(fW  n(fDf(fWfWHff.USHH89 f(- fWf(\fTf.f.f(f.X f(‰H\$ f),$f(f(,$H f(fT\$ @pfTfWf(fVPH1H81[]ff(f.wV uUf.v/H HcŃ\ H H8[]Ðf(s@f(ÉHd$f),$f(f(,$H fTd$Hpf.v fW\ Nf(f(8fDAW1AVIAUATUSHHHt$Ax|HE1E1L|$@AAID9|THLHLH\$HL$H9uHL11AdžvA\I0 L|$H8AHcH,@HHt/y9tAM D3McC<D$0McC<*M ~CHcE;H<tAFHH<I9fDHHOA9tHσHcMcH<AE$9CI B(I Ht@ LHI0 HtIdž0 A1LLH|$HtH[]A\A]A^A_ÐH\$Hl$HLl$Ld$IH(B9}k1H9SHLLHH\$Hl$Ld$Ll$ H(~9~AHA)D1҄tËHX  t8E~3HrAT$HH HDHHH9u1DH߃/DHcHHc1HHƃHfUf(ЉSHHDExe;]H Hp1HH f(HPHc H[]D1ɺH1H1[]fDEH HtufWf.fWfT f.vSf.zf(f(H1Hp \ H[]1ɺ;@H f(@pfTfWf(fVDf.zfW1f(fD:f(fWDff.AWAVAAUATUSHHhH L Ht@P3ƀtKH Ht?t6Hp DAHx HEH(DHx Hp HcHDE AƽD$f.1 1HH f)D$@SP f.ztHPf.v f(Z\Qf.Dff(SHx fA(fA.7@-f(fD\AUI1ATAUSHHHHt$8HD$(Ht$01H߃Ht$ 1H߃x HL$81fDH9}EH|$ Hx HcHH1Hx H@ DEDfWA@L Hx LD$f(f(HL9tNA 3A9}HXAE)',wHEf(~ f(IcY\HL9'uD#@fWHx D$ f)$\ f($xHt$01fH9}EHcLx H|$ HfWHHHt$8HL$0 %E1HcAHc \fTX^fTf.vAf.vf(щՃHHE1HcA \fTX^ fTf. HcH EBMH`LDHhHD$0HD LH*ºEH|$8HtHD$8H|$0HtHD$0H|$ HtHD$ EtH|$(HtHH[]A\A]EtHcfWH ,Hx Ht$ HcHJf.H|$(H HcHf)$AHt$(H|$0f($Ht$(1ɃHH|$(H HcHHt$(AH|$8H|$ Hx HcH1ҾHfWD$fDf(11Ef(~HPIc Ћt3X t))9f.l$z"u f(fD1t D9f(l$Yf(f(fTƒ f(fTfUfVfLx E1҉E1H|$ fW%fWHx l$P f.T$ztHPIcf.v f(N\Ef.l$z fDH f.z @^fD DHXf(D)HtfW~ f(HcY f(fW~HPHc Ћt7X t-)9fWf.zuf(f(fDu6YfT‡ fTfWfVf(hA9}fWP f.ztHPHcf.v f(@\ffWf.z fDYH f.z @A^fDMAWf(IAVAAUIATUHSHHHL LD$(01IT$8IcIL$(l4IT$0A9HcALLCfWE1HILIB&)L #AIHHM9f(f(CCYBfTf.wf(DD)Àt6Df(HDf.A fDH|$(tHD$(D HH[]A\A]A^A_)f.HXfWDHL$8EHYD$8f.zAEAGu1L$1ۃHcHIT$8IcIL$($DDD IT$0AE9IcAH= lower bound set_lowbo: Column %d out of range set_lowbo: Upper bound must be >= lower bound set_upbo: Column %d out of range set_upbo: Upperbound must be >= lowerbound get_rh_range: row %d out of range get_lowbo: Column %d out of range get_upbo: Column %d out of range get_ptr_sensitivity_rhs: Not a valid basis get_ptr_sensitivity_rhs: Sensitivity unknown get_ptr_dual_solution: Not a valid basisget_dual_solution: Not a valid basisget_sensitivity_rhs: Not a valid basis get_var_dualresult: Index %d out of range is_slackbasis: %d inconsistencies found in slack basis set_var_branch: Column %d out of range get_mat: Column %d out of rangeset_int: Column %d out of range set_rowex: Row %d out of range add_lag_con: Constraint type %d not implemented set_mat: Column %d out of range update_pseudocost: Restarting with updated pseudocosts str_set_obj_fn: Bad string %s add_SOS: Invalid SOS type definition %d add_SOS: SOS3+ members all have to be integer or semi-continuous. set_OF_p1extra: Set dual objective offset to %g at iter %.0f. get_rowex: Row %d out of range get_columnex: Column %d out of range get_ptr_sensitivity_objex: Not a valid basis get_ptr_sensitivity_objex: Sensitivity unknown get_sensitivity_objex: Not a valid basis del_column: Column %d out of range del_constraint: Attempt to delete non-existing constraint %d add_columnex: Data column %d supplied in non-ascending row index order. get_bounds: Column %d out of rangeget_col_name: Column %d out of rangecheck_if_less: Invalid new bound %g should be < %g for %s str_add_lag_con: Bad string '%s' str_set_rh_vec: Bad string %s delete_lp: The stack of B&B levels was not empty (failed at %.0f nodes) read_XLI: No valid XLI package selected or available.add_constraintex: Invalid %d constraint type str_add_constraint: Bad string '%s' is_binary: Column %d out of range set_constr_type: Row %d out of range set_constr_type: Constraint type %d not implemented (row %d) set_rh_range: Row %d out of rangeget_row_name: Row %d out of rangepostprocess: Unable to allocate working memory for duals. set_unbounded: Column %d out of range str_add_column: Bad string '%s' set_col_name: Column %d out of rangeinitialize_solution: The upper bounds are already zero-based at refactorization %d initialize_solution: The upper bounds are not zero-based at refactorization %d initialize_solution: Invalid rebounding; variable %d at refact %d, iter %.0f initialize_solution: Invalid option value '%d' verify_solution: Iter %.0f %s - %d errors; OF %g, Max @row %d %g Objective value %18.12g at iter %10.0f. I:%5.0f - minor - %5d ignored, %5d flips from %s with THETA=%g and OBJ=%g I:%5.0f - MAJOR - %5d leaves to %s, %5d enters from %s with THETA=%g and OBJ=%g performiteration: Variable %d entered basis at iter %.0f at %18.12g performiteration: Variable %d changed to its lower bound at iter %.0f (from %g) performiteration: Variable %d changed to its upper bound at iter %.0f (to %g) performiteration: Feasibility gap at iter %.0f is %18.12g performiteration: Current objective function value at iter %.0f is %18.12g set_row_name: Row %d out of rangeget_constr_class: Row %d out of range set_binary: Column %d out of range The model is %s to have %d column blocks/stages. The model is %s to have %d row blocks/stages. Ignoring partial pricing, since block structures are not defined. Using %d-candidate primal simplex multiple pricing block. Using %s simplex for phase 1 and %s simplex for phase 2. The pricing strategy is set to '%s' for the dual and '%s' for the primal. The primal and dual simplex pricing strategy set to '%s'. preprocess: Converted negative bound for SOS variable %d to zero%s solution %18.12g after %10.0f iter, %9.0f nodes (gap %.1f%%). Optimal solution %18.12g after %10.0f iter. check_solution: Variable %s = %18.12g is below its lower bound %18.12g check_solution: Variable %s = %18.12g is above its upper bound %18.12g check_solution: Constraint %s = %18.12g is above its %s %18.12g check_solution: Constraint %s = %18.12g is below its %s %18.12g Relative numeric accuracy ||*|| = %g Unacceptable accuracy found (worse than required %g) Invalid input data providedNot enough memory availableModel has not been optimizedOPTIMAL solutionSUB-OPTIMAL solutionModel is primal INFEASIBLEModel is primal UNBOUNDEDlp_solve is currently runningNUMERIC FAILURE encounteredDEGENERATE situationUser-requested terminationTermination due to timeoutModel solved by presolveB&B routine failedB&B routine terminatedFeasible B&B solution foundUndefined internal errorFathomed/pruned branchObjectiveUnknownGeneral REALGeneral MIPGeneral INTGeneral BINKnapsack INTKnapsack BINSet packingSet coverGUBErrorLEFRGEEQ%sget_lambda: Not a valid basisset_rh: Row %d out of range get_rh: Row %d out of rangec%dC%dr%dR%dlib.soxli_compatiblexli_namexli_readmodelxli_writemodelset_XLI: %s '%s' bfp_compatiblebfp_namebfp_freebfp_resizebfp_nonzerosbfp_memallocatedbfp_restartbfp_mustrefactorizebfp_preparefactorizationbfp_factorizebfp_finishupdatebfp_ftran_normalbfp_ftran_preparebfp_btran_normalbfp_statusbfp_implicitslackbfp_indexbasebfp_rowoffsetbfp_pivotmaxbfp_initbfp_pivotallocbfp_colcountbfp_canresetbasisbfp_finishfactorizationbfp_updaterefactstatsbfp_prepareupdatebfp_pivotRHSbfp_btran_doublebfp_efficiencybfp_pivotvectorbfp_pivotcountbfp_refactcountbfp_isSetIbfp_findredundantset_BFP: %s '%s' get_mat: Row %d out of rangeset_mat: Row %d out of range set_row: Row %d out of range DevexwmyBLASLOWERUPPERGUB_%dsetestimatedDUALPRIMALSteepest Edge __AntiBodyOf(%d)__Subopt.Optimalequality ofupper boundlower boundBland first indexDantzig?Y@? r@$@@ꌠ9Y>)Fꌠ9Y>)@zRx .4Ld| $<Tl%,D\ t 4L d |     $ < T l   ,D \t  4 L d|   $< Tl,D\t BAA BAA  |, D \ &t        4 L ;d | %      $ A< T l 7 7    "  , ~D \ t  ( * \ I   4 L d |  G   ]I M 2$F<TJQ0t9   I#G94RLd|)HEDJDLDDND gD$D<MDTJDlAAG XDhDlDDJD(aA4LAdcADD -AzJQ0JL hD`D `D$hD4<BBE B(D0A8DP4tBEB B(A0A8GPJL0JL0]AEG  AIGP,}AGG LMAGG $lJJ`%,BBB A(D0D-N 4 BBB E(D0A8DDVD\tDLDLDJL0JML0N ,JL0LJQPlN0N@$JLQ@4BBB E(A0A8FP2D$nJMQ@<N@TAAG tJQ0JK0JMQ0$BAC G0JL =ADF <YG0\YG0|$WQPN $GWQ@A,BBD D(G,D BEA D(GtAFG@JK04BBE B(A0A8G4 BBE B(A0A8Dp4$BBB E(D0A8Dp$\J^pADG jAG JML@DA4}BEE E(D0D8G@L"Dd.D|#4BEB E(A0A8F`oD 1JY03JMLP$<J^@$dJ]@$J]@4GBEE E(A0D8DP#AcU $ </AT}AlJK 4Ld9A|      $EF <MF T@F lHF @F HF zJG AEGPqJQ`4BDE B(A0A8GPLDdsD|BA$J^4zBBB E(D0A8D4BGB E(D0D8I$, WQP$T ERQ@4| @BDH E(A0A8D@ ADD , BBE D(C0$!=BED A(F0,!ACG L!JL l!uH!AK !BDD !A4!QBBE B(D0D8D"YD,"YDD"iD$\"J^$"JMQ@" "GJYP" $"BBA A(G`4$#r BEB B(A0A8G`\#ACG 4|#BBE B(A0A8G$#J[#9A$#BBA I(F0$a,4$ZBEE D(A0d$KEY ,$^BBB D(A0$ALG $1XF $BIC % BDD 4%JX0T%iD$l% Ja%JP0%0JQ0%JL % &JY0,&94D&BBB E(A0D8G|&SJQ0&N04&BDE B(A0A8G`4&BBB B(A0D8D4$'BGE B(A0A8G`\'!ADD |'!D$'JMS@'}E^@'4'BDE B(A0A8G`4,(BEB B(D0A8D@d(N |(JMG0(JK0(^JQ04(UBBB B(A0D8D)AAGP44)?BDE B(A0A8GPl)JMG0)AGG 4)BBE B(A0A8G)=AEG $*MBGD A(Gp,*M4D*BIE E(A0D8D$|*BED D(F@$*ERMG@4*BBB E(A0D8G+JQ0$+BCA 4D+BBE B(A0D8D|+1ADFP$+ VT$+ J^4+] BBB B(A0F8J4$,qBDB B(A0A8JGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.8.rodata.str1.1.rela.rodata.rodata.cst16.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @]&D,D12H@2/,T` OH\ 0jPX|X,w@!$ %%%H8 >  wG! /Q   : ? E K Q W ] d (k 0r @y H P 8 .0@P`p,:DMW `0o@~Pp%  0 @P$`.p@R ` nz   0 @ P ` p    %2>J Wds   0@P`p   /AS  f0 y@` p &08PC`RP b` sp 0   |@   & 0 @ ` p # - 6@@`U ;i`yp% KJ H}03  @ " K1#?!-8G!@P#J #Y 6SfYs2E=`e=h@^L7P -9 u &@9J47C0tTuegvp=`(MP7XPd   b5 7hG ]N \V[  ic `Ym R^z  G e ^L 9a f  8l `4N 0>h 8- P5 p = @MG 3JV Xb  5o  6Jv `  4g `3L 5M ,     ` @  0 0:( P6 > HG 0GP 9[ @#g s 0 0 # u 0# @} 1 H ] N Y a  I} w' / P199 +C l2R `_Z  e r * z i 9(  '] F] Q A Ps po  3 pKM  s#  3 y; BA p[?P Jc  8s  = / p  и     ;z   $0%G1t?vOoM]dk wp"  ~ P! `! p!(!*!\0"I+P$9`$F%V0&d)2y*F`+0,-.  . 0. @.I.#.90/R=`/M/Y/)cp6sP:~ ;c;-@<>BD LJ2@GOeoxP%@Q0X-`X`\\^,@g9?Sf{@lnmPn`opp r-s=7>LV_hvszx %.=HUfr+8AP]o (5AIp\alj}0} *0"7B`.M[fw1p  +G<DT`#`rc|@} )3=IVer0EMй@H`@ p!@q3:KU cgzv@@= (@5OYr gu`  9 @Z^P  (i3p BHT_h(sp)027 : -8FR^co{ TU@aPg=iM0qw 0=FW  c0] nqlp_lib.cpivotText.9920get_SOSmat_getcolumnmat_getrow.LC0.LC41.LC20.LC60.LC59.LC85.LC157.LC165.LC169.LC177.LC178.LC225.LC234.LC175lp_solve_versionput_bb_nodefuncput_bb_branchfuncput_abortfuncput_logfuncput_msgfuncset_timeoutget_timeoutset_verboseget_verboseset_print_solget_print_solset_debugis_debugset_traceis_traceset_anti_degenget_anti_degenis_anti_degenset_presolveget_presolveget_presolveloopsis_presolveset_maxpivotget_maxpivotset_bb_ruleget_bb_ruleis_bb_ruleis_bb_modeset_actionclear_actionis_actionset_bb_depthlimitget_bb_depthlimitset_obj_boundget_obj_boundset_mip_gapget_mip_gapis_infiniteget_infiniteset_epsperturbget_epsperturbset_epspivotget_epspivotset_epsintget_epsintset_epsbget_epsbset_epsdget_epsdset_epselget_epselset_epslevelset_scalingget_scalingis_scalemodeis_scaletypeset_scalelimitget_scalelimitis_integerscalingset_improveget_improveset_lag_traceis_lag_traceget_pivotingget_piv_ruleget_str_piv_ruleis_piv_ruleis_piv_modeset_break_at_firstis_break_at_firstset_bb_floorfirstget_bb_floorfirstset_break_at_valueget_break_at_valueset_negrangeget_negrangeget_max_levelget_total_nodesget_total_iterset_solutionlimitget_solutionlimitget_solutioncountget_Nrowsget_Norig_rowsget_Lrowsget_Ncolumnsget_Norig_columnsget_statusget_statustextis_obj_in_basisset_obj_in_basisvarmap_canunlockvarmap_addvarmap_compactinc_rowsinc_columnsis_add_rowmodeis_splitvarset_simplextypeget_simplextypeset_preferdualset_bounds_tighterget_bounds_tighterset_senseis_maximis_chsignget_str_constr_classget_str_constr_typeset_OF_overridemodifyOF1is_OF_nzset_callbacksadd_columnadd_columnexadd_constraintadd_constraintexadd_lag_conadd_SOScolumn_in_lpcopy_lpdefault_basisdel_columndel_constraintdelete_lpdualize_lpfree_lpget_basisget_basiscrashget_col_nameget_columnexget_constr_typeget_constr_valueget_constraintsget_dual_solutionget_lambdaget_lowboget_lp_indexget_lp_nameget_matget_mat_byindexget_multipriceget_nameindexget_nonzerosget_objectiveget_orig_indexget_origcol_nameget_origrow_nameget_partialpriceget_primal_solutionget_pseudocostsget_ptr_constraintsget_ptr_dual_solutionget_ptr_lambdaget_ptr_primal_solutionget_ptr_sensitivity_objget_ptr_sensitivity_objexget_ptr_sensitivity_rhsget_ptr_variablesget_rhget_rh_rangeget_rowget_rowexget_row_nameget_sensitivity_objget_sensitivity_objexget_sensitivity_rhsget_upboget_var_branchget_var_dualresultget_var_primalresultget_var_priorityget_variablesget_working_objectivehas_BFPhas_XLIis_binaryis_constr_typeis_feasibleis_unboundedis_intis_nativeBFPis_nativeXLIis_negativeis_semicontis_SOS_varmake_lpprint_constraintsprint_debugdumpprint_dualsprint_lpprint_objectiveprint_scalesprint_solutionprint_strprint_tableauread_LPread_MPSread_XLIread_basisreset_basisread_paramsreset_paramsresize_lpset_add_rowmodeset_basisset_basiscrashset_BFPset_binaryset_boundsset_col_nameset_constr_typeset_unboundedset_infiniteset_intset_lowboset_lp_nameset_matset_maximset_minimset_multipriceset_objset_obj_fnset_obj_fnexset_outputfileset_outputstreamset_partialpriceset_pivotingset_pseudocostsset_rhset_rh_rangeset_rh_vecset_rowset_rowexset_row_nameset_semicontset_upboset_var_branchset_var_weightsset_XLIsolvestr_add_columnstr_add_constraintstr_add_lag_constr_set_obj_fnstr_set_rh_vectime_elapsedunscalewrite_lpwrite_LPwrite_mpswrite_freempswrite_MPSwrite_freeMPSwrite_XLIwrite_basiswrite_paramsuserabortreportexplainset_basisvarobtain_columnget_basiscolumnget_OF_activegetMDOinvertget_basisOFis_use_namesset_use_namesMIP_countSOS_countGUB_countcompute_violationfeasibilityOffsetisPrimalSimplexisPhase1isP1extrafeasiblePhase1isDegenerateBasisisBasisVarFeasibleis_BasisReadyverify_basisvalidate_boundscompare_basisget_pseudobranchcostcompute_thetacheck_degeneracyget_refactfrequencyis_fixedvarget_accuracyset_break_numeric_accuracyget_break_numeric_accuracytransfer_solution_varrefactRecentfindNonBasicSlackfindBasisPosreplaceBasisVarpost_MIPOBJbb_bettervarmap_validatefree_dualsfreefree_pseudoclassunset_OF_p1extramat_validateimpose_boundsmemcpyperturb_boundsrand_uniformscaled_valueset_rh_lowerset_rh_uppercompute_dualslacksmempool_obtainVectorget_colIndexAbsolveprod_xAmempool_releaseVectorallocREALallocINTcompute_feasibilitygapconstruct_sensitivity_dualsunscaled_valuefsolveget_pseudorangeis_sc_violatedunscaled_matget_rh_lowerget_rh_upperconstruct_dualspresolve_rebuildUndoscaled_floorfloorpartial_countBlockspartial_freeBlockspartial_createBlocksmulti_freefind_sos_bbvarSOS_is_satisfiedSOS_is_markedSOS_is_fullscaled_ceilceilrestore_basismemsetpop_basissingleton_columnpush_basiscallocallocMYBOOLis_slackbasisunload_BBpop_BB__sprintf_chkallocCHARfind_varfind_rowrename_varstrlenstrcpycopy_hash_tablefree_hash_tableputhashstrcmpinit_rowcol_namescreate_hash_tabledlclose__strcpy_chkstrrchr__strcat_chkdlopendlsym__stack_chk_failbfp_freebfp_namebfp_compatiblebfp_resizebfp_nonzerosbfp_memallocatedbfp_restartbfp_mustrefactorizebfp_preparefactorizationbfp_factorizebfp_finishupdatebfp_ftran_normalbfp_ftran_preparebfp_btran_normalbfp_statusbfp_implicitslackbfp_indexbasebfp_rowoffsetbfp_pivotmaxbfp_initbfp_pivotallocbfp_colcountbfp_canresetbasisbfp_finishfactorizationbfp_updaterefactstatsbfp_prepareupdatebfp_pivotRHSbfp_btran_doublebfp_efficiencybfp_pivotvectorbfp_pivotcountbfp_refactcountbfp_isSetIbfp_findredundantmat_get_datamat_findelmswapINTconstruct_solutionfmodsortByREALset_var_priorityadd_GUBcreate_SOSrecappend_SOSgroupcreate_SOSgroupunscale_columnsvarmap_clearpresolve_setOrigdel_varnameexfirstInactiveLinkdrophashnextActiveLinknextInactiveLinkset_columnexmat_setcolset_columnmat_transposescaled_matroundToPrecisionmat_setrowinc_lag_spaceinc_matrow_spaceinc_matcol_spacemat_createmat_appendrowinc_rowcol_spaceinc_presolve_spaceresizePricerinc_col_spacereallocinc_row_spaceallocLREALshift_rowcoldatamemmovefirstActiveLinkvarmap_lockpresolve_fillUndomemopt_lpmat_memoptmat_nonzerostimeNowyieldformessagesmat_setvalueREPORT_debugdumpREPORT_scalesREPORT_dualsREPORT_constraintsREPORT_solutionREPORT_objectiveREPORT_tableauREPORT_lpundoscaleMPS_readBASMPS_writeBASLP_writehandleLP_writefileMPS_writehandleMPS_writefileread_freempsexMPS_readexread_mpsexread_freempsMPS_readhandleread_mpsread_freeMPSMPS_readfilestdoutfclosefflushget_pseudonodecostmodfupdate_pseudocoststrtodisPrimalFeasiblelin_solvefind_sc_bbvarexpisDualFeasiblemat_collengthSOS_is_memberrow_decimalspowtransfer_solutionfindBasicFixedvarfree_pseudocostshift_basisshift_rowdatamat_shiftcolsmat_shiftrowsappend_rowsset_OF_p1extraunload_basisconstruct_sensitivity_objbin_countshift_coldataSOS_shift_colisActiveLinkappend_columnsrow_plusdeltacompareREALqsortexMIP_stepOFpre_MIPOBJinit_pseudocostmallocvarmap_deletedel_splitvarsdel_columnexdel_constraintexmat_appendcolget_columnfind_int_bbvarisINTrcfbound_BBcompareINThpsortexget_boundssolution_is_intfopeninit_BLASis_nativeBLASmempool_createpresolve_createUndoinitPricerload_BLASrow_intstatsgcdcheck_if_lessidentify_GUBmat_freepresolve_freeUndomempool_freefreePricerfree_SOSgroupfreecuts_BBunload_BLASputsmat_multrowmat_multcolpostprocessREPORT_extendedinitialize_solutionidamaxrecompute_solutionroundVectorverify_solutionsortByINTexpand_columnperformiterationmat_multaddftranmulti_enteringthetaupdatePricerswapREALget_constr_classprepare_GUBpreprocesspartial_findBlockslogcheck_solution d r   8 U f {       5 N a x)  0 8  %d ;o y 7         ! -$ A0 G: JA ;S D\            ( 0 8 0@ K V @a gl 9w  i       N P R L H J \ F' 2 = H S t^ i t l 7 D   u k  v s r B    $ / _: 3E 4P [ *f q |             Y  U ! , 7 B qM pX wc xn &y n m       (     1  e) 4 ,? J U E` k Zv ^     y c b 5 V W   .  & 1 < G R ] h s ~  "  ! # $         # /. 9 D ?O fZ 8e p {   d h   + M O Q K S G  I  [+ 6 A ]L W b m x 6  C  j  A   z      2( )3 > I T _ j u  X T    o % -    '   % 0 ; F Q \ g r }         ! " # $ %  & '" (- <8 =C >{WX M. !!B"t***+D++ 0 @0!%0 Xo0~0000000-1B11112T2d222 p2!E3 O3!q3 {3!3 3!o4 {4!4 @4!/5 h;5!|55 5!16 ;6!6 7!7 #7!7 `7!8  8![8 g8!889 9!q9 }9!9 89 9 h9!:: Na:L}:L:L:L:L:L ;L6;LL;Lf;L;L;O<Q<Q9=QS= Q]=!=Q= =!>Q> %>!o>Q> >!F@W@S_@@@S@@AS ADAPASXAAT4BpBTBTBBTCC C!CCzD 0D!DT"E~E E!E pE!FF oF!FG0GTGGGH +H!LH~HHITzITI  J @J!8JJTJKVK h`K!K K!KLTL L!MXMYMMZMM[ N\INNL'OLMO\uO]O^O\QLxQLQLQ]QLQLRL!RLYR]~R]R]RSSa;T]TbT UUUVa#WaWXL;XXaXYaYa)ZXZe%[[L[\\ \!\\\]l]] ]!$^s^ ^!^ @^!_KI_]g_X|_Y__Z__[_\!``WaaTaa\)b]bib hc c!c`3dhvdd d!,eQe ]e!eQe fQ(fQJfQqf  }f!f Hf!gZgkgT#hlVhQzi^i^iQ3jmkn$lolqmr(ms6mmrmsmunTnQnwoLoLoLovkpwp{p|%q^qQbr|rLr xr!Hs Us!s|tt t ttau ku uuavlvvvvvvv-wDwSw}wLxy{,y{Cy]yyyyz 'zuz }zzz zz&{ 5{!{ {{{8| =|I| U|h| m||0}q}}}}} }B~ J~W~l~ t~~~ !> F            & 1 < G R ] h s ~       ˀ ր      + Ɂ Ձ ( 3 @) Q5A ]MY qeq }   łт ݂    %1 =I Ua #my , ; H Z̓ك r  ! -9 EQ ]i u   ӆ>ne3we %! e(HXa27a4aee)O ,aď*ak)kؑkHْcee`ewÖO19mBeؙ9L`^^m'] LLĜ !qٝ ]ǞI*whנߠ#ԡ/  !I]]^u5 @?!TKե]]4]N]h]]|¦|]gШ+]u|]] ^5^^|٫c]2L^f^;TrRxޱ.Ls?]v 1Ol+ B:!\ xuȷ^AѺ#Q]a{ӼaL`~ !]3I Z!L `!araLmSDCxc&LaqTW ; iWgLL k.?kfwkkkkBZk  ! ! ( !P !Qf~k& 0!H V!LLL}4Q p !)]pLLLvLLL ~ 8N!dnYOele w-  !  !]  g!LL.]HLfLLLLLLLw]]]]%X<YS\lZ[\Z[!/Xe$ e7c  ( !?x`FQhQQQ X !8Qaa)Eca !+ "!: I!T)KHH^pEL u ! ! l ! eC]L  !l  e ]  !  :  4 ON C  !$ $9$#a $'  !7%Hw%%5Ln%'  4!%%^p%.j !!)  !  !^s !. , -!"'"i"#2#M#U#SZ##a#%$LV$$-$%.%<%D%L%T%x%%%a%a &M&&&&&b'^' .'/'L ((( @ (!(a6)aS) @b)!),***A+ I+2+++,H,k,,{-P-Z-d-i-3n-4--5-6../'//^/07061 ;18q1112|22O2 4eq4 4!44e&5eI5d555e6:K6 h ]6!6 6 6[77T77  8!N8]88  8!8L99N999 @9!:t:O:a::D;[; j;!;;e;;< @%<!C< W<!v<@=a{=a>]^>t>  >!>T ?[?T~?T??L?L @L'@LK@=h@|@@L@L@L@LAL$AL@AL\ALxALALALALALBL BLD?D@!DL=DLYDLuDLDLDLDLDLELELEEL\EAhEApEBELELELE=E4%FLAFLXFdFFLFFFF4FCGfGGGG h GDH`HH  H!DIIIIOOSPhP uP!PPFP H P!=QT[QQQQQ5R  BR!kRR R!aS kS SS  S!TzTUUFVX(XLXhX`XX  X!Y@YTYlYHYYY'ZTkZ zZ!Z [T[][[ @\!M]j]L]]L] h]!!^]^^^{_{&_@__ x___ B_!C`O`i``T` o``$aaQb@bcScJc 8c!%d @d!tddeSeSe e!f f!f^gIg?hLi^i^i];jQHjIj5kMkLkyl Ml l!lLlLlLmLmmQmQmNm^mQnN@nQOn([nAoYopqDr&Lrswoss>tttuuwv$x%x?y]|yyQzR&z8zSTzL\zzTzO| U| | 0|!| (|!} %}!I}}~~~ ~ ~ ~!  ! ! *O j!܀{{*Sa `r!s.f G}„ U;UT !܅Oe  !a$,a "!: I!aڈk$Pa\d @‰!ʉ։ p!  !Jg "!nTΌT ^ύLLM]_zώ M؎ 8S z!@aƑTaP]  o! $: p!Ó ғ! "!8Bs̔/ATf| ӕ Y^oLL] ͗^ٗO Ęeaqyݙ#Tݚ B! +!3KLt˛ xڛ! o!#YĜ Μ ۜ!Y  !0\Zdz !   ۝! X ! #!+!Ǟ&Foʟ ?fd s!]^ӡLL/<;WY]uĢ HjoF^* 9!z @!o^8 ~= B Q!s^Z Z   5Hi  y! ٦!6 >C i!ާ9 T!aЩa h Ԫ! X!, h D!a s!ӫ!a@=RaqC} !߮ !*Nׯ       ! 9!T e  z! !ڲII > ³ ɳ  @!A Y!t   ! (ش!*a޵9!D:!&QWYXaR\a\a\aU]a]a^a5^aj^a^ahQuvۢ !1AQaqɸѸ )FLJ@ >x A B D F H0 IP pKp L P @Q 0X `X XH \` `\x \ ] @^ ^ ^ b Pd0 eP ep f @g g i l @l@ mX Pnx `o p p r  s  s@ 0t` u u v w w x yH @}x    p (  `     0   P 0h `   p    0@ ph    ` ( @ X @p       0 @  P8 `P ph   и      ( 0@ X йp  `   p @ P h P     0  X    @! 0! P! p! ! ! @! 0! " `0" H"  `" " " " " # (# `# `# #  #  #   $ 8$ @h$ $ $ P$ $ 0% 8% X% p% p% (% p)% *% +& ,0& P1H& 2&  6& 7&  8&  :(' =`' ?' G' 0G'  H' J' J0( Kh( @M( N( Q( R(  T) Y8) p[p) ]) `_) @a) Pg* i0* oH* 0q* t* v* w+ (+ H+ + + @+  + 0(, lp_wlp.o/ 1462526203 1000 1000 100644 13216 ` ELF>h@@ H1fff.H\$Ld$ILl$HIH$HL$PHL$XH\$ IIH)H$H)x)p)h)`)X)P)H)@dH%(H$(1H$$D$0HD$H$0HD$HLAH$(dH3%(u H$L$L$HȹIЄHE1ffffff.AWILAVAUATUSHH$HT$8dH%(H$1H|$@DD$4HLL$(HD$ MD$LE1E11D$@HD$(H|$@D4(DHT$ jPH|$P2D$P-|$Q1|$RH|$8L1B H|$@DH|$8H1LD$D$4~D;d$4|D9l$H1AHD9l$L#H$dH3%(D$LHĘ[]A\A]A^A_fDH|$8L1E11뚃+u#|$Q1fDu|$Ru#@H|$8HL$PL1B fDH|$8L$$AAWAVAUATUSHDDH|$PH Ht$HHT$@ H|$PHt 8Ht$@H|$HA1H|$P Ht$@H|$H1HD$PH$HǃHD$PH$HǃH$L$1HL$@HT$HAdH|$PH$H|$P1fWf.{ u Ht$@H|$H1AExHt$@H|$HA1AfHt$@H|$H1H|$PHD$P X fTf.HljHD$P \ fTf.@HljHt$@H|$H]HA9HD$P HH<(H|$PHt 8HT$PfWH  (f.zt f.H$L$AdHL$@HT$HH|$PH$u-E~(H|$PHt$@H|$HH1HT$PfWH f.(dH׉Ht$@H|$H1=-Inf %s +Inf %s %+.12g %s 0 %s = >= <= -Inf; +Inf; %.12g; Variable bounds%s = %.12g; -Inf%.12g <= %s <= +Inf%s >= -Inf; %s >= +Inf; %s >= %.12g; %s <= %.12g; Integer definitions,%sSemi-continuous variablesSOS definitionsSOS SOS,%s%s%s%s:%.12g <= %d; <= %d:%d; int %ssec %swLP_writefile: Could not validate the data matrix. ?zRx 4JOT!4l)BHB B(A0A8G4BBB B(A0A8G#DJL GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst16.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @[x"&,12@283Op ]oj2 y%h      "(.4 :HXi0!y`) $0:?FP#_p}lp_wlp.cwrite_lpdatawrite_data.LC24.LC30.LC18.LC23__fprintf_chk__vsnprintf_chk__stack_chk_failwrite_lpcommentwrite_lprowget_rowexis_splitvar__sprintf_chkget_col_namewrite_lpexmat_validateget_lp_nameis_maximallocREALallocINTget_rhget_row_nameis_chsignget_upbois_intis_semicontSOS_countfreereportget_lowboLP_writehandleset_outputstreamLP_writefilefopenfclose X ,3 = B  *M s   + C f   # ( 6Ru ! J M   a1 D!Q au! ! "l # = $ r$   Y   ## f #w ^| d    7 M J    %    %1 C ,[ J 0   &    &9 K ,e Jv ' J   Z _ Y[ m cr ~ e   c  j; @  ~(( u@fx  )   ,## ^ m < ^##' @ e v* * $+ I Bh m r        % + 0 e j   ,  .  /D W 8  X 0p `   lp_matrix.o/ 1462526204 1000 1000 100644 55616 ` ELF>@@ HW8Hc+DÐHcW HG8@AWAVAUATE1UHSO HG8@t$LLw(Lo0Lx11D$@A9Hc€|$ALL KDK<HD$E1&fAAIIID9BxHD$MpBXfTf.wD9t HM HcB CAKDIDD9t HM HcB CAKDIDAIID9~HyAD$A7D$9E |I@[]DA\A]A^A_fAWE1AVAUIATUSHT$D\$HX HD$HG8EHT$HLg E1HD$FHL$D$AHHHL$HHD$119D9t$HcH<I4<L A1BE9~!AHHDžH t$HHZUSHH$ $t[t^HSPHcŋ|9}EHcLCHH HTHIcHHHC0H9YuH[]HSP11fDH\$Hl$Ld$Ll$H(HIMu9HU8HcˋDA$H\$Hl$Ld$AELl$ H(DtDuA$1HUPfDHUPHcˋDA$H\$Hl$HH1Ʉt~&HSPHcŋ +LH\$Hl$HHCPH\$HHl$Ld$Ll$Lt$L|$H8H@80fD"sCHcS 9OK CsD~Hs 9OHC8KDqIcEHPHI4IF8IN(TT$D$1\$9\$IV0}rHcD$EH HHL$ HD$uy1H|$D$H\$+D$H<HD$ 0HsHcIHD$L0HH9uۋD$+D$H|$tHT$H([]A\A]A^A_D1H|$Dl$DHD$ HT$I>(HcÉM$HjI$tA$fWA$HD$A\(HD9l$bD1AfWAD$H\$1Ƀ+D$H4fDHD$ HcHKHH9IuD$+D$H([]A\A]A^A_E1fHT$ I>4HT$HcI,HZHEtEfWEAHD9d$DH\$Ld$Ll$Hl$ILt$L|$HHAt6 IMPHcË\1EDHcITF)H fDH9tHA9D9}H9uA9|$ 'IAT$ ID$8 LpMl$(D)A1E1҉D$fDA.9~uHc‰LL K| DHA9 ;D$|4A9t&IT$ IcBIT$0CDADJ HAII9EAE9|$ \IgH\$Hl$Ld$Ll$H8G DgHAD9}DH\$Hl$ Ld$(Ll$0H8*ƃD$L$fT*L$^ f.YL$dH;Hs8,L$cOkDmkDEAtcD9c DNC PA9~;HcH{8H H4HTH@7HHH9uƃfH{8@C L$D*^f(!DSGHHH{Hs1ɺHC@ C[fAWAVAUATUSHHA.HcS HC8D4ESH;Ht$1HD$HD$SH;Ht$1HCPAVD(A9rDHcLd$HkHL[0DLT$LK HcȉLH4H<H)H JcDIIAI4HA:HH9uEAxwDIcLd$D)H HkHAL[0LT$LK HH<H4DH)LfDHcD HIAI~/HcƒH H)H)<HH9uSHcH{PD4Hs8Hs`H{hHs H{HsH{ƃHD[]A\A]A^A_HSIH\$Hl$H(WH;W}H\$Hl$ H(*ƍBD$L$fT*L$^ f.vHYL$dH;HsP,L$cOSSƃaCL$D*^f(ATUSHH O HG8HcD$5*AD,D$T$fT*^f($ $f.YL${,L$9LŅB D9''C''~fGI9}{H;Hs SH;Hs(SH;Hs0SH;HsHH []A\f(f('fDG9MhH\$Ld$HHl$H(Af(Ћo OpfTf.vyfWD$H1҄tEHcHC(HHK8D$HcD$HcHC ,HS0HcƃH\$Hl$Ld$ H(Ðf(D$ffffff.Hl$Ld$HLt$L|$AH\$Ll$HxHt$,AT$(L$f(H9 AĀf(MpfTf.fWD$ E T$(9}EH}D)T$(t$,HL$|$H} D$ DDD$ fDfWL$ H}Dt$L$ f. ztfWL$ |$H}D$ DDD$ Ht$8)1HE @Ll$H\$AHl$Ld$H8@HX H@@HhE~pf.ztdHt^HU@D"E@~ND;~}Ic1HDHL$DE1HHcT$HE(D, 1H\$Hl$ Ld$(Ll$0H8DHX H@HHhW@1DDHf1fAWAVAUIATUSHHhHEt$THT$HD$@DD$?HD$Xt H|$HHۋt$TIcM IU8AE+9H|$HHD$XL HЉ HIcE T$TH|$HIM8D|E1@D9t$T]M9D@HT$HIcL$H,¸f)D$ oDA$A;]9Rf(AtYD$@IE(IcIM AAE IE0AHID9t$TUAMpf(fTD$ f.wHT$HIcf)D$ HfDAMpf(fTD$ f.vf.LcD$`HM8Aދu JBL$LD$HHcH4LH<LD$HE8HU(BH4HcHH4HcHHE@D$E~1HT$E11HHL$E1E11DL$HL9uH|$HtHD$H|$HLHU8LiD ; t2HT$E11ɉHHL$E1E11҉L$A9}pDHE@Ht$1HD AT$E~GHL$HA9}H}@AH $E1DHL$fAWIAVAUATUSHHHHt$(HT$ HL$HDŽ$HD$0HA@HHcQ HA8,H|$0SH$1H$HFH؃9G1҅tDLH9w9AA)DDEt{QiHL$~L$$Ql$lfn$T$HD1fbfnT$fnD$lfb~fo flfoƒffH9rDE9tHcHfDH9}HD$E1AHx@H4$AW H$IO8AƇHc‹?|$LD$|ZD$DD$H\$LEH1E1HL$PD$@HYf.D$DL$D9L$LH\$HcHC@D$HHl$PD$@DuAW ;T$@\$9t&IW HcHcIW(IW0HH9$|D$Hl$pD$EAA$FfD$H|$ DH$Hl$Iw(I0HcHM8HcHH$HU(D`IcL,Lm0D9$H,DuEHcúH)HHHH)H)Ht$XH|$`)fDAID9$2HDuEtuH|$(DtHL$XH|$0DD1fWAEf.z tfWHD$`Hl$XHHD$`nfDHT$0HLPfWAEf.z tfWHD$pAH$tHL$HcHA@D$EIcW IG8,\$|)HAEf-ADGHT$0HL$pHPHtIcW IG8H$,Hl$D$DHE@fDXD$DHۉ\$H~AEt$8LAG Io8HcЉ$H HH$)RHE@lIG8HcH$,W HO8ƇHc‹D$|{ffffff.H\$Hl$HLd$H(AD$x6HD$HHC0XH\$Hl$Ld$ H(DD$1ɉDH1AWf(IAVIAUATUSLH8HL Ht$ HL$D$D$.uVD$p=ASAI` $1HDLHHD$ $1H|$D$/AAHl$ DmEIAI fHXAIE9ASf(Hc9D AY ~)IL$8I|$(HcHHD IL$0A9}IcLHS_p]gszf0* !="#DP$I$e '((/9EYbu,P--P@.00{2V4 5 6 0=J 8qXem<3<=9@{@B7B}EEh`G(0H5CN\g0Mz0N@N0T,`[ @fI qsQ|y |p( 8@IPYT[ls@ tlp_matrix.c.LC0.LC1.LC5.LC13.LC15.LC18.LC19.LC20.LC21.LC22mat_collengthmat_nonzerosmat_rowcompactmat_colcompactmat_nz_unusedmat_get_datamat_set_rowmapmat_findcolumncountsUndoLadderftranbtranvec_compressvec_expandget_colIndexApartial_blockStartpartial_blockEndprod_xA2mempool_releaseVectormempool_obtainVectorget_basisOFprod_xAis_piv_modememsetbsolve_xA2bsolveobtain_columnfsolvemat_computemaxallocREALreportmat_findinsmat_findelmmat_getitemmat_freefreefreeUndoLadderbimprovememcpymat_validateallocINTinvertuserabortallocMYBOOLget_refactfrequencyis_OF_nzrecompute_solutionrestartPricermat_multrowmat_indexrangemat_rowlengthmat_memoptmat_expandcolumnis_chsignmat_equalRowsget_mat_byindexmat_multaddget_OF_activemat_multcolget_Lrowsmat_checkcountsget_col_nameget_row_namemat_shiftcolsisActiveLinkmemmovedecrementUndoLadderrestoreUndoLaddermat_shiftrowsinc_matcol_spacepowincrementUndoLaddermat_transposeswapPTRswapINTinc_matrow_spaceinc_mat_spacemat_appendvalueroundToPrecisionmat_setvalueinc_col_spaceset_actionshift_coldatascaled_matappendUndoPresolvemat_setitemmat_appendcolsortREALByINTmat_appendrowis_maximmat_setrowmat_setcolmat_mergematcompareINThpsortexmat_mapreplacemat_additemprod_AxroundVectorfimprovemat_zerocompactmodifyUndoLaddermat_createcalloccreateUndoLaddermallocmat_extractmataddUndoPresolveT  / #$$> #   s !&'"&"('+" ~  B&**)&M(++E++ 0(.e.(1c1++   02 2c pr 2 ! !2! "4&#7B#7^#7z#7#7#7#7#7$7"$77$7f$6x$7$1$:% +%)% K&7a& s&2& b'+z'<(7);:)>)?+>+@ + 5+7+A&,A_,@d, 8v,2,B,C,;-;.;.<.</<6/<O/<l/</1/1/<01w0+1I11I12I22;3K3K3 4M%5 5O7Q&7 272t7R7 7277777<8<,9Th: #;;U<U7<U<Sj=SH><>T?76? !A AAFAZNAA<)B.BZRBYfBSB;B1B<C]D]D7-D7D]D]D^D^DYIE iEnEZvEE<EEZ&F @FNFZVFF<F<F1G<0G5GZG G`HbH HdH3I wIIcIYIeI I`.Jf`K^uKbKUKUKUHLIZL LgLLIL LMg MSlM McM3Nc7O sObO 'PbsPOPOPj Qk:@@ fWff.f.1ffff.HOWHu9HtHHDt9Pu@f.f.AVIAUATUSHHoAHD$A]f.IFPHcHIFPH\Y$XD$D$AID9|mDHtHXDB($fWf.$tIFXHcHu4HIVXsfWD$fD$H[]A\A]A^D D$Hl$Ll$HLt$L|$IH\$Ld$HXD$H_IID$G0H HHG8HD$ DH 29  u<B~H H P1H9lǃ1Uǃ11H@H~H ~H@t& tHx HtH H@DED$HADD$EuHH9P ~?t6HA6AH߅LDA?DR H1H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXHHfD 9u1H1uHHcօ~}t?E}f+H$$u+UH a HfD$ ~Ht$HA~AEHE&E  EE䋃X A)H Ic1)94s6fDHHHfH}Ht$1HA1AEE&@HL$Ht$HHAA~y|$AEE&fDHNH|$a 1fE?Y HkH Ht 8Qu*DEH8 D4 EHf(HDȸ\fTX ^H*hfTH* YH1~4  4 ǃ ǃ Hx HHP ƃa \ H H19 9  fD HvHfDH߉H GACp|$EE$10 HQH7HfDH~ǃofDHl$Ld$Ll$H\$HHH_IHcMH <u$HGX$HGPf(\f. w 1H\$(Hl$0Ld$8Ll$@HHDHx P 0H 4@H f. zt fW f.wf(Xh \^f.i@ f(\f(Mf( \fWf.A$MfWfTƒ fTfVAMH *uLf(ܺXf(Wf( \fTf.FdH$$X H $$넉H\$X H \$ff.SHH HtHǃ [fUSHHHH?HH/HtRxuLHHtHH;HLJHt HHtH+H[]HGPHtHH;HGPHGXHtHH;HGXwH1[]ffffff.H\$Hl$HLd$H(Ho,~ HsPH HsXH a tF t1H\$Hl$Ld$ H(a uƅa fHus(~SC(AD+{zC({K,t#uH fWHcf.BID$PHCPID$XHCXDkxHkL#HHl$H\$Ld$Ll$ H(DHpP1HHsX1HH{PIt$PHcHH{XIt$XHcHefHpP1HHsX1HH{PH HcHH{XH HcHffff.AWIAVAUA ATIUSH(HFPHD$HFXHD$ a tH(D[]A\A]A^A_fHt$HA,~LI$\ E1D$1HD$DE"A$`HD2H+Ht {xfDt1H{PHtDHCPH{XHt HCXHHtHǃHHI9HUXHuPLH|$AƇI$ uI$ I$D$AAƄ$` HD$1LD@AA$ AƄ$` A$ LHAtEDp1LA$ E$EuI$ !LUA$I$fTX\^f. A$ fWf.&f.pA@RAfDjAfDAfDLKAA$fHI9ufDHH+Ht{xft1H{PHtDHCPH{XHt HCXHHtHǃHH I9u1HT$ Ht$L1@DL1@LA~fD LA$ [AEA_AtAHDȺL1q@Eu|$fDGLHLAHŹHLHUXHuPLAH|$AƇA$A$AƄ$` #LDIL1fA$AHDȺL1jDI$ I$H LaL1AADŽ$fLKA$ 8  H   & ,2( 8DP ^0,j`qpy8:'3Oix U` ' `  %0?L]0;m~p -=BUjs s )&2Bp'I]gw`*}-&0Elp_mipbb.c.LC5.LC6.LC7.LC0.LC12.LC14.LC13.LC16presolve_BBinitcuts_BBupdatecuts_BBfindself_BBpre_BBpost_BBprobe_BBis_infiniteis_intfindnode_BBMIP_countbb_bettertransfer_solutionconstruct_dualsreportprint_objectiveprint_solutionupdate_pseudocostfind_sc_bbvarSOS_countis_presolveconstruct_sensitivity_dualsconstruct_sensitivity_objfind_sos_bbvarfind_int_bbvarget_bb_ruleinit_pseudocostis_bb_modercfbound_BBunscaled_valuescaled_floorscaled_ceilfreecuts_BBfreefree_BBnextbranch_BBrestoreUndoLadderuserabortSOS_unmarkSOS_set_markedSOS_fix_listSOS_fix_unmarkedfillbranches_BBcountsUndoLadderincrementUndoLadderSOS_is_member_of_typeceilfloorget_col_nameinitbranches_BBpush_basismodifyUndoLadderSOS_is_memberSOS_can_activateSOS_get_candidatesget_var_branchget_pseudorangemodfget_pseudonodecostget_pseudobranchcostis_maximmat_getitemcreate_BBcallocallocREALmemcpysolve_LPimpose_boundsrestore_basisset_actionspx_runis_anti_degenconstruct_solutionperturb_boundsget_statustextset_var_prioritysolve_BBSOS_is_feasiblepop_BBdecrementUndoLadderpop_basisfree_pseudocostpush_BBallocINTrun_BBcreateUndoLadderfreeUndoLadderstrongbranch_BBsolution_is_int*l9 !s   "\#i$ "0%Ns&' ()**9 XF"[+,E       "" 9 -C .   / /  / Y   1   2, 1A  F 3q 5 5 5 51 5 8 8 9:;:(;e<=;9 18 ez?@?@K7 B 2A 2w 3B1 %3?A1C1C131 $2@DL X"F9 _1pCB  2G >-H]IIJKKYLqM//N"/Q/iOOP QLSTTUU3TJTjUUWXy5555WY; Zs [ \ P  ! !%!E!![)"5?"5X"5k"5"W" H"""["[3# 6:# CC# JL# X[#"#R#]#W#Y $^$ %$"E$ *J$ S$ b$"$[$ $"$%\ % F% V% h% }%"%Y%% m% f% %"%& H2&"7& wF&"d&_&G&V2'GS'a'8'c'8(88(cM(8(:((d)5<)5])5w)5)5)5)e)d*:*R*@*@I+^+0+E+D,b,G,-GT- a-"-g-b.%.i4.C.i[.f.G.V..7 /b2/GS/al/jx/j/f/9Q0Fl0f0G0V1/1l1%171b1 1"1d1Y2G12aA27 8 P  h 0 ` p    ( ` @  ` `  0 p   ( &H p'p `* - 0lp_MPS.o/ 1462526206 1000 1000 100644 43912 ` ELF>g@@ufDfD< t< t1E1fDBDAu@HcH4> uAHHDHH< u:uD< fDt< LJtAfDILfD1Ҁ? HufDH8 t)9Nff.u 1$D< HtfHu)9Nf< uf.AWAAVAUATUHSHL5dH%(H$1@HT$uAH|$H|$I1MHHHDDH*HEELL$1D@A9|9At$9|4H Hcƀ<u$AD$HHfDHu9}A9|=HcHH :u;~H <tHH9}99_9NHHH$A׺dHL9HHH$AH|$HƺdH HcӹLL$LM<HEʺ199|nHHH$A׺dHLH HcӹLM<HE10H)H뎉H)H)HHLH|$t LH$dH3%(u:H[]A\A]A^A_HHLE'11fDH\$Hl$Ld$H(HD$ IuD۾HA $HE:HD: tzT$ H\$Hl$Ld$ H(D$ ~ uD$ |$ ufy1҄LHD$ ~ЄtfDfDHT$ I|$1t eT$ 19t9|=ff.HHHHHHfffff.HHHHH@SIHH1H[fff.AWAVAUATUSHx$fWdH%(HD$h1 $H|$f.]f. $ L|$f. Io@$AعNH HH|$ HD$hdH3%(Hx[]A\A]A^A_f. L|$AMwA$EL$ENL IwmfDELHtPHh-LmLH tU+t0gffDf. f(@fL|$AMwf0DtkA$EL$ENL ELHtPHh-Lm+uLH UfDf. fhff.  $ L|$f.  Io$AعNH HhPVI_f(NH߸ Hg|$4HYD$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$tD$0D$<.t<9D$WD$0D$<.t<9D$:D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$1D$ L@HhPpI_f(NH߸ H|$4HD$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$}D$0D$<.t<9D$`D$0D$<.t<9D$CD$0D$<.t<9D$&D$0D$<.t<9D$ D$0D$<.t<9D$D$0D$1D$-LD$ FfH\$Ld$ILl$HIH$HL$PHL$XH\$ IIH)H$H)x)p)h)`)X)P)H)@dH%(H$(1H$$D$0HD$H$0HD$HLAH$(dH3%(u H$L$L$HAWAVAUATUSH(D/H|$HT$Ht$IcH1@ Hu H: t)9O)VHH8H@u19D~)ffD< fDf< fDf|$<HD$XfAFA~RA~DHt$0H|$(HD$0T$HDL$@T$@H|$XDL$@AE(< LDHD)D9DNE H|$HcLHHD$D$@ILD1)9 HuDH8 t)9OHcH4)P HD@HY)HT$H|$<{|$D$LHD$hL$_Ht$0A1LHDŽ$DŽ$fDŽ$Ƅ$TAHt$01L9AHt$01LAHt$01LL~LHt$0L1A Ht$01LA$ ~Ht$0L1LHt$0LHE1sHt$01L_LH$HT$hHt$0H1L1KHt$01LA11rLHt$0L1f.LH$HHT$hHt$0H1LA9|wt:I fWf.(tnHt$0L1ZHt$0L1DLDLH$HT$hH&@H$KLH$HT$hL$HhD$@E1DL9D$@MP IEH$J *@$IEH$J HpT$hIUHt$0L$IL1J"JIEJ P ~{fH@0H$XWIELJ H@(4HH$HT$hHt$0L$H1LnIEJ 9h }D$@I1Ht$0L1E1H$!dH3%(DH![]A\A]A^A_É$Ht$8 EHt$8H1DŽ$$E1b$TH1HD$pE1H8PHE1@Ht$8H1DŽ$lDŽ$DEI"1E1M $p$9Ht׋$H$H$f($f.f(f(%f(fTfUfVH$f.u z $f($H)$L$$L$LHEED1MIغHN1 {C$# $ $LH1H1Ƅ$eD$L$$L$LHAGA=ED$L$MHٺHH$1HƉ$g U{P. {IDu {fEHٺH1$$ H DAMu {A Ht5AM{I|{Nk{fD[HDŽ$$L$$L$LHAlAbED&fDH$L$$$H$MHAVT$|$$A0 $H$Hx\;Hc$H$H$H$Hc$H$Ht$Ƅ$A |$|0EDH1$[fD$H$ HH1$ f.Lt$ \$  Ll$ \$ DH$HH$HH$DŽ$)H$H1DŽ$H1DŽ$$H$H$xi$f)D$@f(fTD$@f. fWf.wqHcfWH f.$ztHA9$H$H$f)D$@f(fTD$@f. fWf.  HcfWH f.$zHHt$8ASu$aOXHt$8% E$aO$aS1$a$H$aH1DŽ$$H$H|"u$$HAH$Hu)$t$fW$$HNfD11H@={X{D HDŽ$$H$Ƅ$E1DŽ$S{C { fWf.$uzH H$$$H$HAA$AAD$[At |$[$DpЃ1 $Ƅ$G$NHH$D@ 1DLG@R{fDfWHLHCfDH\$0AHIE1H$ D$ED$EHP Hc$H$H@H|H${(fW*H$ H|$[t $,H$E1E1DHH$$@$fW$V$aS$a@H@$H HcfTD$@|1LHƄ$H$L~HE1{$H9~@H$A LML5{Ou {f]{IfDp{fD`$H $HDŽ$sf(H$EH*MDH1$E1MH$H$L$H$L$1HT$T$\HƄ$H$;H$HƄ$Ɖ$fDH1DŽ$Ht$0 Ht$( UH1Ƅ$@E{fW@H$AH$H$E$6 H$H$H;;~H$H1Hc$H$H$H$Hc$H$H$Ƅ$LcfWJ H f. $t$f.s-$f. uAz?$fTD$@IHH H$J"tfWf.$w8H$DEٺHHfWH $f.zt fWBPuT{LO{D@ H$HM@{IfD{fD H fW.sH@$H HcfTD$@H$L$H$T$\L$1HƄ$H\$H$HHƄ$$uEHٺEHٺLcfWJ H f. $t$f.s-$f. uAz?$fTD$@HH H$JtfWf.$w8H$DEٺH{HfWH $f.zt fWB9Ht$8u4H1A$ MDH$H1, $H{ID{fDfWf.$uzH H$$$H$HEHٺHt$( H1Ƅ$H$AL1LHt$H$A$L$T$\H$L$HD$H$HH$H$A LDŽ$^Jf(H$EHL$DH1FuY{RDu {f{XfD({fD$Hf(uBDug{Vf{fDHD3LH1$aHU@aLhfAȉѺH\$Hl$1Ld$Ll$ALt$H(IHAHHt LEDHH߉H$Hl$Ld$Ll$Lt$ H(MPS_writeBAS: unrecognized MPS name type. NAME %s Rows %d Cols %d Iters %.0f MPS_readBAS: unrecognized MPS line type. MPS_writefile: unrecognized MPS name type. * MARK%04d 'MARKER' 'INTORG' MARK%04d 'MARKER' 'INTEND' MPS_readfile: invalid data card; column 4 must be blank MPS_readfile: invalid data card; columns 13-14 must be blank MPS_readfile: invalid data card; columns 23-24 must be blank MPS_readfile: invalid number in columns 25-36 MPS_readfile: invalid data card; columns 37-39 must be blank MPS_readfile: invalid data card; columns 48-49 must be blank MPS_readfile: invalid number in columns 50-61 MPS_readfile: Unrecognized MPS line type. Switching to OBJSENSE section Error, extra line under NAME line Error, extra line under OBJSENSE line Unknown OBJSENSE direction '%s' on line %d Error, extra line under OBJNAME line Further messages of this kind will be suppressed Unknown relation code '%s' on line %d Variable name (%s) is already used! Switching to non-integer section Unknown marker (ignored) at line %d: %s Invalid row %s encountered in the MPS file Wrong number of items (%d) in COLUMNS section (line %d) Wrong number of items (%d) in RHS section line %d BOUND type %s on line %d is not supportedWrong number of items (%d) in RANGES section line %dWarning, Range for row %s >= infinity (value %g) on line %d, ignoredCannot figure out row type, row = %d, is_chsign = %d, upbo = %g on line %dInvalid number of items (%d) in SOS section line %d Error: Invalid SOS type %s line %d Error: Objective function specified by OBJNAME card not found wXUXL %2s %s %s ULLL %2s %s ENDATA C%dR%d%d%-8.8s%*.*E%*.0f%12.10f%12.9f%s'MARKER'rComment on line %d: %sLine %6d: %sNAMEENDATAFinished reading BAS file Unrecognized BAS line %d: %s Syntax error on line %d: %s * * * * * * MINMAX* * NAME %s OBJSENSE MAX ROWS N G L E %s COLUMNS %s %s %s %s %s RHS RHS %s %sRANGES RGS %s %sBOUNDS FX BND %s %s BV BND %s FR BND %s LO BND %s %s MI BND %s SI BND %s %s SC BND %s %s UP BND %s %s SOS S%1d SOS %s %s SOS %s %s NAME %sOBJSENSEOBJNAMESwitching to OBJNAME section ROWSSwitching to ROWS section COLUMNSSwitching to COLUMNS section BOUNDSSwitching to BOUNDS section RANGESSwitching to RANGES section SETSSwitching to %s section Finished reading MPS file Unrecognized MPS line %d: %s MAXIMIZEMINIMIZERow %5d: %s %s Unconstrained row %s ignored Column %4d: %s %s %g %s %g 'INTORG'Switching to integer section 'INTEND'RHS line: %s %s %g %s %g BOUNDS line: %s %s %s %g RANGES line: %s %s %g %s %gSOS line: %s %s %g %s %gSOS_%dError: Cannot handle line %d Switching to RHS section mB-C6? _BvH7-C6e"1EG^Z9?zRx 4%LF4djBHB B(A0D8G%JK0"GG$A4^BBB B(A0A8D<JO4\BBB B(A0A8D`$J`@4- BBE B(A0A8M4/BBE B(A0A8G4,BEE B(A0A8GdDN |JQ0UN 4XBEE E(G0A8D4BBB B(A0A8J$<|JLL0GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.8.rodata.str1.1.rela.rodata.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @VX{H-&\V,\V12`V@2w]_TbHO\ cPipc |cXwx f% g g0l  wH %"#0P^7    B H N T Z ` (f 0l 8r Hx @~  %F0j $@3U &-4;LZagm{ pP- #18F/R3Xao@2D/2=8HT^hqz ,U;U|lp_MPS.cMPS_getnameidxMPS_inputwrite_lpdatanumberwrite_data.LC18.LC15.LC21.LC16.LC22.LC23.LC25.LC26.LC63.LC62.LC69.LC136namecpyspaceslenfieldMPS_writeBASMPSnameFIXEDstdoutMPSnameFREEfopenget_total_iterget_lp_name__fprintf_chkget_row_name__strcpy_chkget_col_namefwritefclosereport__stack_chk_failget_nameindexsscanffgetsfputs__sprintf_chkstrncpystrchrstrcpy__vsnprintf_chkappendmpsitemswapINTswapREALaddmpscolumnadd_columnexset_col_nameset_intset_boundsscan_lineFREEstrlen__ctype_toupper_loc__strncpy_chkstrtod__ctype_b_locMPS_readBASscan_lineFIXEDdefault_basisMPS_writefileexSOS_countis_maximis_chsignallocREALallocINTis_splitvaris_intget_columnexfreeunscaled_valueis_binaryis_unboundedis_semicontstrncmpMPS_writehandleset_outputstreamMPS_writefileMPS_readexset_lp_namedelete_lpget_lowboget_upbofind_varset_minimfind_rowset_constr_typeset_rhmake_lpset_maximset_upboset_semicontstr_add_constraintset_row_nameappend_SOSrecadd_SOSstrcmpset_lowboset_binaryset_unboundedMPS_readhandleMPS_readfile4 "M#t $ %&' 0()*)*  9 B I(x)*   (++ +% $*,?- ./ , 00R0} 4123( 7;4 D45,W >n467< >S4k67 D3 4f Jx 4# R5 4 / 9 { 8 /:;=>?4<D@B55!75NCD Y&1 \C77EEp77FDUFEDF+ET/ H A e%I42VF ~. Y1 QB7 g.- `.Q _ s. ./  $' k    K K ) 9! N!L!! a&! e+! iC! U!'q! ! !M! !) " H" f" " "N"O"  #P/#QI#Qs#R###)$ j$+$ $$$)$ % R%Sp%S% %T&M:&`&)& & 0' R'Tx')'  '+( >N(P(U(V(+( P ))*) L)K) *+4* f* * $*  +T%+Q++u+ b+T+W+Q, ,+9, ,T,,), )-QN- {-)- -)- -M .0.TP.+o. (. .L. " /Bh/P/X/P/L/ 0+;0 M0+i0 x0  0 "0  0  0 1+-1 91 C1.U1W1  1  1  82/\2Zw2 2 2%2 2J2-3 X3Bf3 7343B4 4. 5 755?5 YT515 }6 H66656F77EM7 a7 Xk7/}757F7E7 8 H9F9 ~:.: Y):13: Y: Cp: c: E:.; g.;.; ';.<S1<SC<  X<1c<]< H<.< A< <.= = 2= D= %S=.= =.=^= = =.Q>Qd>_|>`>>>>@-? ??.S? xw? :?.? L?.? ?..@ @@._@ @ @.@a@ xA.0A (YA 1AbA A.B @HB kmB.Bc C9?C NC.C*C HC.CDN DOND k]D.rD (D.DcD!EdBEcTEEdE E LF [F.FcFeFcFGe%GfYGgxG=HhHiHKH  H4H jIjIkFIaIlI*Jm5JvJMJkJnJ^#KhIK*KoK?K K.L L.kL<LaL L.L/L \L M M.gM>M?MMM@McN N.NN9NdOM3O (EO.YOd}OOhOo%P.PoIPMP<PaP (Q QdQMQ (Q.QdR5R CR XR.mR }R  R R.Rh"Sh>S?NS bS tS xS.SnSaT<-T*BT p[T mT.T T.T@'Up9U PHU.`UqU U eU%U U\U-2J-3JU\C AhCh? (B(A0p@8@@? 8 P h 0      P@  `   p P 0 h @2 2 @3 3 8( U@ Ulp_params.o/ 1462526206 1000 1000 100644 25176 ` ELF>+@@1ffD1ffDH\$Ld$HILH\$Ld$Hfffff.H\$Ld$HHADHLd$H\$Hfff.AUIATUHSHH}D-HHHSHI|-9tۃ1*1҉LHA9f.I8IuH|$Ht$XDHl$X]t'HHËEH]uD$$E1D$<DH|$(Ht$`1ɺAfuH|$XHfDtHD$XH|$0LH|$(D$$H$hdH3%(8Hx[]A\A]A^A_fDft$_>0?@ ?@EAx>>+>> > 7( >1 1{ :  C D C* M Dg X @ ; > E& E0 < @ A 'I @y % ' P F7 Ga  % K hG{ (A F (3 F5 Z  1 H P F$ .F[I F  #!6!n## ] l( 8 H X h x     4 ? R h u( 8 H h x       . = M _ n( 8 H X h x      ' 9 J _ r ( 8 H X h x    0 ; I U ` p  ( 8 H X h x    & : N ` o |( 8 H X h x    ' > U e y   ( 8 H X h     ! ) 2 9 C J( S JK 8 @LHMXp "xNO *PQ 3RS < T(U8`P EX"`p@ N$@ \VW gXY0 o8Z@[Ph {p\x] ^_ `a b c0 H PdXe fg 0  ( 0h8i` hjpk lm no pq@ HrPsx tu vw -xy  3(z0{X =`|h}x G~ O U  8 P  h 0 @     X @ lp_presolve.o/ 1462526209 1000 1000 100644 131256 ` ELF>pH@@ AW@AVAUIATUSHX @t$HC@1HtHHHcCIH|1HOLy@A;HcЃLA(LH4La8H)HI0HfWLD$HL$HT$DE4G G4f(f(E9HT$Icf(LHT$H 1Ҁ|$AAD)L E@DC D9~GD)QHHDYH\fHQHL9t'AuX QQHY\fDf(fTfA. vIc IHL;\$[]A\A]A^A_f.AAD)L DDCD9~GD)QHHDYH\ȐHQHL9cAuX Q@QHY\fDHCH1HtHHHcCI H,ffff.tTHBHHRPHc f(f(fTf.s f(fTf.sXf(fDHB8HR@fffff.HHcHHHP ff.HPfWHcf. @HG@HcHG8 f.HG@HcHG8HcF9G|Ѕu F9G}@ډffff.F9G|,-F9G|u9|Љúffff.DNH7DGHPIc Ic¸f.wp1f.ucH BDHcHc f.w41f.u'H  f.w 1f.ÐSH΍Cw8HɸHHHDIAHDȺ1[fDAWHcAVE1AUATUSH(L H|$HT$HL$L$IG8DdA9ĉD$$H|$IcE1H,L,IG(H|$(t.H $HcËt HL$IcAIW0HL$J*HAHID9d$$H(D[]A\A]A^A_ÐIcE1HfIG(H|$,tH$HcŃ<AAHD9d$$@Sf(؉H $Y Y $t2f(fW\f.z8u6f.tf(f(H[Df(fW\f.f.S1HuvH{txfD"fDH{f~|HHcH@HHtك:uԾDB1Exq9~+[@H{u1[f.Hx@T[tHHcH@H12돸UHS1HHH8t)@HEHcHPHH H8uۉH[]fAWIAVE1AUIATUHSH~}H\E1A@I9~QLtH fWB f.v̉ٺHAI9~MuD9~]LtH H Hf.vÉ1HA9fDHD[]A\A]A^A_ÉٺH1A;}ɉH H Hf.vAE1fW@AHD;H f.vDH $A $ffffff.AWIAVAUATUSHLwHHt$I AHD$H@8Hcхɋh~AAAIGDHPH8J*u;HkAIE9}˸@H[]A\A]A^A_fH DE~KH{9 IALXHD$LP(HcIcIË0Hx9~RfEL11H|$cHL$L1H1[]A\A]A^A_Ð9|@HHx99}AE9Hx9ID$EL1bDL1ADL$ffff.AWIAVAUATUSHcH(LwHHT$HL$LD$LM HD$HD$HD$HHD$ IH@HDE@fWA$f.HcID$HHcID$ ,ID$0f.$fWf.HD$L $f.+IHT$ H@H9| B(IyH([]A\A]A^A_@fWA$@HcID$HHcID$ ,ID$0f.$vKHD$L $f.wnIHT$ H@H9sB(IybfHT$fDHT$fWf.f.LfWf.zHD$mLfWf.HD$AWAVAUATUSHcH(HGHHH|$Ht$HD$H HBH$H<HT$LuHD$'L} L_LlLb@IcIcAHH9uH[]A\A]A^A_HcIcML$H<DH D)MD$ It$(HDH@A AHH>HH9u놐LX @ff.AWAVAUATUSHhHGHGPH|$0H Ht$(HT$ HL$D$@HD$8L AD$\D$XMcIT$PI|$HLMD$0HHF, HD$HciHcA,1)A9HcH)ID$PHL$F<D9A@HcH*H It$H)HTHfDHcHHID$0H9^uDD$\)|$\HD$8J, $HHp ^XD$@D$HHT$8DH|$8Hp BD$P $tT$P\T$HfTf.T$@<HD$8HH fTf. D$XHT$0DHz A_Dd$\E~L$\H|$81T$\T$XHL$(\$\HL$ \$XHL$Hh[]A\A]A^A_f.HsHcH MD$0I|$HHc11҃HAfTH,A9HcHffDf(^H*4H|$81DT$X1T$\1ffff.Hl$Ld$H\$HH_HHP HP AHtuH$Hl$Ld$HËG;GtA9ΐH\$Ll$LLt$L|$AHl$Ld$HLgHGPt$,IMD$HLt"AMT$HfTf.H #A$ fWf(fWf.L$ AMf.^AMA$ Af.^ĄADL"DLf.D$ #T$ fA.UADLL$PT$Pf.AAMf(\D$Hf.@H$H$L$L$L$L$HĸfDfWAMA$ Af.fWALL@fWAD$ AEfDAUDLT$`f.D$`uADLD$hL$hf.DLf(AfDDLL$DLD$0T$HL$Y\L$0T$8fTX^D$8fTf.ADLf)$D$pDLD$@L$pf($\L$@fTX^fTT$8f.aAAUD$xf(f(\D$Hf.@rhfDDLAEf(AL$xfDDLAEuf.AUDDt$,L$DLH$HL$xIf(ºL8DLf.D$ AEDLD$Xf.D$XwrAf.T$ L$ Af(Dt$,DLf(DLAf(D$xAUDLAExfH\$Hl$HLl$Ld$HhLgHD$ GPAL$LD$(LD$8f(D$T$ XD$(f.v!1H\$HHl$PLd$XLl$`HhfDHL$8LD$0E1DHL$0tL$ D$8\L$0\D$_f(^D$(f.vL $DLH $HIظf(L1>ffff.AWIAVAAUATUSH8LgHT$ LI$ IOD$ HcT$ HD$(HAHHH\$0H8pfDD$AfH\$(HcHC(D9tW|$1LT$ 1LD$L$^D$ D1L^L$ IOD$HAHT$0H9(|B4(IqH8[]A\A]A^A_Ð1L^D$ 1LIOfAWHcAVAUATUSH8HGHHL$HL$H|$ HD$(L HGHD$H@H<ȋHT$ M|$(D$7HoHDL2HD$fDHcEE,IFIcLA;48~HcMT$HML$ IcDFIcA;}E19|KHcMT$H)I ML$ HTIf.1HcIcA9t AIcA4HH9uEEu|$7tIVHD,H;l$t H5HL$HT$HAHfWf.L$`uBIUHcHHB IEH@ HD$xNfDfWL$`f.tIUHcHHBIEH@HD$x @T$\HD$PfWD$f.HcD$\L$L4II9l$~IG(B IEH8tՃD$\HT$PHcD$\H|$(,IG0B0D$ fWL$ f.z jfWf.L$ nIuHcIMHHFHЃHD$xHAHV(HD$xHA(,@LD$7|$7eHcD$\L$L4II9l$IG(B IEH8tуD$\HT$PHcD$\H|$(,IG0B0D$pfWL$pf.z fWf.L$pIUHcHHB IEH@ HD$xFfW_L$L$1fWD$ f.IuHcIMHHF HЃHD$xHA ffWL$pf.ZIUHcHHBIEH@HD$xHcD$\L$L4II9l$ IG(B IEH8tуD$\HT$PHcD$\H|$(,IG0B0D$htWfWL$hf.z t>fWf.L$htBIUHcHHBIEH@HD$xNfDfWD$hf.uIUHcHHB IEH@ HD$x fff.AWAVAUATUSHHGHH|$PHt$HHT$@LD$8HcHD$hL HDŽ$HDŽ$HHD$XtHT$PHH8Ot HBPuH[]A\A]A^A_D$|Ht$PHcHHAHHtZD0A~QHc\$|H|$hLc`HH\$XڄDՉIEHJcIE DsCHD$PD$|HH9z|$|H|$X1t$|H|$X1ɺ1HL$hH|$hH$1ɃHt$h1ҋH$DHD;d$|}#HD$XA܋(yH$AH$D$x fWDŽ$DŽ$DŽ$fHcD$xHT$XHHtHT$P1)HcىL$pnHHH$H$H@HHtHcHcH IEHH|$hHcIE $v4$$1HL$PAL$4$1%L9f(f(A$f(IGH f91A$\HD$PfT@Pf.EHT$P Hz6IG(HHG($HA;4$Ic Hl$hHHPHf.ztfWf.vIG (HHG (@9f(Hl$P\]PfTf.IUHHHcIE0f.ztbIE Hl$h HPHc f(fTf.f.u?z=f(^f(A$H$A$HA IGH Hg^HT$hHL$Pf(Hp HQHQPY Hp f.\vfTf.vHHX H@(Xf.|$xHt$XD$tHH$HHHHl$`BJ1)IGHc$zH$H$HH$HHHtHcHcH 9$H$p| IEHHcIE $; @H$t$x4$D$x4$)$$H|$XH$H$HtHDŽ$$t(LAƅH|$PHT$PBpHL$@HD$H$HT$81(D5f9$#$H|$h4$1Ht$PH$1Ɉ$L$4$L>A$f(f(IWf(H,*H$H$D$4fD9\$4 A$\Hl$PEPfTf.H$H1Ht;T$4RL$I$Ht$PMEHMU  H~1IGLȃ(HcHHG($HA;$Ic IcA4HIE0Hf.ztfWf.vIG Lȃ(HcHHG (DH$.f(Ht$P\NPfTf.MEHHMu0IcA f.zMU A4H$L EA91Ʌ~k~gHcIcA9tx~?fD19}6@~.HcIcA9t?9A9|Hc9A<|@IWHHcAHD$HHELIXHD$(HHL$HHLD$ L$ ALf(fWLIET$Ht$@fWB>f.z.fW!I]t$8AH;HAEpLH|$Hff.AWAVAUATUSH(LgHH|$LD$"gE1HD$ I$P HT$ H@HH@(ɉL$IAA_~ A;$~ٺL1AHT$HBH8I$P ډD9tٺL1AI$P HcHHHO(4 9}*HW Hc9,t8FHH fH9t!9ٺL1AAID9l$HD$ 9l$A$AHD$I$P HL$HG(,HD<HL$D9}xHcHDHA9~RI$P HG D4uI$P DLAH@ D1HA9A$AA9UEu2H([]A\A]A^A_@ٺLABDL1E1f.H\$Hl$HHtH\$Hl$HHoHH uHtD@AWHcIHAVAUATUSH(LoHHD$HGGPM H@D$H'D$D$H([]A\A]A^A_D@xD$AHD$ fHcIF(LIF0D$AIHAHHQPHcA  H<f(f(fTf.sf(fTf.sXEtfWf.zfDtfWL$HIp fT  f(fTfUfVf(YD$\f(f(\f.v|fWf(f.L$\fWf.zXD$IF0fW1f.D9t"EHQ HHHA*D$IGHT$AH@HD9 /HT$ HHT$ NfHA8HQ@lL$IF0\f( NHQ HHHA(`f.L$IF0\f( ffffff.AWAVIAUIATUSHHLgHGPI$ LD$HD$ 1҄5HcHHT$(IUHRHDE @D$ AHD$0fDHL$ HcT$ HA(,HA0AfTf.YD$LHcD$IUA$ HB8HJ@ f(f(fTf.sf(fTf.sXHBH\$@HJPf(f(fTf.s f(fTf.sX@L$8tJfWf.ztfWfWf.z tfW Ht$8H|$@L$8\$@AI$p L$f(X XD$@f.Lf(fTfA.$ s0I$p Af(XL$8\\D$f.[IEH@0<~kIEHT$(AH@HD98}1HH[]A\A]A^A_fDHL$0HHL$0D$ Ȑ _f(fWAf.v9D$@d$8f(\D$Xf.rI$p D$Xf.wWfWf.?D$L$@XD$8Xf.I$p \\D$f.T$ H?T$ I6@f.r:T$ IT$ f.v߹LzĹwLfAWIAVAUAATUSHHHoHt$tHH[]A\A]A^A_f.EtIMc HPPH@HB f(L$ fTf.s&BD$ fTf.s XL$ L$ DHD$(\ f.D$ I HP@H@8B f(L$8fTf.s&BD$8fTf.s XL$8L$8DHD$@X L$8f.E1DHDHHIL$(HD$ MH1D;l$t$H1HH1DHDHHIL$@HD$8MH1HH8AfI HP@H@8B f(L$0fTf.s&BD$0fTf.s XL$0L$0DHD$X L$0f.0IDH8Aŀ;E2IMc HPPH@HB f(L$fTf.s&BD$fTf.s XL$L$DHD$\ f.D$DHDHHIL$HD$MH1D;l$~t$H1HH1T@DHDHHIL$HD$0MH1{ff.H\$Hl$Ld$Ll$ILt$H8HIMD$I$X \$HcH HR(Xf.HE8%A$ HU@f(f(fTf.s f(fTf.sXXHEHHUPAMA$ f(f(fTf.s f(fTf.sXXH\$Hl$Ld$ Ll$(ALt$0H8I$X \$HcH HR(XffWffffff.H\$Hl$؉Ld$Lt$IL|$Ll$HGPLoHALD$XILD$8LD$@AD$HLD$PHf(mI4$Ic%A HFHHVP f(f(fTf.sf(fTf.sXD$@fTf.sf(fTf.E11HF8HV@ f(f(fTf.sf(fTf.sXD$HfTf.sf(fTf.DH$HD$8D$PA0t H$H\$hHl$pLd$xL$L$L$HĘ@f.-f(L$@Y\D$XXD$P\^f.D$P\D$Xf.A1Df.-D$PfTf. D$PL$HY\f(\D$X\^f.nD$XXf.D$PL$@Y\f(\D$X\^f.@D$XXf.A1 D8f(fTf.Gf(L$HY\D$PXD$X\^f.D$P\D$Xf.DDL$4$f(f(Ll$f)d$ 4$YI4$D$PE1A l$f(d$ 4$f(1LDf(Uf(1Ll$f)d$ f(I4$A E1f(d$ l$ff(L4$藉DD$P4$@AWIAVIAUATUSHXH T$ HD$( fTfA. HL$(HcD$ HQ8 Dd1D9L$$~GIcE1H,HT$(HB((IH8u.AHAtD9d$$AHX[]A\A]A^A_LLD$@HL$OT$ LD$8E1ɉLH $HL$@D$8D l$OA ft$ Lf)L$f(L$fTfA. HX[]A\A]A^A_ÐAWAVAUATUHSHhLHHHD$`A H8M ^D$@u#fDHUH:hLuHULcA HB8HJ@B f(L$HfTf.s&BD$HfTf.s XL$HL$HHBHHJPB f(L$PfTf.s&BD$PfTf.s XL$PL$PLLD$0HUD$8HBJH8Lt,L$8f.L$PrA LfDLT$Hf.T$0sAHt$`1HEH8u9HEH8t$HLtH|$`DHD$`D$$DXEAHt$X1HD$XH|$XH|$`AHD$XDPED$$L$@fWL$IcIT$8HD$HLl$H,HD$IHcHIT$8B9,*~jID$(H|$X4HuH|$`DA~HD$XDHErH|$XH|$`D$$Hh[]A\A]A^A_tDLD$$DLD$(fWL$(f.rsfWDL$@LID$8HT$,HT$;,KHcHID$(H|$X4HID$8B9,(fWf.s DLfWDD$LqD$$fAWAVAUATUS1HxLwHH|$(HT$t$$L$LHD$hHD$`t$$LD$0Hcl$$HT$(D$8M HHD$@HH@HHtHt$`LHt$hڹLHT$(HH@HSE1E1E9lMcJ,fHD$hL(3()Ӊu|$tLtLLD$XJ<H|$`HD$PHt$hIHHD$PAHIHE9}#1)9uyIHD$X@HT$H|$(L$PD$XH|$(H|$`HtHD$`H|$hHtHx[]A\A]A^A_@E1AHcID$HHcID$ ID$0ЋD$$tfWf.ztfWt$$H|$(D$HL$8HD$wD$0LL$HLD$PHL$XD$XH$L$PD$wt!HD$hIcAHT$XHD$`HD$wtHD$hIcHT$PAHD$`HHT$(HHT$@H@H9(B8Iff.AWAVAUATUSH8HGHH<$HD$HT$D$D$HD$0"fHL$D$HD$0\$9H $t$HH8tH$t$H[HHH\$ L H$H\$0HHH\$(H\$0HAHX0XE1E1D$fHAH\$0D94uHA D9<#L$H|$1D$/@xE1E1D$AfHcID$HfWHcID$ ,ID$0f.t`fWf.ucAH|$ fWf.wWH$HT$(HHAH9B(Iyzf.DtAffDH|$ D$fWɃf.BD$D$fL$H8[]A\A]A^A_E1E1D$AHcID$HfWHcID$ ,ID$0f.vPAH|$ fWf.wFH$HT$(HHAH9B(IyfDA@fDH|$ D$fWɃf.BD$D$fHA(T$9f.AWAVAUIATAUSHH_HT$L qHGHc1H@HЋ8H9~H[]A\A]A^A_DFxHcIG(D$IEH@IcHHt8t HDHDHD$T$HL$LD$E1DLD$IUHcD$HJL4HDED@9HcIG(4D9tIEHcH@HHt8t(J19(HyfT$L$D$LtNIUHJf.I}H1AAH[]A\A]A^A_ùLVf.Hl$Ld$Ll$Lt$IH\$HHH_HAIHf.z*u(H\$ Hl$(Ld$0Ll$8Lt$@HHDDHD$DHDHHHD$HL$LL$LD$DLD$tAL$LD$DLOL8I}HAAfAWAVAUATUSHLoHHH|$pt$lD$`HL$PT$_LH$I t$lL$|$_$o fW D$H$$t$lLt$f.$ HcT$lHC8Ƅ$Ƅ$HDŽ$L$$HcHK(H4HH$Hs0HH$$9$IP$E1$f$f.D$Hzv|$_t$f.L$HIcL4DLt$f.D$H d$Hf.$|$_A $f.$f(f(fWAf.@ʼnD|$_H$HHB0(Ef($f(Y$@Q$Y$]H$LHZHf.E$ Yd$f)\$ Xf(T$0AY Y T$0f(\$ f(d$\L$HfTfUfV A H$Lf(HY8fW f.@$YX D$0AY Y T$0f(\f.L$Huod$Hf.tf(|$_$tY$Ƅ$tGH$H$H$D<AH$D$H8f$H$$9$Ƅ$Ƅ$|$_HL$p$QpH|$PHt$PH[]A\A]A^A_ftf.L$Hf(fWH$LHXPf.@$ Y,$f)\$ Xf(T$0AY Y T$0f(\$ f(,$\L$HfTfUfV A H$Lf(HX@fWf.E$ YXD$0AY Y T$0f(\f.L$H\$Hf.f.fDf.L$Hzff(fWf |$_EƄ$EtH$HBJ089HL$pyp*E1L1L$L$u$$$Lf(5|$_EƄ$D|$_t@@EH$LHXP|$_t @Q A pH$HHHF (D$Hf.$$f.L$HH$HP(*H$HHF0@HD$pIc$L4HPHXPY$LHp f.\$H\vfTf.v D$HHX HP(IXf(fW$f.Ƅ$ A fDf.L$Hf.H$HHHF(H$A HP@H@8B 0f($fTf.s+B2$fTf.sX$$H$HPPH@HB 0f($fTf.s+B2$fTf.sX$$DLf.$w$DLXD$H$f.DLDLD$xDL$t$lLH\$xH$$I$L1$HD$p\$@Pf.vlD$`f.$$f.\$`fWd$Ha$f.\$HAd$H$OL$`fTfA. fW\$HL$`$$t$lLf($f.\$H%$fWL$H$$똋T$l1LfWd$Hf.gaD$Hf.$$f.L$HfWɋt$lLf(D$H $$D$H_$$fWɋT$lf(1ɾL$fWD$H$$$f.ffffff.AT1UHSLgHHA$HxHHcHA$HE1HxPHcHA$HE1Hx8HcHA$HE1Hx@HcHA$HE1Hx0HcHHEH8t3A$ 11҉HHEH8u[]A\fSpHu1Hߺ[Cpfffff.AWAVAUATUSHHLoHH|$Ht$HT$HD$8ALD$DD$$D$ uHH[]A\A]A^A_DAHt$81LD\$ EHcD$ T$ T$4HHD$(IP HT$(H@L<HT$8IG(D0E~lA IG(B LfWf.v+LuHT$8H,A;GAIA9}HT$8:AO9EIcDL$!fIqAOHT$8Hc)9}J9IG(IP t$4B D$$L4ufWH|$HL$DuH|$}f.A&@D~:B9BpHѾDAQ H9L9}E~nIcDL$fIG(LB fWf.vLt"fWH|$HL$DIIP t$4fl$4Hl$(DT$4EL9D$  DL$DE~ IP ~+HcIP HHAHHXH|$H|$8HtHT$D$DHT$H|$H|$ffff.AWIAVAUATUSHLwHDŽ$HT$8HL$0HDŽ$AI HDŽ$HD$XHcHHD$(D$liIGH8lD$hfIH?LuIP 1uHcD$hHL$(HcHHHIHGHD E~ Hc@HHl$XHE(AHGH1HtAD$h`@|$ht$hH|$(1ɺAH$LD$lH|$(H$HtHDŽ$H$HtH\$8Hl$0$ED$lH[]A\A]A^A_H|$(D$lAH$1LWLL$(D$lDŽ$IML$AEDIHH$HH$H$HGHЋ(~Y@xRH\$XL$LC(LK0f.HH$IcIIHGH(9?D$D9l$hL$LL$@AwH$HHD$H@;BoB;BcH$IDl$dIDŽ$H$fLL$HE EDL$ HOIc1LA+~ ASL$N)1A~ AB LL$XHcHMA(AA;L$MI0HATA^fD9191ɅҸHcHAA;u-f(HAY H$\fTfA.GPv@D$dDl$hD9l$dH$Ld$HCA;D$AD$I9CHl$@m$fHcA]$HL$@\$ Hl$HHۉ]D D$eDHcA@0H@$MHc$H$HD$P7~+1fDDH\$PDL4H79}H|$P1ɺ|$lH$IP1Hl$PHcLHDkD$H$D$pD$CHHLdAIH$AM9MA,$IPAOPHc\D$pfTf.;L8D$uIPfWL$p%f.zt f(^d$pAD$I A B HH<f(fTf.PI fTf.fWf.d*H \YXf(fTfA. IHAA]1D$lAGpH|$Pt H|$PD$D9L$hLl$XH$IE8|9};HcH$)H ME(HTHIcHH9HuH$$L$AE6$9L$hK@L\$fW\$f(u1fWf.tAI Hf(fT fA. IHAAE1D$lH$f(LIHAA_D$lX@H$LIHAAGD$l *H f(\Y\@&LAGpWLH|$0AHH$HcHH$D9 (fWH|$0H$uH|$0DAfWHcI  f.vI fWf.fWf.I f.IFHIV0DfWLHc 1f.1f.ʍ\@l-t/t+H$u!Djl$L\f.;l$LulHD,8t$HD$pH9HcDIcHff(HD$0\D$xfTf.@PmH8fDfDY\$X$f(TY\$XfWL$$f(f)$HD$0DHXHHtHT$0DHzHL$0DHyDH HT$0HL$pfW$HB@HR8H H mH|$8f(DHL$0$IPH|$8f(DHT$0AAC 1HzHt$HH|$8H|$8DHH|$8HIغ1HL$0H9MH$H$t$HH|$8fDD$HH|$8D1H|$0 HD$0H8fff.AWAVAUATUSHHGHH$$HL$pT$$HH$H$H$Hc$$HIL H$H,H$H$HB8HHQ@|$$$O fWL$h$$IAPƄ$D|A9lj$IcƄ$L4@IAHJc0IA ,IA0f.T$hzZ|$$f.d$hztuHcH$H$Hf(HHPY\fTCPf.vD$hH$HX HP0X$tf.T$hzt fWH$T$@LL$H;T$@LL$wD$hLcf.@ƀ|$tA@HcH$H IHHC (D$hf.$aIH$$ f(f.$fWf(Af.ADDD|$H$JHB0(Ef($f(YE3$@YPH$N$LHXHf.E$H$ LL$Yd$0LT$Xf(T$@Y Y T$@H$LL$LT$f(d$0\L$hfTfUfV  H$f(LfWHX8 f.UEL$H$YX f(Y Y T$@LL$LT$T$@LL$LT$f(\f.L$hz0f.L$htf(Ѐ|$tH$HBJЃ8H$ypH$J HC8HS@B H$f($ fTf.s/B$fTf.sX$$H$HPPH@H f($fTf.s. $fTf.sX$$H$1LL$f.$LL$w$f.H$D$P$H$HD$PH$$Hf(и$Iغ1|$tEfDPf.|$!AID9$j|$t3H$$BpH|$ptHL$pfH[]A\A]A^A_f@f.L$hz f(EfW-D@tf.L$hf(@fW%H$N$LHXPf.E~$H$ DD$Yl$ LL$LT$Xf(T$@Y Y T$@H$DD$LL$f(LT$l$ \L$hfTfUfV  H$f(LfWHX@f.vNEtI$H$ YXf(Y f(S|$EfƄ$D|$EƄ$H$N$LHXP|$tEte H$ @HcH$H IHHC(H$JHA0Z@Ƅ$ H$ 1\$hf.fD$f.L$hH$HH()y$AP\$f.$f.$$f.$fW$d$hf($f.D$h $3H$$fTf. r$HLL$fWLL$L$hf.f.$$f.L$hH$D$h$HB@HB8>ffW$L$h$fWɋ$H$11LL$LL$$(H$$H$HP@H@8$f.$v*H$$H$HP@H@8\H$$H$HP@H@82AWAVAUIATUSHxLwHHt$(HT$ LLD$7AI D$lAEPHD$HIED$@H8D$8D$<K)fE L+IEH8IELc1HHHP BB~A}pz|$7tH|$HtIUA HB8HJ@B f(L$PfTf.s&BD$PfTf.s XL$PL$PHBHHJPB f(L$XfTf.s(Bf(\$XfTf.s XL$XLLD$f(D$X\$P]L$XD$@f.f(_\D$@f.D$XmXL$@D$Pf.\T$@f.T$XX D$XAY Y f(ȉD$XLfW\\$XfTfUfVD$8EfDH|$HHT$l1ɉLD$<@LL$@f.I]HHt I}I}H IE@IU8D$8fWBH JL1҉LrI}HAACD$<D$lHL$(AUpT$8HT$ D$8D$HT$0D$?D$lD$hD$dHBH8A@EuC|$d&HL$(D$lHL$ T$hHD$D$dHx[]A\A]A^A_fD|$duHP 1DHT$0McE1AHBH@JHt D8EAHPfWDHfB. DHD$XD$ E~fWf.D$X#ۋEdA4HE~H|$0DD$dD$XDHD$@D$@HHfWf.D$XzHP 1DtlH|$0HL$hHT$lD$XD\$h;\$h@HD$0@p2DEfWf.D$XzH|$0HL$hD$XDH|$0DAHL$0DHAH8A@HPfWfB.L$Xf(fTf. DHHH1HD$0AA1HxH1D$dHT$0DHBH8ADH@1DHDH $ $HHf(DHHH1f|$?|$>.DHH|$0HT$XDD$XDHD$HD$HHHDDHD$X9f.H|$0HL$dHT$XDLL$Xf(fTf. r{DHHH1HD$0AAkHxHfHT$0AAHzHD$dDH $ $HHf(5H|$0HT$hHt$lD$dH|$0D$dFLl$H\$оHl$Ld$ILt$L|$HLwHHT$@HL$8LD$0LLD$RD$ST$S T$RI DŽ$HD$huiE1HD$@HT$8HL$0D8$DH$H$L$L$L$L$HIEH8tE1H:ŅnIULcHBJHt؃8uӉLt IULuI]HHP HP AHtHD$hHH(IEH@JHDE~HcBH IP1BHcHD$(HHT$(HD$xIED$pL$TH@HHtLLD$`D$XfTA D$Hf.r6D$`fTf.r"|$Rtt$TL|$SA~$t$TLDD$DD$EEfWD$pf.DT$`A fTf.L$Hf.qht$TLT$T$CHD$hHH0IEH@JHHt HcHcHfWD$Xf.A fWf.H\$xI f(fTf.s!D$`fTf.+ AEpD$XH$Lt$TLHLIHL1LG;GCDD$DD$A9DIEH8t$TLAHLIHL1t$TLL$)t$T1ɉLDD$t$TLHLIHL1AEpA D$Hf.%f.D$`\D$XD$`D$`H\$xIp fTf.sf(fTf.I HT$(f(fTf.r?t$TLAD$`YX1Lt$TH|$h\fWI I HL$(HAEpnY\$`f(\@AWAVAUIATUSHH dH%(H$1Hp D$lD$hD$dD$`D$\D$XHD$@D$0 ;HAc L~%IP 1AL@A~E EA A AH$dH3%(DHĸ[]A\A]A^A_@LHIP IP 1AH LL1ADžH A u I HLA7IE1ApIP ~YIP AAAAL1AAL1L9~ExAƅc A xLL1DLL1ALH߹111E11D$D$D$ D$$AD$<Ix HtAtA L~1AL@AA1LLL1LD$,HHD$@@hD$,D$D$D$ D$$D$(GhD$ UB %g presolve_coltighten: Replaced bounds on column %s to [%g ... %g] presolve_reduceGCD: Infeasible equality constraint %d presolve_reduceGCD: Did %d constraint coefficient reductions. presolve_singletonbounds: Singleton variable %s in row %s infeasibility (%g << %g) presolve_altsingletonvalid: Singleton variable %s in row %s infeasible (%g) presolve_sparser: Infeasibility of relatively equal constraints %d and %d presolve_sparser: Infeasibility of relatively equal RHS values for %d and %d presolve_SOScheck: A - Column index %d is outside of valid range presolve_SOScheck: B - Column index %d has been marked for deletion presolve_SOScheck: C - Column index %d not found in fast search array presolve_SOScheck: D - Column index %d was not found in sparse array presolve_SOScheck: E - Sparse array did not indicate column index %d as member of SOS %d presolve_SOScheck: There were %d errors presolve_rowfeasible: Lower bound infeasibility in %s row %s (%g << %g) ... Input row base used for testing was %s presolve_rowfeasible: Upper bound infeasibility in %s row %s (%g >> %g) presolve_debugrowtallies: Detected inconsistent count for row %d presolve_colfix: Objective determined by presolve as %18g presolve_colfix: Variable %s (%g << %g) infeasibility in row %s (%g << %g) presolve_rowdominate: Column %s is infeasible due to conflict in rows %s and %s presolve_mergerows: Inconsistent equalities %d and %d found presolve: Range infeasibility found involving rows %s and %s presolve: Row %s (%g << %g) infeasibility in column %s (OF=%g) presolve_preparerows: Variable bound / constraint value infeasibility in row %s. lp_solve unsuccessful after %.0f iter and a last best value of %g lp_solve explored %.0f nodes before termination presolve_shrink: Empty column %d is member of a SOS presolve_columns: Eliminated unused variable %s presolve_columns: Unbounded variable %s presolve_columns: Eliminated trivial variable %s fixed at %g presolve_columns: Eliminated variable %s fixed at %g presolve_columns: Eliminated dual-zero variable %s fixed at %g presolve_columns: Fixed binary variable %s at %g presolve_freeandslacks: Eliminated free variable %s and row %s presolve_freeandslacks: Eliminated implied slack variable %s via row %s presolve_freeandslacks: Eliminated duplicate slack variable %s via row %s presolve: Had to repair broken basis. presolve: Found SOS %d (type %d) to be range-infeasible on variable %d presolve: Break after bound tightening iteration %d. Presolve O:%d -> Reduced rows:%5d, cols:%5d --- changed bnds:%5d, Ab:%5d. presolve: Unable to construct internal data representation PRESOLVE Elimination loops performed.......... O%d:M%d:I%d %8d empty or fixed variables............. %s. %8d empty or redundant constraints....... %s. %8d bounds............................... %s. %8d matrix coefficients.................. %s. %8d variables' final bounds.............. %s. %8d constraints detected as SOS1......... %s. %20s Solution status detected............. %s. %20s OPTIMAL solution found............... %-gRow-types: %7d LE, %7d GE, %7d EQ. ?@@?$@Y@zRx ,SBEB E(A0A8Lbd|  3C $JA4<,BEE B(A0A8D`tAJ ANADF 4BEE E(A0D8DP4BEB B(A0A8DP4<]BEB B(A0A8I`4tBDB B(A0A8I`4xBBE B(A0A8G4BIB E(D0A8DpBDA <A$TkBED D(D0$|uBBA D(D0BIH X $ Jf4 O BBE B(A0A8GDAFD d4A4|BBE B(A0D8D@43BBB B(A0A8DoJK $ JMT43JQp4TWBEE B(A0A8Dp4/BEB B(A0A8Fp4BBB E(A0A8G4BBB B(A0A8G44 BBB B(A0A8D4l5BBB E(A0A8D4BBB B(A0A8I`|N 4BPB B(A0A8D`4,BBE E(A0A8F4deBEB E(A0A8IqJLL@$JLT4OBGE B(A0A8D4^BBB B(A0D8D4TUBBB B(A0A8F46BBB B(A0A8Dp4BBB E(D0A8DP>JLLP4 ! BBB B(A0A8GT BCD t 2A4 BBB B(A0A8I4  BJB B(A0A8G4 h BGB B(A0A8L44 BGB B(A0A8L4l pBHB B(A0A8DP4 8BBB B(A0A8F$ J^4 BBB B(A0A8L4< O BBB B(A0A8G4t BBB E(A0A8D4 BBB B(A0C8G`4 BBE B(A0A8G4 BBB E(A0A8D`4T BBB E(G0A8G4 BGB B(A0A8D$ lYT4 BBB E(A0A8G$ ;AFD GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @ (n&L(,L(12L(@2)O:@\@: o`:X j8 yG%GGpL `b `b"  49>CIO U([0af8 lS0 @ P3CJ ,%4?ScrN  ]0!x/>MTcmw@k $+9HOpuas/BIT]gv~ *3+O GT_dj5|64683;o0<+30A3N[pBWrC/FN"\ 0=Ac5S]jqzhj|0knrepvq$w9|ON}^`m{0U6ЈЊ>! @  @2 4 @ N  a h y       p 8    2 = L T Y j }   pO       P @)  7 H T a  lx `            - 7 B O Y k  &;} `'lp_presolve.cpresolve_sumpluminpresolve_roundrhs.LC1.LC6.LC7.LC15.LC36.LC37.LC44.LC57.LC0.LC73presolve_rebuildUndopresolve_rowlengthexisnz_origobjset_dv_boundsget_dv_lowerget_dv_uppercompRedundantcompSparsitycompAggregatepresolve_setstatusexreportpresolve_getcolumnEQis_constr_typerestoreINTpresolve_invalideq2firstActiveLinknextActiveLinkpresolve_rowlengthdebugpresolve_debugcheckisActiveLinkpresolve_debugmappresolve_rowtalliesis_chsignget_lowboget_upbopresolve_rowremovefreeremoveLinkget_constr_typepresolve_SOS1lastActiveLinkprevActiveLinkget_rhclean_SOSgroupis_binarySOS_count__sprintf_chkadd_SOSappend_SOSrec__stack_chk_failpresolve_singularitiesallocINTpresolve_freepsrecfreeLinkpresolve_freepresolve_debugdumpstdoutfopen__fprintf_chkfwriteblockWriteINTblockWriteREALfclosepresolve_finalizefirstInactiveLinknextInactiveLinklastInactiveLinkcountInactiveLinkdel_columnexmat_colcompactdel_constraintexmat_rowcompactvarmap_compactmat_memoptSOS_member_updatemapmat_validatemat_zerocompactpresolve_initpsreccalloccreateLinkfillLinkallocREALpresolve_setEQsetLinkset_constr_typepresolve_impliedcolfixmat_getitemis_semicontis_SOS_varis_intSOS_is_memberis_presolvefmodappendUndoPresolveaddUndoPresolvemat_multrowget_rh_lowerswapREALpresolve_coltightenget_col_nameset_boundsceilfloorpresolve_freeUndofreeUndoLadderpresolve_createUndoinc_presolve_spacepresolve_reduceGCDgcdpresolve_candeletevarSOS_membershipsSOS_is_member_of_typepresolve_singletonboundsget_row_nameget_matpresolve_altsingletonvalidget_rh_upperpresolve_storeDualUndoget_mat_byindexpresolve_colremoveSOS_member_deletefree_SOSgrouppresolve_validatemat_rowlengthmat_collengthpresolve_makesparserQS_executeappendLinkmemcpyget_rh_rangepresolve_initget_nonzerospowpresolve_knapsackcloneLinkadd_columnexset_rhis_maximpresolve_SOScheckSOS_member_indexpresolve_statuscheckuserabortpresolve_probetighten01presolve_probefix01presolve_rowfeasibleget_str_constr_typepresolve_rangeorigpresolve_multiboundspresolve_impliedfreepresolve_makefreeset_rh_rangeset_unboundedpresolve_rowtightenis_unboundedpresolve_debugrowtalliespresolve_boundconflictpresolve_colsingletonpresolve_colfixpresolve_updatesumsmemsetpresolve_testrowpresolve_redundantSOSis_fixedvardelete_SOSrecpresolve_aggregatepresolve_coldominance01countActiveLinkcompareREALqsortexpresolve_rowdominancemat_findelmis_negativepresolve_rowfixzeropresolve_fixSOS1allocMYBOOLpresolve_elimeq2mat_expandcolumnincrementUndoLaddermat_setcolmat_mapreplaceswapINTmodfcreateUndoLadderpresolve_mergerowsset_rh_upperset_rh_lowerpresolve_rowfixpresolve_preparerowspostsolveget_total_iterget_total_nodesvarmap_canunlockcheck_solutionpresolve_colfixdualpresolve_shrinkpresolve_rowspresolve_columnsisOrigFixedset_semicontpresolve_freeandslackspresolvemake_SOSchaintimeNowREPORT_modelinfomat_computemaxyieldformessagesSOS_infeasibleSOS_get_typevarmap_lockcrash_basisauto_scalemat_checkcountsREPORT_constraintinfoMIP_countis_bb_modeidentify_GUBget_Lrowsget_presolveloopspresolve_fillUndopresolve_setOrig s     "T$$$)%'(('(%+G H]"+ "  " H "- + x "  "j (| "  "  " . /c / 00j2343+3U6784  "39+:6;C 1W<y=+1>J7\1?A8AQAZ'('( #41[2s222222T2z222222C2HBTBe2~222CCC2F& :+ 87GQ dHm  H <I OJ VJ ] J c$J6 i;IN zZJm yJ J I K K  K +K=LNOPQR3S?PNQnTUVWW = ;XZ\]^.AH_X_h_x_A\AAA$$3/a>bT0dTefg  ;k h + i  e!r! !j>"/m"z""0"$$G$b$a$3&k&l'kM'lj'r'm'S($M)n)l*%.*l^*l*o* +oO+l++,/,0n,,1-+-.,.%9.U.%.q. ."/r=/H/jT/ /g/0g0s0.01+1.12t2.233+3.34q44q4 h4"552 62!62762O6v_6vo6v626u6\A7_V7Ak7Aa8w8'9t:$: z:(: (:"*; 4;za;t; ;";| <}}<$< <*=e==/q=0+>ok>/>0>0>0>0>? ?E?/V?/s??0?/-@;@qU@ hg@"w@0@/@@/A/oAnAA~B$B2BqGB XB"B*C>C_ClCCk+E2ZEh~EgEE9E;EF2G+/GNGAG+7H2H+H0H/He(IGIAI+!J.+K+]K.KYGL+yL.M+M.N\?O'O$O(O2P P3PAMP]PP'gQ.Q Q RT(T2TCT2UZUqU.V eVW X$Y Y =Y `Y3vY1YZ [\ .\"3\ G\!\ `\"\ \]\.][H][{]]_]]_]]_^_!^$>^^]^]^] __5_J_4Z____`8`D`_`3k`+`+`ga GaLajbataa3ab^bmbj{b Icgc3cW&dAeRhߟ _2/2M22Aܡ \6 ;g g"r  ӥ   "'2ܦ 8 C H T"   "ӧ   "Kk .\VC`2r222]':(aת: q'(Ϋ:hP+ 2 $@_c_A+++  JX g!{\';f( _̳2޳22~heA1 ƸE !Eºqк ߺ"+»|,}N Y ^ h"̼;7h|}?r};h'a2z;;X]_v)C;2Y2w2_'(%F'(  eehh4gKg[-xl9 e   +.  -X1eehuhggogt  q! 3"DqX j"eeh h[    2 :B gsg=sAA 9gt@hPqy 6`7A7e w4..n E r nE 1So3 $3abDm}   " "o4, p8"B Q!.9 a+%u%    Gq ".in%& Y8lii(6i$7Y  @ ^ xn%PnY$3ab8J U Z d"%CH 0 Z"d o t "  ""  4" /0 }Q+ n h6.Q]pn~L c }n%Bd~% -!G xggs3t+13+Khh  "   "6o    n4  /%<w717$  > I N `"Du$5 GT   7N Y ^ j"h Co_{u ! !/i@im'h,/=|q  "h'( q! x -"8 G L X"t(eq  "q @ "=:Wvq ` "0  q  x  "$  G  R  `  e " q   "    !4 iE i ' (# g> eT | 0 /  '  G c| $   $     q  ( "9}b(yq  "1cq  "{   1"'mY;X(U;X|   "Zx  "   ";   "!16 x E"`{; #"+ 05 D"QMH  [" 2 " * < DP l "D : 8#"2 *7 F"U Z  i"x  } x"  8" p "  D x"#E |Mm w"| " D "_?Y 5 E: JN<` v U{ Y< D f" _< O+<LYqYA_i|YiY QY4  C"aYiY/iLYaiYiY iO m    i Y_!  i!"!M!!5"Y?"i""i"Y""i#G#Y\##Y##Y#$i2$G$if$i$$$@%y0% ?%!i%%i%%3YE3 P `h    0 @ P  ( @ x      @  x 0    @ @X  p    +H 5h 6 6 8 ; 0<8 0AX pB C F N8 \p c h j 0k0 nh r pv w |  }X 0  Ј Њ X @x @   8 p    @ px   P @X     `(  &H `'lp_price.o/ 1462526210 1000 1000 100644 39704 ` ELF>g@@OHG fTf. ffffff.(HG t>fTOfT f.s/1f.vf.ODf.f.@tHHҸtBDH @tHHҸtB DH f.H\$Hl$Ld$Ll$HL|$Lt$AILML S H H@I@E1IHcH4H HAPH H?I4MLHcH~ 3E;hLu6DAHA9t%9~H1`9~ HcI|I HH;V |A(Ɔn AWHcAVAUATIUSHH HT$PHL$HLD$@DL$?Ht$X0H$PD$gA$HD$@HHD$p2 A$A$ A$ $, fWHL$H=1f)|$ f(l$@QfTT$ $f.v_H|$pHcƉf(ƒHA9$}HtHT$XHD$pDŽ$H0HT$hLA$ <$EA$$$AƄ$L$L$fT$A$$HT$pDŽ$ L$,A$hAƄ$AD$ D$9‰$1|$gL$$L$x$E1퉄$$TfDX$H\$xD$D$ $ A;$F$AHT$pHcHL$HA$ $4I$ Hc$HHcI$ H$H$f.v^ $f(H$AL$A$ f(fTL$ f.A |$?$$RAf(\$H$f(ʄt f(fTL$ f( fTd$ f.f.f.$E$AH$$$$Aŀ|$?t$D9D-I$ $$HcI$ A$ $f.|$?q$$Y5$f$H$f(ӄtf(f( fTd$ f.Xf.f.$ Ey$$H$A$$f.$$Df(\f.fW f.@ADaD$A9PWDf.@$f(f(\f.fWf.Mf.$f$$ff.@$҉H$f($H Hc׋IcՋ,f(=fTD$ f.\H$D$f. Tf(fWf.HH$$fTl$ \$f.rf.wW1Ʉu=H$H$1919TL Dʃ$H$$:L$1$L$x$fAAA$ $$q$AY$ X$$6fDf.\fTL$ X ^NDf(D$fTl$ fTL$ $҉H$f(-$f(H Hcf.IcՋ,\H$D$f. f(¹fWf.H$$fTL$ $f.rf.wU1Ʉɐu=H$H$1919TL Dʃh$H$$HLH$H$ AAƄ$$$A^$ $$GDf(D$fTT$ -fTD$ f.i\fTD$ X^Rf.z$t $I$ HT$hfA.$ ;$$DŽ$^$H$ 1T$\$f.1f.L D9LȅA$9ȉH|$@A$t"$ٺL$HD$PfTL$ H[]A\A]A^A_H 1T$\f.1f.L D9Lȅ\/I$` Ht$p18A$I$` HD$pfW1L$f($f)T$ $fA.$ I$ HcI$x D$xALHc I$  ȉٸpHL$HAf.D$@A$HT$H'f.H9Bf.D$sHD$XI$ 8I$ 1HL$XH|$HI$x YXfffff.AWIAVAUILATAUSHHH L$8  LD$h$ D$(D$xAM$t H IEt ҸDDH$0 l$xEƄ$$H$$Hx IcfW$f.H  HcH f.v+\$f(fTf.fWf.EH߽H*H߸HT$hHL$MA1ɾHDT$0L\$(HT$DD$L,$L\$(DT$0fWf.^D$pHd$@L\$(AEDŽ$d$@L\$($sE1$E1f)T$PfWڸfWҾL f.f(HL$pA|HcA< AY ufWf.ztfWL$Pf.ِv8H  AAf.f(fWD$PDGAIcA|f.wf(F9$Ɖ$qMEEtAD$xE$t$A}~ EzH E1H@@AEHDŽ$$5hƃA$DD$Ɖ9‰$ HDŽ$HDŽ$f)L$PmH 1H$A1t $HA 4ȉΉ$A;$HHcHL$hEATD$pHc‰$ AYfWL$P^$$I$H$f(tf(fTf( fTf.smf.Gf.$3H$0$uID$$D$$$$f.$D$EH Ic$D Hc$Df(-fTf.\fW f.f(¹fWD$Pf.D$fTEp$f.rf.wT1ɄfDu/1E91E9TL DʃH$f.]uffDH HߋH 1ZD1mDŽ$fE$@t@H 1HtP HL$hHcAA ǺHH[]A\A]A^A_\fTX^A$D$fTfTfHH$H$Aƃ@H߽H*DH߸8HDL$8DT$0 1fWDL$8\DT$0f.1f.L DE9LȅS$f(\f.fWT$Pf.1~fD L$pAH H~ F ƆƆHt-F~$)ЃFH9~Hx D$pYHH @XHPhHP`@PH H$01G fHH*Hx H߸1ǃE1E1fWO${@H\$Hl$HLd$Ll$HLt$H8HF FfTf. jHt*DeEK(Lm DstI IcD4IcD$AtcKf(fTf."f(\]t fWf.wYA fWf.A1E91E9ATL DʃHHEHCHEHCHEHCHEHC HE HC(HE({(uKHC  L VEXlp_price.c.LC0.LC16.LC18.LC4.LC11.LC19.LC1.LC20.LC24.LC21.LC22.LC23.LC3validImprovementVarvalidSubstitutionVarpartial_countBlockspartial_activeBlocksverify_stabilitylongdual_testsetpartial_blockStartpartial_blockEndpartial_blockNextPospartial_blockSteppartial_isVarActivemulti_mustupdatemulti_sizemulti_usedmulti_restartmulti_valueInitmulti_valueListmulti_getvarmulti_recomputemulti_removevarmulti_enteringthetamulti_populateSetallocINTupdate_reducedcostsreportmulti_truncatingvaris_infinitemulti_resizereallocallocREALfreemulti_freepartial_freeBlocksmulti_createcallocpartial_createBlockspartial_findBlocksmat_validateset_partialpricecompareSubstitutionVarrand_uniformcompareImprovementVarserious_facterrorget_OF_activecompute_reducedcostsprod_xAbsolverefactRecentset_actionbsolve_xA2find_rowReplacementclear_actionis_fixedvarmakePriceLoopis_piv_modeswapINTaddCandidateVarQS_insertQS_executefindIndexExQS_appendcompareBoundFlipVarcompareREALcollectMinorVarcompareSubstitutionQSmulti_enteringvarpowlogbb_bettermulti_indexSetrowdualis_actiongetPricercompareImprovementQScolprimget_piv_rulerowprimcompute_thetamempool_releaseVectormempool_obtainVectorcoldualget_total_iterfindImprovementVarfindSubstitutionVar  B    00 c  4660R7t08888888888+8^8z88<<}?7DT8@8c } l  B   MdlBtE 9,HIDJJ F M{ N  !PQ!Pg!QA"S"T"U#SD#3#VS$ c$$ U%Xd% %% >&3_& Zd&T& Z&R&,& '',' ( i(n(\((]((\((\1) m) )) ) )* @*2*^*6+A+T+s+~+++,0i- y-- q.X.. /0V/a}/P/ 0 0 Z1r1 11B111 Y2bt222 22 2 23B 33P3Q4 42<4 F424 42i5 y55 55 555B66e7Pt8 8 88B889 *;F^;b; c;R;; ; +<PN<Qo< << <<B<R= cW=Ts=/= = =2> (>2(?e? @P@PABgCD DE EE ^GGH HPIQjII$J:JGJBOJJ J2KKBKpKhKiK L `,L2M 8NkBN (TN2NFNNeO DPPP PYQ tRS S2S T2 L V  Xlp_pricePSE.o/ 1462526210 1000 1000 100644 8832 ` ELF>@@ HHt @*fDSHwoLMtcfWAf.wTf.uVfDzND~1HcHH ID:uf.suHH[1[@1~H Hc4HcfA. s,AHHf2HHcfA. s[Ð[fHt fDfffff.SHHHtHǃ[fffff.H\$Hl$HLd$Ll$ILt$H(1AHHAt!Mt@H}LHcHDH$Hl$Ld$Ll$Lt$ H(@fWHUE11DHf(f.AWAVE1AUATUSHHHD$@@H*HD@@H@u\~6H H?@<u HH<ЍBH9~AHD[]A\A]A^A_@E~AGHH H@HcHI?H9LuADH, @AWHt$1HAd@EfDlAGHt$AAH,DfWH1DHf(Ht$fW1DDHH9YXuH AJc(HIE9 }HH@H5AGHt$I?L$EH9H <(ufWE11HH߉f(E~(F@@ AWHAVAUATUSHXHL HT$HH|$L$L$HD$8HT$(HD$0HHHD$(]HD$HT$H9 9H|$LHT$HD$DT$ T$ 1H|$tY|$D$ 11ۃL$@HL9HT$tA9}HD$L+΀|$1AHT$C,L+H|$<AD9d$ }f|$DD$$H|$(Ht$@D$CGD$@MD$ACD$BRHD$HT$1ɋt$$H|$(H9 T$ ރL H|$Ht$81ɉH|$Ht$01ɉH<$tFH|$(1H|$(H $1H|$(1|$tHD$HT$H9 D$ Dl$$L|$AAAAID9t$ H|$AwtHL$0HT$8E1H|$A~|$HD$0t,L$$H|$(EHD$8ظHA9}Zf.HD$DdDH|$(1H|$8HtHD$8H|$0HtHD$0H|$(HX[]A\A]A^A_À fHX1[]A\A]A^A_fDfHD$0L$$EH|$( HD$8XHA9}]DHT$HHHDD$(HD$(fA]D$$D$ 1E1L4fIM9HT$BD"D9~HT$L+H|$<HT$HD$DT$ 1fDHD$B4+L+9\$ }LD$ AeH|$(Afffff.Hl$H\$1Ld$Ll$HLt$L|$HhLMtu4Dž1H\$8Hl$@Ld$HLl$PLt$XL|$`HhDHD$0tHHttHt$0HuDžf.L HH*Lqf.H fWDf.C.H L<1ʺCH9)H A݀<u勅9{)DL H` 1H¾!HHD$AAD9gH B89DH fWHcDAf.JDBDH L<1ξfW1D;HT$0H Y AN1HT$0Ht$1 E1 HI$f.H <ugHD$0H <tA9  Y¾LYS1H9zA9Hx BxD$ YD$ LAIL BD9LH` Ht$1H|$0H DHD$ XKf)Hc@LHDD$DD$t,H Jc8HmcH AJc8bH` Ht$118AVAAUATUSHH HH-#DNE1A&H I9H B f(fT f.wAEH$AA$HHf(¸EeHI9[HH []A\A]A^DH []A\A]A^@E1A6f.HI9|HHB(AD$D$AAHD$HEzH 낐SHHHtxHfTf.s/z-f(H[f(H[[fDAUATUSHHDHH uH[]A\A]@H1E1DyIuDHHH$IB*9|.H 9B $}H)HHH[]A\A]f.H[]A\A]DATUHSHKHH1H DE~<HHH19}HHHE1DE~>1HH9}H DE0ADHHH1DE~AfDHH9}ͺDHHDHHDH<DH f.H AD9H ~b'H 9|4HuH 9}H ~{0f.H 9|DHf. sƉHH9}H ,fDH 9|PH fW f.sHH9}H [H]A\fDHDH fW f.DHHtDHt$H@HDHH[]A\ff.ATIUSH`Ht:HL$0HT$8Ht$@E1LHL$HHT$PHt$XLuH`[]A\I$&I$FA$1SLHI$T$L$ D$(HA9$|\HD$HHD$PD$HD$XD$ A$D$(9tL)HmI$H`[]A\f.I$I$FA$l1HA9$GLuHD$0L(HD$8$(HD$@D$(D$I$H$L$D$oAVAUAATUHSH HLX H&!Ef EDNEE1%H A9^ AvHf(f( fT f.wAD$H$AA$HHf(¸EgHA9^ ]HH []A\A]A^H []A\A]A^E1%HA;^ AvHAD$HD$AAHD$HEuH fAVEAUIHLATUHSL D9aHcLd1fIA9|@A$LuL 1IA9}u[]A\A]A^fD[]A\L A]A^ff.AWAVIAUATUS1H(IEH|$DD$ H|Ht$Ht$ 9\$ CAE1fAE0AhD9DHD$ D$ DLH|$AD$ At=AI9cI B(9}DLD$ Ht$ E1@H?HD$ D$ [fDDuAD9|$ |*AfDHt$ A1D9|$ }֨H([]A\A]A^A_DA|HD$ HT$ LAD$ 1LH|$D$ AtEAI9I B(9t1LD$ nDHt$ E1@H?HD$ =Ht$ H([]A\A]A^A_ËD$ uAWIAVIAUATIUSH(H DD$HHD$D$1ۅI݅GLLL Hc1HHT$;\$HJP4(HcÉ\$ H HD$9L$$AD`A=3@L@A9D9fW|Ët$ LAD9l$$>HL$IcHAHHcHA D$@H([]A\A]A^A_A1bDA9|G1LL@uL 1A9}@1L 1A9@u{D$ HD$D$ 9D$*HT$HD$t$$HJP 9L$$qHL$HcHAHHcHA D$AXDAD`XL 1qAT$L 1H(L []A\A]A^A_@AWAVAUATUHSHHHL=Ht$8T$7HI1MtL*HHD$DHD$ D DT$DDAL1\$Dd$T$ Dl$D4$1 H It 1H` HMA1L1H t H DD$L11H t H H AоLH1DDHDEȺEL1\$D$$   L  D LHDx p Ah LDLLH D1ɾLHP8H D1ɾLHp D1ɾLH D1ɾLH D1ɾLH D1ɾLH D1ALD1HL|$7uIH|$8t LHH[]A\A]A^A_HHLEbDLHx D1ɾLH D1ɾLH DA1ɾLH D1ɾLH D1ɾLH HD1ɾLH|$8fffff.Hl$Ld$HH\$HIH$HL$PHL$XH)H$)x)p)h)`)X)P)H)@dH%(H$(1H 9H` t^H$H\$ IоIHD$H$0H߹$D$0HD$Hh HH` HtUH$HHL$HD$H$0D$0HD$HH;=tH$(dH3%(udH$H$L$HDH$H=H$D$0HD$H$0HD$@AT@IUHSMtLH1HDA1HHH؅~( DH D$ H1HHAH[]A\1fDHHA11HHHHEH1IغH1fDAVAUATUSHHH$H$HA11H1H1H1HE1Es1H߉D$pfW $fW H$D$p HY $D$pH$$H$$$H߸;1HH$H$H$HHA11H1H1HAIOfDH$HL)H$D$0 HL)H$ D$8 HL)fTf.Et+H$fWLt$D$HL)f.wYH D$@HHD$H\$0HT$8L$@D$HH߸9wE fWD$0fW fWD$8  f.EfWH$HL)fD1H߉H$D$x B H$D$ B IHD$D$x HY D$ D$xHD$(\$HT$L$ D$(H߸91H1H1H1H1H1EA@A@fW $fW H$ B I$fW H$$H$$$H߸;4Hߺ1H[]A\A]A^LH$ Lm(H$D$P (HD$X D(H$ D$`(DHD$h\$PHT$XL$`D$hH߸AD9+fDU1H1SH 18~@11HHH[]111H1ffff.UHSHH$@H$HHL$PL$XH\$ IH)H$IH)x)p)h)`)X)P)H)@H$$dH%(H$(1H$0HT$D$0HD$HڋH!ကtH HDHBHDɹHH)H HH$(dH3%(H u H[]AT1IUHSH0HH~ HH9}MtLH1$~$1HAHH1\$~'HAHH1\$~'HAHH1\$ ~'HAHH1\$~'HAHH1\$~'HAHH1\$~'HAHH1\$~'HAHH1\$ ~'HAHH1\$$~' HAHH1\$(~' HAHH1H0[]A\ffffff.AUATUHSHD`D;IcL,@ 11H 1~fD11H11HHD+HAB(I$$H1HD9SH[]A\A]1H1rf.AVAUATUHSH $D`D; IcHL,L4K@fWf.f. @fAIID9AMAf.uz 11H 1~@11H1H1D+HAED$D$H1H>H []A\A]A^ 11H 1Z~fD11H1H1D+HAT$D$H1Hf 11H 1~fD11H1H1D+HAED$D$H1HA1H1Bf.1H1rf.1H1f.ATIUHSHH$@H$HHL$PL$XH)H$)x)p)h)`)X)P)H)@dH%(H$(1u&H$(dH3%(H[]A\ 1 1~11H11HHp {H$H\$ IMHD$H$0H߾$D$0HD$Hh HHp fD1H1bw%% %% %s %d %d %g %% End of MatrixMarket file Tableau at iter %.0f: %15d%3d %15.7f%-20s %12g Scale factors: %-20s scaled at %g Model name: %s %8s MinMax %simize %8g %-9s >= <= = %8gupbo %s = %8glowboType Int Real upbo Inf lowbo -Inf Objective function limits: %-20s %15.7g %15.7g %15.7g %18gTRUEFALSE CORE DATA --------- Column startsrow_typeorig_rhsorig_lowboorig_upbovar_typeA PROCESS DATA ------------ Active rhsBasic variablesis_basicscalarsObjective: %simize(%s) %s Primal objective: %-25s %12g%12g%12g%12g Primal variables: Dual variables: %2d-- *** too deep ***> %-15s %4d %s %18.12g %s = %18.12g %s > %18.12g %s < %18.12g Actual values of the constraints: Value of objective function: %g Value of objective function: %.8f From Till FromValue Dual values with from - till limits: Dual value From Till Actual values of the variables: GENERAL INFORMATION ------------------- Model size: %d rows (%d equalities, %d Lagrangean), %d columns (%d integers, %d SC, %d SOS, %d GUB) Data size: %d model non-zeros, %d invB non-zeros (engine is %s) Internal sizes: %d rows allocated, %d columns allocated, %d columns used, %d eta length Memory use: %d sparse matrix, %d eta Parameters: Maximize=%d, Names used=%d, Scalingmode=%d, Presolve=%d, SimplexPivot=%d Precision: EpsValue=%g, EpsPrimal=%g, EpsDual=%g, EpsPivot=%g, EpsPerturb=%g Stability: AntiDegen=%d, Improvement=%d, Split variables at=%g B&B settings: BB pivot rule=%d, BB branching=%s, BB strategy=%d, Integer precision=%g, MIP gaps=%g,%g Model name: '%s' - run #%-5d Model size: %7d constraints, %7d variables, %12d non-zeros. Var-types: %7d integer, %7d semi-cont., %7d SOS. Sets: %7d GUB, %7d SOS. Column name Value Objective Min Max -------------------------------------------------------------------------- Column name Value Slack Min Max Row name Value Slack Min Max ?h㈵>zRx 4rBEB B(A0A8D$TVQp,|BEB A(A0GPA$ BBA A(G0eBAD $ iBDA D,4BBE A(D0DP,dBEK A(D04BBE B(A0A8F`4BEE B(D0C8D`4BBB B(A0D8D<JO\JBGD ,|jBBB A(A0JsAMD MADG$qBKD DP$BBA D(D0,<BBB A(D0DP$lBDD GGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @8W0&D8,D812D8@2H;^OA\A oAj ypE%EE(JH  pSc  $ *r<CIW`p&<ELV iv @ Pe i1IU0ez0-<Kp#RbqxP%J&j.s.M/q /`2D3Wp6lp_report.c.LC4.LC11.LC16.LC17.LC36REPORT_mat_mmsavestdoutfopenmat_collengthis_OF_nzmm_write_bannermm_write_mtx_crd_sizeallocREALallocINT__fprintf_chkobtain_columnfreefcloseREPORT_tableauhas_BFPget_total_iterfputcmempool_obtainVectorget_colIndexAbsolveprod_xAfflushmempool_releaseVectoris_maximfwriteis_chsignREPORT_constraintsget_row_nameREPORT_objectiveREPORT_scalesget_col_nameREPORT_lpget_lp_nameget_matis_constr_typeget_rhget_rh_upperis_intget_upboget_lowboget_rh_lowerREPORT_dualsget_ptr_sensitivity_objexget_ptr_sensitivity_rhsis_splitvarREPORT_solutionget_var_primalresultget_origcol_nameblockWriteLREALfputsblockWriteBMATunscaled_matmodifyOF1blockWriteAMATmat_validateREPORT_debugdumpGUB_countSOS_countget_Lrowsget_nonzerosblockWriteINTblockWriteREALblockWriteBOOLreport__vsnprintf_chk__vfprintf_chkstderr__stack_chk_failREPORT_modelinfoREPORT_extendedget_ptr_sensitivity_objrestoreINTprint_indentexplainallocCHARstrcpyREPORT_constraintinfoget_constr_classget_str_constr_classdebug_print_solutiondebug_print_boundsdebug_print#R Z ES  ' 3= I   $` jy  %J Z  i 2Y!a k 4} K9!S"j# P" 5$T f%     X6  A X[ h ! & '  (   T )' *J * '  ) !C  g ,{ _  j )" j' )e ,z _  !   (  P$  r ) ,  /f1u  )/ (   82D Vo!, 2 3- 2)=4I Xh3{5! ) ) 6& .)L Q) &)77  0)" <*)<8L_8k z!399  ,3F K)j o)5  ;<3 8)O T)~, c /)&S FX)o xt)=/ c m 0r)!? @! _4S j[) j)?@ _(!JBW! !$B3!D 2!o! ED <2^!!GB! 242< Nc!!;!_!  X)IJKK [L  @  ; (F ` m 0      ! !1! 6!)K! W!Ml! t!M! !N! !N! !N! !M"  "O" $"F@"" ")" "N" "M"  "O" #N# "#N@# )H#N# #Z$Q$R$$&%SA%RH%Tl% N{%P%L% `%P%I%J% %P%J%I & '&1,& @A&PK&,V&([& b& s& 1}&P& K&P&W& K&P& R&P& K'P '  'P' p*'PX'2o'X'X'X'X'/( e+(P>( KK(Pk(<p( (P( K(P( (P( p(P )X8)Xp) ) )X)X)/* e)*PO*Xf*X*2*X+X=+XV+Xf+/z+ e+P+ K+P+ +P+ K+P+ +P, p,PM,Xg,X,X,X,,, e,P- K-PM-Xm-X-X-X-,- e-P. ).PE. P.P`. q. }.P. /S/Q/[/\/T0^40 NC0PT0__0 n0P0_0 0P0_0 0P0_0 0P1_1 *1P?1_J1 Y1Pn1_y1 1P1_1 1P1_1 1P1_2 2P*2_52 D2P2 2P2 2P2 2P 3//3 <3Pa3 m3P-4 54PU4 `4Pi4 u4P4/4 4P4 4P5 5P5 %5PA5/O5 ^5P{5 5P5 5P5 5P5/5 5P6 6P16 =6PQ6 ]6P6 6)7 .7PM7 X7Pe7 m7P7Q7 7P7T & &1 &x &2&&}&!!&Pk.P X    @ P 8 0h 0   @ p#` P% & . . / `2@ 3p p6lp_scale.o/ 1462526212 1000 1000 100644 26224 ` ELF>C@@ f( fTf.v* t9}QH Hc^ f(Df( fTfUf(fVYf(fH HcY f(fff.f( fTf.v* t9}QH HcY f(Df( fTfUf(fVYf(fH Hc^ f(fff. f(ȉt H HcHYYf(fff. f(ȉt H HcHY^f(fff.~[Hc \ fTf.w8AHHDH\fTf.w1fDtVH;?HcHf.HH HYFH9}ָËH;HcL HDHFHIH9}xYHc \ fTf.w8AHHDH\fTf.wy1f.fDt611fHH YH9}ڸ@L 11DHIH9}ATUSHL HH~7H HHPHH9YEuHIL$0It$(~$1fDHcYDH9䋃HX fW11H  HHp f(fTf.v YTUHGtHHHG(YDUHH  f.v YLUHH f.zt f( fTf.v YTUH9$H[]A\A]A^A_fDfWɽf)$L$x$fI$PfT$f.D$xv9H$A$AX \YX$$H9~f 1f)$DADfT$f.D$xvBH$H$HcIc AX \YX$$H9LA$A$H$LAǃ$A$H$LA$H$L$H$LH$LH$LA$H$1LH$1ɉLD$E$f)$L,fDM$PH,A[fT$f.D$xvEHH$H$H$XHH$XHL9uH$EHh0Lh(LP 1f)$DfT$f.D$xvkLT$LT$IcHH$HH$XIcDHH$XIcDHH$HA9qE$Ex3H$1f.DEuHA9$}D$E~=$H$1҃H|uDHH9uA$E$A$D\A*DžD_DYxTH$H$1L$H$1fDG* ^AAAHA9$}֋$|$xH$$AH$H$M$PH$HR8Lk(HD$PHH$HL$H$HD$f.HT$PKVO JDUD$xJRJSfC. zt3H$H$LH$*^\H$BTFD9}VHcH$H$ILA@)LDfHcLH$HL9 *^\uIL;T$ HL$H$1fWHDDC*LHH9Y^XufA.$H$fWDŽ$D Lk(LS HD$HHHD$@HHD$8IFfA(f(̃f(HD$ $f(f(YYJ$~1HL$@H$HfIHDHH9uf.T$xz;$f(݋$9\$ ^ډFD$ AXt"AF9$YAFD$A)DAEt@f(11fIDf(Df(fYf)H9rDE9t+HcIYH9$}H$H$H$*Y C^f(YDE^\AX FA FHH;D$8uŋ$HT$@HHH$HH9YuM$PD$xfA.zt/H$H$HH$*^XHH9uE~GH$H$1ɐIcTIcH* HH$A9^X̋$T$x HL$@^HDHH$HH9YuHL$HH$1H$fWHDDC*LHH9Y^Xuf(ƃ$fA.Y^f(fA(f(f(\f(f$iE$Ex(L$H$11HIHA9}f.T$xzEf(H$1^AXYHA9}EH$L$1H$H$1*Yƒ G^f(AYA^\X A AHA9}11Ex-DHH$HA9$Y}؋$~^M$PL$xfA. Czt.H$H$H$C* ^XHH;D$8uE~FH$H$1IcIcDH* HH$A9^XA${ 11^@HH$HA9Y}E;H$H$1fWfD* HA9Y^X}M@E$uf.t$xDz fDx$f(Y$=f(IF^փH;$G$AXt"AF9$YAFD$A)DAEtDf(11fIDf(ff(fYf)H9rDE9t+HcIYH9$}䋄$H$H$H$HD*Y S^f(YDU^\AX VA VHH9uDŽ$D$EL f)D$`I?L$XGfI|=L$Lu`$MH9$|bEfWD$`L$X$f.w]$$듐LuLmH9$}E$ExuH$ 1f)D$`L$X HA9$|-fWD$`L$Xf.w ]f(H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HtHDŽ$H$HLBfWDDfWD$x$WA$qf(H$E$1^AX@YHA9}E-H$L$1H$H$1*Yƃ G^f(AYA^\X C CHA9$}fff.ATUHSHHHD$ HcHl$HHc1HH AHt$JHcH<  \fTf.AHHƉ fDH\fTf.yዓ~oHc \ fTf.-BHH$f.H\fTf.H\ HEH[]A\11@HH YH;~ڃ뙐H 1Ƀx,H 11@I?L$H9}ƃ H|$HDEH[]A\fDq9_HcHH HH HYBH;~փfHt$1H߃HT$HcH<fATUHSH0 HD$(fWD$H t T$fTf. rH HtHDž ƅ ƅ H|$(HtD$H0[]A\f.t ~fWD$D$H0[]A\fHD$(~ Hugf(T$D,EfWD$f.z\EL$A*T$\T$Ht$(H*L$fWHt$(1H:f.Ht$(HfWAT$f.1H?L$f.D$HD$wffT f.L$vHHt$(Hf(D9XYD$D$|\D$@L$\ L$AO??|= _B@9B.??{Gz?zRx 4L4d4|BAA BAA N 4UBBB B(D0A8D<dADK0\D tAAG JL0AAG 4j BBB B(A0D8G, BBJ D(A04<4BBE B(D0A8G$tBAD G0$BAD DPGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.cst16.rodata.cst8.rela.eh_frame.comment.note.GNU-stack @?0O` &@,@1 @ ?@@PQ@Ld [PC%duCuCtpG  M  % */(4098>@DH JWf@4q4~@U d(59> JOP _t~j p%'4P:= lp_scale.c.LC0.LC3.LC1.LC2.LC4.LC6.LC5.LC7.LC8.LC9.LC10.LC11scaled_valueunscaled_valuescaled_matunscaled_matscale_updatecolumnsscale_updaterowsscale_rowsget_nonzerosset_actionscale_columnsmat_validatetransform_for_scaleis_scalemodelogCurtisReidMeasureminmax_to_scaleis_scaletypeexpsqrtroundPower2ceilunscale_columnsaccumulate_for_scaleundoscalefreescaleallocREALmat_rowlengthis_integerscalingis_intmat_collengthfinalize_scalingCurtisReidScalesallocINTfloorscaleCRauto_scalemat_computemax P X a         , a T Y n""# K#v  #  K #  #< "L  g &}  "  '   "+  ?  i &     & (1 &i (q     #   *  #% - 2 *  _ k x  $"5"V&# ~   ( ( 2 A   .4&U 00$& "";& ""=&'F#t'(#%1#.".K 423& C  c "x " &Y!"!&""3"#"4"% ##5# ##$0$ %.Q%0^% %"%"%#%%%*% -& 9&G&L&#T&\&a&*&&&&/&o' '#' (%( Q(#w((( )#d) )#)*05*7U*0v*0*7*0*0*0* <+#+ +#,8 -?/ -2 4 7 &7h737'7728 8,8P8'd88.8.8.8.8.9.49.V9.:6: : 0; =; ;<0o<.<0Q=;b= =.=.)>&D>8>9>0>5&? T? l?/{? ? ? 7 8 P @h      @ @  `  x P     p%@ 'x P: =lp_simplex.o/ 1462526212 1000 1000 100644 43592 ` ELF>b@@ H 1q8~ZHcA@*HcQ<LhD$+D$\LhN€^*^t f. zuf.fWf.H H @@L@P@T@<HPh@$H@`@8@H HcH4Hr8HcHHB(fff.X US3X )DA9H Hcր<E~zL AfWA)fDAQ9~2Hx fB.u#z!H D)HcH)HQ8HcHA(;tAIIE9}D1[]@X 3X )ts9}Q~{<C8{8STD$HcȉC@DhT$H[fD{<C<봐USHHLJHHHtHǃHHtHǃH tH fW    ~1H[]ǃH[]H$$ fW8 $ HH߉$~ H$$tz f.@ H  a Hǃ fD f. fW@YfDu&@ dH$DH1$$DLd$Ll$ILt$L|$AH\$Hl$HH ADD$oDL$nH@ AUTƅHx HEXt_E~Z|$oD$PHDD$PHEEf(ȾH*LD|$H$LAE`EeX5\fTX^fTf.$E;E tJEA$E Ld$ H*Ld$ I$ LuXC8{<C8{8d$ STHcȉC@Lthd$ EHT$EDELEPETf.rHEXHE`DH\$xH$L$L$L$L$HĨfA*$XL$@f)\$0d$ t$f(L$@Yt$d$ f(\$0Yf(\fTX^f(fTf.f. v,A$d$ Ad$  ADtvBAETfA*$XL$@f)\$0d$ t$f(L$@Yf(\$0d$ t$Y@Hx AHHHE`BETAf|$otIEPEP~ ELEPUL~4;TKD9uHt5Af.ELULD}HDuDAD9}Duf.ƅA$ ~]H$8tPAkf.{<d$ d$ C|$P.|$PX 3X )9D$lt$l+HX CX DX EH H AE1@@L@P@T@<@$@8HPhH@`KX H1DžmH _1HH D$tX 3X )…҉X t*HDEvHH tE@fE EH1fDEu @2fW@H*T$D|$D|$D$|$D:AAA HH*H߸ǃjDH`Hǃ`HhHpHǃpHxHH[]A\A]A^A_HD$DHD$ǃfW1ҾHHt$HL$01 HE1E1fHHfD~Hh(EDu@uvD$01DHefD$|$ -u ~H1ǃE1tǃfWHHH* D$H*DL$H߸ǃMD HI H B|$D7H1Hu|$DHh|$DH8H1H1@Hf\ 1HfDH1ǃaspx_solve: Failure during postsolve. spx_solve: The current LP seems to be invalid MEMO: lp_solve version %d.%d.%d.%d for %d bit OS, with %d bit REAL variables. In the total iteration count %.0f, %.0f (%.1f%%) were bound flips. There were %d refactorizations, %d triggered by time and %d by density. ... on average %.1f major pivots per refactorization. The largest [%s] fact(B) had %d NZ entries, %.1fx largest basis. The bounds were relaxed via perturbations %d times. The maximum B&B level was %d, %.1fx MIP order, %d at the optimal solution. The maximum B&B level was %d, %.1fx MIP order, with %.0f nodes explored. %d general upper-bounded (GUB) structures were employed during B&B. The constraint matrix inf-norm is %g, with a dynamic range of %g. Time to load data was %.3f seconds, presolve used %.3f seconds, ... %.3f seconds in simplex solver, in total %.3f seconds. lag_solve: Improved feasible solution at iteration %d of %g Zub: %10g Zlb: %10g Stepsize: %10g Phi: %10g Feas %d lag_solve: Unbounded solution encountered with this OF: lag_solve: Simplex status code %d, same basis %s Lagrangean convergence achieved in %d iterations Unsatisfactory convergence achieved over %d Lagrangean iterations. The best feasible Lagrangean objective function value was %g add_artificial: Could not find replacement basis variable for row %d Cannot do Lagrangean optimization since root model was not solved. %s: Objective at iter %10.0f is %18.12g (%4d: %4d %s- %4d) %s: Stalling at iter %10.0f; no alternative strategy left. %s: Stalling at iter %10.0f; changed to '%s' rule. %s: Stalling at iter %10.0f; proceed to bound relaxation. ...returned to original pivot selection rule at iter %.0f. Entered dual simplex algorithm with feasibility %s. The model is primal infeasible. dualloop: Assuming convergence with reduced accuracy %g. dualloop: Attempt to divide by zero (pcol[%d]) ...trying to recover by refactorizing basis. ...cannot recover by refactorizing basis. dualloop: Refactorizing at iter %.0f due to loss of accuracy. ...trying to find another pivot row! The model is primal optimal, but marginally infeasible. dualloop: Trying to pivot out %d fixed basic variables at iter %.0f The model is primal infeasible and dual feasible. The model is primal infeasible and dual unbounded. Found feasibility by dual simplex after %10.0f iter. Found dual solution with %d fixed slack variables left basic. Recovering lost dual feasibility at iter %10.0f. Use primal simplex for finalization at iter %10.0f. Optimal solution with dual simplex at iter %10.0f. Entered primal simplex algorithm with feasibility %s The model is primal unbounded. Entering column %d found to be non-improving due to degeneracy. Gave up trying to find a strictly improving entering column. primloop: Assuming convergence with reduced accuracy %g. ...trying to recover via another pivot column. Found feasibility by primal simplex after %10.0f iter. Model infeasible by primal simplex at iter %10.0f. primloop: Lost primal feasibility at iter %10.0f: will try to recover. Start at primal feasible basis Continuing at infeasible basis spx_run: Failure due to too many singular bases. spx_run: Singular basis; attempting to recover. spx_run: Recover lost feasibility at iter %10.0f. spx_run: Lost feasibility %d times - iter %10.0f and %9.0f nodes. %3d SubGrad %10g lambda %10g %18.12g TRUEFALSE|<dualloopP1extraDim count = %d primloopStart at dual feasible basis Start at infeasible basis Y@??MbP???@Q?MbX?"@@@$@I@@zRx 4LL$dGA3AnA$QBBA D(D`4 BBB B(D0A8G4,BBB B(D0A8DP4dNBBB B(A0A8G@4BBB B(A0D8D@4PBEE E(D0A8D` iA$JQ0DoAD d{AAG0$JMT4>BBB B(A0D8G4BBB B(A0D8G4eBFB B(A0A8GGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.8.rodata.str1.1.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @OP{-&XO,XO12XO[@2]OP^\^ o^PjP y@b%ebebf uG  #) /50;(A8GHM@SPYX_`ehkpqx wL$3n 0Q%,@JT_fr|  )8AHWp`hr}N2FPUht~0io { )5CM"`ouP)>'4;LViu}8$Ge,;lp_simplex.c.LC0.LC1.LC4.LC19.LC20.LC21.LC18.LC24.LC22.LC35.LC38.LC37.LC39.LC44.LC45.LC57.LC58.LC59stallMonitor_creepingObjstallMonitor_resetget_artificialRowfindAnti_artificialfindBasicArtificialstallMonitor_finishfreeheuristicsis_maximtimeNowspx_solvepresolvereportget_refactfrequencyMIP_countGUB_countset_actionrun_BBpostprocesspostsolvepreprocessuserabortmat_validateget_total_nodeslag_solveallocREALget_Lrowspush_basisget_rowget_rhtransfer_solutionset_matpop_basismat_getitemsqrtcompare_basisprint_solutionprint_lpmemcpycheck_solutionmake_lagmake_lpset_senseset_binaryget_matis_binaryis_intset_intget_upboget_lowboset_boundsinc_lag_spaceget_ptr_sensitivity_rhsget_constr_typeclear_artificialsdel_columnset_basisvareliminate_artificialsfind_rowReplacementadd_artificialisBasisVarFeasiblemat_findelmis_chsignadd_columnexallocINTstallMonitor_shortStepspowstallMonitor_createcallocstrcpyis_piv_modeget_piv_rulestallMonitor_updatemodlin_solveunset_OF_p1extrafree_dualsfreecuts_BBdefault_basisbb_betterstallMonitor_checkget_total_iterlog10is_actionis_anti_degenrestartPricerget_str_piv_ruledualloopmulti_freeset_OF_p1extrasimplexPricerinvertrowdualpartial_countBlockspartial_blockStepclear_actioncoldualrefactRecentfsolveperformiterationbin_countrecompute_solutionis_fixedvarcolprimcompute_thetalogfindBasicFixedvarisPrimalFeasibleprimloopmulti_createmulti_resizeisP1extrafeasiblePhase1del_constraintcheck_degeneracyrowprimrestore_basisspx_runisDualFeasibleis_presolveT t $& '$ & )'o | * X* *1 >*K+P Hb* * *,, $*,-8-= N*Z y* X* *  >.M/\0f1s * 234 5%,0 h_*i (x*7, 78 8P 7t 7 9 : ;# 8 < &  *[ =w $ $ $ $ >'  : 8 8 ?7       @D83?8& M=c&q;;8(QAk>y9 * / *BA8} (* *89CH;P DE O*E * `* !,*H X^*G&HIJ=KLM'N6OHPvQRSES2UW.VXVUZS[V\\ ]V:HP t *$$ ^'7T`bc*dEe^jo`hty`gg" i* j; $W $t ky ' l &! !',!(6!8Y!&!m" C"6Y" m"*# 7 # 5#o3# (W#*e#eu###o#  #*1$g$%p%n% %q%%p&"'g'o' '*(r&(o7( hI(*g(s(e(t(o( )*9)s) /) *) `)* *7>*$U*vg*$*$*$*^*7,+w9+xK+yZ+ 9g+a+r+r,3L,n,z,{,|,}- 0 -*-o-  -*-}*.~. .*./ /*"/sA/S///q/V00y0.1 )1*E1{111 1*E2.w22}2o2 p 2* 3o3  )3*63]3r3w3.3.S4]4 0j4*z4.4 4*4m4  5*5 `.5*o5 5o5  5*6q6.*6K6S6i6{66666.6o6 6* 7o7 8 ,7*J7l7X778  8*,8w98.o8  ~8*#9 /(9 *19  =9*9Y979$:v:$3:$P:$:^:4:w:x;y;7<;dS;;; Y;aN<3k<}<n< ={=|T=q===w>,>>U>.?.-?z>?}f?op?  ?*?s?7?7"@=@J@r`@@ p @*@  @*AA 8 A*A. BqLBy+CPC.xCCFDUD BD*E P $E*^ETEyE,E  F*/Fo9F  KF*bFF FWFGVGoG h -G*G P G*HwHI,4IqeIqIyIqIqJ&J3gJ P vJ*J4Ko>K  PK*Ku&LIL\L,LuL  L* MCMoVM hM*MrMrM 0 M*Nr!NrINraN bpN*N N*NNqNN p N* 8 P h     0 0 ph    0( H h   " P) 8  Glp_SOS.o/ 1462526214 1000 1000 100644 28712 ` ELF>U@@ HGHcHDH@(ffff.HGHcHD@AWHcAVAUATIHUHSHL7uZG1҃tPE1ۅ$@HD[]A\A]A^A_fD9]|LHAACvDHE1HHx(PD/T$EUIcD E~MAEAAHAEHHf.HtA9}YA9AAADD~uG3W)D9EfWHB HfA. zXt2TfDA3Q)D9B HHfA. u&z$A9ΉHcƋ 1)D9ADE1E19A*WAHfWɾ3G)HAf.z=Du6A9Q3AH)HAf.{fA9Ef.fzfDt&FE1HH fAA9E9|{D9HcEfW1)DHfA. uGzEFHH f.z.A93H)DHcAf.tѐA%EfWɾDHcƋ FAf(HH H1)B HAf.z9u7Au@EDD$DHEf.z FHH -fD3H)DHcAf.zAufDE1DkE9D3H)HcAf.&8EfWfDSHHHt HCK ~XH{(Ht HC(H{0Ht HC0H{8Ht HC8H{@Ht HC@H[fffff.AUATLcN,UHSHHGJ<(W3G)ЃDMD9LED)OIBHH9GхtI9K(trAA)DAEt611҉I<IDofH9rDE9t)HcI ITHHHHA9AAEE~5LE11fDIBR1)9U}}UH9|H[]A\A]fmATHIUSH?HDGEw~%11@HGH<HI<$9oHGHtHI<$HGHG HtHI<$HG HG(HtHI<$HG(Ht I$[]A\ffff.ATHAUSHH/HEDEE1AH{(A~JArE11L D9AЋT9HAL9uDL6IcH4HL;APDOAHHE9}[]DA\[E1]DA\DHS(Ic[]DD+DA\DSHGHcAE11DH\HC(Hs8x HHHC@[AWHcHAVAUATIUSHH/uMG1҃tC(@A9\$|L~H[]A\A]A^A_DID$AHLp(E.IcEE|~dfWLA$CH 3s)ƉHf.$vD$ E~Ht AHE9}EE9|^fWIcI$H 33)ƉHf.$vD$ E~$Ht AHE9}1@3)AWAVAUATIUSHHT$ HD$HcD$ HW(E1H L,, H $Iϋ 9}eHcE1HfDIT$(AHB *9~1ID$ T$ L4yH[]A\A]A^A_f.H$,HD$HcƋ)ʅ~*ID$ HcHcHcHH4H<HL$;t$ |2L$ IT$(fB:IB*HD$I9}HD[]A\A]A^A_HGHcHtLV(E E~GABMйA3R);T$ u"2A@A3PI);T$ tA9}߸HcMDIfAIHA9}A*AQIcn A 9}TD)HcAyQI4HDMfDHL9t'HcA 1);D$ uڃHcA θK@AUHw(ATUHSHHHD$H߃Ht$H߃U~ULeE11fIHGHHƀzuA9|!HFHxtHGH@1ffffff.AWAVAUATIUSHxHT$HcHD$HHT$H DA~H(HIIH\$;HD$ Dt$HHHHD$pAIT$ H\$pA1HD$D$$B.9D$$HcD$$HHD$hHAjHD$D$(B)9D$(HcD$(HHD$`HAHD$4B)9t$,HcHHD$XHA7HD$D$0B)9D$0HcD$0HHD$PHApHD$D$4B)9D$4UHcD$4HHD$HHAHHD$D$8B);D$8HcD$8HHD$@HAHD$D$AA3HٺE1CI f.wAAIfB.ztHD$(HA9D9|D9~A~މALD$@D$8HcL MfA.uzD$8HE1^fDI f.D$82HT$@H$AD$8LT$D\$LT$D\$HA90D9|D9~E~މAHL$@D$8Hcf.t{mD|$7t{HٺE1D9|D9~RA~KAHD$@D$8HcLfA.zt'I f.D$8MD$8AAHA9kHٺE1+I f.AAHA93D9|D9~A@~ۉAHD$@D$8HcLfA.u{AWHcAVAUAATIUSHhHD$HHT$H DA H(HIIH$;HD$HHHHD$`IT$ H\$`A1H$D$B99D$HcD$HHD$XH\$XAKH$ B>L$9D$H.HcD$HHHD$PHAcH$4B99t$KHcHHD$HHA H$D$ B9;D$ nHcD$ HHD$@HA7H$D$$B99D$$HcD$$HHD$8HDACH$D$(B9;D$(HcD$(HHD$0HfAKH$D$,B99D$,HcD$,L4DAB2unH$B9,9HcH&fDI|$(HB?H9IT$ 4LDtθHh[]A\A]A^A_fIT$HHHHP( AH4~?AHt3A9tAHHfDtHA9t9}fB?HD$,I9D$,I$H\$IT$ H DIT$HHHHP( AH4~OAHtCA9AHHf.tHA99}fDB?HD$(HD$09D$(I$H\$IT$ H DH\$0IT$HHHHP( AH4~OAHtCA9dAHHf.tHA979}fDB?HD$$HD$89D$$I$H\$IT$ H DH\$8IT$HHHHP( AH4~IAHt=A9AHHf.tHA99}B?HD$ HD$@9D$ I$H\$IT$ H DH\$@ IT$HHHHP( AH4~?AHt3A9 AHHtHA99}B?HD$HD$H9D$I$H\$IT$ H DH\$H+IT$HHHHP( AH4~?AHt3A9jAHHtHA9G9}B?HD$HD$P9D$I$H\$HIT$ H DH\$PMIT$HHHHP( AH4~?AHt3A9AHHtHA99}B?HD$HD$X9D$I$H\$HIT$ H DeIT$HHHHP( AH4~FAHt:A9)AHHtHA99}B?HD$HD$`9D$|I$HT$HH DHGHcHDHP( AH4~AAHt5A9AHHftHA9g9}1^ffffff.H\$Hl$HcLl$L|$ILd$Lt$H8H?AHډH kIE(E1L4l9,~u3"L1Ht$XHt H1HhH[]A\A]A^A_HL$LT$L$L$LT$L$|$4E1I^(A~BwE11L D 9AЋT 9HAL9uDL6IcH4HH D;APDOAHHA9~%GE1D$HIDDHu ukL)~4HAtHBHIT@H*fLd$Ll$ILt$H\$AHl$L|$H8HAtiH/HcH tTuwHG(L,l;,HcHID$(HB9,(~nID$ DL4u1H\$Hl$Ld$Ll$ Lt$(L|$0H8fHcE11LJO@Y]kp{p90 L P & 4;BLS 9ck`M{Nae=0&a`/ 025:/@7 >EP9R<e?yPA@DFHpJ lp_SOS.c.LC3SOS_member_countSOS_get_typeSOS_is_satisfiedfree_SOSrecfreedelete_SOSrecfree_SOSgroupSOS_membershipsSOS_countSOS_member_indexsearchForSOS_infeasibleis_semicontSOS_member_deletememcpySOS_member_updatemapallocINTappend_SOSrecallocREALreportsortByREALsortByINTcreate_SOSreccallocstrlenallocCHARstrcpyresize_SOSgrouprealloccreate_SOSgroupmallocappend_SOSgroupSOS_set_GUBSOS_is_GUBSOS_is_markedclean_SOSgroupSOS_fix_unmarkedmodifyUndoLadderSOS_is_activeSOS_unmarkset_intSOS_is_feasibleSOS_is_member_of_typeSOS_set_markedis_intSOS_fix_listSOS_get_candidatesSOS_member_sortlistSOS_shift_colfirstActiveLinknextActiveLinkisActiveLinkmake_SOSchaincompareREALhpsortexallocMYBOOLSOS_is_memberSOS_is_fullSOS_can_activate y<R         ,?  <G @Vk @ _"y#$%8 O'|") ';-/ !0!^"0 #$0%0)1/2@010)135676Y8879559398:;0;a<3=N> X>p>>@0@@ @ @AA;BB<B=B>KCC:DDDE @EAEEBTFzFF:gGG,IDfIJKEVK.M ;M. 8  P 0  @  p p  X 0    P    0 `H h     0@ &x `/ 02 5 @70 P9h < ? PA @DH Fh H pJlp_utils.o/ 1462526214 1000 1000 100644 20712 ` ELF>0@@ ATIUHSӃHcHGE1E1E1LDK4JTAJHHHAAHDEHDEIM9uDD9~EIcH|MfDA0AJЄAADE@DEAHID9E~ Eɸt&Eu EɸE AЃfD[]A\E1E1A_fffff.f.f(v8x4 H fDHfTf.vHH9uHHHHHHHHDT A D AEIcAA1A)D)ȃ~;A9AIA D AIcAA1D)A)ЃHcAA1AA)HH4@D9A9DDA9uD9tfDAIBD AIcD)ȃ~9|~EDD)ȃHcDAHHA9tDHA9~fDNDEA9D[HAA1A)6fDEQSEQffffff.H HcH  \f.D%f(fWfTf.v>fWf(fTf.vfWHf.ffff.HWHcƋ uHu 92fGfff.+Gf.HGfHWHDÐLGHc1DEEu9C HcHA HcA4BHA A4DGEtGw wLGLc1DGEuIC HA9ttDHcIB HCDHcA A4;O}O;O ~O GfDff.y D;7;w }GO9~@HHcƋuۍFHHHu&9HcƋHGHc֋Dfffff. DA9G 9;w~K49}PHHc‹u̍BHH Hu#9Hc‹HWHHGHcҋfDDFHH AD0HHD9=DHWD EuD Eu;2t@HHD9~1ff.1ffff.SD~D9~AD[9wHOBLcHcFDtU9w tHBIcE҉Bt!C HDЃo[DC HD\D_ f9w DWufffff.Hwff.HSHtgH?Ht_HGHtHH;HGHGHtHH;HGHtH[f.1[DHSHt7H?Ht/HGHt HH;H[1[fff.ATIUSO AAx9LOIcI94JADHI fDHHH9tu[]1A\DHcHID$x܄IHHtH[fD1ALA 1[AWAAVAUIATUSHHHt$ARHD$1AAEH~OH1fDf(\AfTf.vIHcATHA9}DD9 kEIHD$({LcJHcHHHLID$ID$AWJ<It$H\$HID$11fHcHHWH9HD$H[]A\A]A^A_DsLLcJHcHID$@AHcHIEHD$tLHD$ffffff.IIHL(…t@IpIy(…uAIpIyL HcHH9(H\$Hl$؉Ld$Ll$ILt$L|$H8IHHI$u+H\$Hl$Ld$Ll$ Lt$(L|$0H8AAEEDuC<6HcI4$HCH~tM.E1Ʌ~cIcEMH<E11AxD9t$HFIcщ D 8D^EuNFN AɃIH9}D-HVHDLFHFE1fS HH[H=$u1*^Y$Hfffff.f(H(h fT $Xf(L$L$$\fTXX^f.H(ffff.H8f(H|$(L$$f(f($fTD$f.w>%f(\D$f.vf.r,f(XT$(f(H8fT$(H8f(ÐzT$(\fSfWf(HPD$8f.t?f(f.wED$(fTf(f.v4HP[fDzHP[HD$(뷐f(L$$L$$f.f. L$8s(z&f(H|$@$X$f.H|$LD$8$D$8,*$H|$8YD$0D$8^D$0XD$0|$LYD$(YD$8D$8D$8f#f(YD$(XD$8H,HH*USHHfW1f(DH9YX}QэnH\f.zGuEf.v4D~+EHKHSHH)@^HH9uHf([]f($$f(fW1f(ff.Hl$Ld$HLt$H\$ILl$H(Au9HcHHEHtdH$Hl$Ld$Ll$Lt$ H(fHcH}L,LHEt1LHHEHuf.E~1DLA Adž1qHcHEQf.Hl$Ld$HLt$H\$ILl$H(Au9HcHHEHtdH$Hl$Ld$Ll$Lt$ H(fHcH}L,LHEt1LHHEHuf.E~1DLA Adž1qHcHEQf.AW1AVAUIATUSHHHH>D3HCEH$DL{E1fH$C FDE9ImIcEADCTLLLȃH9G…t 9A AJt^)Ét5f(1fIf(ff)H9r9tHcHDHA9CETIE9:H[]A\A]A^A_HcHW11fffff.H\$Hl$ZH(H1Ht$tH|$HcHHHD$H\$Hl$ H(fHl$Ld$HLt$H\$ILl$H(Au9HcHHEHtdH$Hl$Ld$Ll$Lt$ H(fHcH}L,LHEt1LHHEHuf.E~1DLA Adž1qHcHEQf.H\$Hl$ZH(H1Ht$tH|$HcHHHD$H\$Hl$ H(fHl$Ld$HLt$H\$ILl$H(Au9HcHEHtXH$Hl$Ld$Ll$Lt$ H(fDH}LcLHEt1LHHEHufE~1DLA Adž1HcHE]f.H\$Hl$ZH(H1Ht$tH|$HcHHD$H\$Hl$ H(fDAWAAAVIAUADATUSH(Dg HD$ HD$HD$DGLO1 Dy9|4> HcAAA1)A9|q9}9;HcAFHIf.H9}AfADvI>Ht$DL|$9~NMtIAF AV9AF AT$A;V IcH,L$IFL<(IFF, H(L[]A\A]A^A_@IVHALHt$ DL|$ E1AI>Ht$DL|$x1>Dff.Hl$Ld$HLt$H\$ILl$H(Au9HcHEHtXH$Hl$Ld$Ll$Lt$ H(fDH}LcLHEt1LHHEHufE~1DLA Adž1HcHE]f.D1D;GSt|LWAukMZLA9p|\9G ~?DOA9}6A u2Hf. HuA9|HA fDA IH9Ήt[@AUATUSDHD;WHoC HcD;TuCEjLDDC*HHLDZ(IHD9tE[]A\DA]A9|ӋC 9|9S}NE$A9~CAuIAIuD9|HcNjD@[]E1A\DA]AuLW1DAuiE~_EؾADC u5CHcHA HcA4BHA A4GuwGw IA9}DAWAVAUATUSHL'H|$AD$ MPHc‰L4L<H)IT$HHD$Lxt@AT$ ML$AK49Ax5IcI;4BDHIfDHHH9t<uIIL;t$IT$MLy؉f.ID$Hc xI:@@ HHLJHLJÐHHtfp&HHLJHLJÐƇƇƇƇt Ƈ@t.ƇfDufuEtƇfDÐH8Htfpf.H8HttHB @X,Bff.HHt@$f.Ht#9w}@LGH111fff.Hf(t9t5Ht5HHXHHHHufW뽄tluhHHt\J"fxz$B ==tNfz tVfftNXJJvf.XXXHfDBf.vDfB"1 @XXXffW;f.J?DfD1H\$Hl$HHHPHXH@HtHǃ@t HǃH\$Hl$HSHHHh[fDATUHSH HHHtBH@HHuf.HRHHt9u[]A\HH 1HA1HtEtHǃHl$H\$HLd$HHHHH ףp= ףHHH?HHH)HHHH9uHE1H L[,H(ILHH(H(H(HtOH[H$_FH$_HHtHLHD(HD DD1H(H$Hl$Ld$HD0dHH(QAA}1HDž(fAAL11HDž(Yfffff.Ht+DGELGHѾ11fD1@HSHt7DOE~LGHѾ11H{fD11AWAVAUATUSHIhApH|$@HT$8(HL$0LD$(LL$ IǀAƀIǀIǀIǀ8Iǀ0IǀHL$(HHH2 H1fB H1fB"HBHB'fB&HǁHǁ HH1'HT$(HH HH%H|$(T$ HD$(HHǀpHD$pƄ$E1HL$(D$_H҉HD$_1L,ЉT$HHD$/EHIH;l$HL$(HǁtQHD$(Dd$HA)HAǀ$uEtHCHT$(HHIHH;l$uH\$(HHt,fDHGHT$(HHL$(HHuE1|$_t3H\$(HHHh HxHIB $HT$(HHH H<HHD$h H\$(HHH H<HHD$`_ HT$(HH@HH$DŽ$H$H\$(E1AH(HcЃHRD$|HHl H E1퀼$uYH\$`IcEHcEHT$p<tfWH\$hAH]HHH݋UHL$pHc€<~HH uHcH@M$ID$HX HCHcEHL$pH@I\ffA׋D$|HEHCrDH|$(T$0H|$(T$ HT$(HHǂpHHH'HxHL$(HHpH|$@iH|$@HL$(HH9~=B1HcDfWH|$@111AHT$(H+HH9Lt$@Ƅ$HL$(LqH\$(HHHNHxHHD$p&HT$(HH҉HH|$pH1DBH4fDy$ЈHID)HHHjA&ftɈDHL$(HHtH\$(HǃHD$(HHtHT$(HǂHL$(H HtH\$(Hǃ HD$(D`EL@11f{&{$tdC ffDbffDufC C"f2fufC"CfWCCfWCf{"x4KA f.HCHCC"fC"fC ECDLf{"CDL\CfED$_WHD$(D$_HpC fB*8HHLAA11H\$(HǃpDHT$(1H@HPHXHtHL$(Hǁ@HD$@HĨ[]A\A]A^A_HT$(H HXHufDH[HsHLuြ$tH|$@uLE1H\$(HhHt H9|$8tHD$(HHT$(H HL$(Lt$@HpHH\$(Lt$@Hǃp@fWf.u @f.KfEfC fC"S DLHL$(C HpfB*fHD$(HHJAAT11@AA(11H\$(HǃYfC"DfC DHD$(1HHI$@HH]HHuE1퐃$$HL$`HT$hDLH$HL$(HcBH(H@HDf.fW$LH$HL$(HcCH(H@HDf.$LH$HT$(HcCH@HH((wDXE1DPEH$$LH H$H[HH$wHD$(H(HtHT$(Hǂ(M[HL$(H=L$D$LHDŽ$@H$Lc(M0HIMH$@ D$LL$LBHz AMfAEH\$(IEIE HD$PH0IE(L0 H\$PI HHH$HD$PIl$LHHCA$CID$AE HCHuH$IUHL$(H$H$H$H;LHL$(H0HE1E1$H8HB(HZH0tVB 1҅HcHHIHL$(1H8@ NHcHHI'E1HsE1䀼$uB4IcAAHCIDH;Ht HHH'HCHkuIH;Ht@tfDfDHD$(HH AA11MtLH|$pt H|$pH|$hH|$hHD$(HHLR11AAHH|$prH|$pbHH;HkHt HHHuE1D$tHHL$(MELH8PHL,$H0MtLMfDtLH\$(H8HHtHH8HHkHD$(Hǀ8Q11AAMtLH|$pt H|$pH|$ht H|$hH|$`.H|$`DLHID$HcEH@IDHL$(HH AA11HD$h$LO$LHT$(H8P HcAARH11E1HT$(H8P HcAAQH11E1.AA6 11+$LH$HT$(HcCH@HH($LHcCHL$(H@HH(X$L^HD$`HD$hH|$pfHH~[E1HHHH9|5H\$p|3HD$(AIcHp9fQHL$(H뻅҉~CHl$pAHEe1HIԀ}At~LHD$(HHHL9uH|$ht H|$hH|$`t H|$`H|$pt H|$pMoHT$(LHhHL$(H\$(HH4HHH<HIHD$(I LHHHL$(HH~QAfDHT$(DLAHp(HHL$(HHHH9}I HLMiLDWLHD$(HH AA11E1!AA%011`MWfDTH\$Hl$HLd$Ll$IHHHLdH%(H$1D$HH+HH(fWHcH@HH@f.vqT$f.ve@HcCLl$MLH@HD}KH(HcH@HH@L$f.wF@H$dH3%(H$(H$0L$8L$@HH@HHcH@HHf.LEL11QH\$M1HHھH_1EfWH\$Ld$Ll$HHl$HHIdH%(H$1f.AD$%HLHHHc@H(H@HHD(Ht D9(DfWD$f.zT@uNH$dH3%(H$(H$0L$8L$@HHf. HHHcEHH@HH(HP(HHrD.HcEH(D$FH@HHT(HVHt(7Hl$I1HH>{LCH11fWL$f.zXHHfTf. H@fDHH1LH1HYHfWHD$f.z. HHD$D(H@HcEH@HH(HP(HP fDHp ^H11W1AA @111AA 11_USHHdH%(H$1HHt;H(HH,HH@HHAHXHHHHA`fA"fA&fA tEPf.I1H{H@HHǃPHǃXtHǃ@ fDH$dH3%(ukH[]@HH]1҅uDLCH11bAA(111fDUSHHdH4%(H$1<=G~E<>tSD1HHC14fDfDtF<<@uuFf`H$dH3%(H[]ÐHH8h tulEuHfDHHXz$tffDfz"uf9j fj"]H~vHfh 7f fDLC1H11H1HfDt1HD[1`r1H11qfDH1@H1'fH\$Ld$HHl$Ll$H(HI$DHtYHEEHtiHHHtb$DLHHl$H\$Ld$Ll$ H(H@HtuEufD$1ҐfDH1҅uH\$Hl$Ld$Ll$ H(LHHtRHxHH@t2LH$DHXPP@LHHJAA11Hǃ@ffff.fWH\$Hl$Ld$HHdH%(H$(1f.PHXf.z@tvf.fvf`fDt^f.fv f`tLHl$ L@1HS1~[LC1H11=Ld$ L@1LHǃXH$(dH3%(H$0H$8L$@HH@HH@L$HIL$Pf.`Xf^ffty7 IcD$H@HH(XH@f.H81Xfǃ`^PIcD$ f(H@HH(X@f.PN`ftfXfǃ`^PIcD$H@HH(@\f.ww`{@LCL11HL$L$DP`VHH1H@HIL$tNHL$HL$H$`$H^1$Hl$Ll$HH\$Ld$H8dH%(H$1Its<<H$dH3%(H$H$ L$(L$0H8fHLHIHc@H@HH(DEfffRHLHHc@MH@HH(pu@ fDM1H}LEH11AL$H(HcH@Hf.DHcH@HHDH(f.@!H?HxfDHLHHHc@H@HH(Hf.@f.@@@1MH}ILEH11*0HHgLHHhHxHHHLHH0fCZH8HX(H8 DH HHLHHHxHHLHH8HzHB HXB HZ HH@{DIcD$H@HH(f.@fDMH1HHIcD$H@HH(LHHJAA)11HHfMH1HHdAL$H(H8HB 1MH}HcCH@HH(?f1MH}HcCH@HH(HM1HHKMHHHb{LEH11$LEH11EMH1LHHJAAB&AA&011AA? H0HZ %s on line %d ../yacc_read.cinit_read failedNot enough memoryError: range restriction conflictscalloc of %d bytes failed on line %d of file %s realloc of %d bytes failed on line %d of file %s malloc of %d bytes failed on line %d of file %s Unknown variable %s declared semi-continuous, ignoredVariable %s declared semi-continuous, but it has a non-negative lower bound (%f), ignored(store) Warning, variable %s has an effective coefficient of 0, IgnoredWarning, variable %s has an effective coefficient of 0, ignoredError: unknown relational operator %cError: range for undefined rowError: There was already a range for this rowError: relational operator for range is the same as relation operator for equationIneffective lower bound, ignoredIneffective upper bound, ignoredError: bound contradicts earlier boundsVariable %s has an effective coefficient of 0 in bound, ignoredError, variable %s has an effective coefficient of 0 in boundUnknown variable %s declared integer, ignoredVariable %s declared integer more than once, ignoredVariable %s: lower bound on variable redefinedVariable %s: upper bound on variable redefinedVariable %s declared semi-continuous more than once, ignoredUnknown variable %s declared free, ignoredVariable %s declared free more than once, ignored?$_F$_ꌠ9Y>)F|=zRx 4/Lod|54jD]LG ABAD 4JL T<lPD4BBB B(A0A8GJMJHSOAAJwACJ<JQ0\Z|JTGCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2.symtab.strtab.shstrtab.rela.text.data.bss.rodata.str1.1.rodata.str1.8.rodata.cst8.rodata.cst16.rela.eh_frame.comment.note.GNU-stack @0H&0,0120A@201"OX60\6 o6jb yH9%m9m9> E @4H$@   /49> DJ(PU Zb /nPo5 j]Pp $</P?GPQckr| !.;CQ`ls}0!wp$&)yacc_read.cerrorinccoldatastorestorefirst.LC0.LC2.LC9.LC12.LC16.LC17.LC4.LC8add_rowadd_sos_rowcheck_int_sec_sos_free_declset_sos_typeset_sos_weightnegate_constraintreportrhs_storenull_tmp_storefreeset_title__strdupadd_constraint_namefindhashputhashrealloccallocread_errorlex_fatal_errorlongjmpyacc_readcreate_hash_table_setjmpmallocget_Nrowsadd_constraintexset_verboseset_rhset_rh_rangeset_row_namedelete_lpfree_hash_tableset_constr_typemake_lpadd_columnexset_lowboset_upboset_col_nameadd_SOSget_row_nameset_semicontset_intset_unboundeddel_constraintset_lp_namememcpyset_maximset_sec_threshold__sprintf_chk__stack_chk_failstore_re_opvar_storestrcmpstrlenstrcpystore_boundsstorevarandweightZ   !X#%&';(Q a (m  `  (6+J(:-V-w.f!!( /O /  !D / (% 0^ 1 2 (Z ! ! !   K ]  3 4 ) (7r!56!&777V!|8   (* : (H9!:%D;r<=(!/#/T!!/!/m!|!%  !!$!D O (]s!!!>!!!6!V f p}!!!!?#  ;<O;l {      @DApB0C\!n!!D/ EW8E!F    u% H  HIF%(q hH ,&o(I  (  ! (-  ( ! !HD!!! !! (! !!I)" ="Hz# ## 8$1$I6$ hO$  %Ld%Mv%/%N%M% % %& x&H& && 8&H]'%'' 9((( )) p)&)I) ) /*%+%,+ \+ p+H+ +++#,%U,n,, ,H, ,,(,M -/$-Nl-(-M-/-N-$. P8.Hi.Mv. . ..!.  .H/ P/HF/  X/H/I/ /H/ /H/ / 0 0%0 >0MK0 \0 l0 (z00 ap 8  P Ph     @   P p8 X p  P 0  @  !@ p$` & )PK!΀_P P )hypdb/modules/lpsolve_dev/liblpsolve55.soELF>09@ @8@"̣ ̣  ))h"  ))Ptd""QtdRtd ))~g2CAQt 2nkk\wO t <2Y6 ~[Op%?5?TZ 9k3\ N.0ljI4rk1E:`B:>=*i._qDYH}8jt((9Yl* } tPG1|sB91#/b7[-0PR3UXYKW(EL UAK0I:L xtn:y+zF4DwM8B!WC[ x?+|}157ifZI+ $Ws[iU${[!J@X9Sy ;+6Jvx0mpy)qKM><ofzVj@bj^@JMo===KrfQ-nmJ4a5'HseQC&A8c*#H/G/l:&Xz{&wL {guA|GHLXa)<i-'a{b--F0S)quG"6&a?hD*V$KyNodFE2%{!"\Uzv]ci1ePQ;  Z `;B^ gn}IFZ]ro6|7eY+bn_8%3=7(BR` pW~@l3xgN dOU/"2`vH~Gv,5j#_MseCL894^#x\frE#QcOyD!h>R_q>)z"Vsc. T&VF>R ;J .p^X$omS`]T'(.$R*_!?,dT|lu3E P<pN aON5qDhW7)'uTdhrbww/4Ag V'Se ]^\;v"Zh%m]I}@ dmuc ,,kP%6M~ SC,<fN @w$`! (RC&" B "AÈm *x ``(@dH Hà8|iQBLD RBDdA*l $B`fQ-Ql.@ K<"0ȐW)  @""`QE50d aXH$`PX 0`PCtL 0%QB"a` $@@ 4C%Fl) @s @ l dYq@ B Y d@`0H%@%@HD A@"Dl D(<@@ A P ( "Q(AQCdb@0 BT@D& $"$ `$@@M !pp,1 X.h2~0  Ad8(#!!TjMm"  G݌Q!PA!D}o€ dJ ,(dl!@H plJ @L P)1A L 9eD$dAH, _@( !!@ X bS`T@$p ( @HAFX )Q@ p8 A$`|% a$F 0`)K F BB$ IDA`ReH pF `4!*B Z"` 8d0Q P Q  ` !aZ  R0 R)`NRTUVWXY[\_`bcdehilnoqsuyz{|}~   !#%&'()*,.0123589<>@ABCDEFGHJKLOQRSTVYZ[^`befghjkmpruvxy{|~    "#$%&'()*+-/135679:<=>@BEFGIMNOPQRSTX\]^_`cdehiklmortuvyz{~    "$%'()+,-./0125679;<=@BDEFHIMORSVXZ[\^_`abdegjmnopqrsvyz{|~   #$%'(*,./24579:<>@BDEIKLOPRSTUWYZ^_`bcdehijmnopqstuvxyz{XU<({H=9 R"k{w9<č 4YUh3~stu~MO&f:" 3c7áMhjo vʼn< KNnpNUbOpp\JGfs/G5?W{E$[l BԯV(wƝܗ{+ {&WCuX2yJ0wx*qG+f皒n?2t=wr8/u.n>788>Dgu:^w;C]ڥ+* o &ش|q䂯GdFGUy^wy楺%NkPFu\0%Wϕ'81j"ǿsPUkhqyupܷmCEDGC _bO,TQ??ZtH)971%u;"Ao͹'L:Z֌ő/VYa!&9rB3~yťa'9Kmg ysK(D*RRV+>_Ïaڀ%9$w:iE l[r%r<(wGq?X/9{B,.iETmGĺlBOU DisR+^Nè7ETI \q Yucc~;\U5rn5N]Gb֋KMR`$zR1m|̐(k$(~=bip8 rzAA_^ͤSzɲyas zFVq=%.:+"Ʒv(0)-|?*kx~ԡ*^Z5&7+Pws1-|!UxoIG!Bϳhٮٕ >>j TcM0[߂Rӏ͗BN ӾQ“i;QC:gGg~Y 6z٘+*W~![5Em;r+/*wB<1KYW:9w`4;/yolVQZ]Z11G5CgfhH׀]Ww|]ZĄOij#N%+ ͚^9ira*K[Wkp4I_ȴ"+ش4d8Rcj=` #Z.} E|0iYJM:UiXbOӰITU{XRD}H4J"4Ja.c(_N3.ibOX+ I`%+w6vZc~RhCXCo-I8Xt1viAXh[ut]ZѤ|*]'^sCaX`#aU#' C;scH#R;+3v^u^*咗'>}D؈^ j$麱Av0QaX{c_@qU eYg* p'{sEmOKx*QQy(\Fc/ɞZх_xzbS҄Kx* J]С HlqՑ/MgDwJ{##?#Yy-|?Z lUW#J&bDӃA?aoǼE$@zHS(j~,Bm[Q2 {:U͗-ۈe 25t"uP%K51 9b+|GaG2A!ܸo= 4:w: U-z"}: % :c-=')# _lj"]mu  x4Wfq::[ #0$-7l""!6d'-g{?  }/1 05$  `X  ]2 m $4 =# 9F. P~  `~  +   ]0 9 0+ 0 .  m'   % `#\ 02 P3~#   " 0f!  X7 h9" f ^) І~  `b @;u, % F_ P/ (  2%   4 * - C7 `G}+ 8 p 6 `t/    @   Y  p?/I P" @*V[  CF\2 @F u/     3Ke R ' 7=  0 GIj  ,  p|2* @  4a  `_?7 X  =4 l+ \$ P K ,  `5  ( `Z/ l MX `*6 0  5 ( 0@ Px6  p,5  & ?;)A @om p%) 4a px30 H* If5 M8 8  +La @LW )1 4 R ]v Ob0* pG+ C Ih Y O  HG) 0sS:- L  p D P L @!1 0  @Q 0P3 ' &   5, @; 0h' P723 0d% |]8 Ё\ P F6$  # 8z  :* 3\()z  P4$8 PL & `% 4   ;72 Ei `KO# U  Z( 0  y Y' Vn [ &. R" &Z: m[  p ^ 0z `6c-'  @ ,  Po 7* @B p 8( % m  @9 t 0% P    `*   / u 2 P + @ ,4 ` V k" @j )  p  @~i* 0 S V  `gN$ Y :( ng x8# P @V/  @ # мP `?   c- ^) I >N  ` @ H ! u=+  . H( YE<& P0#x  `KI ! 6. 30k  +GB .g 9 0-   P& " @$  m) P ]6 % 0\ 1 )6 @  y6 ' M8 n PCE4 u 1Z' 0%3 i G     ` )2 Z 0 5' p,kV `<  @ XQ  D|  N J W E , 9 m3 >  W%( ZH  @ r 0@9 @)" =& (\ `   0 qT  ` 5 a (h *( ;X @.o +  k @& 0@% 2 @C : NG: `) g^  0c  а Y]  Yj Y" * `$&   0) B_+ , 0& 0 G m( Z@  0( P "| eX %u + #;) v p,/    P  Ip) " c.  Pr z7 pi/ >e  ]0  =  P # A " o>5 >, XB3  8 ЛH  CW 0;) P#  H" x  A p, H) c/ 0 T   6}  T 2 9 `vA  pUN ;. ] ` s" pW  @ B   8|) 0a  p z9 :G- M8 0j 6 p    }J'" }I  IS : G?- P `i, _ @k  0I/' ##? P X 0s "  1 @/;P)' 0: N @U,% G Z& 07 0&Ig A& P<3 b{ ( >4  @t 1 (q 40)5 @ ! O/ + @   PeH ! )#+ 8l &R78 $ hU" p P/+ J  , < %5; ~& @'. @) `[Hi/ u P+ p - 33  0   u PX! 0\ py6  }%: P Ja3 +- =F+ 5 . @  ?n 8   t- аg"  ,u$ ,   Y"  p% `MB J F0&  pP ~! P)( [@: @b!% Pu 6x6  ? v ( p & 8  @I  0J   `%  4 h># Сn1 0|4 )  Ь> Y]1 9 0 s 0lc в ! Pf@ 0}c @I(  p=3? 0   % w}  j#  pG 0 L0 W `&6  r ~ 4 W( n5 P " }3 B PLz 0y", + P ! r $ L  {  .x  P4P# `WF Y  5 @9! p` kb #   K2 F2w @>  `:9' pH% , +{/ R  : 'O, P=h V  n7 R% pV$ U j4'6 0}$ }6 x#   0  p `H  T X  : F$ PMv 6 1 O 8:: pB% GW* m" }'% 0 ]! `j9 fM w62 0n @N    # 0o DE ` Y 0QJM `  pd&  7 `1 #w#   Pv 9j W/! Gn ` + @j 1 \  $   S! i`6 @/ 3# e p M fX$0 k  = e  >76 ."! U   d3" P*H)f$ pZ9 eJ @ A. py' %  `G Y " 3 L @ b $e     `* Y : `$/2 /} P-]  @-4 {  `/s$ =  f]# pu   `D 4  QhH/ @ p'5 }R W N% {$   pbI & 9  P  0  - pL  (  3 !9  e m! `S 8    `:  Z  @($ @S w * p7T d( pDu x6 8 4+  @ `3 |S *H)G6 0 . r- ["  < 07z3 P>\M0 6 P 9 * PK (% j) p' S7 j97 pI$ 0(  P -  L pJIm pX  p% Q' @$# Pc  %9@  6 e. G x P#m [ В} ( py70 @o 7 p4 6? e& @) dV1  p48 uf: $ R9 ` 9 ?8   pN ,4 G : p?8 i2 # ' 7 p[  M &#&7 G'2 7#  p74 `  r p &  y @+ o @)FN4 P]  1j$   Ы)  @Z7 Qv0 5 @ `k* &    P A1 `  0 p//  0']V K|7 p . Y {  , . g X:! @O f@  S `$] p>5 07.  z3s5 XI8 Ѐ?  *<*( mF  q% , 5  Q @T1, " 8S  GL 4 p  gN* X$ 0Y8 XK( H8 p{zD 0: p 0|e6 Q% @R5 9 PQ 9b* p< 0 P Q! |i' .r P ` G7) s'6  `  P  & 0=c 8)  -  7 \UQ pL# =79 q( ' P P.6   0gZ 5  2 "J3   , @ G2   @T>  ~D  j   `2tS+ w .N2 @J6)! @`- p5'  @/$ j4 Q- 0 P] " `0Jv& P5: g.)0 0|<* P %j 9bH& p  Fx @*- ` - PCQ%  S) uET  0n $oH! `hh& p4 r    Z X+ 0 " `9 0oM 0#+, a# 9  @o H Д|E   0V 0J9 ` ~ {1 .o 3 qQ. 00  0Mf9 py) u3 pRh `5 0^}F' PN q j0 6 0w* P [}9 P, =%q9 Z &9  @_,  <  B  B4 @8 4 @ ! p q8 p3:   a. N7 JG ph^ u4 9& ?} ! `% p+  p  !2[ p   q7 Z6   Pr$9 qb( @ZM!* 04 UK a,- @K }) `5 Py P'1 g p7 pW% `     ) 0) `ntM + %  $ 7 ^dm  D 0H3 G4= p^  0  p@ `* 0{/ N -L-: 0!$ ":' K 3L}. p 9 @9  X - 0 P( Z 0M  F PA6=: P Y e pd: yz( P/ =c4 L- C&) W (9 "2 d1. p,5 K1 p P#  @ VS pn! pt [  5/ {+ t* >  H % 7- q& D _"  `( 0k' 0Y+/ * V hU, ,sr2 Y-   `&  oI9 7 __gmon_start___fini__cxa_finalize_Jv_RegisterClassesincludeMDOverifyMDOmdo_freemdo_callocprepareMDOmodifyOF1getMDOallocINTmemcpycolamd_recommendedcolamd_set_defaultscolamdsymamdintpowgcdfindIndexfindIndexExcompareCHARcompareINTcompareREALQS_swapQS_addfirstQS_appendQS_replaceQS_insertQS_deleteQS_sortQS_finishQS_executesortByREALsortByINTsortREALByINTprintvec__printf_chkputcharprintmatSQprintmatUTblockWriteREALfputsfputc__fprintf_chkblockWriteBOOLblockWriteINTtimeNowftimeqsortex_finishqsortex_swapqsortex_sortqsortexmallochpsorthpsortexso_stdnamestrlenstrcpystrrchrstrcatstrcpylo__ctype_tolower_locstrtolostrcpyup__ctype_toupper_locstrtoupmm_is_validmm_typecode_to_str__sprintf_chkmm_write_mtx_crdstdoutfclosefopenmm_write_bannermm_write_mtx_array_sizemm_write_mtx_crd_sizemm_read_mtx_crd_entryfscanfmm_read_mtx_crd_datamm_read_mtx_array_sizefgetssscanf__stack_chk_failmm_read_mtx_crd_sizemm_read_bannermm_read_mtx_crdstdinmm_read_unsymmetric_sparsestderrfwriteis_nativeBLAShBLASBLAS_daxpymy_daxpyBLAS_dcopymy_dcopyBLAS_dscalmy_dscalBLAS_ddotmy_ddotBLAS_dswapmy_dswapBLAS_dloadmy_dloadBLAS_idamaxmy_idamaxBLAS_dnormimy_dnormisubmatposmatrandomseedddrandrandomdensdlclose__strcpy_chk__strcat_chkdlopenmustinitBLASdlsymunload_BLASinit_BLASini_closeini_readdata__ctype_b_locstrchrini_writedataini_writecommentini_writeheaderftellini_openini_createsymamd_reportcolamd_reportlp_yy_flush_bufferlp_yyget_extralp_yyget_linenolp_yyget_columnlp_yyget_inlp_yyget_outlp_yyget_lenglp_yyget_textlp_yyset_extralp_yyset_inlp_yyset_outlp_yyget_debuglp_yyset_debuglp_yyget_lvallp_yyset_lvalfreadlp_yyfreelp_yy_delete_bufferlp_yypop_buffer_statelp_yylex_destroylp_yyalloclp_yyrealloclp_yylex_init_extra__errno_locationlp_yylex_initlp_yyset_columnexitlp_yyset_linenolex_fatal_errorlp_yypush_buffer_statelp_yy_switch_to_bufferlp_yy_scan_bufferlp_yy_scan_byteslp_yy_scan_stringlp_yy_create_bufferfilenoisattyread_lp1yacc_readLP_readhandleread_LP1read_LPread_lpexread_lplp_yyrestartlp_yylexstrtodcheck_int_sec_sos_free_decl__strdupstrtollp_yyparserhs_storeread_errorstorevarandweightset_sos_typeset_sos_weightadd_constraint_nameadd_rowstore_boundsstore_re_opnegate_constraintnull_tmp_storevar_storeguess_basismat_validateallocREALget_nonzerosunscaled_matis_chsignmemmoveget_rh_lowerget_rh_upperget_lowboget_upbomemsetswapINTcrash_basisdefault_basiscreateLinkfreeLinkmat_nonzerosappendLinkisActiveLinkfirstActiveLinknextActiveLinkmat_collengthset_basisvarremoveLinkget_constr_typeis_unboundedbfp_compatiblebfp_statusbfp_indexbasebfp_rowoffsetbfp_pivotmaxbfp_pivotvectorbfp_efficiencybfp_pivotcountbfp_refactcountbfp_isSetIbfp_rowextrabfp_restartbfp_implicitslackbfp_colcountbfp_canresetbasisbfp_pivotallocbfp_finishfactorizationbfp_prepareupdatebfp_pivotRHSbfp_btran_doublebfp_namebfp_nonzerosbfp_memallocatedbfp_findredundantLUSOL_createLUSOL_sizetoLUSOL_loadColumnLUSOL_freeLUSOL_factorizebfp_freebfp_btran_normalLUSOL_btranLUSOL_informstrbfp_ftran_prepareLUSOL_ftranbfp_ftran_normalbfp_finishupdateLU8RPCbfp_LUSOLtightenLUSOL_tightenpivotLUSOL_pivotLabelbfp_LUSOLidentityLUSOL_clearbfp_preparefactorizationbfp_LUSOLsetcolumnLUSOL_replaceColumnbfp_LUSOLfactorizebfp_factorizeLUSOL_getSingularitybfp_resizeLUSOL_setpivotmodelbfp_createMDObfp_initbfp_updaterefactstatsbfp_mustrefactorizeLUSOL_findSingularityPositionLUSOL_vecdensityrelationCharHDOWNHUPHINSERTHCHANGEHDELETEHBUILDLU6L0T_vLU6LLU6LDLU6U0_vLU6UTLU1PQ1LU1PQ2LU1PQ3LU1SLKLU1MARLU1MCPLU1MRPLU1MSPLU1MXRLU1OR2LU1OR4LU1PENLU7RNKLU7ZAPLUSOL_matfreeLUSOL_matcreateLU1L0LU6LTLUSOL_dumpLU7CYCLU1OR3LU1OR1LU1GAULU1MXCLU1DPPLU1DCPLU1FULLU1U0sqrtLU6ULU6SOLprint_L0LUSOL_report__vsprintf_chk__vfprintf_chkfflushLU1RECLU7FORLU7ELMLU7ADDLUSOL_timerLUSOL_addSingularitylog10LU6CHKclean_reallocLUSOL_realloc_cLUSOL_realloc_rLUSOL_realloc_aLUSOL_assignLUSOL_expand_aLU1FADLU1FAChashvalcreate_hash_tablefindhashstrcmpfind_varfind_rowputhashallocCHARfree_hash_itemdrophashfree_hash_tablecopy_hash_tablelp_solve_versionput_bb_nodefuncput_bb_branchfuncput_abortfuncput_logfuncput_msgfuncset_timeoutget_timeoutset_verboseget_verboseset_print_solget_print_solis_debugset_traceis_traceset_anti_degenget_anti_degenis_anti_degenset_presolveget_presolveget_presolveloopsis_presolveset_maxpivotget_maxpivotset_bb_ruleget_bb_ruleis_bb_ruleis_bb_modeset_actionclear_actionis_actionset_bb_depthlimitget_bb_depthlimitset_obj_boundget_obj_boundset_mip_gapget_mip_gapis_infiniteget_infiniteset_epsperturbget_epsperturbset_epspivotget_epspivotset_epsintget_epsintset_epsbget_epsbset_epsdget_epsdset_epselget_epselset_epslevelset_scalingget_scalingis_scalemodeis_scaletypeset_scalelimitget_scalelimitis_integerscalingset_improveget_improveset_lag_traceis_lag_traceget_pivotingget_piv_ruleget_str_piv_ruleis_piv_ruleis_piv_modeset_break_at_firstis_break_at_firstset_bb_floorfirstget_bb_floorfirstset_break_at_valueget_break_at_valueset_negrangeget_negrangeget_max_levelget_total_nodesget_total_iterset_solutionlimitget_solutionlimitget_solutioncountget_Nrowsget_Norig_rowsget_Lrowsget_Ncolumnsget_Norig_columnsget_statusget_statustextis_obj_in_basisset_obj_in_basisvarmap_canunlockvarmap_addvarmap_compactinc_rowsinc_columnsis_add_rowmodeis_splitvarset_simplextypeget_simplextypeset_preferdualset_bounds_tighterget_bounds_tighteris_maximset_senseset_minimset_maximset_infiniteget_str_constr_classget_str_constr_typeset_OF_overrideget_OF_activeis_OF_nzset_callbacksadd_columnexadd_constraintexadd_SOScolumn_in_lpcopy_lpdel_columndel_constraintdelete_lpdualize_lpfree_lpget_basisget_basiscrashget_col_nameget_columnexget_constr_valueget_constraintsget_dual_solutionget_lambdaget_lp_indexget_lp_nameget_matget_mat_byindexget_multipriceget_nameindexget_objectiveget_orig_indexget_origcol_nameget_origrow_nameget_partialpriceget_primal_solutionget_pseudocostsget_ptr_constraintsget_ptr_dual_solutionget_ptr_lambdaget_ptr_primal_solutionget_ptr_sensitivity_objget_ptr_sensitivity_objexget_ptr_sensitivity_rhsget_ptr_variablesget_rhget_rh_rangeget_rowget_rowexget_row_nameget_sensitivity_objget_sensitivity_objexget_sensitivity_rhsget_var_branchget_var_dualresultget_var_primalresultget_var_priorityget_variablesget_working_objectivehas_BFPhas_XLIis_binaryis_constr_typeis_nativeBFPis_nativeXLIis_negativeis_semicontis_SOS_varmake_lpprint_constraintsprint_debugdumpprint_dualsprint_lpprint_objectiveprint_scalesprint_strprint_tableauread_MPSread_XLIread_basisreset_basisread_paramsreset_paramsresize_lpset_add_rowmodeset_basiscrashset_BFPset_binaryset_boundsset_col_nameset_constr_typeset_unboundedset_intset_lowboset_lp_nameset_matset_multipriceset_objset_obj_fnexset_outputfileset_outputstreamset_partialpriceset_pivotingset_pseudocostsset_rhset_rh_rangeset_rowset_rowexset_row_nameset_semicontset_upboset_var_branchset_var_weightsset_XLIstr_add_columnstr_add_constraintstr_add_lag_constr_set_obj_fnstr_set_rh_vectime_elapsedunscalewrite_lpwrite_LPwrite_mpswrite_freempswrite_MPSwrite_freeMPSwrite_XLIwrite_basiswrite_paramsuserabortexplainobtain_columnget_basiscolumninvertget_basisOFis_use_namesset_use_namesSOS_countMIP_countGUB_countcompute_violationfeasibilityOffsetisPrimalSimplexisPhase1isP1extrafeasiblePhase1isDegenerateBasisisBasisVarFeasibleisPrimalFeasibleis_BasisReadyverify_basisvalidate_boundscompare_basisget_pseudobranchcostcompute_thetacheck_degeneracyget_refactfrequencyis_fixedvarget_accuracyset_break_numeric_accuracyget_break_numeric_accuracytransfer_solution_varrefactRecentfindNonBasicSlackfindBasisPosreplaceBasisVarpost_MIPOBJbb_betterfindBasicFixedvarvarmap_validatefree_dualsfree_pseudoclassfree_pseudocostunset_OF_p1extraimpose_boundsperturb_boundsrand_uniforminitialize_solutionrecompute_solutionroundVectorverify_solutionset_rh_lowerset_rh_uppercompute_dualslacksmempool_obtainVectorget_colIndexAbsolveprod_xAmempool_releaseVectorcompute_feasibilitygapconstruct_sensitivity_dualsunscaled_valuefsolveget_pseudorangeis_sc_violatedget_boundsbin_countconstruct_dualspresolve_rebuildUndotransfer_solutionscaled_floorget_constr_classpartial_countBlockspartial_freeBlockspartial_createBlocksmulti_freesolution_is_intisINTget_pseudonodecostmodfupdate_pseudocostfind_sos_bbvarSOS_is_satisfiedSOS_is_markedSOS_is_fullscaled_ceilrestore_basispop_basisunload_basisexpand_columnsingleton_columnpush_basisallocMYBOOLis_slackbasisunload_BBpop_BBisDualFeasibleSOS_is_membercheck_if_lesscheck_solutionrename_varinit_rowcol_namesmat_get_dataidentify_GUBrow_plusdeltaMIP_stepOFpre_MIPOBJmat_findelmconstruct_solutionfmodfind_int_bbvarrcfbound_BBfind_sc_bbvarrow_decimalsrow_intstatsconstruct_sensitivity_objset_var_priorityadd_GUBcreate_SOSrecappend_SOSgroupcreate_SOSgroupunscale_columnsvarmap_clearpresolve_setOrigdel_varnameexfirstInactiveLinknextInactiveLinkset_columnexmat_setcolmat_transposeroundToPrecisionmat_setrowinc_lag_spaceinc_matcol_spaceinc_matrow_spacemat_createmat_appendrowinc_rowcol_spaceinc_presolve_spaceresizePricerinc_col_spaceinc_row_spaceallocLREALshift_basisshift_rowcoldatashift_coldatamat_shiftrowsSOS_shift_colmat_shiftcolsappend_columnsmat_appendcolshift_rowdataappend_rowsmat_multrowmat_multcolvarmap_lockpresolve_fillUndovarmap_deletedel_splitvarspostprocessREPORT_extendeddel_columnexdel_constraintexmemopt_lpmat_memoptswapREALyieldformessagesperformiterationmat_multaddmulti_enteringthetaupdatePricerinit_pseudocostmat_setvalueprepare_GUBpreprocesspartial_findBlockslogREPORT_debugdumpREPORT_scalesREPORT_dualsREPORT_constraintsREPORT_solutionREPORT_objectiveREPORT_tableauREPORT_lplin_solveundoscaleMPS_readBASMPS_writeBASLP_writehandleLP_writefileMPS_writehandleMPS_writefileread_freempsexMPS_readexread_mpsexread_freempsMPS_readhandleread_mpsread_freeMPSMPS_readfilemat_freepresolve_freeUndomempool_freefreePricerfree_SOSgroupfreecuts_BBmempool_createpresolve_createUndoinitPricer__vsnprintf_chkwrite_lpcommentwrite_lprowwrite_lpexmat_rowcompactmat_zerocompactmat_colcompactmat_nz_unusedmat_set_rowmapmat_findcolumncountsUndoLaddervec_compressvec_expandpartial_blockStartpartial_blockEndprod_xA2bsolve_xA2prod_Axmat_computemaxmat_findinsmat_getitemfreeUndoLadderbimprovefimproverestartPricermat_indexrangemat_rowlengthmat_expandcolumnmat_equalRowsmat_checkcountsdecrementUndoLadderrestoreUndoLadderincrementUndoLadderswapPTRinc_mat_spacemat_appendvaluemodifyUndoLadderappendUndoPresolvemat_setitemmat_additemmat_mergematmat_mapreplacecreateUndoLadderaddUndoPresolvemat_extractmatpresolve_BBinitcuts_BBupdatecuts_BBfindself_BBpre_BBpost_BBprobe_BBfindnode_BBfree_BBnextbranch_BBSOS_unmarkSOS_set_markedSOS_fix_listSOS_fix_unmarkedfillbranches_BBSOS_is_member_of_typeinitbranches_BBSOS_can_activateSOS_get_candidatescreate_BBsolve_LPspx_runSOS_is_feasiblepush_BBrun_BBstrongbranch_BBnamecpyspaceslenfieldMPSnameFREEMPSnameFIXEDstrncpyappendmpsitemaddmpscolumnscan_lineFREE__strncpy_chkscan_lineFIXEDMPS_writefileexstrncmpappend_SOSrecrenamepresolve_rowlengthexisnz_origobjset_dv_boundsget_dv_lowerget_dv_uppercompRedundantcompSparsitycompAggregatepresolve_setstatusexpostsolvepresolve_getcolumnEQrestoreINTpresolve_invalideq2presolve_rowlengthdebugpresolve_debugcheckpresolve_debugmappresolve_rowtalliespresolve_debugrowtalliespresolve_rowremovepresolve_SOS1lastActiveLinkprevActiveLinkclean_SOSgrouppresolve_singularitiespresolve_freepsrecpresolve_freepresolve_debugdumppresolve_finalizelastInactiveLinkcountInactiveLinkSOS_member_updatemappresolve_initpsrecfillLinkpresolve_setEQsetLinkpresolve_impliedcolfixpresolve_coltightenpresolve_reduceGCDpresolve_mergerowspresolve_candeletevarSOS_membershipspresolve_singletonboundspresolve_altsingletonvalidpresolve_boundconflictpresolve_colsingletonpresolve_storeDualUndopresolve_colremoveSOS_member_deletepresolve_validatepresolve_makesparserpresolve_initpresolve_knapsackcloneLinkpresolve_SOScheckSOS_member_indexpresolve_statuscheckpresolve_probetighten01presolve_probefix01presolve_rowfeasiblepresolve_rangeorigpresolve_multiboundspresolve_impliedfreepresolve_rowtightenpresolve_makefreepresolve_colfixpresolve_updatesumspresolve_testrowpresolve_redundantSOSdelete_SOSrecpresolve_freeandslackspresolve_aggregatepresolve_coldominance01countActiveLinkpresolve_rowdominancepresolve_rowfixzeropresolve_fixSOS1presolve_elimeq2presolve_colfixdualpresolve_shrinkpresolve_rowspresolve_columnsisOrigFixedpresolve_rowfixpresolve_preparerowsmake_SOSchainREPORT_modelinfoSOS_infeasibleSOS_get_typeauto_scaleREPORT_constraintinfovalidImprovementVarvalidSubstitutionVarpartial_activeBlocksverify_stabilitylongdual_testsetpartial_blockNextPospartial_blockSteppartial_isVarActivemulti_mustupdatemulti_sizemulti_usedmulti_restartmulti_valueInitmulti_valueListmulti_getvarmulti_recomputemulti_removevarmulti_populateSetmulti_indexSetmulti_enteringvarupdate_reducedcostsmulti_truncatingvarmulti_resizemulti_createcompareSubstitutionVarfindSubstitutionVarcompareImprovementVarcompareImprovementQSserious_facterrorcompute_reducedcostsfind_rowReplacementmakePriceLooprowprimaddCandidateVarcollectMinorVarcompareSubstitutionQScoldualfindImprovementVarrowdualgetPricercompareBoundFlipVarcolprimsimplexPricerverifyPricerfreeWeightsformWeightsREPORT_mat_mmsaveblockWriteLREALblockWriteBMATblockWriteAMATprint_indentdebug_print_boundsdebug_print_solutiondebug_printscale_updatecolumnsscale_updaterowsscale_rowstransform_for_scaleaccumulate_for_scaleCurtisReidMeasureminmax_to_scaleroundPower2finalize_scalingCurtisReidScalesscaleCRstallMonitor_creepingObjstallMonitor_resetget_artificialRowfindAnti_artificialfindBasicArtificialstallMonitor_finishheuristicsspx_solvelag_solvemake_lagclear_artificialseliminate_artificialsadd_artificialstallMonitor_shortStepsstallMonitor_createstallMonitor_updatestallMonitor_checkdualloopprimloopSOS_member_countSOS_set_GUBSOS_is_GUBSOS_is_activefree_SOSrecsearchForSOS_member_sortlistresize_SOSgroupcomp_bitschsign_boundssizeLinkinsertLinkprevInactiveLinkgetvaluePackedVectorpushPackedVectorfreePackedVectorpopPackedVectorallocFREEcreatePackedVectorcompareLinkverifyLinksrandfrexpldexpnormalizeVectorunpackPackedVectorcloneREALcloneINTcloneMYBOOLadd_sos_rowset_titlelongjmp_setjmpset_sec_thresholdlibc.so.6libm.so.6libdl.so.2_edata__bss_start_endliblpsolve55.soGLIBC_2.2.5GLIBC_2.4GLIBC_2.3GLIBC_2.3.4; ui D;:Pii P;ii Z;ti d;ui D;;ui D; )_{()y{0){8)@)ЀH)P){X){`)8h)pp)x)){){){){)))))`Ȭ)Ь))`))k)@)P) )0)v8)@)P)`)h)~p)@x)0)))ح)))3)))) )А0))H)P)X)))`)@))Ȯ)خ)))ö))))()϶0)8)`)ܶh)p)))P)@)@)Я)د)`)P))))0) @)H)pP)`x)))`)*)p)P)6)) )=()0)X)B`) h))G)P)0ȱ)Mб)ر)p)X))8)a@)`H) p)jx) &)&))P)@)))) )0() 8))P)X)`)))p)`)ȳ)г)) )ȵ)е)ص)@)) )@)@))-))2) )p()R0)8)@)H)PP)X)Y`)h)p)dx)))@)))))+)))ȶ)аж)@ض)g))8) r)p|))@)G)`2 ).()`0)8) @)`H))P)X)0;`)x)))())`)p?)X)0f)9)ȷ)`з)ط))))))w))ph)) )()0) )8)P@) YH)P)`[X)=`)Yh)@/p)()x)3)P)@)))Y)H))`))ȸ)и)Yظ)`)0)))))+)Y)a)@ )() 0)8)p@)07H)P)-X)`)h)p)x))`X)p4)o)8)F))))`ȹ)@ й)}ع)0)M) 3))X)))) )`()0)8) @@)pH)$P)pX)1h)Xp)Px)p)`n)@)W) z)))Px)@Ⱥ)`к) غ)`))))P)))PC)P )P()0)pb8)@) H)1P)X) H`)h)p)4x))0)`/))X)g))))Ȼ)л)ػ)@)))3)0)) q)0)9 )`()X0)8)@@)`KH)P)0}X)X`)8)h)Pp)`ix)P)Y))+) ))@)P)0)ȼ)м)@>ؼ)p) )p))#)0\))0) ) ()J0)@b8) @)@H)pP)X)0y`)h)p){x)0)@)P))Д)0)p)@-)Y)NȽ)[н) Cؽ)9)p).)pd)) )))` ) ()0)8)@)H)pXP)`M`)h) p)pyx))p)В)`<)@)) ;)`g)@);)PȾ)о) ؾ)P/)Y)@))v)0)PX)=) )()00)p8)x@)8H)0P)`X)p `) h) qp)H)x)P)`0)%)p)`:))p))ȿ) @)@)h)x))Է))))%):)L)_)t()8)H)h)x)ɸ)ڸ)))) )/)<)P)e()t8)H)X)h)x)¹)ֹ))) ))')7)J)[)h(){8)H)X)h)ƺx)غ))))*)>)R)b)q))()8)H)X)Ļh)ջx)))))')6)F)U)d)z()8)H)X)üh)м)))))&)<)T)k){)()8)H)ͽX)h)x)))#)9)H)Y)v)i)׼()k8)sH)|X)h)x))h) p)`)")$X)A)K)))) )()0)8) @) H) P) X)`)h)p)x)))))))))))))) )!)")#)%)&)')( ))()*0)+8),@)-H).P)/X)0`)1h)2p)3x)4)5)6)7)8)9):);)<)=)>)?)@)B)C)D)E)F)G)H)I )J()L0)MH* H5:(%<(@%:(h%2(h%*(h%"(h%(h%(h% (h%(hp%(h`%(h P%(h @%(h 0%ڊ(h %Ҋ(h %ʊ(h%Š(h%(h%(h%(h%(h%(h%(h%(h%(hp%z(h`%r(hP%j(h@%b(h0%Z(h %R(h%J(h%B(h%:(h %2(h!%*(h"%"(h#%(h$%(h%% (h&%(h'p%(h(`%(h)P%(h*@%(h+0%ډ(h, %҉(h-%ʉ(h.%‰(h/%(h0%(h1%(h2%(h3%(h4%(h5%(h6%(h7p%z(h8`%r(h9P%j(h:@%b(h;0%Z(h< %R(h=%J(h>%B(h?%:(h@%2(hA%*(hB%"(hC%(hD%(hE% (hFHH-~(HtHÐU=H(HATSubH=(t H=ψ(*Hr(L%tr(H(L)HHXH9s DHBH(AH(H9rޏ([A\fUH=/r(Ht"H}(HtH=r(IAÐHt Hcƀ<f.AWIAVAUATIDE1UHS1HBAL,IM9t`BTBt9}uHcE1ML)MA:x19EtA;;~II9~uAʅɸt1HLA 1H[]A\A]A^A_D;ff.ff.AWAVAUATUSHxMD$O|$OHL$ H HT$(H|$8Ht$0LD$HL$Pt HL$ )Ѕ҉D$HvHD$pE1HD$`HD$BHHD$@HT$`HL$(D|HT$8A9HT$PHD$pHJ8D)‰HHD,H,HL$PDHc)D$HL$La(HA0HD$@A $~H|$01D9HL$@HH\$X1ۀ|$O @AHA9~XA4H|$0jtAuHT$XH|$8DHZHT$HD$puHA9fD|$OtHT$ HD$`DtHD$`HL$H9L$`D$HHx[]A\A]A^A_HL$XHT$DH|$8wHYHD$pt DIcHL$IcAHL$ HA9{A4H|$0wtAufDH|$0DSt!|$OuHL$IcIcƋHL$ AD$H@HT$H|$8DfL|$OuHT$ IcA-ffffff.AWIAVAUIATUSHHD2H$8HT$ HL$1DD$HDŽ$0AFHDŽ$(‰D$(pHT$ H$8E1LLH$8IcED$,HcT$(H$(Ht$ HOEEH$8H$(1H\$ HcDDHA91Ht'HDŽ$8H$0Ht HDŽ$0H$(HtH|$tHD$D0HH[]A\A]A^A_.SH$01LE1PAx?E111fDH$0؉D)L*<AAH9}΍X|$,DHl$0D)}GH$(1ɉLAH$(L$0LHT$ LHG|$H?HD$0HD$8tD9tVH$(L$8H$IDDH$G$H$8]fDHcT$(H$(H|$ HMH}(H$(L$H$8Ht$ IDHD$H/v(H$\wH$8~fDDžøtDuf.@H\$Hl$ILd$Ll$HLt$L|$HHHHtHu+H\$Hl$ Ld$(Ll$0Lt$8L|$@HHÐHD$HAHDHD$HHDHHAE1I9~ HALIHHH?IIIH)uEEu(EEADEAƉK1EHL$HT$ LEtgT$D$ A)ЉT$UA׉UAƉ@IHAA.HE1AI9-fDD$D$T$ A)‰Uffffff.U,ADMSD9A AȉHcDHcDIcD9t j@EDD)IcE9H|fAHE999tDDAD9EDO[D]DD)~9tSD9~.DBIcDCHcDVf}DJIcfAA2DEA"DA[D]9QfDcff.AWMAVAUATUՃSH89H|$Ht$DD$ D$pT$$ <T II˃E1D$,D$(D$ HIċD$(D$ HIŋD$ HHD$HD$0fM)؃~:LH|$AׅtHt$0H|$AׅLl$0)؃fDD$ Ht$HH99}ACLd$Lcl$ D$ HIfM9}6LL)H|$AADt$,ExEuH8[]A\A]A^A_@E~fLH|$AADt$,A|Vtnl$(D$ HHD$HD$0TLl$D$(D$ HI9\$$ЉOl\$(D$ Ld$HI묋\$(H|$AADt$,+D8|Љff.9|Љfff.f.w 1f.fHcHcHHH47HHHLFHHGHFHLGfffff.H71f.~HcHHfDHHcHH7@9~9HcHLLHLIIIAII@I9|HcHH9~9HcHLDHH IHI@IHAH9|ÐAW)AVAUIATUSH8$1҃H|$t$H8[]A\A]A^A_$T$IHcHHD$HD$HcD$Ht$HILх t$H|$AAQD$Hc$Hl$LHHHAՅADd$EHH|$AՅ<Dd$$H|$L|$ ‰D$HcD$HL$Dt$l$IHHHT$ HDHD$(D$HHIfDALLAՅxDEH\$HHHfDH߃LHAՅD9|7H|$DD$SIE1AD$T$H|$Dt$H|$L$H|$AvLL$T$t$H|$$H|$ffff.AWAAGAVE1AUATUSHX9H|$T$HL$D$$HcT$$E1HHT$(HHD$HD$0HHHD8HD$8HD$@H$fDHT$0D;|$$HHD$@HBHD$H}^HDd$$Ll$(H\$8/HAAIHEHCHHEHE9}hH4$HT$HT$ILHD$@D$$HD$0HD$8HHD$HHD$(HBD$$9D$OHXD[]A\A]A^A_DHT$IcHHHl$Ll$1Lt$H\$ILd$H(HI~$^H14HAĉ1LbDMtAEH$Hl$Ld$Ll$Lt$ H(@AWAVAUATUST$H|$DD$LcHT$AIGJAL4N$H,ƀ|$DIILMfDA Af.r3f.ztAAA AIIHI9~AIIIHHAD9l$v[]A\A]A^1A_IHMML|$A f.rf.uzHL$HT$[]A\A]A^A_ÐAAAHl$IAIA IH9~TfAWAVAUATUSˉT$H|$DD$HcIIHHAAL$H,HT$II|$Du|IMLMf.A3A;1|,tAAAAA1IIHI9~AHD$IIIHAD9l$[]A\A]A^1A_HD$ILLMHD$@E D; |t6AHl$HAAID IH9~vfHL$HT$[]A\A]A^A_AWAVAUATUSˉT$܃H|$DD$HcAHD$HL$HHL,LA)9uL 1@AWAVEAUIHLATUHSHL D9HcA*Ld1fIA9|PA $HP1LA)R9uL o1IA9}غ*)R9uH[]A\A]A^A_fHL []A\A]A^A_DHHH*$D$*^ HX@AWAVAUATUSH9H|$Xt$TT$PL$LDD$HLL$@D$l$HcT$LD$LD$lHDŽ$HDŽ$HT$pHc$HHD$($$H$HHD$ D$L؉D$D$LD$THHD$$D$THHD$H$HT$(H\$XH$HHT$pHH\$`H$t*H$Ht$ H$H$H$D$D9d$TH$H$HD$1Ll$XH$HT$ Lc|$Lt$`$HD$xIŋ$HT$8HH$H$HD$HD$0t@HT$pLLMMHT$0HD$8HtH|H$H$H$D$lH$D9d$THT$xIDHD$xH$LDcT$@D$HpD$LHT$XAHHHT$pH$HNH$t)D$H$H$IcH$$HD$pH$H$H$$9D$PD$lHĨ[]A\A]A^A_fDHHT$XHTH$HT$Hl$XLct$Ll$`$HT$xH5HT$pHLLMjHD$xD$lLD9d$T}.DHD$xH$HDcT$@D$HDHT$XHD$xHDH\$Hl$HcLd$Ll$ILt$L|$HHHD$XLl$P͉t$T$HLD$EH$HL4LLl$HLHcILHLLH|$txD$Ld$IcH<$HAHIL\D|$Hl$HLIcHH=H4$HHH\$Hl$ Ld$(Ll$0Lt$8L|$@HH @H\$Hl$ Ld$(Ll$0Lt$8L|$@HHDAWE)AVMAUATUSHxH|$Ht$DT$@L$(H|$T$H|$DD$ HT$LD$ HHf.?IEfWɅ~YҾxUExlHLfWHcIt1AHIcHDAHYHD9X}f(ø)ƒEHH4y)AHH{fDHHD(H|$T$H|$DD$ HT$LD$ HHf.?IE~]ҾxYExpHLHcIt1LIcALfHHAHHLLD9})ƒEHH4y)AHHwfDHHA(|$T$D$HL$HVH|$Ht$Hffff.ATIUS~;t@ҹHc¾HHcIDH9}[]A\Dغ$I))Љ)ƒLH9G…t9A$tdAA)DAEt4f(1fIf(fDf)H9rDE9tHcIDH9}6B9+HcȃLH)Ӻ%I$HItI,HM\MTH)ljML MD()HH)HLIH8EH8H8AI8AI8AI8AI8H9u[]A\f)HCfffff.HHeB(H|$$H|$HHff.?~X~TtHHcHfTHHfTf.vf(ȉȃ9}1ffff.HH:(H|$H|$HÐ?fWɅ~;HcfWHLHTGHH)HH9fT_uf(fD׍DDHHffffff.G@GGG NFf.AWAVAUATUSGDhEHcLQyLALI ]L$IAC!-3A%---dA AA:**^^X*^X,*)\fTAKMD9A))iұ)iǫ H颋.A A8#))iҰ)iǬAA ȉωL$A))iҲ)T$D$)iA A=vAAcvAAsvAAD[]A\A]A^A_ffff.AUAA}ATIHcUHSHHD$L$$lHHźLDHٺHDE~ZAE11H-@D$\D$AYDXD$ADHH9t$f.DwILHH9uHH[]A\A]bfH\$Ll$HHl$Ld$Lt$L|$HHL-a5(dH%(H$1I}Ht 萵IEHHHߵ/HH?H1HtHj)LbHHLHHMHH! t€DHAHDHHA8.H5HHHIE@W11H$dH3%(H$H$ L$(L$0L$8L$@HHDLHhxsMxofAxfDEf*H5(;fDH;<(Hl5(HH4(H4(HH;(H5(HHh7(Ha;(HH:(H4(HH8(H<(HH :(H8(HH\6(H4(HDH5H豴H4(I}H5 H藴H 4(I}H5H}L=5(I}H5IcL5:(I}H5IIL%:3(I}H5I$.H;HH@;(HH=3(H?I?I>I<$DHH7(H8H3(H81Hs:(H3(;HH3(H2(HH :(H3(HH5(H9(HHG8(H02(HH.7(HG:(HH=8(H&7(HH4(H2(H%;ff.1fSH 3(;u[Ð1i[DÐ[ff.AUIHLATUSH1HtlL}Iĉ~dIc茰IL-H01HD)HH~8HDF u݃AD-~ A}[u9]tTH[]A\A]@HcúADH[]A\A]D;LHUMSIuLHc萰AD-HtIHAH1rfHH)1Zf.HH1:f.H\$Hl$HHHu(HHHHl$H\$1H諭H~H޿ ٮfDH5/T@H5Dx:x6x2gfff)AzHH@TBf.f.HHE1ҹHtHAAA)DAEt3fW1Hf.f)H9rD)EE9tIcHHHuH?HHGDAW1IAVAUATAUSLHxH$|$,t$(LD$ H$1H$H؃g)H9wAA)DDEt1fH$1@fH9rD)DE9t%H$HcHHuH$H$H$IF HH IMHL$0Ht$8GGH|$ |$,t$(HcD$(Ht$ L,AmHt$(D$,|$($HHc։t$DHR DP*D9H$EE 1DeHx[]A\A]A^A_L$D$,AD$ AD$1H$B B1H$L$(1B JG 1H$1E H$1G ogT$(A)E)IcD$M4tyLd$ 1A$AAD$A+$AFNIvHL$ L1!AHA+AHFHBB BB9|$($H$H$DHHAIHD$HD$,t/D$,1҃HHHt$HDD HH9uD$(LT$ MF1IcIIcBML9 x9L$,%H$Dd$,1E }MDe Hr9|]HcHHD$HHT$0Ld$8A<$A E;x tD@L9މx s>x9D$, fDʉH9}HcHHD$H;x uA(뺃II9|$(AEHT$HBB |$,~5D$,1҃HHHt$HLDLLHH9uH$ }D$(1LD$ tFIcI4Ic@ML9s%HcHHHD$HPHcʃI9AHHcH@IƋJ~"*x؉BHcD$d$D$dAtA|> uIcHRAtHcHRI ƃ9uQ DHH@IƉP y ptQ Hl$ 11IcD HT9T$(Dd$XL$TD)d$,)L$(T$,\$(H$t$\XpMfWf.D,,|$(HD$ A~2D$(L1ɃH4BH|$ BDHHH9uD$,fLD$H1IcI4Ic@LL9s$HcHl$ HHDHcʃI9A<w܃I9|$,D,Aff.AW1AVAUATAULSHMHt$8HT$0HL$(LD$ L1LʃH؃)H9wAA)DDEt1f1HDfH9rD)DE9tHcHDfDHuH|$8HE HUHME EHD$@HT$HHL$PEH|$0EHT$0IcHt$UD:EH|$ AD$HcH$@HIH߾$@HHEL}EHH؃D9AG1ɅfDH9wA9t\EA)D<t)fo1HfH9rA9tHcHHA9Ht$0Lt$0FDID)DH11Ht$`HD$hA9&Ht$8Icx D9|c@E }UDeL$HH$H1H[]A\A]A^A_fDE De1E E1A@Ht$8AM\ HL NH H 98tB9}98t AD A8AE9~aAIDЅAD98A9Hc|HD$@HL$HHD$P9H H A듉EE 1A9Lt$`HT$hHD$`AEFHD)HL$hHT$hE 1E 1E 1H\$pHH\$ 0E L$H1Du EHT$(EAD$Ht$(1H ADDHH9uA AHHI9D111<t#Ht$(ofADH9rA9t(HcHL$(HITHHHA9Ht$HD$(D<D<8ADLD$\Hc$@HID] EE)HHڃH؃D9AG1ɅH9wA9tYEA)D4t)fo\1HfH9rA9tHcHHA9E1E1E1HT$0B<BT9~kHL$8HcH4fDA9}GHHLE9 t8ILHcЃECDHcЃECDAHD$0E BTH9|AIE9rH$HL$HHT$ L$IIHAHL$ 1HIHHuI?EL$E9A*Ht$ A*Y^$LD$(T$\H$LDDH$8$LEE$E$HEIEH9&1HL$(ADHA9k1E }MI9w H;L$ Ht$ HBpfNfA)  fJfA)IJfJf)IJ fJ(f)I J0fJ8f)I0J@fJHf)I@JPfJXf)IPJ`fJhf)I`JpfHf)IpHfHf)rE$E1E1E1HT$0B<BT9~WHL$8HcH4D9~8HcILHcЃE CDHcЃE CDAHD$0BTH9|AIE9E L$H1I?L$H$H'E TEff.H\$Hl$HLd$Ll$HLt$H(H4F DfDnDvH5aH1跍C ~YfDJfrH$Hl$Ld$Ll$Lt$ H(DifDRfH5DH$Hl$Ld$Ll$1Lt$ H(H5H1ڌC #DH5ftpR0H=fH5DH1}H5DH1dH5 DH1K Q H5 H1)KH5GH1KH5nHH$Hl$Ld$Ll$1Lt$ H(ۋ= RH=H$Hl$Ld$Ll$Lt$ H(l@H5iDDH$Hl$Ld$Ll$1Lt$ H(cH=H=!EFH5MEDH$Hl$Ld$Ll$1Lt$ 1H(DDH5DH5H=褊DDH5g7fH=@H5&HH$Hl$Ld$Ll$Lt$ 1H(~fffff.HH=XQHH=OAHt?HGG HG@HV(HOG,G<HHOt HFH;fff.H~ff.H~ff.G|fff.~|fff.HHHHHHcҾH膊HÐ[ff.H\$Hl$HHHHtGHV(Ht HFHH;8tAC$uHHHl$H\$HH{HfH\$Hl$HÐHfDSHW(HHteHGH)FEHEHIJrHHHHDA u-AE8IHDdHIPAE0I]@MUIM(NIPHBH9siAE4IxLL:HH4H9s$HIAMUIM(NI;pwIxDA}4Ax )HHHJH@HH9i A HKDcuIUIE(HЃh0IIM@AE0lAu8~$IUIE(H IHcր| A,L0IMIU(HxHHcR0HPFAU8 1<+tAH9 I<-uV<+9FAU8Au8~$IUIE(H IHcր| A,LIMIU(LxHHcR0HPHI@ gA@!A@%SAu8~$IUIE(H IHcր| A,LIMIU(LxHHcR0HPHI@ A@!A@%Au8~$IUIE(H IHcր| A,LIMIU(LxHHcR0HPHI@ oA@#A@% [Au8~$IUIE(H IHcր| A,LIMIU(HxHH}8HcR0HHPt nHE8IbnHHE8Hn DAu8~$IUIE(H IHcր| A,LIMIU(HxHHcR0HP{$HHC ZC$ LAu8~$IUIE(H IHcր| A,LIMIU(LxHHcR0HPHI@ A@&A@% Au8~$IUIE(H IHcր| A,LIMIU(HxHH}8HcR0HHPt mHE8IlHHE8HlHHX@ H;]8r-mH HH;]8rHHDP uAu8~$IUIE(H IHcր| A,LIMIU(HxHHcR0HPIFAu8~$IUIE(H IHcր| A,LeIMIU(HHcR0HPOAu8~$IUIE(H IHcր| A,LIMIU(HHcR0HPAu8~$IUIE(H IHcր| A,LIMIU(HxHH{8HcR0HHPt 8kHC8IkHC8~Au8~$IUIE(H IHcր| A,LBIMIU(HxHHcR0HPIFAu8~$IUIE(H IHcր| A,LIMIU(HHcR0HPAu8~$IUIE(H IHcր| A,LIM(IU1HHcR0HPIEHkHID@01oLB AE4IEB<HLLL$L$H:HL]IM(MUIu@IL$LL$HL$`NI 1H6jfC*RI@EDLfDHD$@HT$H9\$@H B[H|$@H\$(Hc C)D$\~.01AH9T$\IM(MUNHL$`Ax<uvIPHI@IpLLLD$LL$L$H]LD$HLL$L$I@teD)HI@IE@IE(HD$`IEHT$`LD|$\AExEH|$`LDI]@AH$MxWI@LLD$LL$L$KHHL[L$LL$LD$`HHHI@IGH9w HCI9|$\111t*AofH9wHI9t$\1AH;D$\|iA LDMHc\$\LL$IXL$nHD$PHxDHHxLL$L$MUIM(A]4JщX AU4E1u!T$\ JA@<AU4\$\JHcH;s#AE4JAH@0IUIE(HIcU4H@DMUIM(JHzI?AEHcD$LDB,EELH|$@H,H9Im@HHT$@t HT$0 HD$(IcfD@HPAEELL$4eLL$/fH|$ LL$HHxLL$xx9DLL$@H|$ LL$qHx@@@@@@LL$H|$ LL$9HxIHLL$HC{tLLL$BLL$CCCCLCLL$HELL$&H|$ LL$HxHCSCCCCCCLL$5{FCH|$ LL$hHxHKSsDCcLL$kCHCXH|$ LL$Hx@@LL$ZH|$ LL$ƀLL$:Ht$ H|$(Ho|LL$GLL$IٻT{ fhSIHCHHCPCC>{CHfWCHCA1LL$bLL$xuLL$u1ې@{u{ ftCH?HKPCCt{t{uCPfWOCPKSLDCHs8CPLL$wdLL$5CCCCS:H{@HtLL$QLL$HC@H{8LL$QLL$HC@C%{p{uCP{fWCPtCXXCPCXKSLsCPLL$@LL$6x@fED$0H$H *z1HAED$02SHLhAT$#At$!ED$&L(?AD$%AD$,LL$LED$0H$H y1HAED$0RHLhAT$#At$!ED$&L>It$@AD$%LAD$,HhAD$,LL$~{fDHxH7LL$CLL$HxHxI4$LCLL$Hxfff.H7Ll$H\$IHl$Ld$Lt$L|$HHT$ Ht$D$tH \$|HDŽ$D$@HDŽ$T$x1HH$u=H$H$L$L$L$L$H\$|H$L3u>1H$HtNHDŽ$H$HpNfH$L3tLUH$D$\H$H$DT$\HR(H[ H@0EHT$`H\$hHD$HE11ZHT$HfWZf.ztfWDDLdhHT$hAHcHT$HD9t$\YXD$ E~WHT$`LD$IcDH,H$HD$hD<ED$ ldHD$HXsDHc|$tHcT$xHt$H<H$HHTNDL$|EnE1MfDL6{LD$P|f(D$PA fTnf.rf(fTnf.sTH$D$@d$PH  Xf.v}f(\fWf.ztfWH$HD$D$H9l$|9l$tA8+\$tL}LD$PH}f(-f(\D$@f.vf(L|$L$\gf(fTmf.*f(fW\D$Pf.9QDH$T$|E1H|$aD$tH$1EHcH$HLt$HT$(J1LH JDD$tHL$E~x#f.HcA|H9|$t|GA3Q)9T$t}+T$tH$HcHS8H)HcHHC(HcA$9t$||8HT$HcH 3)9T$t|Hc‰tH9t$|}ۋL$tD$tLd$1ۃILxA|t3HIL9t[TuHT1L=PA|uADHc|LHD$H<A$A1$A)$$9T$|Hl$Hl$(D$|u+D$t9t$tLt|_@LcLJH$D$0wL$0H$T$@\ fB.sBL9tJHu9t$t}H$Hc+t$tL$\d$@d$8yf.D$8r]D$t~9D$tH\$1ɃH4fHT$D 3T )ЉD HH9uD$@f.$tf(\fWf. %f(f(\T$P\fWf.Lt$f(L$fff.AWIAVAUATUSHH HD$( H IHt@ I HtA u<P A t?D$7D$7H[]A\A]A^A_xu)}H|$(stH1LHDŽ$HDŽ$HDŽ$HDŽ$HDŽ$LMAH$1L.qD$7H$AHT$ Ht$ 13$H$A1HHL$$H$H$|$7H$HtFHDŽ$H$HtFHDŽ$H|$vH|$ l}H|$(&@uA NfHa1LHDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$KAH$L[-H$HT$ 1H$D$7HD$H$HtrEHDŽ$H$HtTEHDŽ$H$Ht6EHDŽ$H$HtEHDŽ$H$HtDHDŽ$H$HtDHDŽ$H|$ H|$AH$1L)kAH$1L)D$7G=AH$L+AH$1L2)AH$1L)`H|$(LHL$(AHY(LQ LY011L$\e2f.H$AAHA9eHc 3Ic2AsfTHH$HHH$tHH$f.vHH$f.vfA.rAhD$77AH$Ip HcHCA~&fDH$ރFA9}EE~$@H$ރA9}H$DhEH|$(覒Ht$(H\$(AH$D$DHv H[(HcHt$`H1H\$X@Dd$DE<1E11ېHT$`HD$XH$D$D,Dt.H$fWIcf.ztIcAHH$H9l$DEH$H$ƉLc%ʼn\$@u&qf~>l$@H$tMLcl$@H$LcBB9}MfDH|$(Tt$@H|$(D9MHD$(H$1HP8LHD,F$HT$(D$Hj(HZ0AHcH;?D;$?IcD$<HD$HL$Lt1fDA.H$AlH$HcD$PH$^D$PVt D$PfTaf.D$Hv D$H\$E1E1HD$HD$(LHD$HD$4H$ۑt$4tsLI$ I$`I$hIMhLH*HlӋD$4|$4H8[]A\A]AAE| o*AExAEt*D$(A*TYfoT$ ^+f(So+YD$ 1L$(f.v}hEy|$4gf.1ҾLA$0 AuHt$4LI$ HI$`I$hHkLH*1ҾLA$0 t$4LI$ ZHI$`I$hHHkLH*HkL1A$ mfUHSHH Hxu#L HH[]Hk1Af,tf.w !Ѓ<AUMcAATIJUJ SD)(1A9~.ofH A9B HcBEfAEMcGAD9~IcHD f.vAIcH f.rJJ D)Ic[]EA\A]DEff.ATLcуAAUHJSJD" ~e1LcBf.v&PAAMcBf.wSAADMcӃBAJcBD\uH_HVAIcD" D\[]A\HcAHHHcDMcB M%DADIHcLD$HD McC f.wMLADLHDIcE9DABA~L $DE|HAWIAVAAUMATUSH(AH|$HT$~OHD$$IHH$DEL $HT$H|$LAD$IHD$$AEA9}H([]A\A]A^A_fDATUHSHHcHVALL^ A 7@Ic AD9HH9ufDE11A~9CL@HAL9tD=tHHL9uES~/B1HET9DT>D>HH9u~tIE1ۿ@AIIcA<9|)ABtHcIHAHA<9}LfHcAHA9}[]A\HFH9A11AAB t+fffDfADHD9r9DQIcHH<I@AHHD9}vfDIAH95hff.AWAVIAUATIUSH\$HLL$LD$LL$@FE1L<ClHD$HL$CDFTHcŋ4HA9tiL,HT$8D)E]A$IcA9H }fABHH @AxD9tHcIcIcAD9HD9AHcA,A}IM9Z[]A\A]A^A_9D9tHcIcIcADGAAHD9|A~wFIE1HtDAIIcI9Aff(!af.rf.rf.ff.@ff.@D\$Df.rf.rf.Fff.@.ff(Df.f.f.DIHXLxLABD$HAA9|^A9AfTfD.wDf(^DT$Hl$hDD9UtSl$Lt$f(f(A.Lt$`Hl$hEADUAIHD9wf.ff.s#f.fsfDf(%2faf.rf.s]AWAVAUIATUSHHL$HL$8HT$H\$Ht$DD$HcAH|$ȉH\$AEffWM= HL$DAf(D$Aff.H|$HL$ȋHclj|$DbIDC,A9H\$IcEH H4MxDIXuE9f(fA(tIh 0fTf.wdf(^D9HD$҉8H|$D$H|$؉tff(f(AHHD9|%Aҋ< HcAPAD9xDD$|$'AIHD$D9|$[]A\A]A^A_DAf.rf.rf.sHf.@\f0AWf(AVAUATIUSHAHD$Pt$ԉT$ЉL$LD$LL$%E8fWAf(AD$D$D$D$HD$E~\$9\$DT$E9$tI$HL$A$\$89T$vHcM$M$hHT$H$I$LT$HD$H$HL$H\$DT$DIcHcBA\H<9fT^|$M$XI$xH<E1f.I;A4LcBDD9xATUfTf.wgf(HT$XYBf.wND$LT$PA9t-HD$HL$H\$P0DH[]A\A]A^A_fDf.rf.I9aD$E~ DT$D9T$~D$H$D$9D$D;t$~E~dT$9T$ZD$9D$tHL$P|$AƋD$9D$SL$HD$A9ΉL$Hxt7Hx t0Hxt&HxtH\$Hl$ Ld$(Ll$0H8DH|$nHD$Hl$Ld$HLl$H\$ILt$L|$H8HIt2H>tHDEpD}tEtEtE%HHxDtH5!%HHDH5%HHDtH5$HgHDH5$HEHDtH5$H#HDtH5$HHDH5v$HEt []A\D[H]A\@H5H=#MH DHl$Ld$H\$H9I}$Hc)HtHcHHJH9w9)‰DE_OH|$~L$$_$fn$1ɉ\$dIfbfnT$dfn$fb~fo flfoffH9rDD9t#H$HcHfD8HA9}HX[]A\A]A^A_H$H$$ D$Dt $HIAWf(AVAUATUHSH$8t$|T$xDD$pDL$lL$@L$wD$kt;$~7~3LLIcD HA9t}HcD$|IV1T$ H$H$HHH$S$T$ 9$\$d$Hc$HAD+$$LLHD$XHIHL$PHI@Jc!EALAA9}jD)IcLH H4HTLXHhLIc HAAH7HL9HIuHT$XI;\$d#D\$pHL$XdLc$HL|$P|$wHL$PH$HLL$0DD$lHf(T$ HDL$pH$HD$T$ HhH$T$ H$HT$p9T$lNT$lT$ ҉$B\$pT$pL$|Lt$PLlD\$xHcH)HH$HT$HH$$T$l$ILf(HD$HDŽ$HL|$X\$tHl]`DtEtEIŋEpMtPHcЃ)ϋL$LH)L4AˉL$AfC'G9xHcLXH H4L`LhHTH<fIc A HHHAI0HH9HcIDuIM9tkD$D$L59'AtFSI>HDHAD19t}I6 AD9}HL[]A\A]A^A_Hl$Ld$HH\$HIH$HL$PHH 5L$XH)H$)x)p)h)`)X)P)H)@dH%(H$(1HHtSH$H\$ HѾIHD$H$0H$D$0HD$lHuHHUH}tFH$H}HL$HD$H$0D$0HD$H}肱H$(dH3%(uiH$H$L$HH$H$D$0HD$H$0HD$HH6'H8h聯AWE1AVAUATAULSH8H|$(HL$T$'~[AD$E11H<)HT$pD HHDAT H0H9tAD σAHH9uHT$1E1|$'%EI1E1E1ALTfHcÉTIM9tMAPA9~A IHcHcAI<DHT$pACD)M9AۉuDEtBE~=1AtuHD$pA͉\HcDHA9}HT$(z(1~,HD$DL$'HD<$H-A11HT$(HD$HcDlH8[]A\A]A^A_DDI1D$4E1AT$Lt6HcˉDHD$(HhJHIIM9AB;D$}A HcHcAMADHD$(HhJHD$4HT$p+D$4\$4Afff.AWIAVAUATUSH(H$`$H$hDH$H$Hc$$DL$D!fA(HL$H$H$Hx$Ƅ$H$IH$H$Hcȉ$H$H$HH$\ۉ$IH$Hc$DH$$9$H $\IH$D4HAH$H$hAP++99$@Hc$$I`MH HcD HA9}A9$N$9$$I $Aۉ$H$IMHc$A Mh$Lc9$K|H$IH$D *H$IcD\ESI`HcDtD;$6$Alf(f(f(fTfTf(AYf.w!f(AYf.D;$IcӃ$IDHHcDBDDA H$H$A(D9HECf.f(H$APIXfAW+$^HDL ALH$A8FKH$DD$D$E9j9HcAL LDf(HcILECYDXfTf.r?IcЃ$EXIDHHcDDDA4H$A(AIID9$|fEBT HcA4lIcD\ECDEXH$$YIcÃTADEDEÃ$H$$9$Ƅ$D$Dۋ$H$H$ɉ D9$GHc$D+$I`MH HTHHcD HH9Au9$mLc$I`F9tJ$$LcNJL!@HIzIpD9II9}H$H$HH$AtH$*Y$A,Ѝ;H([]A\A]A^A_Df(fA(fATpDACDH$H$H$+$B<ALc$D;$JH$|7D+$HLH$HtfEEHcHH9AuH$HcKtL$pf)d$`HHt$Pf)|$@)DL$ HcI|fD)D$0fD)T$HI`H$HI$Xt3H[]A\P'='L(8[]1A\fS1H1H[1HHt H˞Ht H赞 u @3H[f.AWAAVEAUIATIUHSDHTPO0A4D$9ED$CD$HHlM$\@E~wAA9rD$IhHcT$D$IX I`D<HIA9|WfWEf.ztA $~_At9~AAH$11ELHIA9}D$ATD$H[]A\A]A^A_AtA@D$fffff.AWAVAUIATUSDH(HT$PHL$O0Ht$ DD$ D9/l$ E1E1AE1E1Ai@AIXHT$(IcD;4AE9}E;dEI`HL$AIhD$(HiHjHD9t$ |SHD$ (A9}A;p~sLIxh1fDH([]A\A]A^A_fD$ EtEATH([]A\A]A^A_AE1E1`DAIXHT$(*A9}A;AI`HL$AIh(HiHjHD9d$ ]HD$ (D9~A;p~sLIr1 At$ELD$AID$s1sLD$ID$:1@D1fDH\$Hl$HLd$Ll$H(AAԉtQH_u1H\$Hl$Ld$Ll$ H(DHtDH&H|Hǃffffff.H\$Hl$HLd$Ll$ALt$0H(AAȃHHD`$@0DH(@(HǺI?IMbX?cfH@C,LHH7QU=LHH]}IW=C@HHH@HH333333?Ds4HHHl$H$Ld$Ll$Lt$ H(fHl$Ld$HLt$L|$IH\$Ll$HHDPI*EuD*f($fT ^{ $f.vHY,…A$~B4(HfWHcAf.v$p1$1$H$$]CƄ$w$^$~$$wqD$hƄ$wƄ$xE~>H$H$Ƅ$wƄ$x+$$1$zt'$8$艬$;$<Ƅ$vƄ$'$pD$lJ$x $z $y*$pD$lƄ$yƄ$zƄ$'IxIcMH$0DH$H$HcE4DD$$$hH$@$E$*$1~N$X$_L$$Aɋ$1L$HTD$1${ $+$1$+$$<+$+$$$d$$`$9}$`+$t;$`S*$Y$A$tAt,$d)99}hIML$tMXLLH$$tMX$dHc$AD$|)9 $x)9iH$xMxM`At1LH$IH$H$I$xI`Hc‰$D$$d)9 Hc$lI$D$$$$$9ȉ$$`Hc$$pIH$IN A9tIHc$$H fDHH9d 9$$`}HcALA$pMB Hc$pEl$DDD$A9ʼn$$D$`Hc$MX$lIH$IO A9tGHc$$I @HH9 9$$`}HcAMA$lIhH$${C Hc$`HTHDHTx $|$p f(Hc$<$fTT H$`AH$H$f(ȋ$<_$\H$f(ȋ$9$_  ]G$Hc$MM$L HTHH$f$\Jc HID"AL$ ATAEHc$`D9DHcD$lE9t3BHcI HHwD9tHA9Љ$`}HcHc$\HDIL;$HDHc$\H$E$Hc$\Hc$`DfTU_IcHDHDAAAHc$$$H$hA]$IH$$Hc$lIx$9$MHc$pA$D$Hc$MXI`AHLIcH<H4+$H$HTLA ;BHIHcщDA 3$l3HL9uҋ$)$D$D$$<$9$$\U+$H$H$I`HDHH4f$\$\ HHH9uH$`H$H$PH$$MLLIMXH I`HH,$HD$IHD$dIXH$LH$hMx$HLILDHHD$IHD$IH$Rd$}D$Pt $'ut$~t/$~$IXML$$M{$~0$<I`L$\@$| Hc$l$Ix$$$ H$Hc$pI,$;$x,;$t$l;$$p;$|U$$9$ $8I$@A;t$$8D$$8$ $<+$$t$+$$<+$щ$+$AAt9$xM$x$dPC$$ M9$^ʉ$ Hc$Hc$AHL4HH$0IHH$($H$IHL,IxH$$H$$D)Љ$fH$(McJIx$H$BfWHcAf.vH$$|LH$L$D$$HL$$$H,$$Y8$T~z$d+$x9GI`H$(H$H$D$D$LH $Hl$HD$J+HD$$$rHc$IH$H$L$L$LH$$$$jD$lEf.H1L1ͱƄ$wƄ$xGIL$LL$$$$HD$H$$H$cH11L1RIH$KIcMXIH$IMMXATHcIH$IMM`A`H$PEL$L$LH$$$$i$lH$P sDIMx1M`AtLH$H$$xI`Hc$l$HD$I$$d+$9$$Hc$$$$H$$8$11H$PIL$LMH$LAtTIILAL$MTH$$L9„I$}L$D$$<D$HD$8HcH$@HIh$$Hl$$HD$0${l$D$(H$HHD$ H$HHD$$H)$$H$ AAtH$HH$@H$8E&H$IMMU$Ix$1DŽ$1DŽ$$<H$$H$$<+$;$t~j$8Ix$H$$Ix1ۉ$DŽ$1DŽ$$<H$IMH$tMXALH$赮Hc$tIXIxD$8H$$|$fAWAVIAUATUHSHHt HtU(TM@DE8ADŽ$$Dt$E$$AD$8$@4T1DŽ$DŽ$DŽ$$DŽ$$DŽ$DŽ$DŽ$H$H$*tH$H$H$H$$H;P*TDž$P~H L$H$H$$@MLH|$ .A>#$A$H`HXHcD DH1H1袪$D$E1E1111ɋ$}LUPT$E\u`ET$Ed$MlD}pDžDmtEhH$D$Dm|DHH$DexD$H$D$DD$$D$$%e$f($ f(f(X$^^f(uf(DžDž(AEHA> P$P_܃$ D_\xTDt$$PG<,D*D)$*D^$HY;^$P$f($H)f(E$D$$8EfA(D1HDT$D$DT$pD\$hDd$2DT$pD\$h$E)D$E)H^$D1H$$ݧH[]A\A]A^A_$HTceLLHExA6ZH"gHcTLHLHxtHHXHD$HH$IHcTLHLHtHHXHD$HH$IIz>Hh㈵>H-C6?Hư>H|=Hp Hx L L L H H Hh @I& .>IIz>Iư>H,C6*?HMbP?Hh㈵>H& .>sDIdy=I& .>I:0yE>H>Hh㈵>HHz>L*@I-q=I|=I& .>HH׊>Hh㈵>HHz>Hdy=DfffD9Ð cfTff.fDff@f%@H&HcHÐS9[Ð1t ff.@@0 0 fWf(fTfV f  fH H`HhÐffff uHX @DHh 1HtBffff.f uHX @ DfHHdHpH|HHzHHHHtuHtiHt]HʣtQ H٣tE Ht9 Ht- Ht! HtHHHDHfff.@@ HX V ;F;~ ~0HV HcDEtgAHH@HtN~5HVHct/AHH@Htf1fDATUS LX t9|O:ML$)HLHcHH H)LMSDA HCIL9u~"ML$Hc1HAH9[]A\ATUSLX Eb 2|A11AMZ7fDD9}HcAtD9|PIB Hc҉HcIB AID9}[]A\B"IJ )HDIR DHfffff.tGLMt;9}6HcHIH9|1H u pfDp @USHHt0 H$$Hp f(f.DE~Rf(xHHPf(f.ztf(fW˃H9}H\ @H H[]D(xDfWE[fD@ f.ufDz wfW0 D@tKfW f.zt wfW@ fDH H[]@ fWf. m1 ffDATUSHH@ YfTD$u@ HDD$@@ HcvL$fW0 DEx1@H D$11H;~D$ H[]A\D0 H(tHfgD$f.XeMZD$f.Xfz fDf(ufWDuE1L$1fW $@H H(tH $(H H([tH L$ (AHD9}ffffff.1fH Hcf Hw$HHcHfH͛ffDHLH:H<H9H5H1H-H*H'H#Hvt!~"HtH tHÐHuHXHf(ȨtX u=Y XVfT f.wH1fD9~fWP f.zHP)Hcf.vwf(D)9|4fWf.zt<H f.zft*^DDf.U-'H1\@ff.HHX+HD$Ht~ HYD$D$H~HPHHHD$HT$pD$HDHPfWHcf. @H &HH&HGH&HGHY&HGHN&HG H3&HG(H8&HG0H&HG8Hʵ&HG@HO&HGHH&HGPHQ&HGXH&HG`Hk&HGhH0&HGpH&HGxH2&HH&HHv&HH&HH&HH &HHN&HH&HH&HH̴&HHF&HH`&HH&HH&HH&HHP&HH&HH&HH&&HHP&HH&H H&H(H&H0H&H8H&H@Ht&HHHv&HPH0&HXHj&H`H&HhH&HpHP&HxH2&HH&HHN&HHط&HH&HHT&HH&HH&HH&HH&HH&HHx&HH&HH&HH&HH&HHr&HHĸ&HH&HH&HH&H H&H(H&H0Hx&H8H&H@HT&HHH&HPHP&HXH&H`H\&HhHN&HpHp&HxH&HH&HH&HHx&HH&HH&HH&HH&HH&HH,&HH&HH&HH&HHT&HHƮ&HH&HHڮ&HH&HHέ&HH&HH&H H4&H(H&H0Hp&H8H"&H@Hd&HHH&HPHг&HXH"&H`H&HH&HhHh&HpHR&HxH&HH&HH&HH&HH|&HH&HH&HH:&HH&HHn&HH&HH2&HH&HH6&HHȴ&HH&HH4&HH&HHP&H H&H(H&H0H&H8H0&H@H&HHHt&HPH&HXHx&H`H &HhHD&HpH&HxH&HHj&HH&HH>&HH&HH&HH&HH~&HH&HH¬&HH&HH֪&HH0&HH&HH|&HH֬&HH&HH&HH4&HHV&H H&H(H&H@H̩&HHH&HPHP&HXH&H`H&HhH&HpH&HxHz&HH&HHn&HHX&HH:&HH&HH&HH&HH&HH<&HH&&HH&HH&HH&HHƩ&HH&HHB&HH&HHf&HH&HH&H HԱ&H(H&&H0H&H8H&H@H&HHHު&HPH&HXH&H`HL&HhH&HpH8&HxH&HHL&HH>&HHP&HH&HHܪ&HH&HH&HH&HHl&HHf&HH`&HHB&HHԪ&HHN&HHȫ&HHJ&HH|&HH&HH8&H H&H(Hܬ&H0H>&H8H&H@H:&HHH&HPH&HXH(&HhH*&H`H&HpHn&HxH&HH&HH<&H H&H H(&H H&HH|&H Hީ&H H&H Hr&H( H4&H0 H֦&H8 H@&HH H&H@ ffff.H @SHu H ‰[ffffff.1ffff.SHu H ‰[ffffff.SHIDHX HH~E1FHtfWDf(H9AtEHHcA9MA} D)HX f(fTf.vAH9AIcuHtD D[EH HE11fW1cIDSHA9|DA9}D)HfWADSf.ztAIc4E1EHtfWf(H9 BHHcA9I  } D)HcX f(fTf.vAf.E1ABE1fWUbH47D)HfWf. ADKAHH9DA9|IDKHHH HÀ uHX @)9OÐHX HcHHB0f uHX @)9OÐHX HcHHB 0fHHHHDf.@u @u @fHP 1HtBffff.H\$Hl$H $ TH\$Hl$Hff.H@ 1HtBffff.Hx HcC H fWf(‹fTf.w2fWf(f.v$H f(H\ f(fTf.vf(f(fD_f@tKHP1fWHDDHH9]f(uf(@ ~>Hx 1Bf.]GȃH9f(~*f(fWf.DDDX EfWf.P  ‰Hx Hp  A\fTf.fDH Hc nA Hx f(fTf.wH Hc\fTf.@H Hcf(Z^Hx fW1f.wH HcX f.Uf(HSHHtDHx H E]Hf(LBLHfW*D1ۃH DA9|;IIAf.wIcH f(Xf.wA9}fHt tHEH[]fD19EH[]Af.w7IcH f(Xf.wD9IIAf.v1뀻vfDSH~7H JH H H9}H 9|1HcfH H H9}H H\ `ƃ [ f fƇ  tHX ;At1f;A uA~KL L AADC HcA<t ؅EB AID9}Ԅt^~TD9|OL HA95A< Au$H ڀ<IcDEADA9}¸fff.H 8fH BDD9L HHѺA<u'ffDA~YD9fDNHHA<tA9~E~)A@H 1HH@|FEHH9ufD1DfDfffff.Sc Ht+HX ;At 1[D;A uDH ~1H H AH9}DE~1H fDDHA9}EEN1)=;1AAZH BH HcAE9|Q >1);HGDIHE9}~H AHcE9}HH\ H ƃ [fD@H HcDH HcIcH H Ht@ DfHHHtSDE~8IVf.w(L AAf.wH 1f.WvH@D9LTf.wADf.wDHf.wA9}D9뷐L MAAAB9|\fDICFH D;@t)H¹@9|aD;BHuAIAB9}~+IK<t2H <t%H9}fDtfD1fDffffff.H SHH~\HHL AAE1JDIS(AJD IS JDIJD ID9}HɸtH B [fHr1[@HD}L IAIS IAAIHD2HD;~~DL AAIS(HFAHJDID;~>9}$H HDE~^HHL AAE1DIC(AJDJDIC JDIJDID9}Hɸt'H @ Hn1@HtzL AIC AHD0HHBHD;~@L AfIC(AHDHHFHD;~J@A9}4uHW HcHDf.HW(HcHDfffff.H HcI Ef(DHx Y H Ic,tOfWA!f.f(\\5fT‡ fTfUfV^ADfuLA!fWf(Xf.wf(\f.v f.rGf.ws2YAA!cRfWA! f.vX\ED(RfWATf.RfDIӋE1 Lx fWBy4E1L f(f(XNAHL9tGA Jf(fTf.wH HcH \ fTf.v\NHAL9uf.MtEfffff.H\$Ld$HLl$Hl$H(H`HhAH+p1H+x EAu6H ~LH *f(H\$Hl$Ld$Ll$ H(fEAOH**^DH HHH*AD$*^fffff.H Htd;~<t3H HcH  \f.H  Hcf.D9| H  Hcf.DH HcH  \f.ffff.H HtH t @u Ð1fD@D    t>t2HX HHBHcBHHHHHH t‰Hffff.~&Hc<tAHH fHtufDHtC~(Hc94t AHHfDH9tuH fffff.HcH4HcHcAAfDf.H\$Hl$HLd$Ll$Lt$HHH T$t$D$L$$|$A|$A|$EAp  $E@ucL$vBHC[1H1f.H\$ Hl$(Ld$0Ll$8Lt$@HHfHwHcHfDH|$ H|$kx H|$$>8 E( \ $f. $w $Etf. .z t &LfWD$EXgf(ȃ|$.\fTX^,^O~f. j.zt KfWEtf. M.zt KfWD$f.E(, $f. -zZKfW HEP f.-93@EH Hhf. ~-zt JfW\ $L$ffD0 S@ C|$f(\=-fTf.L${P PEuCHx f.,D$zf(6JfWL$Hx D$f.H HhIfWHx ;H Hc֋HfDHW1HfHx&;H Hc֋9H@HW1K1H@AWAVAAUATIUSHA,6A$9IcF|5HH$HcL,0fDA;$EA,.~9A$EL,$9|6I$ B(9ƺLtA9$}fD1H[]A\A]A^A_DA4IcFl5L<HcHEA,.~A$EL9|I$ 49ֺLitDcLkfCff.H9}$HEV11H~H HcH@H9}$HV1O1H~HcfWH4IL( fA.zD9OD92tIRHc9BO9u7I9}ŸDHS1H 1H[]ÐAHSH1 H1[]fDEDŹQDHDEt t'HtHHHHDHS1} 1HfDHDEt t7HtHcHHHHf.HyS1 1HfDHx0HX ;p$u@HHcH@HIS1 fWHf.HHcHfff.S HtctHf([fDEuuKHx f. $zt BfWfDHR1fW[f(Hx HDEt tHHHR1fWH@SHHHRH[1`S9H}$HRH1<[~HHtHcD<t [[ffffff.HHb|H1fDAUATIUSH$M$XA$P MA$~KI$PA$IT LHIDHYA9$}H[]A\A]@H*HQ$L$MA$I$XLM$X;SHHHtHǃH HtHǃ H(HtHǃ(H0HtgHǃ0HHHtKHǃHH8Ht/Hǃ8H@HtHǃ@[fDUHSHHH{(Ht HC(H{ Ht HC H}H[0Ht HEHH]H[]ffff.HSt&H tH fHhu[fSHHLJP HXHt@HǃX[H\$Hl$HLd$Ll$H(IIԉu$1H\$Hl$Ld$Ll$ H(fH {t@LLH fDH\$Hl$H\ Ld$Ll$IH(HHMAtvHt!H H9tHcH2Mt$H L9tLHcH H HtƀH\ H2H߾%DH\$Hl$Ld$Ll$ H(fH\$Hl$H HHt 莽u*Hc1H1H\$Hl$HHXH HHHH;@HHt t.HHǃHcHHDHM11Hfffff.HHt t.HcHHHHHfDHaM11Hfffff.HHt t6HcHcH4HHH HHM1 1HfDAWAVE1AUATIUSHHһLNPHvXGAD؄E1D9EHcE1HI,L,R@AMUf.zt#9A$ f.@HIA9|2A$9fWAMf.zUfDI$\ 6HD[]A\A]A^A_@E$&HcE1HI,L,[@fWfA.EUfA.$ sA$ f.HIA9aA$9~A$ UfA.EvEL$AmXAM$AY$ \AMA$ f.ufELAXDAY$ XEE>A$ f.LI$\ H\$Hl$Ld$ Ll$(Lt$0H8߬ffffff.AWI1AVAAUATUHSHHHt$8HD$( Ht$01HHt$ 1H;x%Ht$811H9}EH|$ Hx HcHHx%Ht$011H9}E# HcfWHLx H|$ HHHt$8HL$0 f(AE1HcAHc \fTX^fTf.vAf.vf(A҃HHEE1HcA \fTX^ fTf.AIcHEaHD$0MHL$,$H1yLD߯H*HB,$AL$Ef(LH9EH|$8Ht!HD$8H|$0Ht HD$0H|$ HtHD$ EtH|$(HtHHD[]A\A]A^A_fEtIcf(HHx Ht$ HcH_Jf.H|$(H HcH5Ht$(AH|$0uf.Ht$(1ɃHH|$(H HcHHt$(AH|$8 H|$ Hx HcH1ҾHmmf(E11fWALx E1EE1H|$ f( ef.AVIAUATUHSHDEA)f(‰HCD%I9C&H fWۉf(Hf(Lp fT[@pf(fTfUfV$k$tf(‰HdfW$f.z_f(‰HAfWI,R@HH\ []A\A]A^cH\$Hl$HLd$Ll$H89?7HD$躶ZfWHD$D$f.H LcHN,BHp LH B \L$\f(f(fT f.vHH BfWf.v5H>1HH JHp L$B H\$Hl$ Ld$(Ll$0H8HQ>1H1@f(*fWL$DD$HZuVHp HcH  fW и\L$fTƒ fTfVBf.H H HcHʸH\$Hl$HLd$Ll$H(9WOH$苴tg$H芥ZHp $Hc+ fWH XиfTƒ fTfV H LcHN,BHp LH B \ $\f( f(fT f.fWf.v7H<1HH JfHp $B!Hq<1Hh1H\$Hl$Ld$Ll$ H(DH H HcHʸ@fWH B8fffff.USHH9}%HNH1H1[]@|tf$胲$@tafWf. f(f.wUH f(@pfTfWf(fVBD$ޭ$t  fTf.vf. zrOf(f(ÉHHp HcH\ H[]Ð&fWf&f(fWfffff.Uf(f(SHH89}'H:H1H81[]fD~f(% \ fTf.wzf.` &fWf.f(f.v`f(H HcH\ H H8[]@f.Hzf(@s tf(ÉHT$ f)$$mf(f($$H f(fTT$ @pfTfWf(fVH@ -f(‰H\$f)$$ f(f($$H fT\$Hpf.v5 fW@f(H_9Df H9|$~  $HfWHQ91{1H@Uf(ȉSHH9})HB9H1A1H[]fD~f(fT f.v!H f(@pfTfWfVf(ȉHf(f(HcH f.f.#zrH f.IH\ $袞H $HcH[]f.H\ $Z #H $fWHc_ H[]f.H7H1H1[]ffffff.Uf(ȉSHH9})H71H1H[]~f(fT f.v!H f(@pfTfWfVf(ȉHf(f(t|HcH f.H иf.QH\  $H  $Hc H[]@H\ $誜  $H ]HcH[]H6H1*H1[]ÐH\$Hl$HLd$Ll$ALt$L|$H\ HIEHD$HHD$@t6fWf(H\$XHl$`Ld$hLl$pLt$xL$HĈD\ Лu tHD$?Ll$0IMA0HD$0H8!|$?I?H` E'DDF1HDHH7fWI 1 21YHT$nQHD$0I1$  HLIH1Dfffff.t qH?HcH( sH\$Hl$HH(  HH$‰3f.+v\$HHc f.w1H\$Hl$HfDf. $fffff.AWAVAUIATIUSHHH $Z;HD$0HcH,cfA+I( fWHH f.3fWfA. #HA9|}A؉L)HAI D$(f.D$rA+LHA I L$@(L$@f.x0AXI` cEHD$EAHD$8HT$0H\$8HB8HJ(HR0D$HH\$8D$$D;d$$}_Ic1H L$$HH\$Hl$H@ ufW $f.tPfW $DH9|$~ H HcHfH#1 fWHfH9|$~ H HcHRfH#1fWHfH\$Hl$H9H}-H#1پH}1H\$Hl$H@~H Hcu1f.uzH4\ fT f.ffffff.H\$Hl$Ld$Ll$H(9HII}5H#1پH1H\$Hl$Ld$Ll$ H(f~Ht;A$MtHqAE@AUATUSHH(@DE2E1D$f)D$@9|UH\D$ fTD$f.vщHfToAE f.DG9}H(D[]A\A]fh;HcL$E1D$f)D$H HB \D$ AEfTD$f.DGI9}H(D[]A\A]@E1PHl$H\$HLd$Ll$Lt$H8Ht\ t%1H\$Hl$Ld$ Ll$(Lt$0H8D\ ؅uǀ tHHntH` 耵1H¾!HHK![fWH p11HY ;H  EE11HHI${/H` 1H DEAA @HJ(IIE9|lH B< u1H4DH'8uLHfWf.ztfWf.z t f(fW @H蘏txV9|eHc)H fWHTH@HHHfWH9f(f(fWfTfUfVuHX @ T$Hߎ~mHADHA^D$f(HfWfT  fTfUfV HD9}fDH` 1H1H D$CPH H蓭 DLX EES~FHL @IC;0BOHqHHA9I}1H4ffffff.H\$Hl$HLl$Lt$ILd$H( HIH1HtHHHHEM@MA@t[H(Ht_H0tU@tHIEEt8H0HIH$Hl$Ld$Ll$Lt$ H(Eu@HD+~.H ~$HDH11DHH(HtH0I1gä~ H HtHfff.Hl$Ld$HH\$HHI tKt/11NtHmHl$H$Ld$HfDH1t@@tI$ H\$Ld$HHl$H( It.Ht$11u:H\$Hl$Ld$ H(@H11{fHt$LHHcH/ffff.H\$Hl$HLd$Ll$HH HIIHL$1HT$MHD$ HDMHDHHE1҄taHtHcHt$ HHMtHcHt$LHMtHcHt$LHbH\$(Hl$0Ld$8Ll$@HHfHy1M1fH\$Hl$H(Hx!HX ;puAH @HIپH1fWH\$Hl$ H(DHt$11fWtH HtHcHT$HAUAATIUSHA$HI$HcH:Lbt~A$ ~rA$~fA9$|KLtA$HcHI$X0A9$}fEA$ A$M$E$M$M$X IEI~+I{DHcIIHA9I}A$~@ D$D$ D$$D$(D$,H\$Hl$؉Ld$L|$ILl$Lt$H8IHLLJMAAtSHtNA]IvHHcHHv~'AE1H@A$)D HH9uH\$Hl$Ld$Ll$ Lt$(L|$0H8L `@IvHcHH\$Hl$HLd$Ll$ Lt$(L|$0H8۽ff.AWAVAUIATUSHHT$LDE1NID$T$HT$}lHpL"I6LH H|$PHc|$IHcHt$HHHx|$uxI6C1H< fDLHVLAHFL9Nj Tu^H[]A\A]A^A_fDL DL`I6@I6DCHFCH<HVAHHH9uDBAc DDHD$AA9AHD$sI6I6EHFHFu3DDAA9~AT$fDA)A9|$uzHcHNLHfDDHBI9AGHcӅۉ8cDgfffD)ZHVABEgL_T$IlDH9 tN H ]Hfffff.H\$Hl$HLd$HHAHc։1҄t EuH$Hl$Ld$H@HާUSHH(D$ D$H|$ D$^D$.f.z@ `\HS(HcHYDHS YLXD$H([]Y@fW f.H\$Hl$HLd$Ll$Lt$HXH?AAD$rDHAED$H|$(D$^D$iEf(HUH *@ D$(f.EkIcHH] \f(ЃCH}$q$t A*YЋU ~e;aH}HD$(HH H\$0Hl$8Ld$@Ll$HLt$PHXHUHHHD$(RIcHH](hH}fTf. vH * YT$\D$(YK9Љ^X*^KHEq.H}*M* X^f.M Ƈa YEf.EvHEH}H/ 1胼fDHD$(HH H\$Hl$HLd$Ll$ILt$L|$H8HP Ht~'1҉H\$Hl$Ld$Ll$ Lt$(L|$0H8H1PvH ~@tvE1E1AID;H }HX HP 1B,(AD"NuHP 11luHntA$D;E1E1DAID9H HX HP 1B,(ADMuHP 11 luf.H\$Hl$HHL$(H袳fWf.zt uH\$8Hl$@HHHD$ $rD$t͉HY $T$(f.ztf(Y \@USHHH H@uH[]fDH HpHcHH 1Hc莲~9f.H HcH H9}ۋ~B@H H HHR>GH9}H\ ~mH[]DHl$Ld$HLl$H\$H(H AHAtVHC(H H{Ht HCH{Ht HCHӲEtH tHlDH\$Hl$Ld$Ll$ H(ATIUS1H t@1DL3u[]A\AWf(IAVAAUIATIUSH(HH LD$z01HU8IcHM(Dd4HU0A9IcĽLLCfWE1HsILIǍ.D)L %f.IHHM9f(f(CCYBfTf.wf(DD)A$t5E$f(LD}f.A @H|$tHD$(H([]A\A]A^A_D)f$ }f.X$zAEAG1L$1ۃHcH2HU8IcHM($DDD HU0E9IcHHcHB(HWHX $H@(X$DHFf f)L$`tf$fWf.L$Hzt f(fW1H$B `$ ½f)L$`$fT X$H$DHB`$$S$f(\fTD$`X^f.L$Hv*$$f.v$$f.L$xvA LAHp HX B0HB$B t>HcHB(H VHX $H@(X $H$DHB`$d_ fWf)L$P$f.L$Hztf)D$P$fWDH$f(\fTD$`Xɹ^fWL$Pf.L$Hv*$$f.v$$f.L$xvA kAAID9$H[Hٟ 1$f.vHQH觟$ H[]A\A]A^A_H$HB`BTJH$$B`fTD$`\f( f)L$PfDHT$HvsHtDHHE[T$H$Hf(IؾH蹞H@DHT$HHDHHET$H$Hf(IؾHI)@HD$0$$CD$0$$1H!H VD$0$$i]fH$HHH*h貝ffff.u 1eKD1KfHcLd$Ll$L|$H\$IHl$Lt$HHH,H<$IMHD$HEHHD$;LH0H9ItxH<$AVHH}LWILSHfNHI ND$H\$Hl$ Ld$(Ll$0Lt$8L|$@HHILLBKH|$LsfH\$Hl$HHHHtGHoHPH8HH虗H\$Hl$HDHHtHDžHDžH\$Hl$؉Ld$Ll$ILt$L|$HHIILD$LLt$PLT$XLT$s9LT$I$P HcMH@H\tHsL͖LT$MtCAH|$t C$HT$HtNC MEtC~?MtjLK(HS0AA AADHJIDJHD9E}1H\$Hl$ Ld$(Ll$0Lt$8L|$@HHLK(f.AADH;M~fSHurHc HHc1H GHFƃH[f.AUIATUHSH8dH%(H$(1H HtIHDž MuLH蕔/LLH1Ht HZD)LHHLzHHHH! t€DHAHDHHA8.H5XH誒H譔HH  H5hH辔HH > HЄz1HHIncompatH$DŽ$ sionH$Hible verƄ$$H$H1MH;H$(dH3%(H8[]A\A]ÐxsxoxfLH舑q1HHFile notH$DŽ$ fouH$fDŽ$ndƄ$1D1HIon datalHNo versiH$L$H$HkfDH H5H H5H H H5H ђH H t`H tVH tLHtGHSuccessfH$DŽ$ dedH$Hully loa1H$%f1HaHMissing HfunctionH headerH$H$H$H$ YfAUIATUHSH8dH%(H$(1H t_H HtJHDž MvLH薐/LLH1Ht HZD)LHHL{HHHH! t€DHAHDHHA8.H5YH諎H讐HH H5H运HH ? HЄc1HHIncompatIible verH$H$L$DŽ$ sionƄ$$H31MH<‰H$(dH3%(H8[]A\A]ÀxsxoxfLH舍p1HIFile notH$DŽ$ fouL$fDŽ$ndƄ$0D1HaINo versiIon dataH$L$L$Hg1҄HG&H H,&H H&H H&H H&H` Ht&H H^&H H&H H&H H|&H H&H0 Hx&H@ H&H8 HT&HH H&HX H&Hh Hz &Hp H&Hx Hn&H H&H H&H H &H H&H H&H Hj &H H&H H&H( H&HP H&H H &H H &H H&H HJ&H H|&H H H5H H5H H H5H H H5H όH H5H` 赌H H5H 蛌H H5H 职H H5H gH H5H MH H5H 3H H5H0 H H5H@ H H5H8 H H5HH ˋH H5HX 豋H H5Hh 藋H H5sHp }H H5gHx cH H5ZH IH H5IH /H H5>H H H51H H H5)H H H5'H NJH H5#H 譊H H5H 蓊H H5H( yH H5HP _H H5H EH H5H +H H5H H H5H H H5H ݉H H H H H H` H H H H H rH0 dH@ VH8 HHH :HX ,Hh Hp Hx H H H H H H H H H( HP tzH tpH tfH t\H tRH tHHtCHSuccessfIully loaH$H$L$1DŽ$ dedD1HHMissing H$H$HfunctionH$H headerH$ AцUSHH(HL$ LL$LD$n@u9HD$ tHD$HߋHD$ 0衟H([]f.HD$HHD$ $0NugY$fDAWAVAUATIUSHXH @t$'HD$@u$D$4D$4HX[]A\A]A^A_fHhtA$~D$0D$41@D$0H\$D$0A9$|t$0LyHSHT$tʋt$0LfWHT$@D$8HKs HBPHL$fTfUD|,fVA9D$HD$8HcL4E1fT^D$HT$@HL$@LHBHJc0HA }<AA 1ɺL Ģf(XL$\D$8^fTfA.$ L$)LD$(ɳ$f(A$ YT$(fW\T$8YT$Hf.rfWf.d^IA9D9BD$4|$'t|$'+HD$I$  ff.AWIAVAUATUSHxL AHPT$THL$HLD$@HD$h7ADpE11D9&HcfWH,HD$hEE1A)D$8HD$ SE1L&EuHt$ 1DLD$fD$H|$hIcAfHA9~8D$8f.Ezt9\$TtމLd{uHD$@HA9DHD$HD(HD$@uEfWH|$hD$XfWH|$h\$XHtD$XHx[]A\A]A^A_IT$PHcƋLD4HcE1H,D)ȉD$4HD$hHD$(V1ɺLEuT$4Ht$(1LD$eD$H|$hIcAǃHA9ID$HHc(ID$ 49t$TtL?zuHD$@ADfWH|$hL-&1A\$8\$XfD1҉ME1D$H$褧H|$h1Hc9 }CHcf.|BHHHf.^X9|9@|1@DFAA ~fN1HHDDf(\f(] Lf(f(\f(]DHH9f(uL HcHL)HfDH\f(HD9]f(|]T$XT$Xwf.L$8f.vWHA9IcL)fW3\$XH|$hL$X@9HcA9~uD$X@L) fW ˼]L$Xufff.Ld$H\$IHl$Ll$Lt$L|$HhD L E~ t/fWD$H\$8Hl$@Ld$HLl$PLt$XL|$`HhfLtHD$011LHD$HD$4LD$HH$|$0D$~A$A$ D$:fWAD$$AD$&AD9ID$$;D$0I$PD$fB.pztDLv@IG8Bl0B09ʼnD$ }}HcH!]D$H9l$ D$~OIG(LD$DH $L4t$0~D$D$D$$9D$0~>D$D$xDD$f.D$ztЃD$$A$fDD$@fWD$fSH ( _p f.v Hǃ( [H\$Hl$Ld$Ll$ILt$HHՉT$t$;;fH 6T$t$AxrLM$ DIF0Ic f. ,zt fWf(L&f.HpپL1hfWH\$ Hl$(Ld$0Ll$8Lt$@HHfDHDHcHP1D$Ct$L$f. ztfWL$D$1L:qDIF0Ic #H|$Ht$iII$ fff.AWAVIAUATUSHH H Ht$XHt$xD$pH$A1QIX fWHA~HcHA(L脒AHL$xCH9|.uIp L1fWEA@EwD9:HcHT$xM H HIHHHA9}~OM f.A9~!H\$xHIx HXJH9~̍oD9LcH\$xN,LLI B< uII BX(LHIIHA9|I B< tAAJAHDŽ$@AH$A9"B*H\$xfWH$f.ztIPH$D1LD$`HbY$H$H$H\$xHB8XD$`DdHJ(HR0A9ĉ$}qIc1H LHDŽ$E~@1H$H$L$L$L$L$HfDH Ht,H Ѓ|tHT$HfDfDL* L爄$*L爄$*L爄$*L爄$s*Ƅ$tA$ A;$ $HCDE~@L-*u1@L*L爄$)Ƅ$A$H$1LiWH|$@tHL$@C$E$Eu@D$\ADA;$AƉLgLÉCiAE$t1DLwHL$xIcH$f.ztuD$\H$HcT$\I$ HcӋA9jbfD$\ADŽ$NDLD$@11҉H]OC$$f.AE9$$DLfLAʼnOhDA$At1҉L聴HT$xAH$Hcf.ztpLD$@A1ɉHDL$NDL$t C$ЉEu7t3D$\H$HcT$\D,I$ IcՋ;$"f$@T$\H$HL$H҉A$ A$ D$P~~$ $D1LE'H$D$PH$I?AE1fWAHDŽ$L\$pHD$8D$`-I$HcI$ ºdD$h$$$D$hYD$p$$t&$'$YD$h$$t-fW$f.ztfW $$f.D$`v0f(D$`AX$ f.$AD$`H$AID97B?A$ADD퀼$L1t 1LfWf.~1LD$h$H$HcD,E$HDjD@LKCiD$p8L$I$Hc݉LH$$$HD$xL\$у$$$\f(fTNjf(f(f(f(fTfUfVtY\$h$tfWf.ztfWШY\$p$@I$HcI$ ºd1E1L#I$HcH|$8kf(؀$f(\f(f(fTيf(f(f(fTfUfVtYT$h$tfWf.ztfWYT$p$$fI$HcH|$8jI$IcH|$8f(L$ jL$ \\ |fTfT f.DL["dLE"Ƅ$OBL-fDt 1LfWf.1LD$h1LdfWD$hL!H$HcHL$xL\$tYD$h$tfWf.ztfW9YD$p$=H$DoE$H$HD$HE1H$1ɃLHDŽ$N$H$M$ L$fDHcAȃAH9L$\}D$L %t$\H<$LؑH$HBfHDŽ$1LfW D$ht$\H$M$ L$@HcAAH;L$\~@fH\$L|$HHl$Ld$ILl$Lt$H$ t~EE1DH\$xH$L$L$L$L$HĨf.V H߈D$[EH߈D$\4@H߈D$]#H߈D$^ZD$_E1 D$4`fWH?HD$HHD$hAE1HD$D$8fDAD9DH\HcЉH DuʉH`tHP 1uAH Fd%|$^D$PHIcH º詪D$@|$](|$_=|$^D$@|$\L$HYt|$^DYL$@|$[tfWf.ztfW of.L$8EtD$8X f.vEDd$4L$8HIcH|$ $^D$PCeHD+IcH D$ кT$(ΌT$(H|$^f(dT$ \Ȧ $\fTSfTKf.GDd$4fDH{|$[uEDd$4@1Hn|$[DEt$4fDH't<1HfWf.zt$1HfWD$@D1HD$@HIcH º~fHA `D$HHH~D$_|rH $& $t%1HfW $f.1H $ $D$@`HIcH|$^D$Pcf(؀|$\f(\,f(f(fT\f(f(f(fTfUfVtYT$@|$[tfWf.ztfWlL$P\$hYYL$H1H $ $fW3D$@AW1AAVAUAATE1UHSHXD HL$ED$ 6HY@u(AA9fDEuƉDHAfT9D$XD$ aL$\f.L$ f(vYD$(XD$ aL$(\f.L$ f(BYʪD$0XD$ qaL$0\f.L$ f( YD$8XD$ 9aL$8\f.L$ f(YZD$@XD$ aL$@\f.L$ f(Y"D$HXD$ `L$H\f.L$ f(vf YD$ X $` $\f.L$ v-HD$H?AHHXD[]A\A]A^A_D9DOA9+DD*il^HD$묐AWAVAAUATIUSHHxH T$fHL$PI$PfWHT f.u=z;l$@HIH;l$tkEA/tHD$PHL$HHTHAHHcHA 4;t$HD$H<$H>Ht$@fDH\$Hl$HLd$Ll$ALt$H8H@ IALHtXLIEDH$ @H@ HH\$Hl$Ld$ Ll$(Lt$0H8 f.H HH@ fff.Ll$Lt$IL|$H\$AHl$Ld$HXHD$`Ht$ L$ELL$HD$EEzLd$1 fDL~4tIA9~NA$L 7uH-L1C1H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXÐIP HtrHD$Ht$ ELL$L$DH$IP H\$(HHl$0Ld$8Ll$@Lt$HL|$PHX HaDL1gB\LJ HIP wff.S9H}$HH1B1[~H HctHH  tH   u [HfDuHZ[ffffff.H\$Hl$Ld$H9HA|]~Y!uH$Hl$Ld$HEtfW ZHH$Hl$Ld$HcSH1پH@1@S1H1裦ƃ [f.AWAAVEAUMATIUHSDHMt LÅ5MHcIHtH8Ht HLQANDtVHcMIfDHcIHHtBD9~ D)ȉBLH ufH[]A\A]A^A_@HcIHtH8Ht HLLLLʼnu AAHcHIHcLL$LHcAL L,H,fDH 2:H( JJ HPJJ HXHtJJ H8 HtB*HHt D2D:H0 HtB"B*HHtB0AHHcHHAHHIIAIIHID9T$*DH<$Af.9H Hc *H( HHHPHHHXHtHHHHt D D*H0 HtHHt8HHcHHH<$DeHVLH8 NHt$ HHD$ A~BAE1@H<$D\t H|$ AD,/AHD9}L8 MH|$ E1E11Ic ~IcAAAHA9|LX MtJDH 1E1E~31Ic ~HcƃADH AHE9|׉H HtWHD$ +F< f.HX E1H|$ \EL0 MtSDE~GEAfM3A1);D$|DAH)AH9}ˋt$D)99if.H @t$ Ul$D)9~4ՉHYtŃ HP 1tL 롋A9+LcE1D)NLcЉJN4J<HD$IM@H BBH( H:JHPH:JHXHtH:JH8 HtHL$H LATATHHt BDBDH0 HtB"B*HHtTHHHcHыIIIHIIAI9t$L8 Mt\~XE1E11&B9IcAAt$AHD9~(A 9D)99}IcAA t$LX MHH E1҅~UE11&B9IcAAH t$AHD9~(A 9D)99}IcAA H t$DH fffff.H\$Hl$HH1҄t-H߃1H߃H\$Hl$H@H\$Hl$HLd$HIԋB9}hHn1H`9NteHLLHzH$Hl$Ld$H~9~H)1҄tɀuDHP}fffff.H\$Hl$1Ld$Ll$HLt$H(AIIu'Hl$H$Ld$Ll$Lt$ H(H 0ALLD8x$ uH|DHmH11AUIATIUSHH t$Ht$茞E$D;D$IBM$p M$x M$ IcHH HH4H<@I AI3I HI2AHHA9HD9D$~1D$9HIAIًt$LLAt$LLALH[]A\A]fHt$֢MLtOD9t1I$p HcHHZI$x HHZI$ LHuA+$t$(DDD$A$A@DƉ))9O؍A9DM$p M$x )M$ IcHH4HH H<I AI3I HI2A9HHAA$HD9}WM$p M$x M$ ff.H\$Hl$HH1҄t-H߃O1H߃H\$Hl$H@H\$Hl$HLd$HIxQB9D9pu HytfHLLHv#fH1j1HX1H$Hl$Ld$H)u1fffff.H\$Hl$HLt$Ld$ALl$L|$H8B9}IHiH11҉H\$Hl$Ld$Ll$ Lt$(L|$0H8f.~9})fDK1҄tHtD,ABH H LcJHEAH BHL\ A8tfH K?JHp f. D-ztJfWL\ LEuHp H JLƃ H F48J1҉[f.H Lc탃JfAEHhADH11 f.USHH(9 # f(f..,f(fTT$f( f.D$H$$f.+H H T$HcH([]fHfWf.T+H f(fT@pL$f.BfWT$3HfH1H(1[]HߺQH([]DH D$HcH([]H @Hl$DH\$؍ELd$Ll$Lt$H8HAIID$1҄@H HcH߉,oHp D$HcM#HD8HH LAL u HsH\$Hl$Ld$ Ll$(Lt$0H8HieD1 1fD('kD$f.2)zf(ȋFHp fWHc H 1҃HcHH HMHߋ \fff.A1H1AW1AVIAUATUSHH(T$Ht$D$EE~yHAAL|$ AIE9|OHLHLH\$1 HL$ H9uH,dHL11h Adž(1AtHt$T$LD$H|$Ht$H([]A\A]A^A_SHqƃ [ffff.AVAAUAATIUSHHX H!" uMLDE9|dfDfD؉LDHcHHUՉE E؉ډLBHcHHEM MىDE?HODtƃ EE)E9}BDIcH}H DHTH4~HcHE HH9uDA9BIcH}DH4IcH H7DH9}D;u~Vu 9?Hc)H HD0H4DHHU D9|DHH9u@[]A\A]A^fDD9~)UD)9}HcH<fDH9։~HHME EfLd$AAH\$Hl$HEHE9}/H`1H1H$Hl$Ld$Hf~H0 HtHcŋ4~Eu<1ɺH1ɺH t3@tn1ɺHHntHE1HAHI1ɺ1HDAUATUHSHH0 H~zHcL$fDHtDH0 H 4;B Hcƀ<t1)D,:Icŀ<t@H&IH0 HtJHDž0 H[]A\A]@1HDHAWAVAUATUHSHb GH uH0 AAHLc1HDHcJ\\HfWH HH f.zt f(fW B?B AD$II9|fH0 DHtB N<|tNH( fWB0f.vH HcIAD$I9}HHƅb H[]A\A]A^A_@AAE9CH "?DHcH H4fWHH  f.fWf.fHHfWf.zuusDHH0 fWB8H( B0f.vDH fW=IcЋWDHf(fW l=|f(fWT=E@=fWuRHܷJH ftH辬@(H[H1 H1fDH\$Ld$HHILHLd$H\$1HfDAW1AVIAUATUSHHHt$wAxtHE1E1L|$@AIE9|OHLHLH\$HL$H9uHL[HL11Adž!AtHt$LH|$HtH[]A\A]A^A_f.UHHSHHHHi tH[]@HgtHIHHE1AH[]DLd$AAH\$Hl$HEHE؅~;~3H,Z1پH1H$Hl$Ld$HfDt~ Eu@1ɺHA|1ɺDHJ t1f.A1ɺAHD8fDHftHE1HAHATAUSH9} 9}HNu[]A\)u[]A\DHA)[]DA\fffff.ATIUHS~>H$t0fDHItLuLHLH t []A\ÐH,etHMHHE1q[]A\H\$Hl$1Ld$HHAԉtH |u1H$Hl$Ld$Hf.xEx؃ffff.H I@H\$Hl$HLd$HH ~1H$Hl$Ld$HDH1H@HHHA苐EHU0HHփHA9AFE1t'A9 6HrfWAEA)EADtGf( a1H1@f(fWf)HD9rAHA9t+ z6f.AfWHE9HHHHHp HPHx Ht"HXHtkSH f.\v \ [\ [ÐSH H~.H* \ \f.v ǃHP 1HtHX H=t [f ~ƃa 0[H\$Hl$HLd$HDLJRt ǃ~ƃa ~Hx Ht u+uDH$Hl$Ld$HDH HAWAVAUIATUDSHH t$<T$8D$0LL$ L$L$/1҄#HcD$8HcT$L@H Hp1DH21HHP$̴ $tf. k zt )fWIc øjLd$H\$IHl$Ll$Lt$L|$HL dH%(HD$H1uG1HT$HdH3%(LH\$XHl$`Ld$hLl$pLt$xL$HĈA$Ht$(LHD$(tLf@{A$HD$0A1HD$HEHD$I$ D( IFPD$D|(D (E9~JAGIcHt$(H MFHI~ D)HTHfIcHHH9uDD)ʉT$LH|$H RE16LD$(L$SHt$L蝪H|$I$ 6DL\CY,fTs fA.$ wA$AD9|vHl$@DLIFP,(A9~HcHfDIFHDLHcIF HoA9H|$(HtfD+HD$(LjPAWAVAUATUHSHdH%(HD$x1b HD$8HD$0CHl%H0 AD$$AHD$(HD$jH B f(fTf.-&fWf.f.H0 HtB4(~H$$$$H &D$$qH0 $$H T$$fWB(H H Bf.zt f(fW %B fWf.zt f(fW g%HD$(H( B fWf.v JHP 1DRAGIl$$IHD$(9EH  B1LcB$f.nH Bf(fTef.SfDf.fW $f.fH0 H0 B.H fWH Bf.zt f(fW 5$H Jc.JT$$H Jc .B: HD$(H( fWf.JDHL Ht$01Ht%Ht$81H=DH|$0HtqHD$0H|$8HtYHD$8HX~4HWt#H6_~HZf.HHf1111Hƅb HT$xdH3%(HĈ[]A\A]A^A_@HP 1)FH|$0 ƅ DHL$8HT$0HHL$8HT$0H{H "mtH J HcH Ѐ tHHT$(H<H0 B.O9MHt$HH$$H0 AA!ŃAHHtH jHCH1 H<>+HD1HH JfDH9MHt$HHHuH`11H"H JHTBA1H11҉H$1HՆmH FJHDBHA11҉H#HLt DDH&H ueHfEHBHILEEHE1ZHžt;ĞHBHH1+HFH1UH裞ttHgH@BHIؾH1랾H\fuv HHkA1**^YtIH 9G,؃eY*YKIH,N%%Z**^wYIH F,؃fD 1ېH\$@H $HE21HHHfH~1H1YHÐH\$Ld$HHI觝1HLHLd$H\$HfD{ff. ff.ff.[ff.ff.;ff.+ff.SHu [@Hiu H[<@H1nH[<Dff.H\$Hl$HHHHOt%H\ 8H ƃ H\$Hl$HHK,ff.k,ff.HHH#HHHAH|$HAHHD$1҄tHT$HHff.HIAH|$HLΉHD$DA61҄tHT$HHHHH|$HƃHD$01҄tHT$HHÉHIH|$HD$ЃDЃLK01҄tHT$HHHHH|$HƃHD$#01҄tHT$HHÉHIH|$HD$ЃDЃL/1҄tHT$HHH\$Hl$HHHHHtHc%H;8tt+&Ht+HƃHl$H\$H@ HuHgc%HHHSHH HtHǃ HHtHǃH HtHǃ H PH H t 1HIH t 1HEHHPHtlHǃPHp HtPHǃp Hx Ht4Hǃx H HtHǃ 1H胘HHtHǃH( HtHǃ( H0 HtHǃ0 H HtHǃ H HtHǃ H HtfHǃ H HtJHǃ H Ht.Hǃ H HtHǃ H HtHǃ H tHIH t*H;H߾H* H-H t 1H$H HtHǃ H9|H -|H a{H U{HHt4HǃHHtHǃHHtHǃH{H` 議HūHHtHǃHHtHǃHHtHǃH HtpHǃ H(HtTHǃ(H0Ht8Hǃ0HHHtHǃHH8HtHǃ8H@HtHǃ@H HtHǃ DH E~HX HtHǃX HP 9xH@ -xH蕸 Hh t`Hp HtMHǃp H Ht1Hǃ Hx HtHǃx Hh LH[HHtHǃHHtHǃHċH踋H HkHǃ 1H9]K#H[2f[HSHtH?HtH[fffffff.SIh㈵>H^ZHJ(Ht.H8t(H>'H|$HH‰ߺGA9H躽H|$H‰lIHFH|$HjZHL$(f.@H|$Hd,[EAH|$HZrH0tGt>HJ Ht.H8t(H$H|$HH‰IA9HL$XHT$PHHL$XHT$PH|$HnH|)HtH|$HŊHfWf.ztH|$HkcHL$(f.H|$H0H|$HHD$lHT$@Lt$dL|$hLl$pHD$ HD$8HT$HD$ fDHL$ MMLHHD$H$,0T$dtHt$1H譭uFE1H|$8HtHD$8H|$@HtHD$@EuDCT$dHt$1H谪tHD$8HL$ MMLHHD$HD$@H$/HD$8L$hLT$lH|$HLL$@DD$dH$艇AKH\$Hl$HHSN%HHHH0te;u@H`;;uHDžH\$Hl$HDH5HIH1HuDƅ빐H?H1zf.H\$Ld$ILl$HIH$HL$PHH ML$XH\$ IIH)H$H)x)p)h)`)X)P)H)@dH%(H$(1H$$D$0HD$H$0HD$OHLAH$(dH3%(u H$L$L$Hfffff.H LIЄHLH-HE1fAWILAVAUATUSHH$HT$8dH%(H$1H|$@DD$4HLL$(HD$ qMD$L T$LHD$PE1E11HD$T$fDHD$(H|$@D4(D芇HT$ jhH|$H ,2`HT$-z1zHbH|$8L1B H|$@DtH|$8Hz<HL1kD$D$4~D;d$4|D9l$I1AHD9l$LH$dH3%(D$LHĘ[]A\A]A^A_H|$8H 4JH;L1E11@+u+HD$x1fuxfuH+f.HL$H|$8H+L1B @H|$8HvL$o$Arffff.AWAVAUATUSHDDH|$PH Ht$HHT$@f= H|$PHt 8B1Ht$@H|$HH*H|$P Ht$@H|$HH*1HD$PH$Hǃ!HD$PH$Hǃ螧H$L$1HL$@HT$HAdH|$PH$H|$P1fWf.  Ht$@H|$HH+1E}Ht$@H|$HH)L=*@Ht$@H|$HH)1H|$PHD$P qX fTf.HljHD$P @\ fTpf.FHljHt$@H|$HHr)!HA9HD$PHH<(H|$PHt 8HT$PfWH  (f.zt f.H$L$AdHL$@HT$HH|$PH$u/E~*H|$PLHt$@H|$HHn(H1AHT$PfWH f.(^H׉lHt$@H|$HH.(1MH$L$1HT$HH|$PAdH$DHt$@H|$HH (1HA9wHD$PEl$D;Ic1۽L$wDH|$PH|$PD$`D$`HZ'HHt$@H|$HHD$PAID9vH|$PRuHT$PH B H B f.UfWf.OIHD$P f.ztT H|$PH|$PD$pFD$pHH&-Ht$@H|$HH0&H1%MHt$@H|$HH>&1YHt$@H|$HHf&1H׉&@HT$PfW)Hp  (f.ztfWHD$P fWf.HƄH %Ht$@H|$HHb%IE1Q@HT$P f. f(fWf.3-Ht$@H|$HHL%1H|$PHt$@H|$HH-%H1HT$PH B f. D>Ht$@H|$HH$1Ht$@H|$HHy%1ssfDHT$PD EHt$@H|$HH$SEfA9fH|$P膳tH|$PHt$@H|$HH$H1fA9|RH|$P<~uH|$P,t؃dHH|$PHt$@H|$HH1$H1xHt$@H|$HH_$1^fDHD$PD$ EHt$@H|$HH#CEfA9fH|$P趯tH|$PHt$@H|$HH#H1fA9|TH|$P,}uH|$P\t؃d^H|$PsHt$@H|$HH!#H1hHt$@H|$HHM#1L@H|$P讕KHT$PHt$@H|$HLP H"/H|$HHt$@H"1AIWD$|E1D$x@J*HHHt9uH ;;Ht$@H|$HH!1IOAJ)r IfWufHB(H|$P4IH4"H ?Ht$@H|$HIHEH"1)AIOHJ)9j HB0B0AdJ)XL4HB0 Xf.gHB(H|$PL$ 4H!L$ H >Ht$@H|$Hf(HEHy!IAUHt$@H|$HH >Hb01D$0E1PIOD$0GD$xDB$A9JHt$@H!H|$H1IWD$|J*I@$D$xD$|A9GH$HtYHDŽ$H$Ht 6HĘ[]A\A]A^A_JHt$@H} H|$H1}gf(fWf.Rf.!H|$P&Ht$@H|$HHH1HT$PH  B sH|$PHZ1"HT$P3Hp  (fHt$@H|$HHNHljf)T$}f(T$HT$PfWHp (f.HD$Pf. ulfDzdH|}H UHt$@H|$HH!IE1^Ht$@H|$HH11HT$PHp (HljL-}HT$PMEH H(Hp D$0 (L$X|^D$0HD$P E \D$XHt$@H^H|$HLY^,H|$PKH|$PD$hHt$@H|$HHwD$hHH|$PHt$@H|$HHHt$@H|$H1HfWD.H  (H׉Ht$@H|$HH=EHt$@H|$HH%Ht$@H|$HHB%H|$P Ht$@H|$HH?H1Ht$@H|$HHHT$PH  B )Ht$@H|$HHHT$PH  B .Ht$@H|$HH ~9HA+116Ht$@H|$HH X9H+11|ff.HSHtHHH[ff.Ld$H\$IHl$HHHtRH50H1衯HHtHrLH7H߉譱H$Hl$Ld$HHH2H$Hl$Ld$HHW8Hc+DÐHcW HG8@AWAVAUATE1UHSO HG8@t$LLw(Lo0Lx11D$@A9Hc€|$ALL KDK<HD$E1&fAAIIID9BxHD$MpBXfTf.wD9t HM HcB CAKDIDD9t HM HcB CAKDIDAIID9~HyAD$A7D$9E |I@[]DA\A]A^A_fvfDAWE1AVAUIATUSHT$D\$HX HD$HG8EHT$HLg E1HD$FHL$D$AHHHL$HHD$119D9t$HcH<I4<L A1BE9~!AIcEHPHI4IF8IN(TT$D$1\$9\$IV0}rHcD$EH HHL$ HD$uy1H|$D$H\$+D$H<HD$ 0HsHcIHD$L0HH9uۋD$+D$H|$tHT$H([]A\A]A^A_D1H|$Dl$DHD$ HT$I>(HcÉM$HjI$BtA$fWA$HD$A\(HD9l$bD1YBA]fWAD$H\$1Ƀ+D$H4fDHD$ HcHKHH9IuD$+D$H([]A\A]A^A_E1fHT$ I>4HT$HcI,HZHEAtEfWEAHD9d$DH\$Ld$Ll$Hl$ILt$L|$HHAQt6 IMPHcË\1ED~/HcƒH H)H)<HH9uSHcH{PD$Hs8M5Hs`H{h@5Hs H{5HsH{5ƃ@HSYH\$Hl$H(WH;W}H\$Hl$ H(*ƍBD$cL$fT*L$^[>e Vf.vHYL$dH;HsP,L$cOSS LƃaCL$D*^df(ATUSHH nA;*AD,D$T$fT*^f($dd |$f.YL${,L$9LŅB D9''C''~GI9}{H;Hs JSH;Hs(JSH;Hs0!HSH;HsHJH []A\f(wcf(!fDC 9CMChfDH\$Ld$HHl$H(Af(Ћo (OpfTf.vyfWD$HB1҄tEHcHC(HHK8D$HcD$HcHC ,HS0HcƃH\$Hl$Ld$ H(Ðf(CD$ffffff.SHcHHHHD$+D$H[Hl$Ll$HLt$L|$AH\$Ld$HxHt$,AωT$(t$f(H9 Aŀf(MpfTقf.fWD$ E T$(9}EH}D)2T$(t$,HL$3|$wYD$(t tuH$DkEHM(IcAHE D4HE0HD$HE8H$+\)\$lA)HcHH} HHD$HHcD$lHHD$PHHD$XHT$XIcHIHD$`H4HT$HILQH}(HL$XHT$HH4LQHE0HT$PHL$`H4HHt2HT$ E11ɉL覻HL$ E1E11҉L$X9}-LD$(pff.AWIAVAUATUSHHHHt$(HT$ HL$HDŽ$HD$0HA@H(H葅H\$H|$0H$1HC@SL$AI@H؃9G1҅t@ALH9w9AA)D<t{iQHL$~L$l$liT$|fnD$l1҉l$IDfbfnT$fnD$|fb~fo /flfoffH9rA9tHcIH9}HT$L ?$Hz@L$E1c_AW H$IO8AƇHc‹?|$L$mZD$DD$H\$LAH1E1HL$PD$@HUfDD$DL$D9L$LH\$HcHC@D$HHl$PD$@DuAW ;T$@\$9t&IW HcHcIW(IW0HH9$|D$Hl$pD$EA$FfD$H|$ D<ZH$Hl$Iw(I0HcHM8HcHH$HU(D`IcL,Lm0D9$H,DuEHcúH)HHHH)H)Ht$XH|$`-fDAID9$HDuEAH|$(DdtHL$XH|$0DD1fWAEf.ztfWmHD$`Hl$XHHD$`nfDADHT$0HL$pHPHH$tHL$HcHA@D$E*IcW IG8,$)H\.AEfMHl$D$DHE@fXD$DHۉ\$H~~IcW IG8H$,fHT$0HLPwt]fWAEf.zuupHD$pAt$8LAG Io8HcЉ$H HH$)lAEHE@~IG8HcH$,fWFl놋W HO8ƇHc‹$@H\$Ld$ILl$Lt$AH(A$.DHL H@@@DHDkVH1Ds $HLd$Ll$CpLt$ H\$H(fH\$Ld$ILl$Lt$H(AA+fWDLL 1@HDHHCHLd$H\$Ll$Lt$ H(fff.Ll$Lt$IL|$H\$AHl$Ld$Hh@D$ AL$@t$/HX H{@Hk@EH}LgI\$@fWHcЉID$@D$ DfHfDH߉ 2H 7A3v|$AE$10 HAH'HfDH}~ǃofDHl$Ld$Ll$H\$HHH_IHcMH <u$HGX$HGPf(\f. w 1H\$(Hl$0Ld$8Ll$@HHDHx P 0H 4@H f. @zt q]fW f.wf(Xh \^f.i@ f(\f(Mf( \\fWf.A$M?fWfTƒ fTfVAMH *uLf(ܺXf(Wf( \?fTf.FdH$$6X H <7[$$넉H\$6X H [<h\$ff.SHH HtHǃ [fUSHHHH?HH/HtRxuLHHtHpH;HLJHt XHHtH+H[]HGPHtH'H;HGPHGXHtH H;HGXwH1[]ffffff.H\$Hl$HLd$H(Ho,~ HsPH /HsXH a tF t1H\$Hl$Ld$ H(a uƅa fH%us(~SC(AD+{zC({K,t#uH fWHcf.BID$PHCPID$XHCXDkxHkL#HHl$H\$Ld$Ll$ H(DHpP1H1HsX1HH{PIt$PHcH H{XIt$XHcH efHpP1HHsX1HH{PH HcHR H{XH HcH2 ffff.AWAVAUIATA UHSH(HFPHD$HFXHD$a tH(D[]A\A]A^A_fHt$HHD$ * A},~H{SHD$ L\ 1E1H$fDB31H@|Aĉ ƅ` H<$HD$ HI9HPXHpPHLbAƅH uH HAƅ` O ~H"t4ATA*AfDZAfDAfDE1H 0DEuH PHH'fTX%\^f.' D fWf.\f.`'HT$Ht$HHD$ iHtپH1 H賾tgfDt#fDI9DtH<$fHD$ HuHD$ qHKu AD$,EmEAH H!H:sIپH1 DEHuH tAHgsHHD1 tH HH kDH蓼@L 7@L @H aH HtH)LIff.AWAVAUATAUHSHHLl$ Lt$L|$D$D$t$HHH {t$HE1H 111HHH f. |HAt3 ~HuHHfDLLLH?tL$T$HDD$ H3HË H sH sD$;}.A tAtAfu4AH ~ DžHlHD[]A\A]A^A_þHE1t@AWAAVE1AUATAUHSDHH H H4$H LJ0 MDH4$DAH@H9$I, LQAD$ E$~MfD9|5H[t1H@uAD$ 9}DIct$A$AT$A HH DEAL 5LH9$tHjDH1HpFH\ ϳDž0 HD[]A\A]A^A_ÐufDfD< t< t1E1fDBDAu@HcH4> uAHHDHH< u:uD< fDt< LJtAfDILfD1Ҁ? HufDH8 t)9Nff.u 1$D< HtfHu)9Nf< uf.AWAVAUATUHSH(dH%(H$1HJ$@HT$L0u(*H|$L=|$uHHLE.H|$L=O$tH|$H5LI1MH&HHDD-H*HyiHEELL$1\H$HD$ DHT$HD$A9|9At$9|4H Hcƀ<u$AD$HHfDHu9}A9|=HcHH :u;~H <tHH9}99_9FHTHH|$A׺dHL^9HTHH|$AH|$Hƺd)H HcH nLL$LM<HnHEHn199|nHDTHH|$A׺dHLH HcH nLM<H}HqnHE1p5DH)QH뎉H)QH)HQHH=!nLPH|$t LH$dH3%(u)H([]A\A]A^A_Hf11DH\$Hl$Ld$H(HD$ IuLHZH5ZA $HHE:HD: tvT$ H\$Hl$Ld$ H(@\D$ ~uD$ |$ u덐y1҄LHj\D$ ~؄tfDfDHT$ I|$H5D1HtgfT$ 19ބt9|9HHHH HHfffff.HHHHH@SH /lHIH1/H[f.H\$Hl$HHHHHvHHl$H\$H@HHH\$Hl$Hffffff.AWAVAUATUSHx$fWdH%(HD$h1 $H|$f.]f. $ L|$f. npIo@$H 5kAغNH' HH|$ HD$hdH3%(Hx[]A\A]A^A_Df. oL|$AMwA$EL$H jENL  Iwm@EL{HtPHh-LmLH tU+t0gffDf. 8of(@fL|$AMwf0DtkA$EL$H iENL ELHtPHh-LmD+uLH UfDf. Xnfhff.Pn  $ L|$f. ;nIo$H hAغNH DHhPVI_f(H hNH߸ Hg|$4HYD$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$tD$0D$<.t<9D$WD$0D$<.t<9D$:D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$1D$ Lf.HhPjI_f(H fNH߸ H|$4HD$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$uD$0D$<.t<9D$XD$0D$<.t<9D$;D$0D$<.t<9D$D$0D$<.t<9D$D$0D$<.t<9D$D$0D$1D$-LD$ >H\$Ld$ILl$HIH$HL$PHH ML$XH\$ IIH)H$H)x)p)h)`)X)P)H)@dH%(H$(1H$$D$0HD$H$0HD$HLAH$(dH3%(u H$L$L$Hnfffff.AWAVAUATUSH(D/H|$HT$Ht$IcHeLHHHӋHD$XHHHL$XXuA~InfDA~LfDfLd$`HcعLHLD`Ld$X9LIH8LI8HHAHD$XHDG u҈uHt$XLeHD$HD$X8QD$<,Ld$`HcعHHLFD`Ld$XLIH8LfI8HHAHD$XHDG u҈uHt$XLHT$HD$X8hD$<CHT$(:B A~V@f)ff.AWAVIAUATUSHdH%(H$1@HL$`uGqHc$HHD$hu>1H$dH3%(HĘ[]A\A]A^A_Hb$HHD$htH5#HHItL$ LE1<1LHH$`H$HT$XHD$PH$HD$pHT$HH$@HD$@HD$xHT$8H$HD$0IEHT$(HD$ LL0H"$ AcHH0L H t DF u*2*   H\W1MDL$ HT$(H5vXL1ZHt$(H=YH|$`HT$`$ H\$ t!HUfDHt DB uH1LcIJt~4< t< tHHEDP tHHB ILcBH|$`HuDH;VMDL1OHD$@HT$8LL$XLD$PLHL$HHD$HD$0HT$LH$T$h#Ht$P1Lx2$XHcI LI 1EE~6I 1f<tI Hc։ HA9}LH5N11Ht$X1L;x$LHcI HcI IHt$(H=UuHHTL1&HUMDL1}1MDHTfAWIAVIAUATUSHdH%(H$1@t$LHL$@ZH_$D$\HD$xL$oH$Ht$@A1LHT$(HHMHDŽ$DŽ$fDŽ$Ƅ$bAHt$@H2T1LEAHt$@H&T1L(AHt$@HT1L L3~ L'Ht$@H TL1A Ht$@HS1LA$ ~Ht$@HSL1LiHt$@H SHSHSLHE1oHt$@HS1LYL!H$HHHL$8T$xHt$@HSHL1!VHt$@HS1LA11ofDLHt$@HpSL1Lc7H|$8HHT$xHt$@HSHL1A9|rt3I fWf.(z{Ht$@HSL1MHt$@HRL12mDHt$@HRL1MPH$LEAH$LƿHt$@HRL1AFAD$XAE9DLĜuDLt D$X DLu D$X* H$H$DL1D$Tt$TH$H$HD$pHT$`gL$\A$1zu$ujY$H|$(HCLY5H|$8HT$xLD$(Ht$@H RHL19l$THD$pHL$`D)$AaDL2H|$8HT$xHt$@HPHL1u$uY$H|$(HtL4H|$8HT$xLD$(Ht$@HPHL19l$T1EHt$@H^1LAE9D$X H$HtHDŽ$H$Ht{HDŽ$Ht$@HO1LAD$LfW1A1AD$0H9Ip (f.D$0ztۉLqtLD$覞D$tf.D$0z @fWDD)AH|$(L2H|$8HT$xLD$(HOHHt$@1LHA9>EuHt$@H\L1AAAz4H9I A  (f.vfWf.tʅt Ht$@HYNL1 $k $f(LDD)AH|$(L1H|$8HT$xLD$(HNHHt$@1LHA19DEjZA9VHcýL$]DL]/H|$8HT$xHMHHt$@L11IA9AL)蟗uI fWAE+B f.zt&I A B f.v f.\DL?DL4DL.H|$8HT$xHLH'fDH|$(>LT0H|$8HT$xLD$(HHMjD$PE1@L蘯9D$PMP IEH|$(J *@$IEH|$8J HpT$xIULL$(IHt$@1LJ"JHLIEJ P ~sH@0H|$(XZIELJ H@(4H_-H|$8HT$xLD$(Ht$@H_LHL1IEJ 9h }D$PI1Ht$@H;L1JHt$@HhI1L/D$oAH$dH3%(H[]A\A]A^A_Ht$@HJL1"I fWB f.Luf(A I fWfB. z*H|$(f(1DL,H|$8HT$xLD$(Ht$@HJHL1>I B $A f.$$L$DLaBDLA H-Jf.$DLL+H|$8HT$xIHHIfW1A1AD$0fH9BIp (f.D$0ztۉL,fWJ f.D$0B<fWDD)AH|$({L,H|$8HT$xLD$(HHHHt$@L1AKDLTI B Ht$@HlVL1jAtH|$(L+H|$8HT$xLD$(HHGH|$(L+H|$8HT$xLD$(HHH0LD$D$f.D$0fW fWDfDf(L\H|$(DL/)H|$8HT$xLD$(HkGHHt$@L11SL$XHt$@H?L14D$XAD$\҈T$oAAHDŽ$\$LHS$HD$xID9IJ#HtH8tډLuIH$J HH1H8uAƆ\$LH S$HL$xH$IHH8HvAAbAAH$D9IH$HHtH8tDLufDrL苐Ht$@H2EL1~H|$($DL)'H|$8HT$xLD$(HHEDL1&H|$8HT$xHt$@HEHL1'L$XHt$@H*=L D$XHt$@HDL1L$XHt$@H<L1[A H-Ef.$ DLL&H|$8HT$xIHH EH;11FDLI A B $f.4Ht$@HDL1 Ht$@HCL1D$D$JHt$@HCL1$ $H|$($6Hl$(H|$($Hl$(f.H\$Hl$HHHtHHH "HHl$H\$H f.Ld$Ll$IH\$Hl$H(HAt]H5;H1HHtH LHDH߉H\$Hl$Ld$Ll$ H(f.HH rH\$Hl$Ld$Ll$ H(UDAWAVAUATUSDH!dH%(H$!1HH|$xHt$pHT$hL$dHDŽ$DŽ$HDŽ$IH/HD$dD$d H5J$HH$H$L$H$AƅHD$@L1Ht$8Ƅ$AE1HƄ$Ƅ$DŽ$DŽ$T$dt$dDŽ$DŽ$Ƅ$Ƅ$Ƅ$$$DŽ$fDLH|$pT$h$AKFH0L@H t DF u*  H>1MDH$ H$aH5 @L1HH=,AH$H=JHHAH1)DŽ$HG$HH$E1H$!dH3%(DH![]A\A]A^A_fH=MDH1gH$H$H$L$H$HHD$XH$HT$PHT$Ht$HMH4$HD$HLL$XLꋴ$$A$=$HAD1HE1ED$dIHD$xH(H$HtHDŽ$H$HH$!H55?L1Ƅ$!HHH, DŽ$H=H?HDAR_{HU{SD{fD4HD$8$H$L$T$dL$HHD$H$H$XtzH>H1DŽ$VH=B> HH=4>HH%>H1ZDŽ$$E1>$0H9H1HD$xE1H8$HE1fDH?HcHH=FHH=H1DŽ$QDŽ$DEI"1E1M%$p$9aH;t׋$H$H$f($f.C?f(#?f(%7f(fTfUfVH$f.u z $f($H)$zH=@= HDAMu{Au{Xu {fH= = Ht5AM;{I1{N {fDH胇DŽ$H,3H1$LL$PLD$XHG=$L$HuE1H5EDH1P$&LL$PLD$XH<$L$HA~AtEDH4LL$PLD$XH*<$L$HAuAkEDH3#DLL$X$H;MHپHKHt$X1H rƉ$I Ug{P( {Iu {fzH3EHپH1$fDH:1MIؾHN~{5$$9$#HU:LH1RHS1H1<Ƅ$HD$PH%:LL$X$$MH$HAV$$$ A. $Ht$XHpx\; Hc$H$H$H$Hc$H$H%t$Ƅ$A$EDH$1f$ H|$@ Hмf.:Lt$(\$(Ll$(\$(@H.1HHD$xH8HE1HuH$HeH$HH$DŽ$H$H7H1DŽ$H!.H1DŽ$zH= 7H ASu {O>H= 7HE E+{O!{SD1{$H6HپH19DŽ$$Ht$XHbn|"u$z$HAHt$PH n}u)$t$fW$$H<@$H$Ht$Xmx]$f(fTf. -fWf.mgHcfWH f. ztH߫A$Ht$PH1m$f(fTbf. UfWf.HcfWH f.$z=HVfD#11oH@HDŽ$A$AAD$cAt|$cto$DpЃ1T $Ƅ$$H躕H|$XD@H ~5 1蹹@H\$XAHIE1HVk$zD$ED$E HP Hc$H$H@H|HL$H&LGD{fDfWH5?HүLHy@SD{CfD{fDzfWf.$uzH H$$$H%$Hƭ{fWfD"H|$X H|$ct $,Ht$XE1E1DHH$ x$vH$H HcfT1$_fW$c{S{1LHSƄ$H|$8 LUHt$@LJf{$H!LP{OfDu {f{IfD{fD$HD$HxDŽ${H-MDH1$E1HL$Xf(H)EHHT$XH$H$L$L$1HƄ$HT$T$dH$.qHt$XHƄ$LgƉ$#;fDE{fWJ$Ht$PHvg;~HL$PH'H1Hc$H$H$H$Hc$H$H$Ƅ$yH.H1芸DŽ$2Ht$XH=+ I|-o9tۃ12HL$H1҉ރH-PA9I8M9uH|$ Ht$hHl$h]t#&HHËEH]uHL$pHD$`D$4E1D$THL$HD$Ht$H|$81ɺAVfuH|$hHfDtɚHD$hH|$@QH|$HQH|$8D$4H$xdH3%(@HĈ[]A\A]A^A_@t$Tf\$pt'HL$H@HËHuHt$hH|$cET$TT$T|$T\$pHT$t4HT$H@Ht HDA uH:fDt,fDcHL$HHËHuH|$=sHH]H\$IHfHHDA uHuH9Ht$`rhHEDA t\HUHHDA tFH9HHT$`vHDH|$(1ٞD$4|$TH9sFHt$@H%LHLcpH $H}JLHH)H HHL$X(HD$PHT$+H\HHUHIDA tfHHDA uHuH9Ht$`r7HEDA HUDHHDA tiH9HHT$`vJLH-:$HfWH)Ћ\IJIt$PH|$(I)BT5qH9sFHt$HHJHHT$H $@;D}/Ll$XHHHII}肘uAEH]D$PH|$(HqEHپ1!DHhHH,H|$(HEHپ辜t(JIH|$(I)BT5|JIt$PH|$(I)BT5YJIHct$PH|$(I)BT56聗H- $\Ht$ HT$`D$PI@HHT$`HDA uH|$(HmD1辛fH|$(HEHپ蔛D$4tD$PfWHt$HT$`tKIfDHHT$`t0HDA uH|$(HD1<DD$PHfW8SHHX x4LZLR E1LJ(1fDEEAIAHD9}~HFLZLR HR0AAHHfDEEAJ HID9}߄t H[f.HHX 1Ht&2qQ Ac t 1HAW@AVAUIATUSHX @t$HC@1HtHHHcCIH|1HOLy@A;HcЃLA(LH4La8H)HI0HfW LD$HL$HT$DE4G G4f(f(E9HT$Icf(LHT$H 1Ҁ|$AAD)L E@DC D9~GD)QHHDYH\fHQHL9t'AuX QQHY\fDf(fTfA. vIc IHL;\$[]A\A]A^A_f.AAD)L DDCD9~GD)QHHDYH\ȐHQHL9cAuX Q@QHY\fDHCH1HtHHHcCI H,ffff.tTHBHHRPHc) f(f(fTf.s f(fTf.sXf(fDHB8HR@fffff.HHcHHHP ff.HPfWHcf. @HG@HcHG8 f.HG@HcHG8HcF9G|Ѕu F9G}@ډffff.F9G|,-F9G|u9|Љúffff.DNH7DGHPIc Ic¸f.wp1f.ucH BDHcHc f.w41f.u'H  f.w 1f.ÐSH΍Cw@HHHHH AHHDHIHD12[fffff.USHH H$QNH*H $H߸辔H ~&H NH*HH߸莔HHOtƃ H[]f@0H HHߋL  "ut  fufDtiAWHcAVE1AUATUSH(L H|$HT$HL$L$IG8DdA9ĉD$$H|$IcE1H,L,IG(H|$(؂t.H $HcËt HL$IcAIW0HL$J*HAHID9d$$H(D[]A\A]A^A_ÐIcE1HfIG(H|$,XtH$HcŃ<AAHD9d$$@Sf(؉H $Y Y 8m$t2f(fW\f.z8u6f.tf(f(H[Df(fW\f.f.S1HuvH{^txfD"fDH{f_~|HHcH@HHtك:uԾDB1Exq9~+[@H{e_u1[f.H4x@T[tHHcH@H12돸ATIU1SHH8]t&fDLI$H8^u[]A\fAWIAVE1AUIATUHSHH`E1AI9~YL\tH fWB f.vHپHA]I9fD~MuD9~]LC\tH H Hf.vH1HAϏ9@HD[]A\A]A^A_HWپH1A蒏;}ljH H Hf.v볐AE1fW@AHD;H f.vHDH $A $DAWIAVAUATUSHLwHHt$I AHD$H@8Hcхɋh~AAAIGDHPH8J*Zu;HwAIE9}˸@H[]A\A]A^A_fHDE~KH{9IALXHD$LP(HcIcIË0Hx9~ZfHEL1׍1H|$aHL$HL1讍H1[]A\A]A^A_D9|@HHx99}AE9Hx9AHD$EL16ZHJDL1AHDLffffff.AWIAVAUATUSHcH(LwHHT$HL$LD$LM xPHD$HD$HD$HHD$ IH@HDE@fWA$f.HcID$HHcID$ ,ID$0f.$fWf.HD$L蒶 $f.+IHT$ H@H9| B(IyH([]A\A]A^A_@fWA$@HcID$HHcID$ ,ID$0f.$vKHD$L $f.wnIHT$ H@H9sB(IybfHT$fDHT$fWf.f.LƵfWf.zHD$mL螵fWf.HD$AWAVAUATIUSH(LoHEEHD$E1L|$$HD$HD$ HD$fDHA9|I$H86VtLD$HL$LL tI$HB(;D$$u HB (;D$ tIH1LA證HA9}DEH([]A\A]A^A_HB((;D$uFfffff.AWAVAUATUSHcH(HGHHH|$Ht$HD$H HBH$H<HT$LuHD$'L} L_LlLb@IcIcAHD$0LHcHHHD$(0A9}HD$E'H|$(D HD$D Ht{HD$(H|$0Ht{HD$0H|$ HQ{GATIUSHHzHt{I$HBHz Ht{I$HB Hz(Htt{I$HB(Hz0HHtW{I$HB0HHzH BX~M1H,DHHzHHtH{I$HzHHHH9uHtzI $HAHy8HtzI $HA8Hy@HtzI $HA@HyHHtzI $HAHHyPHtzzI $HAPHyHt`zI $HAHLRI<$Ht >zI$[]A\ÐHRSHH?TH;HHHHx@HtyHH@@Hx8HtyHH@8Hx0HtyHH@0Hx(HtyHH@(HxQH;HQH;H QH;Ht syH[AUIATIUHSHHn$MHZHeH51LHExH1HMhDM`HjDEdH1wHEHtHDHHED@HEHHHEH@$1wH=HٺzHEH51HHHPDZHEH51HHHPD;HEH51HHPDHEH51HHPDH=Hٺ:zHEE$H51HHPɕHEE$H5s1HHP 訕HEE$H5[1HHP(臕H=MHٺ yHEE$H551HHPHHEE$H51HHPPܒHEE$H51HHPH軒HEE$H51HHPP蚒Mt HxH[]A\A]HHHEffff.AUATUHSHH_HHX @PHGH8Ku2=HPfWHcf. ЈAPHEH8VLt HX yPtHEH8KAHEH8HEHEHAH0ryHX H P pHEH8}KAHEH8NHVEMHEHH0{H HX HߋP px8HX HP@HtHz111YHX H@HHtHx111:~LH 1fDHHP fTf.vH0HH9uԋ~FH 1HHp  fTf.vH0HH9uHR~ HP 3H H[]A\A]VfDml~ H ]EE1DRff.ATIU`Su1HHƉFQH;GHsL1[HCHsHL1XHsPL1XHs8L1XHs@L1XHs01LT[Hc7uHsLHC0[Hs L[Hs(L [kXH[]A\ffffff.H\$Hl$Ld$HLgHHLht H}XIH}GLeA$ HE@ȱHcHU8fW I$ HH$Hl$Ld$HfLl$L|$LcH\$Hl$JLd$Lt$HLgHHD$HAHDŽ$HDŽ$JH|$@t$HL$@D$cH1HFHT$PH9](H^Iff(¾L^$ HD$@H0f.f(DfW^$L=HT$@D$cH2t$<zL*$I$p  |$;\D$p$fW$fW$B$fW$$^$$fWD$c$f.fW$f.nhHD$@H0Dt$<LY^$fW^$f.HD$@$D$c$$H0zHD$PI$ A$ f(fTD$ f.D$hfTD$ f.4HT$@t$<LHH]$t$<1HL$at$t$TH|$`H|$`$$HzHPht$TH|$`$$zD$@uݜ$$f.zt WD$@af(\$HfTL$@„$f(fTfUf(fV\$@fTfVT$Hkft$TH|$`D$|[D$HD$`L$p fWCf.AFpD$HAD$f.D$pDGf.t$TH|$` $ [ $hHD$` f.D$xwaAFpD$xf.D$@wHD$`Dd$l Dd$lHT$`L$@A L$xe_D$H1HP*HT$`HL$XfWHPD$( f.ztfW 8f.L$(hIHL$`HBH f.ID$@\D$xYXHB0H$D8HA8HL$0D$HL$XDf.L$(vFIHcHHBHHT$` f.v!D$@\D$xYX\@D$(f.HIHcHHBPHT$` f.D$H\D$pYXH$ iJf(`D$@1HJ(HT$`HL$XfWHPD$( f.ztfW 2f.L$( HT$`I H@8fW f.D$H\D$pYXH$HT$0HA8HL$XD,$D;$H$HH(HP0nIc1LIA/H8/tH|$`1'H$ jf.L$(ztfW *f.L$(vRIHcHHB8HT$` fWf.v%D$H\D$pYXPD$(f.8IHcHHB@HT$` fWf.D$@\D$xYXH$ i6t$TH|$`ҸH|$`$$HH2b1D$(f.'HT$`I H@@fWf.D$@\D$xYXID$(f.HBPHL$` f.D$H\D$pYXHT$`HL$XfWHPD$( HT$`HL$XfWHPD$( ff.U1HSHHX HH{ Ht [HC H{Ht ZHCH{(Ht ZHC(H{0Ht ZHC0H{8t H{8 H{@t H{@H{Ht H{HHX HtwZHDžX H[]SHX HtX[HHX H[fff.AWAVAAUATUHSHLX T$MX|$It$(DZEouXIt$0H>It$DHVAIt$ DHAAEE)D)E9~f|$uzHcIcML$H<DH D)MD$ It$0HDHfDA AHH>HH9uH[]A\A]A^A_HcIcML$H<DH D)MD$ It$(HDH@A AHH>HH9u놐;LX @ff.AWAVAUATUSHhHGHGPH|$0H Ht$(HT$ HL$D$@HD$8L *AD$\D$XMcIT$PI|$HLMD$0HHF, HD$HciHcA,1)A9HcH)ID$PHL$F<D9A@HcH*H It$H)HTHfDHcHHID$0H9^uDD$\)|$\HD$8J, $HHp ^XD$@D$HhYHT$8DH|$8Hp BD$PZLx $tT$P\T$HfTf.T$@<HD$8HH fTf. D$XHT$0DHz B*A_L$\~L$\H|$8H1S\T$\T$XHL$(\$\HL$ \$XHL$Hh[]A\A]A^A_f.HsHcH MD$0I|$HHc11҃HAfTrwH,aA9HcHffDf(^WH*4H|$8H1Df[T$X1T$\1ff.AWAVAUATUSHHGHHT$(H|$8Ht$0H HD$@HHT$hH8'D$\D$PD$P~t+HD$0HL$(T$\HĘ[]A\A]A^A_DHL$8t$PHH8(D$TtHD$8H8HcD$PHWH HHL$pHD$XL$TD|$TD$LMcJHD$xJHtVL$X;uNHL$pDHH McHAHD$hHp H@HHc Jc;tqH?D(D$LA~|$L~L$TL$PuHT$8H:HWJf.XAHcH tfH|$@1DκH|$@1ɺ$$HD$8HL$p$^H8HWH D;(L$`$DHT$@HL$pL$`Hp B$Y HD$8\$fTCtf.@PvHDGt$PH|$@JH|$@D;8 K\$`f)L$fW\$`t$PH|$@GHD$@$f( fWD$f.}fWHD$D$`Rq fTfUfVY$fTdsHD$@ f.vD$$t$PH|$@脀HD$@$f(f. D$` D$pfTfUfVY$fTrHD$@ f.vD$$L$f.L$`fH|$@DHD$8f($X@Pf.$H|$@DHT$8f($JP\f.O$$f(\fTrf.f.Xt$PH|$8D$\,(Mf.ɐYfQAEHL$f.A1HHT$hHr HRHHc HcHc;H|$@1Dƺ)H|$@1ɺ$ $HD$@$^D$`$f. uyzwL$`HL$8AH9HL$pHWH D9(WB, KD$`If.NHHD$xH9HcDIcHff(HD$8\D$`fTypf.@PmH8fDfDYT$`$f(ZYT$`HD$$f(Wf)D$H|$8DH|$@f(D9cHL$8$IPH|$@f(D`@H|$8H C pt$PH|$@GH|$@DH7H|$@HHI1SHD$8H8H$H$Wt$PH|$@BDD$PH|$@H2D1KSH|$8H  谽HD$8H8UHl$Ld$H\$HH_HHP {HP AHtuH$Hl$Ld$HËG;Gt A9ΐH\$Ll$LLt$L|$AHl$Ld$HLgHGPt$,IMD$HLAt"AMmT$HfTf.H(#A$ fWf(fWf.L$ AMf.^AMA$ Af.^ĄADLB"DLO|f.D$ +T$ fA.UADLL$Pk|T$Pf.AAMf(\D$Hf.@H$H$L$L$L$L$HĸfDfWAMA$ Af.fWALL@fWAD$ AEfDAUDLT$`!{f.D$`uADLD$hO{L$hf.DL4{f(AfDDLL${DLD$0zT$HL$Y\L$0T$8vkfTX*i^D$8fTf.ADLf)$D$pGzDLD$@6zL$pf($\L$@fTXh^fTT$8f.aAAUD$xf(f(\D$Hf.@rhfDDL zAEf(AL$xfDDLyAEuf.AUDDt$,L$DLH$HL$xHf(IؾLsN6fDDL]yf.D$ AEDLD$Xxf.D$XwjAf.T$ L$ Af(Dt$,DLf(DLxAf(D$xAUDLmxAEDH\$Hl$HLl$Ld$HhLgHD$ GPAL$LD$(}uLD$8Mvf(D$T$ XD$(f.v!1H\$HHl$PLd$XLl$`HhfDHL$8LD$0E1DHL$0PtL$ D$8\L$0\D$_f(^D$(f.avL $(DLH $HNHIظf(LL1:t HT$(L HL$(1HP IHD$(HP SH|$(t!HT$ HBH8H8[]A\A]A^A_$H|$(HP s̐AWAVAUIATUSHHGHL HD$(AD$7@@t$7|$7HT$(DE$1HD$@YIEHT$@H@H<Ht?IEHT$@H@HHT$($HD$@$9*H$IUHC4$H$HBH:DHB DHB(Dc4$LE1PIEHt$@H|$(Hp&IEHT$@H@HHD$IGPDt,A9~QHcE1HfIGHHcIG 4IEH8EtHT$AIcĉ,HA9HD$D fD$7HĈ[]A\A]A^A_f~D$L1HD$8VIEHT$8H@H<Ht=IEHT$8H@HHD$(D$LHD$8T$L9pH\$xIUHCt$LHD$xHBH:DHB DHB(D>ft$LH|$(mt$LH|$(D$mt$LH|$(D$4t,D$f.D$vfWL$f.HD$t$LLPIEHt$8H|$(Hp%$IEHT$8D$\H@HHT$xHD$PIG8,9T$<fWf.D$<L$f.HcD$\L$L4II9l$IG(B IEH8 tуD$\HT$PHcD$\H|$(,IG0B0D$`ktWfWL$`f.z t>fWf.L$`uBIUHcHHB IEH@ HD$xNfDfWL$`f.tIUHcHHBIEH@HD$x @T$\HD$PfWD$f.HcD$\L$L4II9l$~IG(B IEH8 tՃD$\HT$PHcD$\H|$(,IG0B0D$ /fWL$ f.z jfWf.L$ nIuHcIMHHFHЃHD$xHAHV(HD$xHA(,@L訶D$7|$7eHcD$\L$L4II9l$IG(B IEH8 tуD$\HT$PHcD$\H|$(,IG0B0D$pfWL$pf.z fWf.L$pIUHcHHB IEH@ HD$xFfW_L$L$1fWD$ f.IuHcIMHHF HЃHD$xHA ffWL$pf.ZIUHcHHBIEH@HD$xHcD$\L$L4II9l$ IG(B IEH8% tуD$\HT$PHcD$\H|$(,IG0B0D$htWfWL$hf.z t>fWf.L$htBIUHcHHBIEH@HD$xNfDfWD$hf.uIUHcHHB IEH@ HD$x fff.AWAVAUATUSHHGHH|$pHt$hHT$`LD$XHcH$L HDŽ$HDŽ$_8HHD$xtHT$pHH8Gt HBDxEuH[]A\A]A^A_DŽ$Ht$pHcHHAHHtcD0A~ZHc$H$Lc`HH\$x+ڄDՉIEHJcIE DsCHD$p$HH9 q$H|$x5"H#$1H|$xJH$H$H$1ɃH$H$1Ht$H1xfDHD;$}%HD$xAD4(EyH$AH$}$c fWDŽ$=wVDŽ$DŽ$Hc$HT$xHHtHT$p1)Hcى$nHHH$H$H@HHtHcHcH IEHH$HcIE $vl$f)<$$1HL$pAL$l$1f(<$L9f(f(A$f(IGH D91E$E\LUHD$pfT@Pf.E]HT$p drHz5fDIG(HHG($HA;4$Ic H$HHPHf.ztfWf.vIG (HHG (f9f(Hl$p\]PfTf.IUHHHcIE0f.zteIE H$ HPHc f(fTf.f.uA$f(f(IWf(f(<$H,*H$H$D$T9\$T E$E\Hl$pEPfTPf.H$H1Ht;T$TQL$I$Ht$pMEHMU H~1IGLȃ(HcHHG($HA; $IcIcA4HIE0Hf.ztfWxmf.vIG Lȃ(HcHHG (H$.f(Ht$p\NPfTOf.MEHHMu0IcA f.zMU A4H$L EA91Ʌ~k~gHcIcA9tx~?fD19}6@~.HcIcA9t?9A9|Hc9A<|@IWHHcA|$4Iu 1/D$4~wHDu I}{LaHD$ ~~ I} Q9\$4|(H|$ uI},@fDI} GD$4AHD$8Y pf(Xf.Y pf(Xf.Y pf(¸Xf.Y tpf(Xf.hf(YLpXDf.vI} DI} DAHD$8D9t$4I} DtIGPH\$8HT$8D$0DdHHT$(A9ĉD$D}IcD$0HIGHH|$ HcIG 4IGHHcIG0fTtED$D$u\$HL$Hf.zt C`#f(AUPf(BXf.vPY of(Xf. @;D$0D$0OʼnD$0AHD9d$D&1@fDfDI} DTrn*L$0#HT$ f(H\$8f(Hp HT$8HYP\$D$u\$HD$Hf.zt Af(T$?"T$DfTfA.EPIGPHT$(49t$D~HD$DHcIHH )HTHfDHcHHIG0H9YuHT$ HHp YHH f(fTf. GY:LHXL[]A\A]A^A_I} DgfffDA؉D)AAA)D$4D$4D)afDAWAVAUIATUSHXLLwHHt$HD$HAWIPM HD$@ID$P8Ht$H1LvAWHt$@1LHD$HLfWL$IP$f.IT$PHcDHHD$HEHLIXHD$(H0MHL$HHLD$ L$ ALf(6fWL4IET$Ht$@fWB>f.z.fW+\!I]t$8AH;HAEpLEH|$Hff.AWAVAUATUSH(LgHH|$LD$,sE1HD$ I$P HT$ H@HH@(ɉL$ IAA_~ A;$~HپL1AB"HT$HBH8_I$P ډD9tH:پL1A!I$P HcHHHO(4 9}.HW Hc9,t>FHHfDH9t#9HپL1A!AID9l$HD$ 9l$A$AHD$I$P HL$HG(,HD<HL$D9}xHcHHA9~TI$P HG D4uI$P HDLAH@ D1H A9A$AA9UEu2H([]A\A]A^A_fHaپLAf :HzDL1H E1fffff.H\$Hl$HHtH\$Hl$HHoHH uH#tD@AWHcIHAVAUATUSH(LoHHD$HGGPM H@D$H8'D$D$H([]A\A]A^A_D@xD$AHD$ fHcIF(LIF0D$AIHAHHQPHcA  H<f(f(fT^:f.sf(fTG:f.sXEtfWf.zfDtfWnWL$H7Ip fT 9 f(7fTfUfVf(YD$\f(f(\f.v|fWf(f.L$\fWf.zXD$IF0fW1f.D9t"EHQ HHHA*D$IGHT$AH@HD9 /HT$ HHT$ NfHA8HQ@lL$IF0\f( NHQ HHHA(`f.L$IF0\f( ffffff.AWAVIAUIATUSHXLgHGPI$ LD$ HD$0G1҄GHcHHT$8IUHRHDE@D$HL$HHD$PAHD$@HL$HD$fHL$0HcT$HA(,HA0AfT7f.aaYD$ LHcD$(IUA$ HB8HJ@ f(f(fTM7f.sf(fT67f.sXHBH\$PHJPf(f(fT 7f.s f(fT6f.sX@L$HtJfWf.ztfWTfWf.z tfW SHt$H|$L$H\$PAI$p L$(f(X XD$Pf.LmBf(fTQ6fA.$ s0I$p Af(XL$H\\D$(f.[IEH@0D E~iIEHT$8AH@HD98}1HX[]A\A]A^A_@HL$@HHL$@D$ʐ h3_f(fWAf.v9D$Pd$Hf(\D$(Xf.rI$p D$(Xf.wWfWf.AD$(L$PXD$HXf.!I$p \\D$(f.T$I?T$M@f.4rD$X L$0f.8IDH8Aŀ3E*IMc HPPH@HB f(L$fT71f.s&BD$fT1f.s XL$L$DHk=D$\ f.D$DHVDHmHIL$H_D$HMH1D;l$|t$H1FmHoHH1PDHDHmHIKL$H^D$0HMH1^qfH\$Hl$Ld$Ll$ILt$H8HIMD$I$X \$HcH HR(Xf.h/HE8%p/A$ HU@f(f(fTf.s f(fTf.sXXHEHHUPAMA$ f(f(fTf.s f(fTf.sXXH\$Hl$Ld$ Ll$(ALt$0H8I$X \$HcH HR(XfKfWffffff.H\$Hl$؉Ld$Lt$IL|$Ll$HGPLoHALD$XILD$8LD$@AD$H=LD$PZ=Hf(mI4$Ic%-A HFHHVP f(f(fTf.sf(fTf.sXD$@fTf.sf(fTf.E11HF8HV@ f(f(fTf.sf(fTf.sXD$HfTf.sf(fTf.DH$HD$8D$PA0t H$H\$hHl$pLd$xL$L$L$HĘ@f.-,f(L$@Y\D$XXD$P\^f.D$P\D$Xf.A1Df.-,D$PfTf. D$PL$HY\f(\D$X\^f.nD$XXf.D$PL$@Y\f(\D$X\^f.@D$XXf.A1 D8f(fTf.Gf(L$HY\D$PXD$X\^f.D$P\D$Xf.DDL$4$f(f(Ll$f)d$ 4$Y|I4$D$PE1A l$f(d$ 4$f(1L|Df(Uf(1Ll$f)d$ {f(I4$A E1f(d$ l$ff(L4${DD$P4$@AWIAVIAUATUSHxH T$@HD$H8 )fTfA. HL$HHcD$@HQ8 Dd1D9L$D~eIcHT$`HL$oH,HD$XE1HT$0HL$(HD$8HT$HHB((IH8u0AHAtD9d$DAHx[]A\A]A^A_DLf5LD$`66HL$(E1ɉLD$8T$@LD$XH $HL$0LD l$oA ft$@Lf)L$7f(L$fTfA. Hx[]A\A]A^A_ÐAWAVAUATUS1HLwHH|$HHT$8t$DL$7LHDŽ$HDŽ$4t$DLD$Pe5Hcl$DHT$HD$XM HHD$`HH@HHtH$ڹL5H$ڹLHT$HHH@HtE1E1E9McJ,fH$L(3()Ӊu݀|$7tLtL>6LD$x~6J<H$HD$pH$I%HHD$pAHIHE9}#1)9uyIHD$x@HT$8H|$HL$pD$xCH|$HH PuH$HtHDŽ$H$HtHĘ[]A\A]A^A_f.@HT$hE1AHT$ HT$pHT$HT$xHT$H$HT$(@HcID$HD\$DHcID$ EۋID$0tfWf.ztfWBHD$(LL$ D$hLD$HL$ڋt$DH|$HD$PL$XH$D$xL$p$t'H$IcAHT$xH$H$t#H$IcHT$pAH$HHT$HHHT$`H@H9(HB8I3EAWAVAUATUHSHxLHHHD$pA H8M ^lND$PIu#fDHUH:jhLuHULcA HB8HJ@B f(L$XfT#f.s&BD$XfT#f.s XL$XL$XHBHHJPB f(L$`fT#f.s&BD$`fT#f.s XL$`L$`L/LD$@0HUD$HHBJH8Lt,L$Hf.L$`rA LfDLT$Xf.T$@sHD$pA1HHD$MHEH8uAfHEH8t$HLtH|$poDHD$pD$4DpEHT$hAHD$hHT$Ht$1H|$hH|$pAHD$hDhE??D$4L$PfWL$IcIT$8HD$(HLl$(H,HD$ IHcHIT$8B9,*~jID$(H|$h4HuH|$pD{A~HD$hhtH|$H|$D$4Hx[]A\A]A^A_DtDLD$40DLD$8S0fWL$8f.rsfWDL$PL~ID$8HT$ ,HT$(;,KHcHID$(H|$h4H7ID$8B9,(fWf.s DLfWDD$LqD$4fAWAVAUATUSHLoHHH|$pt$lD$`HL$PT$_LH$I I/t$lL$.|$_$q fW tD$H$$t$lL0t$f.$ HcT$lHC8Ƅ$Ƅ$HDŽ$L$$HcHK(H4HH$Hs0HH$$9$IP$E1$f$f.D$Hzv|$_t$f.L$HIcL4DLt$f.D$H ;d$Hf.$|$_A $f.$f(f(fWAf.@ʼnD|$_H$HHB0(Ef($f(Y$@Q$Y$]H$LHZHf.E$ :Yd$f)\$ Xf(T$0AY Y =T$0f(\$ f(d$\L$HfTfUfV A H$Lf(HY8fW f.@$YX :D$0AY Y T$0f(\f.L$Huod$Hf.tf(|$_$tY$Ƅ$tGH$H$H$D<AH$D$H8f$H$$9$Ƅ$Ƅ$|$_HL$p$QpH|$PHt$PH[]A\A]A^A_ftf.L$Hf(fWH$LHXPf.@$ s8Y,$f)\$ Xf(T$0AY Y ,T$0f(\$ f(,$\L$HfTfUfV A H$Lf(HX@fWf.E$ 7YXD$0AY Y AT$0f(\f.L$H\$Hf.f.fDf.L$Hzff(fWf |$_EƄ$EtH$HBJ089HL$pyp*E1L%1L$&L$6u$$$HLnff(-|$_EƄ$D|$_t @@EH$LHXP|$_t @Q A pH$HHHF (D$Hf.$$f.L$HH$HP(*H$HHF0@HD$pIc$L4HPHXPY$LHp f.\$H\vfTf.v D$HHX HP(IXf(4fW$f.Ƅ$ A fDf.L$Hf.H$HHHF(H$A HP@H@8B 0f($fTf.s+B2$fTf.sX$$H$HPPH@HB 0f($fTf.s+B2$fTf.sX$$DLt"f.$w$DL>#XD$H$f.DL#DLD$x)"DL$uRt$lLHfP\$xHY$H$$IؾL1$HD$p\$@Pf.vlD$`f.$$f.\$`fWd$H_$f.\$HAd$H$ML$`fTfA. fW\$HL$`$$t$lLf( $f.\$H%S2$fWL$H$$똋T$l1LwfWd$Hf.gaD$Hf.$$f.L$HfWɋt$lLf(i D$H 1$$D$H_$$fWɋT$lf(1ɾL\1$fWD$H$$$f.ffff.AT1UHSLgHHA$HxHHcHA$HE1HxPHcHA$HE1Hx8HcHA$HE1Hx@HcHrA$HE1Hx0HcHQHEH8%t3A$ 11҉HHEH82u[]A\fSpHu1Hߺw[Cpfffff.AWAVAUATUSHHLoHH|$Ht$HT$HD$8ALD$DD$$D$ uHH[]A\A]A^A_DAHt$81LOD$ HcD$ T$ T$4HHD$(HD$DH$IP HT$(H@L<HT$8IG(D0E~eAIG(B LfWf.v+LJuHT$8H,A;GAIA9}HT$8:AO9EIcDL$!fIqAOHT$8Hc)9}J9IG(IP t$4B 苪D$$L4uH $fWH|$uH|$H v^~fA&@D~:B9BrHѾDAQ H9N9}E~mIcDL$fIG(LB .fWf.vLt!H $fWH|$IIP t$4zf.l$4Hl$(D$4L9D$  D|$DE~ IP c~-HcIP HDHAHHX H|$H zu ]H|$8Ht|HT$D$DHT$H|$H 7u\H|$H u\Ld$L|$H\$Hl$ILl$Lt$HLoHIHL$@LD$8L芥LD$VyD$WT$W T$VI DŽ$HD$pucE1HT$@HL$8E7$DH$H$L$L$L$L$HfDID$H8賽tH$E1HL$(H:ξŅdIT$HcHBHHt׃8u҉Lt IT$DLuL蘝tHD$pHH(ID$H@HH2~HcBH LL$XhYHcT$XD$UI$D$\HT$0H@HHL$0HT$xHHtD$\L3LD$hD$`fT A D$Hf.|$WA]|$\~$t$XLDD$@DD$HE)|$UT$hA fT7 f.L$Hf.|$\t$XLT$T$HD$pHH0ID$H@HHHt HcHcHfWD$`f.A fWf.H\$xI f(fTn f.s"D$hfTZ f.E AD$pHL$(D$`Lt$XLFLHDH{HIؾL1WLX5D$hfT f.,|$V!t$XLjut$XLAbFLHUDHzHIؾL1t$XLXdL蹥$f.ID$H8Ant$X1ɉLtDD$t$XLELHCHHP#t$D1H|$AH$L譵;D$HH|$~H$HtlHDŽ$H$HtNHT$(D$HHT$ $HT$D$HHĨ[]A\A]A^A_@@Af.HcIFHIP 1HcIF ~~LHT$0AH HAJ(D9 4(Hy$E$ EsHc@H2AH$1LHT$D$HD$tHHT$xHD$xT$t@$$HT$0Hc$H HD$PHHT$PHD$XHAHDE~O@xHM^HMV L$MF0HIcIcIIHAHT$XH90JD$t9D$D$HT$xD$@H$H$HT$hHcD$f.@pHY@fDHc$(IE$HHP Hc$(HHP $H$H$HZ@H$2RH$H$1҉E1E1A$vH$$IcHP@$(hH$ Hc$(LD$$,1w$,D$t$1L$6$$,H裰$(H茰 $L$8$VHD$x,E~5IEIuH$H$HH6YLyAEp$$$,HP 1_g$,H蘲$(H聲\$8H$(H$,H$H$$$afT%f.vLH HfT$f.:H.$Hp HT$@Y$ \fWf.$^$LH f(AXEPf.LH "AIH1$(H$H>HAؾHH$H$E11ɉ: $,Hth$(HuU%d$8.$(HP 14c$T$8$$,HP 1bH$A]XHc$($f(HQ`f(fT Yf.$,IE1HPHcHHtH1Ht90T$8FLH "f(A\EPf. LH P$(@H AEPLcN4BXf.HL$ 8L$ ef(\h H $(B0 HL$ L$ f(\h 虱H LH f(؋$(B0LH "h$H$^H$f(芴fT f.[$H?HD$8f(fT\fTf.$f(fT\UfTf.s$,$fTfHcYf. L$86$,DHBHH$H$HH@H$HApH$H$HBpQH@1ɃH$ HØH$HY@LH f(H!$LLH H $("$(HP 1P_^D$8HL$ uL$ f(Xh 覲H L$(f(B0HLH LH 1f(HM#$( $HfT| f.zLLH L1H Lt$H\$IHl$Ld$Ll$L|$HLgHGPt$vvHD$`Bhf.ztfW7L$DL$LL$ LLD$HL$$T$D|$PE/$ LuH$HGHDpE IX H@(\D$X$f($f(f(gP\f(fTLf. fT :X ^fT&f.$ q Lv] LD@* $fA.@ v A@ $A8 f.v A8 H`L1H$AH$HBhHBDp)D)7Lc8H$LL$0LD$(HL$ HT$Ht$8D$ H$H0dH$HdhH$HdH$Hct$A ~@L7DH$HcH$Hc($ $H$fDH$h.d$L7H$HT$0Ht$($ @L@[ L6H$LL$0L$HL$ HT$Ht$8j$ fD L{6H$LD$0HL$ HT$Ht$8b]DL;6H$LD$0HL$ HT$Ht$8A$ DL5cH$HL$0HT$ Ht$?BH$Hat'H$HGx~L5H$HaAH$Hat(H$HG@~LC5rH$HKat(H$HG @~L5H$Hau$ $D$D$$$D$PA0D$t$@DD$DDDL$HT$L$~(H$LHh$Ht$1誀H$Hj`tH$puHD9d$T|A$ oL4ZH$AwH$Hf_hL39}H$HGHHHAB~Dd$Td_HT$0Ht$($ DH$HL$0HT$ Ht$Le3sL$H$LbX$ OL)3L$1H$LD$0LHL$ HT$$誴$ u ;$|ʼn$RL$H$LD$0HL$ HT$LA$ [L$H$LD$0HL$ HT$LL$H$HL$0HT$(L AH$H _!$ L$DLH4L1E~L$HLdHL1~H+L~L$PLGHL1}L$@LH)L1}TL$LLHL1}"LH :HL1k}ZH$HT$ Ht$$ LV1t L5L譽L.D$DD$@T$HPD$LH|1L~EHYL1EA؉|HL1|wI LfD(AuAf(H HLM|AIL:[9`w$A@ f.v A@ $fA.8 A8 HL$XH$L$L1fWf(L$XPgH$$$LY5_LDŽ$  :$f(I$IH$HIH$H$f(fTfA. H$0LH '1Hv$f(fTCfA. H$LfH 1HzvH HIIL1Gz$f.zfWH$f(H iH߸uwH$0f(H .HuOHG ?fTf. ffffff.(HG t> fTOfT f.s/1f.vf.OD̔f.f.@tHHҸtBDH @tHHҸtB DH f.H\$Hl$Ld$Ll$HL|$Lt$AILML S H H@I@E1IHcH4H HAPH H?I4MLHcHH|$fWE'Wf(ܾf(E1ۻEwIEPFHD)ŅE^A9IcMM(D)H HTf(HA* XHH9 u*^ HIHA9^AAf(̹TAL$_f(1f(HHPf(_f(\Df(\f.f(DH_H9f(Tf(\f.wf(DH[]A\A]A^A_f.E=@IE8FA9IcMUHD)H MM HTf(HIc HH9A*X uJ_Hf(DHH9"L Hcf(HHD#f(_f(˃HHD9\f.wf(@Y Ixv111_f(f.A@U)f.GGGIA9VEugAډlj)1)ЃU|$OA1LHD$胙3fDf(OAQV ATUSH~(H_ Dgn+H Hc w,IcD$f(fTf.\fW f.vrfWf.vft1A91A9TL DH[]A\Df.wWFfTхfTuYNf.rsf.vmH[]A\\fTX`t^ vfTfTf(\f.wfWf.w1ɸsH,$4 1,$\f.1f.L DA9Oȅ7ffff.H\$Hl$HLd$HIHHtFHtEAD$uNHI$HCID$HCID$HCID$HC ID$ HC(ID$(1H$Hl$Ld$HDHLmfDHl$H\$Ld$HN(H_ DgntH HcՋ,IcD$uL1A91A9TL DʉH$Hl$Ld$HNtf(fTf.sYzWf(\Wt ʑfWf.Ntw fWf.wCGf(\fTXq^fqH2 X1\fWf.1f.L DA9OȅH6H?uDAWIAVAUATIUSH8H HT$D$HD$0AD$fWAE1AD$ D$(I B4()?AID9HD$0D$(^@xf.D$H8[]A\A]A^A_@HD$0HcAA$LDD$HH8HH,^DD$f(9}IHT$0HcH HJ0HHD$0HP(@HcHH9AYXD$ XfT VrD$ A*_L$(T$ L$(L$^ ^f.v f.L$(AAID9D;D$AL` gfWD$(fDH\$Hl$ILd$Lt$HL|$Ll$HXl$xALHT$`Ld$hDLt$p @(H jL` uOHh  of(‰l$`MMLHHl$0H\$(Ld$8Ll$@LLt$HL|$PHXff(Hh  n1YpLHT$LT$ݿET$LT$j]H$?T$LT$B LHT$LT$H\ LT$T$@f(ʉl$pf(Lt$hLd$`IH\$(DHl$0Ld$8Ll$@Lt$HE1L|$PLHXgX Mf.AVIAUA ATLUHLSHH041DMAHD$HD$HD$H$ LX 1)Љ)…fWɻKH1)Љ)9|nf(H f(<uщHL$ ;L$ u'AfTnf.vX DX f({H01[]A\A]A^fH\$Hl$HLd$Ll$H(IIHb uGht-EƃH\$Hl$Ld$Ll$ H(fDH tELL%ƃfff.AWHcAVAUATIUSH8H HT$`HL$XLD$PDL$OHt$h0H$pD$wt A$HD$PHH$SA$A$ A$ $PfWHL$XHm1f)T$ D$DQfTT$ $f.v_H$HcƉf(ƒHA9$}HtH$HT$hH$$H$(DŽ$HL$@0H$,HHT$xH|$8HD$0L <A$ E$AՈ$H$A$HDŽ$ADŽ$Ƅ$$L$$Ƅ$L$HD$$@$D$$$H$DŽ$$DŽ$,Ht$0LHL$@HT$8L$$($$$$,D$$$(9‰$(E1|$w$L$A=XH$$$$$,;$($,H$HcHL$XA$ $4I$ Hc$HHcI$ H$H$f.v^ uf(ADLLe4$A$ f(fTD$ f.A|$Ot]I$ $$HcI$ A$ f.v&|$OkۓY$$$t~AH|$1L$$uoA$|$Ot$;$$Xf.$F@H|$1LYtDAAA$ A$$$A^$ $ H?H$$;$$$$u8fAX$ Y$$$t$$$OI$ HT$xfA.$ $uF$DŽ$^ۑ$<uj9T$tdAHf.~AztJf( ^f(fTf.w,f(HYYXf.wBH9}H\$Hl$HLd$HAv >H$Hl$Ld$HDH f. @r[A*f.zuEtHcHH (Hc f. @t4Qf.ztf(@c!{jffDzHH1$9SHv [fDHH߃1҄tӋH1HcHHHH@SHv1[HH[WAWAVAUATUSHXHH|$HD$HHT$L$L$HD$8L H"HD$0HHD$(H5=HHD$(XHT$HD$H9 4H|$EHD$HT$DD$ T$ 1H|$tZ|$D$ 11ۃL$DHL9HD$tA9}HT$L+7m΀|$1AHT$C,L+mH|$Y<AD9d$ }f|$DD$$H|$(Ht$@D$CGD$@MD$ACD$BRPHD$HT$1ɋt$$H|$(H9 T$ ރL &QH|$Ht$81ɉ#H|$Ht$01ɉH<$tLH|$(H 1H|$(H $H1H|$(Hٹ1|$tHD$HT$H9 D$ Dl$$L|$AADAAID9t$ H|$AwtHL$0HT$8E1H|$kA~|$HD$0t.L$$H|$(HEHD$8ظHA9}XHD$DlDH|$(HѸ1H|$8HtHD$8H|$0HtiHD$0H|$(HX[]A\A]A^A_À dHX1[]A\A]A^A_@fHD$0L$$H+H|$(E HD$8XHA9}cHT$HHHDD$(HD$(fA]D$$D$ 1E1L4fIM9HT$BD"D9~HT$L+iH|$<HD$HT$DD$ 1fDHD$B4+L+.i9\$ }LT$ AlH|$(8HֶAfff.Hl$H\$1Ld$Ll$HLt$L|$HhLMtu4Dž1H\$8Hl$@Ld$HLl$PLt$XL|$`HhDHD$0btHfHttHt$0HuDžf.L H H*HLmqH fWDf.C.H L<1HvCH9'H A݀<u勅9y)L H` 1H¾!HHD$lAAD9gH B89DH fWHcDAf.LFBDH L<Hw1ξfW1D;HT$0H 85Y AN1uHT$0Ht$1 E1 5HI$DzH <uiHD$0TH <t4A9 T 4YHLYS1H9xA9Hx BxD$ $4YD$ H)LAIL BD9L6H` Ht$1H|$0HK HD$ SZMf)Hc@H=(LHDD$DD$t,H Jc8HkaH AJc8`H` Ht$116fffff.AVAAUATUSHH HH5H=#DNDE1A,fDH I9H B f(fT A4f.wAEH$AAp$HHHf(¸DEcHH=hIW9WHH []A\A]A^H []A\A]A^@E1A0fHH=I9|HHB(AD$D$AAoHD$HHOEvH 5ffff.SHHH|H2fTf.=s+z)f(HH[ff(HH[if[fffff.AUATUSHHDHH uH[]A\A]@HH=ʮ1E1bDyIsHnHHH$IB*9|,H 9B $}H)*lHDHH[]A\A]Zf.H[]A\A]DATUHSHgHHH19HH=c \DE~:H{kHHH1 9}HnH HHHHE1 DE~@1H,HHO\ 9}H CDE4ADDHlHHH1 DE~ADH苒HH 9}˺DH#HH=yDHS=HH`V DH>DH3< f.H A D9HH= "~f)HH=̫ 9|6HuHH= 9}HH= ~y,@HH=\ `9|FH=f. sĉH=HHʪ 9}HH=  (HH=Ҫ  9|RH.< fW ^Jf.sH  LHDH1LHAx p Lh LDSH=ЛLzH DH51LHP8H DH51LHp DH51LyH DH51LZH DH5k1L;H DH5/1LlH DH571ALDH5@1HL\|$7uEH|$8t LHH[]A\A]A^A_@HHLE?DH=šLHx DH51LXH DH51LH DH5A1LH DH51LH DH5 1LH HDH521LH|$8Hl$Ld$HH\$HIH$HL$PHH 5L$XH)H$)x)p)h)`)X)P)H)@dH%(H$(1H9H` t^H$H\$ IоIHD$H$0H߹$D$0HD$Hh HH` HtXH$HHL$HD$H$0D$0HD$Hԁ"HH;8t[H$(dH3%(ujH$H$L$HH$H$D$0HD$H$0HD$H "H8@YfAT@IUHSMtH9rLH1HDHA1HHH؅~* DH HD$ H1oHWHAHH[]A\1>fDHFHHA11HwUHH茼H HHHIHEȾ1H#]H1@AVAUATUSHHH$H$ٯH\HA1pH1HZH\1HDH=1H.Hw1HE1Ef1H߉zD$pfW $fW H$D$p HYq $D$pUH$Q$H$H$$H߸;HW[1HH$H$H$H,HHA1H[1HH71HHњ1HrAIUf.H$HL)H$D$0 HL)H$ D$8 HL)fT\f.Et+H$fWLt$D$HL)f.wYaH D$@H8HD$HO\$0HjT$8HL$@D$HH߸9}E fWD$0fW fWD$8  f.EfWH$HL)@1H߉wH$D$x B 3H$D$ B IHD$D$x HY D$ D$xHD$(6N\$HT$HL$ D$(H߸9{fDHW1HbHǑ1HLHW1H6H1H Hi1H 1EA@AffW $fW H$ B I~$fW dH$N$H$H$$H߸;2HfVH߾1H[]A\A]A^@LH$ Lm(H$D$P (HD$X D(wH$ D$`(WDHD$hM\$PHT$XHL$`D$hH߸AD9)fff.UHuH11SH 1>~fHJ11HHHH>[]11DH1H1AUATUSHHh;HcHL$L,AfWf.f. @fII9|_A $AEf.uzH+HA$D$7JD$HSH1H߸fDH[]A\A]DH+HAU$I$HH1H߸O8f.H8+HA$D$ID$HH1H߸AEfATUSHHtuh;dHcL$HH+H߃B ID$HD$HDH1H߸o9}H[]A\fffff.Hl$Ld$HH\$HIH$@H$HHH=L$PL$XH)H$)x)p)h)`)X)P)H)@dH%(H$(1u9H$(dH3%(H$H$L$Hf{Hp tH$H\$ IMHD$H$0H߾$D$0HD$Hh HHp UIfUHSHH$@H$HHHUL$PL$XH\$ IH)H$IH)x)p)h)`)X)P)H)@H$$dH%(H$(1H$0HT$D$0HD$HڋH!ကtH HDHBHDɹHH)H H:H$(dH3%(H u H[]AT1IUHSH0HH~ H#(H9}MtHcLH1G$~&1H&HHAؾH1\$~)HH͉HAؾH1\$~)HIJHHAؾH1\$ ~)H蓲HkHAؾH1\$~)HbH:HAؾH1V\$~)H1H HAؾH1%\$~)HH؈HAؾH1\$~)HϱHHAؾH1\$ ~)H螱HvHAؾH1\$$~) HmHEHAؾH1a\$(~) H{<C8{8-STD$HcȉC@DhT$H[fD{<C<봐Ld$Ll$ILt$L|$AH\$Hl$HH ADD$oDL$nH@ AUTƅHx HEXteE~`|$oHJHJD$PHDSD$PHHAEEf(ȾH*LD|$H$ߙLBRE`EbeX5\fTX^fTf.E;E tLEA$E %Ld$ RH*HALAd$ EXLd$ d$ EHEDELEPETf.rHEXHE`H$H\$xL$L$L$L$HĨfA*$XHL$@f)\$0d$ t$Đf(L$@Yt$d$ f(\$0Yf(\fTX^f(fTf.f. ~v+A$d$ /Ld$ B8tvBETA*$XGL$@f)\$0d$ t$ُf(L$@Yf(\$0d$ t$Y@Hx HHHE`BETC|$otAEPEP~ ELEPUL~,;TKD9uHt5ELULD}HDuDf.D9}Duf.ƅE$ E~,H$8tlf.E;E \$nU AtE1fDtE9t9L1]OH*HH>LȕADŽ$1۾Ld$ Hd$ TLADŽ$1NH*HH,=LRmDLd$ ed$ f.1AELA$EHEDd$ ELEP=MFMLH+NH*HH<IؾL蓔Ad$ v Ld$ 2dd$ Qffffff.AWAVAUATUHSHƄ$HDŽ$D$PHDŽ$HDŽ$HH@t$_DŽ$HDŽ$HD$xH$t(H?H .@Hb<HD1蒓H$HrD$tHlH `1H$Ht>HDŽ$H$Ht HDŽ$H$HtD$tH[]A\A]A^A_@H$1H}tYH$Hq3fWD$Pf. Äۈ\$iH襊H(`H& H8BDžHhD$t|$_H ۉu ~H.EtƄ$@HEH$H$L\ L$E1D$k1E1D$lD$pHD$@HT$8H-AD2L$iL$lH$EʼnDHH$AuD$jfAN1@$1MHRA,H9}H uH @L1D$E1|$ie Dž~ H uH;H1]fWD$Pf. @DžHhH^IH*H"<HЏgE@LCE HD$@H$DH$L$HLD$x$HD$HD$8HD$1AD$H$$f( Xf.v>u1E1H u&f(H8H_1E1qE&fHxt{H : DžHcH D$\H8H1fAH$^@BLVBD$k\ @aBH IcHT$lx<|$p<|$jH$L$$DHHD$HD$H$A1HD$AH$Aŋ0 u~D$i ` EuD$pH T$kHE1D$kH$  _1AHH$fWIcf.*Hv8H UDžD$tj f.$u H uH6H1>DžH¸;G$9Ƅ$,HH*H/HD$k5HD$HHT$x H 0H1nDŽ$13ffffff.AWAVAUATUHSHƄ$HDŽ$HDŽ$HH@t$ODŽ$HDŽ$HDŽ$HDŽ$H$H$t(HH @H0HD1 |$ODžX dDDžE~'f11҉H/9}DX EHHbDŽ$HH s!H$HtQ}HDŽ$H$Ht3}HDŽ$H` Ht}HDž` $H[]A\A]A^A_ËHHdKHHH H$H$mfWHz3 1H9PH7H` 1H]aDŽ$H:ta ~X1HF!HHH 1A T$fDD$E@ H11DžH$$H HD$`E1D$pƄ$HT$XH$E1H\ E1HT$8H$DŽ$HD$PH$DŽ$HT$(HD$@H$HD$0H$HD$ f>H膄)H|$PX P4HT$@DD$pۋ$ADAHH$D$EE1|$pA1DHD$0LL$8H$H$ADH$HD$GAu&1H9}1HJuDžH T$p\ NˆD$p4T$`EЈT$`AH DE|$OtHAYN$HXYH DžfWDžHbwDX EH HWX ~H HcƋ)9|FHH H9uAHA)DH H<DHHp|DH%uX P҉X Xƅ H|$PE1e2D$OD$` ~ H|$X 62Hx E111H?H|$Xþ 2HhDžH'7H*H+H}@Dž1HLMH$Hb\H$H<\DŽ$@zH$ Z 1ADHH0t~H$1HcuhH :DHHD,H])1|fDD$pE1H{)H1T|@H$HT$ McD$H$E1DHJHH$HT$(H$)A~,$$f( Xf.DX EtjEueD;~DH : }DžHcHD,H!)1{DDHݿAf.E~H H|$P@o/H$DDHE1 Ƅ$\ @P/ul EH T$`HD$`D$pDžD$`D$pDH IcH$d<$<$H$$DDHHD$HD$HD$AE1H$Ah~<D$p$AS|$p|$pX 3X )9$$+HWpX XX DX EtHAE1O^@X H5)H14yHGcD$H|$PE1*-D$`Ƅ$DžwH iHl%1HxH DŽ$X 3X )…҉X t(HzH H HJPuH tE1E1E1bf(H?%H_E1E1E1w3D$pDž|H1H*H%HwD$pLH}DŽ$H |H H$B< u6fWf.ztfWH$HsHD苼qHWSH+0H*Hw$HvHx HE 8H H"H Hc։H"DžH16vX AWfWAVAUATUSHHXHLJ`HLJpLJLJ D$HLJX D$@mǃǃ ǃD$T~~DT$TH  Hcf.vf. vB9ljD$T|3HcH 49H]t T$T9|EH Hc H@f.vf. vH9~ىT$THLD$7~ D$7\ (|$7tH @,\ (1@H߉t$T@(:DHD$(E!HD$@D$$E1E1HD$HD$HHD$|$70AA\  (DHT$ 1HmNH߉Nw>tE@fEE"H!H1FHH Dz,93H)DHcAf.tAEfWɾHcƋ FAf(HH H1)BHAf.z1u/Au@ED$DHEf.z FHH -fD3H)DHcAf.zAuEf.fDz fDzFE1HH $@3H)HcAf.t AA9/E9}A("ffDEDfWAUHcH ATIUHSHL/uW1ɻHEE1HHx(DRIcD A~sfWjZBHtUA9|GAHfA.u{zy HHfDtHHfA.zQuOA9}߃A9ɐ}AH[]A\A]@U9LHuH[]A\A]fDAE9|FCHt9HfA.zt+D HHtHHfA.t!AE9}ADA9[zADfDSHHHt ._HCK ~XH{(Ht _HC(H{0Ht ^HC0H{8Ht ^HC8H{@Ht ^HC@H[^fffff.AUATUHSH,1)Ѓ*HELcN,J<(2DMD9LED)OIBHH9GхtI9K(tyAA)DAEt=11҉I<IDf.ofH9rDE9t)HcI ITHHHHA9AAEE~5LE11fDIBR1)9U}}UH9H[]A\A]ÐmATHIUSH?HDGEw~%11@HGH<HI<$9oHGHtH\I<$HGHG HtH\I<$HG HG(HtH\I<$HG(Ht \I$[]A\ffff.ATHAUSHH/HR:EDEE1AH{(A~JArE11L D9AЋT9HAL9uDL6IcH4HL;APDOAHHE9}[]DA\[E1]DA\DHS(Ic[]DD+DA\DSHGHcAE11DH\HC(Hs8I+x HHHC@[AWAAVAUATIUSHHLT$DHL$8D$0LL$ DD$/HcD$DHW(l;,L<HcEE1HID$ LL$ EHL$8T$DLD$04H$HH$VAID$(B9,8HHD[]A\A]A^A_fDHWHcHDLh(AUDzIcAt}BHELEjBHIT@Ht9}n)99I\DLLT$D\$fT$D9ALT$D\$ AD\H|$ H$|$/LE1DD9| D9EAHD$8D$0HcL$fB. ztNI f.D$0HT$8H$AD$0LT$D\$(D\$LT$D$0IfB. ztHD$ HA9GBf.DLLT$0LT$fDLE1nI f.PHT$8H$ALT$D\$~LT$D\$D$0IfB. ztHD$ HA9D9|D9~EfD~ىAHD$8D$0HcL$fB. S{L@E1DCT$DDLLT$E12LT$|$/uLE1XI f.D$0:D$0AAIfB.ztHD$ HA9D9|D9~A~މALD$8D$0HcL MfA.q{jf.H$|$/D/LE1D9|D9~_E~XAHD$8D$0Hcf.zt8I f.w;HT$8H$ALT$D\$iD\$LT$HA9AALE1CI f.wAAIfB.ztHD$ HA9HD9|D9~A~މALD$8D$0HcL MfA.uzD$0LE1^fDI f.D$02HT$8H$AD$0LT$D\$ZLT$D\$HA9D9|D9~E~މAHD$8D$0Hcf.t{mD|$/t{LE1D9|D9~RA~KAHD$8D$0HcLfA.zt'I f.D$0MD$0AAHA9LE1+I f.AAHA9D9|D9~A@~ۉAHD$8D$0HcLfA.u{H\$Hl$HcLl$Lt$ILd$L|$H8H?AHډH +IE(E1L<l;,}t;HHH[]A\A]A^A_HL1RHt$8HtHL1봃@E$ENHt$8@G1D$,+fLd$Ll$ILt$H\$AHl$L|$H8HAtiHHcH tTHG(L,l;,}^HcHID$(HB9,(~>ID$ DL4ku1H\$Hl$Ld$Ll$ Lt$(L|$0H8ffDxfDtID$IcHDHx(D?EWIcD$H$CHuE1A~_H DIfWɾE1HhX@AH1)DHcDf.v A9/AIA9E~eABHtXH DfWLPXAGHH4DHt"BHfA. ƒ!AA9}E9H$DAAGHH A9pHA9|uDEHD ~?G3W)D9u!yfDLA3)D9t*LA9ω}H1DHO1~D9tfDA9D9tfff.AWAVAAUATUHSHHt$HW(HcL<DdD;$}}IcHHE(AHF9$8~VHE HD,DD9tAu̓f~ƋT$DHtH[]A\A]A^A_H1[]A\A]A^A_H\$Ld$Ll$Lt$AHl$L|$H8HHcIAH unHG(L<l;,HcDH@ID$(HB9,8ID$ DDL4\tиfDDDtfID$HcHDLh(A}WHcAtHADuEu3N~,HATuCD>HID Hu+u1H\$Hl$Ld$Ll$ Lt$(L|$0H8ÉL)~(HADyBHIT HyH\$Ll$HcLt$L|$IHl$Ld$H8H/AAH <IE(E1HH$l;,}GHcEE1HfDIE DDL4cH$<IE(AH9,E9eH\$Hl$Ld$Ll$ Lt$(L|$0H81@HGHcHDDHX(+EHD$~iHH~]EtTE~OEHH4D9tEHHHD9zHtfA9}f4fDH?DLHH DH) xD>1f.AWHcHAVAUATIUSHH/uMG1҃tC&@A9\$|L~H[]A\A]A^A_DID$AHLp(E.IcEE|~bfWLA$CH 3s)ƉHf.$v$ ~H;t AHE9}EE9|^fWIcI$H 33)ƉHf.$v$ ~&HF;t"AHE9}1fD3)AWAVAUATIUSHHT$ HD$HcD$ HW(E1H L,, H $Iϋ 9}eHcE1HfDIT$(AHB *9~1ID$ T$ L4myH[]A\A]A^A_f.H$,HD$HcƋ)ʅ~*ID$ HcHcHcHH4HmfWf(fTf.vlfWHf.ffff.HWHcƋ uHu 92fGfff.+Gf.HGfHWHDÐLGHc1DEEu9C HcHA HcA4BHA A4DGEtGw wHLGLc1DGEuIC HA9ttHHcIB HCDHcA A4;O}O;O ~O GH)fATUHSD'1҅u"E~HA9}[]A\fy D;7;w }GO9~@HHcƋuۍFHHHu&9HcƋHGHc֋Dfffff. DA9G 9;w~K49}PHHc‹u̍BHH Hu#9Hc‹HWHHGHcҋfDH\$Hl$HHHt1H\$Hl$HH6HH\$Hl$Hfff.UHS1H0u H[]H#u@^HM9ÉtH[]fffff.UHS1Hu H[]]H9uHm9ÉtH[]fffff.UHSHD;](Hu9]|H[]D1H[]D1ffff.SD~D9~AD[9wHOBLcHcFDtU9w tHBIcE҉Bt!C HDЃo[DC HD\D_ f9w DWufffff.SHHsE11fW1)Ѓt HcHC[Hwff.HSHtgH?Ht_HGHtH(H;HGHGHtHr(H;HGHtX(H[f.1[DSHH|$H_H|$hHH[ffffff.HSHt7H?Ht/HGHt H'H;'H[1[fff.ATIUSO AAx9LOIcI94JADHI fDHHH9tu[]1A\DHcHID$x܄IHHt<%H[fD1LH#LA 1[AWAAVAUIATUSHHHt$ARHD$1AAEH~OXFH1fDf(\AfTf.vIHcATHA9}DD9 k#EIHD$({LcJHcH#HHLID$$ID$AWJ<h#It$H\$HID$11fHcHHWH9HD$H[]A\A]A^A_DsLLcJHcH%ID$@AHcH"IEHD$tLZ#HD$ffffff.IIHL(…t@IpIy(…uAIpIyL HcHH9(H\$Hl$؉Ld$Ll$ILt$L|$H8I7$HHI$u+H\$Hl$Ld$Ll$ Lt$(L|$0H8AAEEDuC<6Hc#I4$HCH~tM.E1Ʌ~aIcEMH<E11AxD9t"HFIcщ D 8^uNFN AɃIH9}D-HVHDLFHFE1ِATAUSH H|$?HD$9to~kHt$1҉H|$t D9}$Et H|$4HD$H []A\fDH|$H|$tHt$1$HL$HD$HqHxTHcH!HT$HL$BAB A BAgff.H\$Hl$Ld$1H(IHHD$u^H|$H|$KHt$LH|$2Hl$H\$Ld$ H(fH|$Mff.S H}!H[H=q!$u1a!`"!"*^Y$Hfffff.f(H(h fT A$Xf(L$!L$$\fT@XX>^f.H(ffff.H8f(H|$(L$$!f(@f($fTD$f.w>%&>f(\D$f.vf..@r,f(XT$(f(H8fT$(H8f(ÐzT$(\fSfWf(HPD$8f.t?f(f.wE=D$(?fTf(f.v4HP[fDzHP[]HD$(뷐f(L$$, L$$f.f. L$8s(z&f(H|$@$X$f.H|$LD$8$ D$8,h*$H|$8YD$0D$8^D$0X2aMD$0|$LYD$(YD$8D$8D$8f#f(YD$(`XD$8H,HH*USHHfW1f(DH9YX}QэnH\f.zGuEf.v4D~+EHKHSHH)@^HH9uHf([]f($$f(fW1f(ff.Hl$Ld$HLt$H\$ILl$H(Au9HcHHEHtdH$Hl$Ld$Ll$Lt$ H(fHcH}L,LHEt1LHHEHuf.E~1DHLA Adž1ofDHcHEIfHl$Ld$HLt$H\$ILl$H(Au9HcHHEHtdH$Hl$Ld$Ll$Lt$ H(fHcH}L,LHEt1LHHEHuf.E~1DHLA Adž1ofDHcHEIfAW1AVAUIATUSHHHH>D3HCEH$DL{E1fH$C FDE9ImIcEADCTLLLȃH9G…t 9A AJt^)Ét5f(1fIf(ff)H9r9tHcHDHA9CETIE9:H[]A\A]A^A_HcHW11fffff.H\$Hl$ZH(H1Ht$tH|$HcHHFHD$H\$Hl$ H(fHl$Ld$HLt$H\$ILl$H(Au9HcH}HEHtdH$Hl$Ld$Ll$Lt$ H(fHcH}L,L HEt1LHSHEHuf.E~1DHLLA Adž1ofDHcHEIfH\$Hl$ZH(H1Ht$tH|$HcHHHD$H\$Hl$ H(fHl$Ld$HLt$H\$ILl$H(Au9Hc1HEHtXH$Hl$Ld$Ll$Lt$ H(fDH}LcLHEt1LH HEHufE~1DH&LA Adž1{fDHcHEUfH\$Hl$ZH(H1Ht$tH|$HcHHD$H\$Hl$ H(fDAWAAAVIAUADATUSH(Dg HD$ HD$HD$DGLO1 Dy9|4> HcAAA1)A9|q9}9;HcEHt$DmL|$9~NMtIAF AV9AF AT$A;V IcH,L$IFL<(IFF, H(L[]A\A]A^A_@IVHALHt$ DfL|$ E1AI>Ht$DJL|$x1>Dff.Hl$Ld$HLt$H\$ILl$H(Au9HcAHEHtXH$Hl$Ld$Ll$Lt$ H(fDH}LcLHEt1LHHEHufE~1DHSLA Adž1{fDHcHEUHHLJHLJÐHHtfp&HHLJHLJÐƇƇƇƇt Ƈ@t.ƇfDufuEtƇfDÐH8Htfpf.H8HttHB @XP,Bff.HHt@$f.Ht+9w}@LGHH11f1@Hf(t9t5Ht5HHXHHHHu6OfW뽄tluhHHt\J"fxz$B ==tNfz tVfftNXJJvf.XXXHfDBf.vDfB"H+1fXXXfHNfW;f.J?DfD1H\$Hl$HHHPHXH@HtHǃ@t HǃH\$Hl$HSHHHh[fDATUHSH HHHtBH@HHuf.HRHHt9u[]A\HH 1HA1HtEtHǃHl$H\$HLd$HHHHH ףp= ףHHH?HHH)HHHH9uHE1HL[,H(ILHH(H(H(HtOH[H$_FH$_HHtHLHD(HD DD1H(H$Hl$Ld$HD0dHH(QL )H3A}1HDž(L HJAL11sHDž(NHt+DGELGHH114@1$@SHHH fDAWAVAUATUSHIhApH|$@HT$8(HL$0LD$(LL$ IǀAƀIǀIǀIǀ8Iǀ0Iǀ HL$(HHH 1HfB HBHB1fB"fB&'HT$(HǂHǂ HL$(HH1'追HT$(HH HH &H|$(T$ H\$(HHǃpHD$pƄ$E1HL$(D$_H҉HD$_1L,ЉT$HHD$0EHIH;l$HL$(HǁtQHD$(Dd$HA)HAǀ$uEtHCHT$(HHIH H;l$uH\$(HHt,fDHGHT$(H HL$(HHuE1|$_t3H\$(HHHh Hx HIB $HT$(HHH H<HHD$h H\$(HHH~ H<eHHD$`W HT$(HH@HH$~DŽ$H$H\$(E1AH(HcЃHRD$|HHl HE1퀼$uYH\$`IcEHcEHT$p<tfW1GH\$hAH]H'HH݋UHL$pHc€<~pHH uHcH@M$ID$H` HCHcEHL$pH@I\ffA׋D$|HEHCrDH|$(T$0H|$(T$ HT$(HHǂpHHH/HxHL$(HHpH|$@IH|$@HL$(HH9~=B1HcDfWH|$@111AHT$(H+HH9Lt$@Ƅ$HL$(LqSH\$(HHH&Hx,HHD$pHD$(HH҉HH|$pH1DBH4fDy$ЈHID)HHHJA&ftɈDHL$(HHtH\$(HǃHD$(HHtHT$(HǂHL$(H HtH\$(Hǃ HD$(XL@H H11^ ff{&{$tdC ffD:ffDufC C"f fufC"CfWCCCfWCCf{"x4KA f.HCHCC"fC"fC ECDLf{"xCDL\C^ED$_OHD$(D$_HpC fB*0HHLL |HF+A11 H\$(HǃpfH|$(1HD$@HĨ[]A\A]A^A_DHT$(H HXHufDH[H sHLuြ$tH|$@uL?)E1H\$(HhHt H9|$8tOHD$(HnHT$(H ]HL$(Lt$@HpH#H\$(Lt$@Hǃp@fWAf.u '@f.K+f#EfC fC"S DL{HL$(C HpfB*HD$(HHJL ȺH)AT11NfL Hb)A(11H\$(Hǃv@fC"DfC DHD$(1H/HI$@HH]HHuE1f$$HL$`HT$hDLH$HL$(HcBH(H@HDf.Ǿ82fW$LH$HL$(HcCH(H@HDf.k$jLH$HT$(HcCH@HH(DEDPE[DHEH$$LHT H$H[HH$HD$(H(Ht2HT$(Hǂ(MiHL$(HKL$D$LHDŽ$f.H$Lc(M01HIxH$@ D$LL$LBHz AMfAEgH\$(IEIE HD$PH0IE(L0fH\$PI HHH$HD$PIl$LHHCA$CID$AE HCHuH$IUHL$(H$H$H$H;LHL$(H0HE1E1$H8HB(HZH0tVB 1҅HcHHIHL$(1H8@ aHcHHI:E1HE1䀼$uBDIcAAHCIDH;Ht HHH7HCHkuIH;*Ht@tfDfDHD$(HH L ԵHfA11ZMtLMH|$pt H|$p;H|$hH|$h%DHD$(HHLRL bH,$11AHH|$pOH|$pfD:HH;HkHt HHHuE1D$tHHL$(MELH8PHL,$H0螾MtLQMfDtL>H\$(H8HHtH"H8HH[HD$(Hǀ8AL HHڴ11AMtLH|$pt H|$pH|$ht H|$hH|$`H|$`fLYHHID$HcEH@IDyHL$(HH L H'A11HD$h$LN,$LzHT$(H8P HcL +HHAR11E1HT$(H8P HcL H}HAQ11E1jL HOA6 11>$LH$HT$(HcCH@HH(l$L謽HcCHL$(H@HH(.$L4HD$`HD$hH|$pfDHH~[E1HHHH9|5H\$p|3HD$(AIcHp9fQHL$(H뻅҉~CHl$pAHEe1HIԀ}At~LHD$(HHHL9uH|$ht H|$hH|$`t H|$`H|$pt H|$pM7HT$(LHhbHL$(H\$(HHHHH<HIHD$(I LHHHL$(HH~QAfDHT$(DLAHp(HHL$(HHHH9}I HLM1LDL0HD$(HH L HQA11E1BL H'A%011MMD?ff.H\$Hl$HLd$Ll$IHHHLdH%(H$1D$'HH3HH(fWHcH@HH@f.vsT$f.vg@HcCLl$H MLH@HD8}KH(HcH@HH@L$f.wD@H$dH3%(H$(H$0L$8L$@HHfHHcH@HHf.LEHխL11tQH\$H M1HUHھHU1=iffWH\$Ld$Ll$HHl$HHIdH%(H$1f.AD$%HLFHHHc@H(H@HHD(Ht D9(DfWD$f.zT@uNH$dH3%(H$(H$0L$8L$@HHf. HHHcEHH@HH(HP(HHrD.HcEH(D$FH@HHT(HVHt(7Hl$H fI1HH<{LCHH11X~fWL$f.zXHHfTf. dH@fDHH1L耧H1HYHfWHD$f.z. =HHD$D(H@HcEH@HH(HP(HP fDHp ^H111WL HN1A @11L XH"1A 11YfUSHHdH%(H$1HHt;H(#HHHH@HHAHXHHHHA`fA"fA&fA tXPf.zvutH I1H{~ LCH5H11@1HH$dH3%(uLH[]fHx1҅uffDHL ٨A(11d1ff.USHHdH4%(H$1<=W~M<>t[H eD1H Hk)14fDfDtN<<@uuNf`H$dH3%(H[]fHH8h tulEuHfDHHZz$tffDfz"uf9j fj"UH~vHfh /ffDLCH1H11DH)H1DHfDt1HD{1`j1H11ifD;HH16HQH1DH\$Ld$HHl$Ll$H(HI$DHtYHEEHtiHHHtb$DLHHl$H\$Ld$Ll$ H(H@HtouEufD$1ҐfDH(1҅uH\$Hl$Ld$Ll$ H(LHHtRHx&HH@t2LH$DHXPP@LHHJL HSA11GHǃ@f.fWH\$Hl$Ld$HHdH%(H$(1f.PH Xf.z @f.fDvf`fDtff.fv f`tTHl$ L@H i1HDc1E~aLCH1H1V1AfLd$ L@H զ1L9HǃXH$(dH3%(H$0H$8L$@HHf.HH@L$7HIL$Pf.`Xf^ff}1 IcD$H@HH(XH@f.HH.1Xfǃ`^PIcD$ f(H@HH(X@f.PJ`ftfXfǃ`^PIcD$H@HH(@\f.ww`{@LCHgL11H9HL$L$P`NHH1H@= %d, but given only Alen = %d. Column %d has a negative number of nonzero entries (%d). Row index (row %d) out of bounds (%d to %d) in column %d. Internal error! Please contact authors (davis@cise.ufl.edu).lp_yyset_column called with no bufferlp_yyset_lineno called with no bufferout of dynamic memory in lp_yyensure_buffer_stack()out of dynamic memory in lp_yy_scan_buffer()out of dynamic memory in lp_yy_scan_bytes()bad buffer in lp_yy_scan_bytes()out of dynamic memory in lp_yy_create_buffer()calloc of %d bytes failed on line %d of file %s flex scanner push-back overflowfatal flex scanner internal error--end of buffer missedfatal error - scanner input buffer overflowout of dynamic memory in lp_yy_get_next_buffer()fatal flex scanner internal error--no action found../lp_rlp.cLEX ERROR : %s lineno %d read() in flex scanner failedparse errorvar_store failedUnsupported SOS type (0)SOS type not expectedSOS%dsyntax errormemory exhausted]a dI____bI_I___j_3```Ydeyffqg|hghxiKkj0lAjk0cclb{aFdFdFd(v{v{vvvvvvv{vX{1ځ`؀K||||vxv}Nwvv2vvvvxvv~ zyuvvvvvvvvvuyv y{vvvzv~2~v~~vvvvvv}}Dzy . @(*(C;4T<#CRWJKILRR[ U  oq  @F IJMNPU_fiBlPuf'AwuiwUj[_m./%*01*6JvKw !"#$YECLDQSWZ \ iVQj:;<./g bcexrS+Hs5^-yo8Gz6pg`qd    /.!789:;34<5"-,10#$%26>'()@=&CBAQJLSDPTEONUF?MRVQW+XHG*IY !!"#"%&'$()*(++,-,/.001232444556677889::;;<<<<<>=@?AABCBDEDFFGGHHIIJKLMNNOOPPUQH"FMD+ ,BP]fu 2>=n347&'()9?@AFIXltMN[TUhROak   !"#$% !"#$%"        >>>>>>>>>>>>>>>>>>>$$&+-n0>R(0<ZF<A[QJUfJ}94`uX@3-&S~Al!m |(/g,`-DHR7OD68 Yahot{      CC00:((V:(DDV$$$++$$&&&BB+&,&,,-1-B4--5;,|<={1?14W45;5;<=<=?Z?Wx<5;G4wtHsZ=>?pQoGmGjHNHa>O>QGQP>HRN_N>ONOS>PYPRORTY^P]SYS\R[XTT\TUUU\bcSMdebcdbdbcfrdregfrULefrgeehhhgkKlqgkkllqukvlqJuqvIuuvvyuFvzAyzy}z}z9}~~}~872~'%     ` "#"#$$$(()%%*0$$$0%+%,,203DD230-4020356$$23%2%320<L;((07M=8293-DD:2>$$$BB?%%&&&BB-&+&,,C0C-0DD00-002032W3223322332Z3XOHNWG|Z{[P0Tp0xXw3t[03p2032Y30Q\02o3R2b30S2132c30kndm2131eEEg2l3hhh111fa1s11rq111111z1g11j`1111Q1hhh11_111u1v1111111^1y1]}1~11}V~1U1hhh11111K11W11Z1J1IE1AX'3@[/3!!!!!!!!&&.'&11111FFFiiiiii?guess_basis: Internal errorcrash_basis: 'Most feasible' basis crashing selected crash_basis: 'Least degenerate' basis crashing selected K7A`?LUSOL v2.2.1.0iesbfp_findredundant: Error %d while loading column %d with %d nz bfp_btran_normal: Failed at iter %.0f, pivot %d; %s bfp_ftran_prepare: Failed at iter %.0f, pivot %d; %s bfp_ftran_normal: Failed at iter %.0f, pivot %d; %s bfp_finishupdate: Failed at iter %.0f, pivot %d; %s bfp_finishupdate: Insufficient memory at iter %.0f; %s bfp_finishupdate: Recovery attempt unsuccessful at iter %.0f; %s bfp_finishupdate: Correction or recovery was successful. bfp_factorize: Very hard numerics, but cannot tighten LUSOL thresholds further. bfp_factorize: Frequent refact pivot count %d at iter %.0f; tightened thresholds. bfp_factorize: LUSOL switched to %s pivoting model to enhance stability. bfp_factorize: Resolving %d singularit%s at refact %d, iter %.0f bfp_factorize: Replacement slack %d is already basic! bfp_factorize: Could not find replacement slack variable! bfp_factorize: LUSOL was unable to recover from a singular basis bfp_createMDO: Internal error %d in minimum degree ordering routine??@|a2U???LUSOL.dbgaindcindripiqlenclenrlocclocriplociqlocipinviqinv%10gTimerID %d at %s - %s Utri ended. spars1 = TRUE Ltri ended. spars1 ended. spars2 = TRUE spars2 ended. dense = TRUE lu1fad debug: LUSOL_RANKLOSS: Lost rankLUSOL_LUSUCCESS: SuccessLUSOL_LUSINGULAR: Singular A(Undefined message)TPPTRPTCPTSPlu1rec. File compressed from %d to %d lu8rpc warning... Singularity after replacing column. jrep=%8d diag=%g lu8rpc warning... Instability after replacing column. jrep=%8d diag=%g lu8rpc error... Insufficient memory. lena=%8d lu8rpc error... jrep is out of range. m=%8d n=%8d jrep=%8d Singular(m%cn) rank:%9d n-rank:%8d nsing:%9d Variable index outside of set bounds (r:%d/%d, c:%d/%d) nrowu:%7d i,jbest:%7d,%7d nrowd,ncold:%6d,%6d nrowu:%7d i,jbest:%7d,%7d nrowd,ncold:%6d,%6d i,jmax:%7d,%7d aijmax:%g m:%6d %c n:%6d nzcount:%9d Amax:%g Density:%g lu1fac error... entry a[%d] has an illegal row (%d) or column (%d) index lu1fac error... entry a[%d] is a duplicate with indeces indc=%d, indr=%d lu1fac error... insufficient storage; increase lena from %d to at least %d lu1fac error... fatal bug (sorry --- this should never happen) lu1fac error... TSP used but diagonal pivot could not be found lu1fac error... insufficient memory available Merit %g %d %d %d %g %d %d %g %g %d %d %d Merit %s %g %d %d %d %g %d %d %g %g %d %d %d %g %g bump%9d dense2%7d DUmax%g DUmin%g conDU%g LUSOL_LUUNSTABLE: Unstable factorizationLUSOL_ADIMERR: Row or column count exceededLUSOL_ADUPLICATE: Duplicate A matrix entry foundLUSOL_ANEEDMEM: Insufficient memory for factorizationLUSOL_FATALERR: Fatal internal errorLUSOL_NOPIVOT: Found no suitable pivotLUSOL_NOMEMLEFT: Could not obtain more memoryY@$@?@@xD?HzG?qh?#B ;find_var: Unknown variable name '%s' s !';b}{@ c)7I%0 C 8 ǽ D%P5\g%&-% =KKL[j zKTwNo basis factorization packageNo feasible B&B solution foundbb_better: Passed invalid test target '%d' get_constr_type: Row %d out of range is_constr_type: Row %d out of range is_semicont: Column %d out of range set_semicont: Column %d out of range get_var_priority: Column %d out of range is_negative: Column %d out of range is_unbounded: Column %d out of range is_SOS_var: Column %d out of range is_int: Column %d out of range varmap_validate: Invalid new mapping found for variable %d varmap_validate: Invalid old mapping found for variable %d (%d) get_ptr_constraints: Not a valid basis get_ptr_variables: Not a valid basis get_var_primalresult: Index %d out of range get_working_objective: Not a valid basis get_objective: Not a valid basis set_pivoting: Pricing strategy set to '%s' get_var_branch: Column %d out of range set_OF_p1extra: Set dual objective offset to %g at iter %.0f. get_primal_solution: Not a valid basisget_constraints: Not a valid basis get_variables: Not a valid basis initialize_solution: The upper bounds are already zero-based at refactorization %d initialize_solution: The upper bounds are not zero-based at refactorization %d initialize_solution: Invalid rebounding; variable %d at refact %d, iter %.0f initialize_solution: Invalid option value '%d' verify_solution: Iter %.0f %s - %d errors; OF %g, Max @row %d %g set_rh_lower: Row %d out of rangeset_rh_lower: Negative bound set for constraint %d made 0 set_rh_upper: Row %d out of rangeset_rh_upper: Negative bound set for constraint %d made 0 set_bounds: Column %d out of range set_bounds: Column %d upper bound must be >= lower bound set_unbounded: Column %d out of range set_lowbo: Column %d out of range set_lowbo: Upper bound must be >= lower bound set_upbo: Column %d out of range set_upbo: Upperbound must be >= lowerbound get_rh_range: row %d out of range get_lowbo: Column %d out of range get_upbo: Column %d out of range is_binary: Column %d out of range get_bounds: Column %d out of rangeget_ptr_sensitivity_rhs: Not a valid basis get_ptr_sensitivity_rhs: Sensitivity unknown get_ptr_dual_solution: Not a valid basisget_dual_solution: Not a valid basisget_sensitivity_rhs: Not a valid basis get_var_dualresult: Index %d out of range get_constr_class: Row %d out of range update_pseudocost: Restarting with updated pseudocosts is_slackbasis: %d inconsistencies found in slack basis set_var_branch: Column %d out of range get_col_name: Column %d out of rangecheck_if_less: Invalid new bound %g should be < %g for %s get_row_name: Row %d out of range%s solution %18.12g after %10.0f iter, %9.0f nodes (gap %.1f%%). Optimal solution %18.12g after %10.0f iter. check_solution: Variable %s = %18.12g is below its lower bound %18.12g check_solution: Variable %s = %18.12g is above its upper bound %18.12g check_solution: Constraint %s = %18.12g is above its %s %18.12g check_solution: Constraint %s = %18.12g is below its %s %18.12g Relative numeric accuracy ||*|| = %g Unacceptable accuracy found (worse than required %g) get_mat: Column %d out of rangeget_rowex: Row %d out of range get_ptr_sensitivity_objex: Not a valid basis get_ptr_sensitivity_objex: Sensitivity unknown get_sensitivity_objex: Not a valid basis get_columnex: Column %d out of range str_set_rh_vec: Bad string %s add_SOS: Invalid SOS type definition %d add_SOS: SOS3+ members all have to be integer or semi-continuous. set_int: Column %d out of range set_binary: Column %d out of range set_rowex: Row %d out of range str_set_obj_fn: Bad string %s add_lag_con: Constraint type %d not implemented str_add_lag_con: Bad string '%s' set_col_name: Column %d out of rangeadd_columnex: Data column %d supplied in non-ascending row index order. set_row_name: Row %d out of rangeset_constr_type: Row %d out of range set_constr_type: Constraint type %d not implemented (row %d) set_rh_range: Row %d out of rangeadd_constraintex: Invalid %d constraint type str_add_constraint: Bad string '%s' del_column: Column %d out of range postprocess: Unable to allocate working memory for duals. str_add_column: Bad string '%s' del_constraint: Attempt to delete non-existing constraint %d Objective value %18.12g at iter %10.0f. I:%5.0f - minor - %5d ignored, %5d flips from %s with THETA=%g and OBJ=%g I:%5.0f - MAJOR - %5d leaves to %s, %5d enters from %s with THETA=%g and OBJ=%g performiteration: Variable %d entered basis at iter %.0f at %18.12g performiteration: Variable %d changed to its lower bound at iter %.0f (from %g) performiteration: Variable %d changed to its upper bound at iter %.0f (to %g) performiteration: Feasibility gap at iter %.0f is %18.12g performiteration: Current objective function value at iter %.0f is %18.12g set_mat: Column %d out of range The model is %s to have %d column blocks/stages. The model is %s to have %d row blocks/stages. Ignoring partial pricing, since block structures are not defined. Using %d-candidate primal simplex multiple pricing block. Using %s simplex for phase 1 and %s simplex for phase 2. The pricing strategy is set to '%s' for the dual and '%s' for the primal. The primal and dual simplex pricing strategy set to '%s'. preprocess: Converted negative bound for SOS variable %d to zerodelete_lp: The stack of B&B levels was not empty (failed at %.0f nodes) read_XLI: No valid XLI package selected or available.Invalid input data providedNot enough memory availableModel has not been optimizedSUB-OPTIMAL solutionModel is primal INFEASIBLEModel is primal UNBOUNDEDlp_solve is currently runningNUMERIC FAILURE encounteredDEGENERATE situationUser-requested terminationTermination due to timeoutModel solved by presolveB&B routine failedB&B routine terminatedFeasible B&B solution foundUndefined internal errorFathomed/pruned branchObjectiveUnknownGeneral REALGeneral MIPGeneral INTGeneral BINKnapsack INTKnapsack BINSet packingSet coverGUBErrorFREQget_lambda: Not a valid basisset_rh: Row %d out of range get_rh: Row %d out of rangec%dC%dr%dR%d Subopt.Optimalupper boundequality oflower boundxli_compatiblexli_namexli_readmodelxli_writemodelset_XLI: %s '%s' bfp_compatiblebfp_namebfp_freebfp_resizebfp_nonzerosbfp_memallocatedbfp_restartbfp_mustrefactorizebfp_preparefactorizationbfp_factorizebfp_finishupdatebfp_ftran_normalbfp_ftran_preparebfp_btran_normalbfp_statusbfp_implicitslackbfp_indexbasebfp_rowoffsetbfp_pivotmaxbfp_initbfp_pivotallocbfp_colcountbfp_canresetbasisbfp_finishfactorizationbfp_updaterefactstatsbfp_prepareupdatebfp_pivotRHSbfp_btran_doublebfp_efficiencybfp_pivotvectorbfp_pivotcountbfp_refactcountbfp_isSetIbfp_findredundantset_BFP: %s '%s' get_mat: Row %d out of rangeset_row: Row %d out of range LOWERUPPERset_mat: Row %d out of range GUB_%destimated__AntiBodyOf(%d)__myBLASBland first indexDantzigDevexSteepest Edgep`x`````````X`t̉DT r@@@ꌠ9Y>)Fꌠ9Y>)ƍƠ>%s/* %s */ +Objective functionmax: min: %+.12gConstraints%s: -Inf %s +Inf %s %+.12g %s 0 %s = >= <=Variable bounds%s = %.12g; -Inf <= %s <= +Inf%s >= -Inf; %s >= +Inf; %s >= %.12g; %s <= %.12g; Integer definitions,%sSemi-continuous variablesSOS definitionsSOS ,%s%s%s%s:%.12g <= %d; <= %d:%d; int %ssec %sLP_writefile: Could not validate the data matrix. %d matrix contains zero-valued coefficients. %d matrix coefficients below machine precision were found. mat_findins: Column %d out of range mat_findins: Row %d out of range mat_findelm: Column %d out of range mat_findelm: Row %d out of range Iterative BTRAN correction metric %gIterative FTRAN correction metric %ginvert: Refactorization frequency %.1g indicates numeric instability. mat_checkcounts: Variable %s is not used in any constraints mat_checkcounts: Constraint %s empty findnode_BB: Default B&B limit reached at %d; optionally change strategy or limit. findnode_BB: Simplex failure due to loss of numeric accuracy %s solution %18.12g after %10.0f iter, %9.0f nodes (gap %.1f%%) B&B level %5d OPT %16s value %18.12g fillbranches_BB: Inconsistent equal-valued bounds for %s solve_LP: Restoring relaxed bounds at level %d. solve_LP: Starting bound relaxation #%d ('%s') solve_LP: Relaxation limit exceeded in resolving infeasibility lp_solve optimization was stopped %s. %s numerics encountered; validate accuracy Relaxed solution %18.12g after %10.0f iter is B&B base. solve_LP: A MIP subproblem returned a value better than the base. push_BB: Used reduced cost to fix %d variables and tighten %d bounds strongbranch_BB: Invalid bound settings restored for variable %d ImprovedFeasibledue to time-outby the useris UNBOUNDEDFAILEDis INFEASIBLEThe model %s SevereDifficult?MPS_writeBAS: unrecognized MPS name type. NAME %s Rows %d Cols %d Iters %.0f MPS_readBAS: unrecognized MPS line type. MPS_writefile: unrecognized MPS name type. * MARK%04d 'MARKER' 'INTORG' MARK%04d 'MARKER' 'INTEND' MPS_readfile: Unrecognized MPS line type. Switching to OBJSENSE section Error, extra line under NAME line Error, extra line under OBJSENSE line Unknown OBJSENSE direction '%s' on line %d Error, extra line under OBJNAME line Further messages of this kind will be suppressed Unknown relation code '%s' on line %d Variable name (%s) is already used! Switching to non-integer section Unknown marker (ignored) at line %d: %s Invalid row %s encountered in the MPS file Wrong number of items (%d) in COLUMNS section (line %d) Wrong number of items (%d) in RHS section line %d BOUND type %s on line %d is not supportedWrong number of items (%d) in RANGES section line %dWarning, Range for row %s >= infinity (value %g) on line %d, ignoredCannot figure out row type, row = %d, is_chsign = %d, upbo = %g on line %dInvalid number of items (%d) in SOS section line %d Error: Invalid SOS type %s line %d Error: Objective function specified by OBJNAME card not found MPS_readfile: invalid data card; column 4 must be blank MPS_readfile: invalid data card; columns 13-14 must be blank MPS_readfile: invalid data card; columns 23-24 must be blank MPS_readfile: invalid number in columns 25-36 MPS_readfile: invalid data card; columns 37-39 must be blank MPS_readfile: invalid data card; columns 48-49 must be blank MPS_readfile: invalid number in columns 50-61 XUXL %2s %s %s UL %2s %s ENDATA %-8.8s%*.*E%*.0f%12.10f%12.9f'MARKER'Comment on line %d: %sLine %6d: %sENDATAFinished reading BAS file Unrecognized BAS line %d: %s Syntax error on line %d: %s * * * * * * MINMAX* * NAME %s OBJSENSE MAX ROWS N G L E COLUMNS %sRHS RHS %s %sRANGES RGS %s %sBOUNDS FX BND %s %s BV BND %s FR BND %s LO BND %s %s MI BND %s SI BND %s %s SC BND %s %s UP BND %s %s S%1d SOS %s %s SOS %s %s NAME %sOBJSENSEOBJNAMESwitching to OBJNAME section Switching to ROWS section COLUMNSSwitching to COLUMNS section Switching to RHS section Switching to BOUNDS section RANGESSwitching to RANGES section SETSSwitching to %s section Finished reading MPS file Unrecognized MPS line %d: %s MAXIMIZEMINIMIZERow %5d: %s %s Unconstrained row %s ignored Column %4d: %s %s %g %s %g 'INTORG'Switching to integer section 'INTEND'RHS line: %s %s %g %s %g BOUNDS line: %s %s %s %g RANGES line: %s %s %g %s %gSOS line: %s %s %g %s %gSOS_%dError: Cannot handle line %d AD4gmB-C6? _BvH7-C6e"1EG^Z9lp_solve version %d.%d settings read_params: No equal sign on line %d read_params: No parameter name before equal sign on line %d read_params: Unknown parameter name (%s) before equal sign on line %d read_params: Invalid parameter name (%s) on line %d read_params: Inappropriate parameter name (%s) on line %d read_params: Invalid integer value on line %d read_params: Invalid real value on line %d + ANTI_DEGENBASISCRASHIMPROVEMAXPIVOTNEGRANGEPIVOTINGPRESOLVEPRESOLVELOOPSSCALELIMITSCALINGSIMPLEXTYPEOBJ_IN_BASISBB_DEPTHLIMITBB_FLOORFIRSTBB_RULEBREAK_AT_FIRSTBREAK_AT_VALUEMIP_GAP_ABSMIP_GAP_RELEPSINTEPSBEPSDEPSELEPSPERTURBEPSPIVOTINFINITEBREAK_NUMERIC_ACCURACYDEBUGOBJ_BOUNDPRINT_SOLTIMEOUTTRACEVERBOSEANTIDEGEN_NONEANTIDEGEN_FIXEDVARSANTIDEGEN_COLUMNCHECKANTIDEGEN_STALLINGANTIDEGEN_NUMFAILUREANTIDEGEN_LOSTFEASANTIDEGEN_INFEASIBLEANTIDEGEN_DYNAMICANTIDEGEN_DURINGBBANTIDEGEN_RHSPERTURBANTIDEGEN_BOUNDFLIPCRASH_NONECRASH_MOSTFEASIBLECRASH_LEASTDEGENERATEIMPROVE_NONEIMPROVE_SOLUTIONIMPROVE_DUALFEASIMPROVE_THETAGAPIMPROVE_BBSIMPLEXPRICER_FIRSTINDEXPRICER_DANTZIGPRICER_DEVEXPRICER_STEEPESTEDGEPRICE_PRIMALFALLBACKPRICE_MULTIPLEPRICE_PARTIALPRICE_ADAPTIVEPRICE_RANDOMIZEPRICE_AUTOPARTIALPRICE_LOOPLEFTPRICE_LOOPALTERNATEPRICE_HARRISTWOPASSPRICE_TRUENORMINITPRESOLVE_NONEPRESOLVE_ROWSPRESOLVE_COLSPRESOLVE_LINDEPPRESOLVE_AGGREGATEPRESOLVE_SPARSERPRESOLVE_SOSPRESOLVE_REDUCEMIPPRESOLVE_KNAPSACKPRESOLVE_ELIMEQ2PRESOLVE_IMPLIEDFREEPRESOLVE_REDUCEGCDPRESOLVE_PROBEFIXPRESOLVE_PROBEREDUCEPRESOLVE_ROWDOMINATEPRESOLVE_COLDOMINATEPRESOLVE_MERGEROWSPRESOLVE_IMPLIEDSLKPRESOLVE_COLFIXDUALPRESOLVE_BOUNDSPRESOLVE_DUALSPRESOLVE_SENSDUALSSCALE_NONESCALE_EXTREMESCALE_RANGESCALE_MEANSCALE_GEOMETRICSCALE_CURTISREIDSCALE_QUADRATICSCALE_LOGARITHMICSCALE_USERWEIGHTSCALE_POWER2SCALE_EQUILIBRATESCALE_INTEGERSSCALE_DYNUPDATESCALE_ROWSONLYSCALE_COLSONLYSIMPLEX_PRIMAL_PRIMALSIMPLEX_DUAL_PRIMALSIMPLEX_PRIMAL_DUALSIMPLEX_DUAL_DUALBRANCH_CEILINGBRANCH_FLOORBRANCH_AUTOMATICNODE_FIRSTSELECTNODE_GAPSELECTNODE_RANGESELECTNODE_FRACTIONSELECTNODE_PSEUDOCOSTSELECTNODE_PSEUDONONINTSELECTNODE_PSEUDORATIOSELECTNODE_USERSELECTNODE_WEIGHTREVERSEMODENODE_BRANCHREVERSEMODENODE_GREEDYMODENODE_PSEUDOCOSTMODENODE_DEPTHFIRSTMODENODE_RANDOMIZEMODENODE_GUBMODENODE_DYNAMICMODENODE_RESTARTMODENODE_BREADTHFIRSTMODENODE_AUTOORDERNODE_RCOSTFIXINGNODE_STRONGINIT1NEUTRALCRITICALSEVEREIMPORTANTNORMALDETAILEDFULL...caller was '%s' MAPPERS ------- colmaprowmapEQmapLTmap COUNTS ------ plucountnegcountpluneg SUMS ---- pluuppernegupperplulowerneglower../lp_presolve.cRow %3d : Elim %g %s - %d Keep %g %s - %d SUBMITTEDREMOVEDTIGHTENEDCHANGEDRELAXEDCONVERTED%13s%+12g%-13s%+-12g%20s [ %s < Z < %s ] REDUCEDCONSTRAINT CLASSESpresolve_setstatus: Status set to '%s' on code line %d, file '%s' lp_solve unsuccessful after %.0f iter and a last best value of %g lp_solve explored %.0f nodes before termination presolve_debugcheck: Detected negative range %g for row %d presolve_debugcheck: Detected UB < LB for column %d presolve_debugmap: Inactive column %d is non-empty presolve_debugmap: Active column %d is empty presolve_debugmap: NZ index %d for column %d out of range (index %d<=%d) presolve_debugmap: NZ index %d for column %d to row %d out of range presolve_debugrowtallies: Detected inconsistent count for row %d presolve_SOS1: Converted %5d constraints to SOS1. PRESOLVE - Status at loop %d:%d:%d Model size: %d rows (%d equalities, %d less than), %d columns presolve_coltighten: Found column %s with LB %g > UB %g presolve_coltighten: Replaced bounds on column %s to [%g ... %g] presolve_reduceGCD: Infeasible equality constraint %d presolve_reduceGCD: Did %d constraint coefficient reductions. presolve_mergerows: Inconsistent equalities %d and %d found presolve: Range infeasibility found involving rows %s and %s presolve_singletonbounds: Singleton variable %s in row %s infeasibility (%g << %g) presolve_altsingletonvalid: Singleton variable %s in row %s infeasible (%g) presolve_sparser: Infeasibility of relatively equal constraints %d and %d presolve_sparser: Infeasibility of relatively equal RHS values for %d and %d presolve_SOScheck: A - Column index %d is outside of valid range presolve_SOScheck: B - Column index %d has been marked for deletion presolve_SOScheck: C - Column index %d not found in fast search array presolve_SOScheck: D - Column index %d was not found in sparse array presolve_SOScheck: E - Sparse array did not indicate column index %d as member of SOS %d presolve_SOScheck: There were %d errors presolve_rowfeasible: Lower bound infeasibility in %s row %s (%g << %g) ... Input row base used for testing was %s presolve_rowfeasible: Upper bound infeasibility in %s row %s (%g >> %g) presolve_colfix: Objective determined by presolve as %18g presolve_colfix: Variable %s (%g << %g) infeasibility in row %s (%g << %g) presolve_freeandslacks: Eliminated free variable %s and row %s presolve_freeandslacks: Eliminated implied slack variable %s via row %s presolve_freeandslacks: Eliminated duplicate slack variable %s via row %s presolve_rowdominate: Column %s is infeasible due to conflict in rows %s and %s presolve_shrink: Empty column %d is member of a SOS presolve_columns: Eliminated unused variable %s presolve_columns: Unbounded variable %s presolve_columns: Eliminated trivial variable %s fixed at %g presolve_columns: Eliminated variable %s fixed at %g presolve_columns: Eliminated dual-zero variable %s fixed at %g presolve_columns: Fixed binary variable %s at %g presolve: Row %s (%g << %g) infeasibility in column %s (OF=%g) presolve_preparerows: Variable bound / constraint value infeasibility in row %s. presolve: Had to repair broken basis. presolve: Found SOS %d (type %d) to be range-infeasible on variable %d presolve: Break after bound tightening iteration %d. Presolve O:%d -> Reduced rows:%5d, cols:%5d --- changed bnds:%5d, Ab:%5d. presolve: Unable to construct internal data representation PRESOLVE Elimination loops performed.......... O%d:M%d:I%d %8d empty or fixed variables............. %s. %8d empty or redundant constraints....... %s. %8d bounds............................... %s. %8d matrix coefficients.................. %s. %8d variables' final bounds.............. %s. %8d constraints detected as SOS1......... %s. %20s Solution status detected............. %s. %20s OPTIMAL solution found............... %-gRow-types: %7d LE, %7d GE, %7d EQ. multi_enteringvar: A very large Theta %g was generated (pivot %g) update_reducedcosts: Cannot update primal reduced costs! rowprim: Numeric instability pcol[%d] = %g, rhs[%d] = %g, upbo = %g row_prim: %d, pivot size = %18.12g coldual: Large basic solution value %g at iter %.0f indicates numerical instability coldual: Inaccurate bound-flip accuracy at iter %.0f coldual: Leaving variable %d does not violate bounds at iter %.0f coldual: Long-dual break point with %d bound-flip variables coldual: Entering column %d, reduced cost %g, pivot value %g, bound swaps %d rowdual: Check for reduced accuracy and tolerance settings. rowdual: Infeasibility sum %18.12g in %7d constraints. rowdual: Optimality - No primal infeasibilities found colprim: Column %d reduced cost = %18.12g colprim: No positive reduced costs found, optimality! Orowdual: rhs[%d] = %18.12g 333333??333333??updatePricer: Invalid dual norm %g at index %d - iteration %.0f getPricer: Detected a zero-valued price at index %d eA%% %% %s %d %d %g %% End of MatrixMarket file Tableau at iter %.0f: %15d%3d%15.7f%-20s %12g Scale factors: %-20s scaled at %g Model name: %s %8s MinMax %simize %8g %-9s >= = %s = %8gType Int Real upbo Inf lowbo -Inf Objective function limits: %-20s %15.7g %15.7g %15.7g CORE DATA --------- Column startsrow_typeorig_rhsorig_lowboorig_upbovar_type PROCESS DATA ------------ Active rhsBasic variablesis_basicscalarsObjective: %simize(%s) Primal objective: %-25s %12g%12g%12g%12g Primal variables: Dual variables: %2d-- *** too deep ***> %s = %18.12g %s > %18.12g %s < %18.12g %s %18.12g %-15s %4d Actual values of the constraints: Value of objective function: %g Value of objective function: %.8f From Till FromValue Dual values with from - till limits: Dual value From Till Actual values of the variables: GENERAL INFORMATION ------------------- Model size: %d rows (%d equalities, %d Lagrangean), %d columns (%d integers, %d SC, %d SOS, %d GUB) Data size: %d model non-zeros, %d invB non-zeros (engine is %s) Internal sizes: %d rows allocated, %d columns allocated, %d columns used, %d eta length Memory use: %d sparse matrix, %d eta Parameters: Maximize=%d, Names used=%d, Scalingmode=%d, Presolve=%d, SimplexPivot=%d Precision: EpsValue=%g, EpsPrimal=%g, EpsDual=%g, EpsPivot=%g, EpsPerturb=%g Stability: AntiDegen=%d, Improvement=%d, Split variables at=%g B&B settings: BB pivot rule=%d, BB branching=%s, BB strategy=%d, Integer precision=%g, MIP gaps=%g,%g Model name: '%s' - run #%-5d Model size: %7d constraints, %7d variables, %12d non-zeros. Var-types: %7d integer, %7d semi-cont., %7d SOS. Sets: %7d GUB, %7d SOS. Column name Value Objective Min Max -------------------------------------------------------------------------- Column name Value Slack Min Max Row name Value Slack Min Max h㈵>|=9B.?{Gz?spx_solve: Failure during postsolve. spx_solve: The current LP seems to be invalid MEMO: lp_solve version %d.%d.%d.%d for %d bit OS, with %d bit REAL variables. In the total iteration count %.0f, %.0f (%.1f%%) were bound flips. There were %d refactorizations, %d triggered by time and %d by density. ... on average %.1f major pivots per refactorization. The largest [%s] fact(B) had %d NZ entries, %.1fx largest basis. The bounds were relaxed via perturbations %d times. The maximum B&B level was %d, %.1fx MIP order, %d at the optimal solution. The maximum B&B level was %d, %.1fx MIP order, with %.0f nodes explored. %d general upper-bounded (GUB) structures were employed during B&B. The constraint matrix inf-norm is %g, with a dynamic range of %g. Time to load data was %.3f seconds, presolve used %.3f seconds, ... %.3f seconds in simplex solver, in total %.3f seconds. lag_solve: Improved feasible solution at iteration %d of %g Zub: %10g Zlb: %10g Stepsize: %10g Phi: %10g Feas %d lag_solve: Unbounded solution encountered with this OF: lag_solve: Simplex status code %d, same basis %s Lagrangean convergence achieved in %d iterations Unsatisfactory convergence achieved over %d Lagrangean iterations. The best feasible Lagrangean objective function value was %g Cannot do Lagrangean optimization since root model was not solved. add_artificial: Could not find replacement basis variable for row %d %s: Objective at iter %10.0f is %18.12g (%4d: %4d %s- %4d) %s: Stalling at iter %10.0f; no alternative strategy left. %s: Stalling at iter %10.0f; changed to '%s' rule. %s: Stalling at iter %10.0f; proceed to bound relaxation. ...returned to original pivot selection rule at iter %.0f. Entered dual simplex algorithm with feasibility %s. The model is primal infeasible. dualloop: Assuming convergence with reduced accuracy %g. dualloop: Attempt to divide by zero (pcol[%d]) ...trying to recover by refactorizing basis. ...cannot recover by refactorizing basis. dualloop: Refactorizing at iter %.0f due to loss of accuracy. ...trying to find another pivot row! The model is primal optimal, but marginally infeasible. dualloop: Trying to pivot out %d fixed basic variables at iter %.0f The model is primal infeasible and dual feasible. The model is primal infeasible and dual unbounded. Found feasibility by dual simplex after %10.0f iter. Found dual solution with %d fixed slack variables left basic. Recovering lost dual feasibility at iter %10.0f. Use primal simplex for finalization at iter %10.0f. Optimal solution with dual simplex at iter %10.0f. Entered primal simplex algorithm with feasibility %s The model is primal unbounded. Entering column %d found to be non-improving due to degeneracy. Gave up trying to find a strictly improving entering column. primloop: Assuming convergence with reduced accuracy %g. ...trying to recover via another pivot column. Found feasibility by primal simplex after %10.0f iter. Model infeasible by primal simplex at iter %10.0f. primloop: Lost primal feasibility at iter %10.0f: will try to recover. Start at primal feasible basis Continuing at infeasible basis spx_run: Failure due to too many singular bases. spx_run: Singular basis; attempting to recover. spx_run: Recover lost feasibility at iter %10.0f. spx_run: Lost feasibility %d times - iter %10.0f and %9.0f nodes. %3d SubGrad %10g lambda %10g %18.12g |<dualloopP1extraDim count = %d primloopStart at dual feasible basis Start at infeasible basis MbP?Q?MbX?"@I@SOS_get_candidates: Invalid non-zero lower bound setting SOS_can_activate: Internal index error at SOS %d append_SOS_rec: Invalid SOS variable definition for index %d append_SOS_rec: Non-unique SOS variable weight for index %d @../lp_utils.calloc of %d 'LREAL' failed alloc of %d 'REAL' failed alloc of %d 'INT' failed alloc of %d 'MYBOOL' failed alloc of %d 'char' failed free() failed on line %d of file %s ^Z<AC%s on line %d ../yacc_read.cinit_read failedNot enough memoryError: range restriction conflictsrealloc of %d bytes failed on line %d of file %s malloc of %d bytes failed on line %d of file %s Unknown variable %s declared semi-continuous, ignoredVariable %s declared semi-continuous, but it has a non-negative lower bound (%f), ignored(store) Warning, variable %s has an effective coefficient of 0, IgnoredWarning, variable %s has an effective coefficient of 0, ignoredError: unknown relational operator %cError: range for undefined rowError: There was already a range for this rowError: relational operator for range is the same as relation operator for equationIneffective lower bound, ignoredIneffective upper bound, ignoredError: bound contradicts earlier boundsVariable %s has an effective coefficient of 0 in bound, ignoredError, variable %s has an effective coefficient of 0 in boundUnknown variable %s declared integer, ignoredVariable %s declared integer more than once, ignoredVariable %s: lower bound on variable redefinedVariable %s: upper bound on variable redefinedVariable %s declared semi-continuous more than once, ignoredUnknown variable %s declared free, ignoredVariable %s declared free more than once, ignored$_F$_;"?F "8F8"(Gp"8G"HG"HJ"XM#M(#M@#XOh#P#R#R#S#(S$hS $xS8$SP$Sh$S$8T$xV$W%HX(%YX%[%x\%8]%]&]H&^x&H`&Ha&xa'8e8'hf`'8j'k'm'p0(qP(Xrp(r(r(8s(s(t)v8)8wP)hwh)w)8x)y)xz*H{0*X~h*(*X*h***ȃ+x(+@+X+8p++(+؆+++8, ,ȉ8,P,(h,H,h,8,,x-0-H-ȑ`-Ȓ--(---..0.(h..8.H.X.ȷ/ط /8/8P/Hh/X/h/x////0ȸ(0ظ@0X0p000(0080H1X1h81(P1h11ؾ11X18202P2(p2h22(282X3x383p33338 4X 84h P4x h4 4 4 4 4( 4x 5 5 05 H5 `5( x58 5H 5 58 5 5x 6 06 H6H`6H666x6H7H(7H7p7H77H7(" 8h#@8H$p8%8%8&8&88(8(9()(9H)@9h)X9)p9)9*9x+9+9+:(,:,P:-p:8/:h0:2;40;6P;7;x8;X9;B;D<JP<N<P<Q<S<HU(=XX=Y=xZ=[=x^=` >b@>c`>d>e>(m>(o?pH?Hv??8?؊@P@hp@@@h@(A@AHxA8A(A8B0BHBhBBBXBC CX8CؼpChCC(CDHDDD8DD8DE0E(XEHpEEEXEEF(F@FXFpFFFF(F8FHGXGh0GxHG`GxGGGGGG8HH HX8HhPHxhHHHHHHHI(I@I(XIHpIhIxIIIIJJ0JHJ`J(xJ8JXJhJJJ(K8 KH8KhPKxhKKKKKKKL(L@L(XL8pLHLXLhLxLLMM0MHM`MxMMM(MHMhMxN N8NPNhNNNHN8NNXOh(O@OXOpOOOOO O P( P( HP8 `PX xP( Ph Px PPP8Q Q8QPQhQ8QXQhQxQQQ R8 (RX @Rx XR pR RX!R"R"R("RX"S"S"0S8#HS$hSH%SX%Sh%Sx%Sx&S&SX'T()(Tx)@T(*XT+pTx,T-T.TX/T(0T0U1 U28U2PU(2hU82U2U2U2UX3Ux3U3V70V7HV(8`V9V9V:V:Vh;V<Wh<(W<@W=`W=xWh>W>W?W?W@Wx@X@ XAHXhB`XBXCX8CXCXDXEYE YE8YhFPYxIYNYOY(TZ8UHZhWhZhYZZZ\Z\Z^[H` [cH[e`[Hl[xl[m[p[xp\Xq0\8rP\sh\hs\s\ht\u\hv\hz]{8]|X](}x](~]~]x]]X(^xP^x^^(^^_x(_@_(`_ȏ__x__h`8`X```Ș``؞aX0aHaؠhaXaȪaaaxbح8bhPbXbؼbxbc@chccccd8(d`ddde@eXepeeeee(f(f@fhffffg((g@gx`gxg gH gx g gH 0h Hh `hH xh8hhhh(i(Pi(xi(iih%jh/Hj/`j0jh1j(4j4jH5k7(kH9HkH;hkX;kXAH@8 JO4(DLЋVDdVD|`JG 0ADG AGG pJQ0,0cBBE D(I0,p4JG L?JMO0$l;JcȒ*FEe0PHPXLJY044BBB E(A0A8D4l BBE B(A0A8G ؾ$оTJ^4@BEB B(A0A8G4 Ld | ZAL @ 8Cp hG,pXD\ tJL FPkJL X,P6Dxy$\J^tN  JQ0JQ0JQ0$@BBD A(F`$ADD $DBJD A(D0l0JQ0JML04 jBEB B(D0A8GP4XBBB E(D0D8Dp:JK ,< BKB A(D0lJMG0p{N IEV0I8D >$<T_lP$XBLH L(BQH H9D4BEE E(A0A8D`L`BAD ,l BBB B(A0A8,+BNE B(A0A8,]BEB B(V0G8,BYR L(H0A8,pBCD ,L`(BDE B(D0A8|`4] BGB B(A0A8G`, BBB E(A0A84BFB B(D0A8DP,LBDB B(A0A8,| BOB B(A0A8$`BHC A(BGC ,4BJE E(A0A8,$BEB B(D0A8,TBHB B(A0A8XD JLG@$JMQ@4 BEB B(D0A8GPp" BHD <`$SJK \$BDF 4|%BEE G(A0D8GP4&jBFB B(A0A8J0.JL 4 0BEB E(A0A8D@4D03BIB B(A0A8I4|6 BEB B(A0A8G48B3BFB B(A0D8G$@HJ^@4JBBB E(D0D8G`L`MJQ0lNEQ0`OJQ@4OBBB B(A0D8D@xQJO4SBEB B(D0D8Dp4<pU BEB B(A0A8G4t`BHE E(A0D8G4cBEB B(A0D8D$8fJMT lMATP, PlD XlJY04d HmBBB B(A0D8F rUEGQ  0sQBCC  puBCC  vBFA !wfA44!xrBEE E(D0D8GP4l!`yBBB E(A0A8G`!{JQ0!8|JMQ0$!8}J^P4 "~"BEB B(A0A8G4D"hBBE B(A0D8G|"PD "X=$"BSA G"JADD "8zJL #AD$,#бJMQ@T#Ȳ A$l#вIBGD G0$#PBDA D0# bBDA #p.# $$$x<$pT$hl$p$h$`$X$P$H$@%8,%0D%(\% t%%%%%%% &(& 4&L&d&|& &&&&&س 'г $'ȳ <'T'ȳl'г'س 'г 'ȳ ' ' ' ( ,(D( \(t( (( (((( ) )4)L) d) |))))))ش  *д$*ȴA<*T*ȴl**** * ** +,+D+\+t+x+p+h+`+h+p,h,p4,hL,pd,h |,`,BAA ,BAA ,X|,ACG  -@$-8&<-PT-Hl-@-H-@-8-@AAG0-. $.BAC G0D.ػ\.лt.ػ.=..%.ȽkD . /(s / 4/!AL/d/!A|/ A///7/7/ 0$0<0T05N l0@0H~00H 0@ 08(0P*1h\,1ID1JAHD d1A|111111 2@A$2G<20T2l2]I2M2 22HJ228JQ033943 L3 d3 |3I3#G393(R3p3x 4pJVP,4PGDD4LD4\4uBDH B(D0A8D@4LD4@D4ND4gD4hN  5MD$58JD<5pAAG \50ZDt5xjD5tD58A5LD50A5aA6h$6pBBD A(D0D6HA\6cADD |6P.D6h-A6zJQ06JQG06|N 7bD7`bD47jD4L7BBE B(D0A8DP473BEB B(A0D8D7JZ@47FBGE B(A0D8D,8 BEB A(D0D@D8/JQ@d8JQ08BACG08AIGP8LD8AGG08AGG0$9 JMTD9%,\9 "BBB A(D0D9-9N 49@BBB E(D0A8D9VD :`JL0,: JL0L:N d:ND|:ND:N :JP0$:0`BBA A(GP:hJV@;HtJML04;JL T;(JL0t;JQP; N0$; !BED A(D0;"NP4; #=BBB E(A0D8D$$<(&JLQ@4L< 'BBB E(A0A8FP<)2D<*iJL <`*ACG@<*IJX`$<-fJMQ@$=H.NP<=. AAG \=/JQ0|=@08BDA 4=`0oBIE E(D0A8D`=2JK0=2j$ >P3ERMG@4>4JMQ0$T>H6BAC G0|>07JL >7=ADF 4>8&BEB B(A0A8D><YG0?=}D,? >N0D?>YG0d?h?|D4|??c BDB B(A0D8G?I$?IWQP?IN $ @`JWJLQP4@KA,L@LBEA D(G,|@O BEA D(G@ ZAFG@4@ZuBBB B(D0A8D4A\BEB B(A0A8D$4JZ@Sp@CTA=D,T CADT(CDD\T`DID$tTDmBFD GP$TFBFD G`4ThHBBB E(A0A8D`$T0JJ[P$UMACG0DUNJP0dUNPN $|UNEb@4UP{BEE B(D0D8D`$URVJLQP$VTBHD F@$,VTBHC D0,TVUBEB D(A0D@4VWwBEB B(A0C8DV[3A$V\BBD D(G0$V\jJ]P$W_{Z@DW(a7A$\WPaJ[PWcP0$WdjBAC G@WeJL0Wf8AK $XfJMQ,XkJQ@LXpldXhlwJL04XlBBE B(D0A8D4XPrBBB B(D0D8G4Xy BBB B(A0D8J$,YЃ JaTYJY`4tYX\BEB B(A0A8GYJMG0YtJV0$Y`JMQp4Z(BBB E(A0A8G`LZdZ|ZZ,ZZ,Z8BEB A(A0D@$ [JJMQ`4[UJPPT[('Al[@AAG [JL0$[=J^$[BGA G`$[@VBAA D0$\xsJMG04D\ػBBB E(G0D8D`|\JL 4\@BEB E(A0D8Fp4\BBB B(G0D8DP4 ]0BEE B(D0D8G@D]\]0%t]HF4]BBB B(A0D8G]-JK0]"G]G^&A,^ QN 4D^hhBBB B(A0A8D|^JO4^BBB B(A0A8D`$^J`@4^BBE B(A0A8M44_XnBBE B(A0A8GЁ4l_BEE B(A0A8G_FN _@JQ04_BBB B(A0A8J`8,`@yEe04L`^BBB E(D0A8D`` `` `2JF a4JG $$aKBEA D(D04LaBBI B(A0A8G!4axBBE B(A0A8G!4a!BBB B(A0A8G!ax)A b*=D,$b8*SBEB E(A0A8Tbh,blb,b,b,b, b, b,3b,Cc(-,c-RADc-)ACG 4dc/,BEE B(A0A8D`c0AJ cp0AcH1GBDC 4cx1BEE E(A0D8DP4,d@3BEB B(A0A8DP4dd5]BEB B(A0A8I`4d@7BGB B(D0A8D`4d(8BDB B(A0A8I`4 e9BBE B(A0A8G4DeH=BIB E(D0A8Dp|e ?BDA e@A$eHABED D(D0$eCuBBA D(D0fFBIH $fFX $DfxG Jf4lf@Tu BBE B(A0A8Gf^AFD f8_4A4f`_BBE B(A0D8D@4g`5BBB B(A0A8D4LgcBBB B(A0F8GgkoJK $glJMTgp5JQp4grBBB E(D0A8DP$hs.JLLP4DhtWBEE B(A0A8Dp4|hu/BEB B(A0A8Fp4hwBBB E(A0A8G4hPBBB B(A0A8G4$iBBB B(A0A8D4\iЕ5BBB E(A0A8D4iؙBBB B(A0A8I`i`|N 4iȜBPB B(A0A8D`4jpBBE E(A0A8F4Tj8wBEB E(A0A8IjqJLL@$jJLT4jHoBGE B(A0A8D4 kBBB B(A0A8I4Dk~BBB B(A0D8D4|kP# BBB B(A0A8GkHBCD k(2A4kPBBB B(A0A8I$$l6YT4Ll0 BJB B(A0A8G4l BGB B(A0A8L4l`BGB B(A0A8L4l(BEE B(A0A8D@4,mBBB B(A0A8F$dmhJ^$m0bJ^4mx BBB E(A0A8Dp4m BBB E(G0A8G4$nBGB B(A0A8G4\n> BBB B(A0A8G4n%BBBE B(D0A8D4n)>BBB E(A0A8Go=!o=h4o>)Lo0>)doH>|o@>VMoDIo(EgoE]oELoF9p(F,p0F Dp(F \p FQtphFppFphFp`FHphIpIqIBKH $qJD4BMD D(D0̀P@A$@YBBA D(F0 BBGA ,BBGA LC9A4dCXBEB B(D0A8D$JJMQ@āHMN 4܁MBEB E(A0A8D`4OBEE B(A0A8D$LpQJ^@4t8TBBE B(A0D8D@$TJLQ@$ԂHVJ^@4XBMB B(D0A8D@44XYLBBB B(D0A8DP$lp[BKA D(D@,]BHB D(A04ă]0BEJ B(A0D8D@4^BHE B(L0A8D44aBBE B(A0A8D`4lcBBE B(A0C8D`$gJLT@̄ph9AhBAD HiMS i"BFD <jHTj lj j j(l+̅@lfll.l,lDl\ltl]l~D8m>BAD ĆXmr܆m8nTN  nRADF ,nRADF LoKADF l0o(oCo9AȯoyDHp!AD XpDDpyBDA $<qBBD A(D0drPA4|rBEB E(A0A8DPhtm$̈t?JLV@$uBDC D@vJM0<0wAT8wBDlpwcH0wD@PxAL`yAAG0܉zJML0p{JML04P|BBDB E(A0A8G@Th}NJG0t}JML0x~NJG0~JML0ԊxJJG04BHE I(A0A8D`, JML0Ld/|ohp5ċ܋<ȃjD ]LG ,`ADhBAD dJL x<A4BBB B(A0A8GJMJ 0NSO,`uAAJLACJl0JQ0 ZJT_{y{{Ѐ{{8p{{{{``) k@P )v`)~@03)А)`@)ö)϶ܶP@@)`P)0 p``*pP6=B GP0MpXa` j &&P@0 )p` ):;;4; 4 hUo#pH p; )-p4 oooo*@) @@-2pRPYd@)+а@g8 rp|@G`2.` `)0;(`p?X0f9`)wph )P Y`[=Y@/()3P@YH)`Y`0)+Ya@ p07-`Xp4o8F`@ }0M 3X` @p$p1XPp`n@W zPx@` `PPCPPpb 1 H40`/Xg@30 q09`X@`K0}X8)P`iPY+ @P0@>p p#0\0 J@b @p0y{0@PД0p@-YN[ C9p.pd ` pX`M pypВ`<@) ;`g@;P P/Y@v0PX=0px80`p   qH)P`0%p`:p )444455&565F5V5f5v55555555566&666F6V6f6v66666666677&767F7V7f7v77777777788&868F8V8f8v88888888899&9@)Է %@:L_tɸڸ /<Pet ¹ֹ@ '7J [@h{ƺغ @*>RbqĻջ @'6FUdz  üм&<Tk{ @ͽ# 9@HYvi׼ks|GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2L094 hU<4qU/build/buildd/glibc-2.8~20080505/build-tree/amd64-libc/csu/crti.S/build/buildd/glibc-2.8~20080505/build-tree/glibc-20080505/csuGNU AS 2.18.93P/build/buildd/glibc-2.8~20080505/build-tree/amd64-libc/csu/crtn.S/build/buildd/glibc-2.8~20080505/build-tree/glibc-20080505/csuGNU AS 2.18.93U%U%X /build/buildd/glibc-2.8~20080505/build-tree/amd64-libc/csucrti.S 09 Ku=/0K 4K hU$X /build/buildd/glibc-2.8~20080505/build-tree/amd64-libc/csucrtn.S 4K qUK09G944hUlU44qUvU.symtab.strtab.shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.data.rel.ro.dynamic.got.got.plt.data.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_line.debug_ranges"o##$% HHk-ppp;5oBoQpp4[-- e44`44k09098qhUhUwUUx "  ̍) ) )  )  ) ȵ)ȵ  ) P@)@ P )   {  L $  *@  %x z! U E#Hpp- 4 4 09 hU U ))) ))ȵ))@))  09')5)C)P P9f)u) 9)ȣ ) 0U)  #, = >[ t z e i  `qT l, nT j, l t `a{ a ct d{  dZ dZ @e8( e85 ct@KV^) m )`}))))))))))) )   pW ) 4= qJ qUalu A- B"= C ChJ J P `  p   2 А4 K  `)8!`), )07`)P?)H)`S)[)@g@)0u)P})0 )p b  )#/ %<5 P(@ @ANF DuQ)g@)t))   @)F  P]  B      $ @. B hW 0e Lw @ { GI p 0)  "  -L  2 9( 6 %F pO RXi u 0  p pI    ] 0 P  Y ) R: "JH & c  p | P 7#  y  dV 0s  ] P3~  pH  )  p/<  ЀP  ,ub  v  Vn  3  @ )  Y   C   `    <    +,  j:  P0#F  N  !V  0|\  Fh  @;x  $o  A  q  @F  a  PL  0{  а  $  @ 0  8  gB  Q  @`-a  q  |  p  0  `Z     F  а    8|  j4  k"  $6  ` A  @J6X  rk  @jy  `G  px3  0=c  p|2  0J    @  p  G  `2t    @j   .N(  E<  `H [  p,b }       ` )  E  %5  @T  J  t- G2 P' P'7 PoJ pY d r @ 9 0;  p    0k' H (q1  : 9Nc u ~ | (   ?} @LW Qh @ `  p?/ `  = g)  8 PH 0 Q 0sS]o `} X: G ' 0f 0 9b  @   p'# G?- @ bT ` c hUi 5r  }  0']  @ G  } p7) J @$  % w6+ 9 ;B Q ^ Pl wu  H !  ph Pf@  @o     ^d       D, `$/8Mat f %  }I @ ) I f@ P  Y] ~ {   00 ? y6E `[HN g =r @K Y  m >  0 p .  P @/ 8()' )< K 0lc` jn pd{ L | 30 P  @ P  W% @o ~     , P> 0H3F Y R z3X d3_ p w  7 ## H) d h `  0n   # 0#+) L; N Y \ `h & u p p `K U JG X P K `  @  0o0)  pD(  6I R 0` fXi P# n g  0 p `k*    y& 03 P; +GK YS a_ @n ^} : f pu r 6 0 y " p  07z Ob , > -Ke o }}  G q     ( `* Z@  e  '  0 `6  A PrR [ n t V [@ `X p4 ` I YE X o   8%D T g K|r u= 8  F p  f 0 " b2 P> P 9a Bv  `   05 @  }J 0(   0! pR'; MI @ X 3Kc o X}   G %   0 A  A ` W . 6 #wK p3_ f t 0 @I  Z 8 7  @ py p  $ PN &  >;  P)O  :Z  f  Prv  P   p  p  P  \U  0   )! G !  .! & P=& -& m6& G& [W&l& v& PCQ& P& & (& & P& & & B& @O& 0| ' L'-' @@' &J' P4U'f' ?z' I' pb' `vA' q' `h' І~' k' '  ( 0( 1Z1( :( }%A( zU( 0\( pti( %v( H (( R(  ( `%( `G}( 0( ( ( @I( w ) u) V!) 4a0) 5;) 0:E) U) Bh) 0v)) P<)) CF) `) PA6) 0M) ) 5) `/* 6* P-] * X'* gN1* P;* P K* X* i* u* P* * 0J * pU*  * * pN * p* @* + +  ,+ ЛH;+ PL+ *(S+ @ `+ @h+ y+ p4++ + 3L+  + p+ 0+ + p+ |i, PM,  *,D, SN, W, 'c, &#p,  }, q, u3, 0, 9b, `, P#, ` 9, X, - P- #- /- @ ,;- .Q- 1`- 0t--- G- 0\- @- - - . . `KO. ,. ;.N. Rc. 0}cm. XKs.8)~. D. P. @. @. ZH. 8. `i. P. Y. }. ./ I/ }%/  9/ PN/ `t`/ +Lo/ /  / j/ 7-/ Pv/ `&/ / 0/ @/ 0 c 0 P040 0 J0 a0 r0 '|0 0 @0 в0)0 Z0 0 `0  0 @ZM1 a 1 )"1  91 @> @1 pJ1 "T1 0 `1 pj1 Yw1 B1 P "1 W1 6 1 1 hU1 0|1 pL1 py1 1 2 p2   2 p /2 =2 (\I2 XU2 #b2 Rq22 0\ 2 2 @2 2 2 2 02 2 3 3 53  *3 Q>3R3 JZ3 `~a3 @b!i3 v3 I3 &3 3 3 VS3 3 @3 53  3 0^}3 p 4 0%4 & 64 B4 0!R4 0 `4 pk4 @Ty4 4 0I/4 N4 % 4 4 @*4 4 P4 u 55 0y#5 O)5 !35  >5 T5 P*c5 q5 >~5 @5 p?5 p%5 5 F5 0QJ555 m6 м6 U$6 .46 \C6 {L6 0[6 pi6 jz6 $6 @6 6 u6 6 c6 P 6 x66 6 `_6 Y"7 W/7 Д|<7 eH7 pX7w7 0~7 `7 o7 T 7 @N7 p7 d77 @-8 Ь8 Y8 %8 N08 [}A8 C&N8 0 TV8 9jd8 `q8 p8 F8P)8 F28 pW8 .g8 8 _"8 8 ` 8 e8 89'9;9 pdC9 Y9 PCEc9 P Jo99 9 99 9 9  9 =9 9 Q9 eX9  : : H: pP(: @o>: ЁR: Y: `Wf: @w:: >: &R: @: 4: @ : @U,: `: : +: p=3 ; O; 9.; ?; O; 0Mc; l; v; `; ; ; pX;; ; P; pn;< p$< `MB+< \=<Q< kb< /v< < ~< py< *<<  < < K< P< ?< @< @9< ==$= p-= В}:= `<A=@)L= P>\]= Xd= ju= 07=  = M= `D= ;= `gN= p[= =F= Yj= L= > > ,> MX6> 04E> M> ]> ` ~h>}> @> ;> P.> Pc > 0z> > > U> .> > ?? C%?7? iO? @*VV? =`? `jp?)w? @;? p,k? ? r? @? ? P/? !2? Y ? @t@ @ %@ 07@ ,sA@ vJ@ X@ Na@ 0k@ q|@ @ 0gZ@ `S@ Z @ `%@ p @ 6@ PX@ QA A Ы)!A P+A 4=A @)GA PA  YA `A `oA = |A 9A &9A @ A P A A A wA  A 0B p+B)B x82B 8:=B NB 0[B fB @.qB 4B PB `$]B YB `B B !B PeB mFB p MB .oC C P'C q6C 0AC P7RCH)^C 0 lC zC %jC uEC PC C TC p{zC CCC  C i`D p4D 6.'D `0J.DBDVD %9eD p7tD `:9D  D p,DD pG D 4D 0 D pBD  D E  E 2E ?=E tEE SE 8`E wE E ME |E E  E E !initfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST____do_global_dtors_auxcompleted.6987dtor_idx.6989frame_dummy__CTOR_END____FRAME_END____JCR_END____do_global_ctors_auxlp_MDO.ccommonlib.cmmio.cbuffer.4383myblas.cini.cfortify.ccolamd.cprint_reportlp_rlp.clp_input_lp_yyinlp_yy_delete_allocated_memorylp_yyensure_buffer_stackparselp_yy_eclp_yy_acceptlp_yy_nxtlp_yy_baselp_yy_chklp_yy_deflp_yy_metalp_yy_rule_can_match_eollp_yypactlp_yytranslatelp_yychecklp_yydefactlp_yyr2lp_yyr1lp_yypgotolp_yydefgotolp_yytablelp_crash.clp_LUSOL.clusol.cpivotText.4840informText.4921K.7207IC.7206LC.7208LC2.7210LC1.7209AMAX.7214J.7205LR.7211LR1.7212I.7204LR2.7213lp_Hash.cC.17.7783lp_lib.cpivotText.9920set_infiniteexget_SOSmat_getcolumnmat_getrowlp_wlp.cwrite_lpdatawrite_datalp_matrix.clp_mipbb.clp_MPS.cMPS_getnameidxMPS_inputnumberlp_params.cset_mip_gap_relset_mip_gap_absget_mip_gap_relget_mip_gap_absset_presolve2set_presolve1readoptionswrite_params1functionsanti_degenbasiscrashimprovepivotingpresolvingscalingsimplextypebb_floorfirstbb_ruleprint_solverboselp_presolve.cpresolve_sumpluminpresolve_roundrhslp_price.clp_pricePSE.clp_report.clp_scale.clp_simplex.clp_SOS.clp_utils.crandomized.8548yacc_read.cerrorinccoldatastorestorefirst_GLOBAL_OFFSET_TABLE___dso_handle__DTOR_END___DYNAMICput_msgfuncis_piv_ruleset_constr_typeLU1FACpartial_blockNextPoslog10@@GLIBC_2.2.5LUSOL_ftranLU1MXRstallMonitor_creepingObjset_infinitelag_solveget_Lrowsmulti_enteringthetavalidSubstitutionVarset_use_namesSOS_member_deletestr_set_obj_fnbfp_updaterefactstatsQS_insertunload_BLASinitPricercountActiveLinkset_columnexmake_SOSchainis_semicontset_bounds_tighterget_working_objectivepre_MIPOBJis_anti_degeninitbranches_BBis_traceset_upboexp@@GLIBC_2.2.5get_verbosefreeWeightsvec_compressfileno@@GLIBC_2.2.5debug_print_solutionset_binarypresolve_singletonboundsget_Nrowspresolve_rowtalliesmat_validateset_basiscrashis_actionwrite_mpsscale_updaterowscompute_thetaset_break_numeric_accuracyis_nativeBFPset_lp_nameMPS_readhandlepresolve_colfixfreePackedVectorLUSOL_timerget_rh_rangeset_callbacksset_pseudocostspresolve_makefreefrexp@@GLIBC_2.2.5init_pseudocostini_writecommentpresolve_colremovefindAnti_artificialfindBasicFixedvarupdate_reducedcostsMPS_readBAScompRedundantset_bb_floorfirsthBLASget_rowexmemset@@GLIBC_2.2.5compSparsityftell@@GLIBC_2.2.5set_OF_overridelastActiveLinknamecpycountInactiveLinkset_rh_rangeobtain_columnvarmap_lockget_mathas_XLILU1U0compareCHARstrongbranch_BBcheck_int_sec_sos_free_declmodbsolvepresolve_redundantSOSLUSOL_clearstallMonitor_resetmat_expandcolumnget_mat_byindexget_artificialRowcompAggregate__strncpy_chk@@GLIBC_2.3.4free_BBis_binaryset_preferdualget_pseudorangeappend_SOSgrouppush_basisis_BasisReadyis_chsignqsortex_sortceil@@GLIBC_2.2.5ini_closecolamd_recommendedLUSOL_assignfindSubstitutionVarget_lambdamm_write_bannermm_read_mtx_crd_entryget_refactfrequencymulti_sizepresolve_freeandslacksget_var_dualresultinc_mat_spaceQS_addfirstdscalmemopt_lpset_multipriceisPrimalFeasibleput_logfunccompareImprovementQSis_bb_rulecompareREALget_var_primalresultpresolve_SOS1LU1DCPget_var_prioritypresolve_updatesumsreset_basisldexp@@GLIBC_2.2.5LU1SLK__fprintf_chk@@GLIBC_2.3.4isatty@@GLIBC_2.2.5bfp_colcountget_mip_gapget_infiniteBLAS_ddotLU1OR4set_sos_weightcompute_dualslacksfindnode_BBmm_read_unsymmetric_sparseQS_swapmat_rowlengthreplaceBasisVarlp_yy_flush_bufferlp_yyset_extraset_actionfree_SOSgroupmulti_removevarrun_BBmdo_callocget_ptr_sensitivity_objexscaled_ceil__gmon_start___Jv_RegisterClassesget_statusmm_write_mtx_array_sizeputs@@GLIBC_2.2.5roundVectorpresolve_rangeorigget_epsbpartial_isVarActive_setjmp@@GLIBC_2.2.5presolve_validatesubmatset_row_nameHDOWNget_total_nodesyieldformessagessortByREALprintmatUTpartial_findBlocksbfp_indexbasemat_appendvaluetime_elapsedprod_Axmat_findelmpartial_blockEndfree_hash_itemLUSOL_realloc_rswapREALwrite_lprowexit@@GLIBC_2.2.5lp_yyget_text__printf_chk@@GLIBC_2.3.4print_debugdumpshift_rowcoldataadd_constraint_nameget_rhread_lpexget_constraintsverify_basispresolve_freebfp_pivotcountpost_MIPOBJQS_deleteappendUndoPresolvepresolve_colfixdualget_scalelimit_finisolve_BBset_obj_fnfsolvenull_tmp_storeget_total_iterlp_yyreallocQS_replacednormiincrementUndoLadderBLAS_dcopyputchar@@GLIBC_2.2.5findhashadd_rowstallMonitor_createverifyLinkdcopynextbranch_BBread_lp1get_statustextget_presolvecheck_if_lessmy_dcopyget_columnvar_storehas_BFPadd_GUBread_XLIstrtolopresolve_setEQmm_read_bannerlp_yyset_inget_timeoutset_anti_degenminmax_to_scalemat_multcolset_maximset_minimfindIndexExadd_sos_rowstrncmp@@GLIBC_2.2.5malloc@@GLIBC_2.2.5fopen@@GLIBC_2.2.5LUSOL_freeLP_writehandleSOS_membershipsupdate_pseudocostvarmap_compactBLAS_dnormiLUSOL_setpivotmodelstrtoupget_epselread_basisLU6Uinc_matcol_spaceput_abortfuncpresolve_shrinkREPORT_tableaudswapread_MPSpresolve_debugrowtalliesdualize_lpappendmpsitemwrite_freeMPSpresolve_rowfixzerofillLinklp_yyget_extrapresolve_invalideq2makePriceLoopisActiveLinkprimlooplp_yyget_lengadd_constraintrow_intstatsBLAS_dscalpartial_activeBlocksprevActiveLinkmm_read_mtx_crd_datamat_shiftrowsget_rh_lowerLU7ZAPauto_scaleset_pivotingpresolve_aggregateLUSOL_informstrset_BFPcompute_feasibilitygapset_rowexcompute_violationget_solutioncountmulti_enteringvarget_simplextypeserious_facterrorQS_sortwrite_basisdloadLU1DPPpresolve_columnsLU8RPCmat_setvalueimpose_boundsREPORT_constraintsprint_L0mustinitBLASso_stdnameroundPower2add_lag_conset_presolvepresolve_fixSOS1set_mip_gapis_slackbasisclear_actionLU6LDpartial_blockSteppresolve_rowremovewrite_freempsallocMYBOOLget_accuracyvarmap_clearpresolve_debugmapset_rh_upperrcfbound_BBdebug_printmulti_createnextInactiveLinkset_break_at_valueswapPTRstallMonitor_updateBLAS_daxpyget_nameindexmat_freeget_obj_boundfgets@@GLIBC_2.2.5fimprovevarmap_deletestrcpyup__vsnprintf_chk@@GLIBC_2.3.4allocCHARMPS_readexmm_typecode_to_strrestoreUndoLadderpresolve_freeUndopresolve_SOScheckmm_write_mtx_crd_sizelp_yylex_destroyGUB_countbfp_memallocatedupdatePricerread_lpget_constr_typeunscaleis_feasibleget_basiscrashscan_lineFIXEDbfp_resizefind_sos_bbvaridentify_GUBnextActiveLinkget_constr_valuevarmap_validatemempool_releaseVectorLU1FADget_break_at_valuewrite_XLIsortREALByINTLUSOL_realloc_aset_solutionlimitset_semicont__strcat_chk@@GLIBC_2.3.4getPricerdel_varnameexdefault_basispartial_createBlocksdualloopfmod@@GLIBC_2.2.5set_lag_traceget_epspivotmulti_indexSetLU1PQ1LP_readhandleread_freempsputhashsymamdset_titlestr_add_lag_conscalemat_setrowLUSOL_loadColumnset_epsbpresolve_debugdumpcreateUndoLadderlp_yyset_columnread_freeMPSprint_dualsprint_strbfp_createMDOpartial_blockStartread_freempsexSOS_fix_unmarkedget_ptr_dual_solutionLUSOL_createstr_add_column__ctype_toupper_loc@@GLIBC_2.3LUSOL_factorizepresolve_freepsrecQS_executeget_constr_class__strdup@@GLIBC_2.2.5modifyUndoLaddermempool_obtainVectorcompareINTallocLREALmat_collengthchsign_boundsfputc@@GLIBC_2.2.5countsUndoLadderbfp_pivotmaxcopy_hash_tablemat_getitembfp_ftran_prepareSOS_member_indexpresolve_preparerowsset_var_weightsget_ptr_lambdaLP_writefilesizeLinkpresolve_knapsackfree@@GLIBC_2.2.5bfp_finishupdatemy_dnormiinc_lag_spacelp_yyset_debugmulti_getvaris_scaletypeLU6LTstrlen@@GLIBC_2.2.5scan_lineFREEmat_extractmatdel_columnset_improveprint_tableauis_nativeXLILUSOL_findSingularityPositionget_sensitivity_objexget_presolveloopspresolve_BBmempool_freegcdput_bb_nodefuncfind_rowget_basiscolumnLU1OR3longdual_testsetrowdualpresolve_rowfeasiblestallMonitor_finishLU6SOLmat_transposelp_yyget_indrophashprod_xA2transform_for_scaleprobe_BBget_lp_indexget_bounds_tighteruserabortSOS_is_GUBbfp_rowoffsetadd_columnexpreprocess__vfprintf_chk@@GLIBC_2.3.4LUSOL_getSingularitypartial_countBlocksincludeMDOinitcuts_BBmm_read_mtx_crdlp_yylex_init_extrabfp_ftran_normalpresolve_debugcheckmat_appendcolCurtisReidMeasureblockWriteLREAL__ctype_b_loc@@GLIBC_2.3lp_yyget_columnpresolve_rowlengthdebugpresolve_rowsget_colIndexAget_ptr_variablesmm_read_mtx_array_sizeappendLink__cxa_finalize@@GLIBC_2.2.5mat_checkcountsspacesprint_objectiveSOS_is_satisfiedget_ptr_primal_solutionpostprocessisOrigFixedprod_xAlp_yyfreepresolve_boundconflictshift_coldatais_integerscalingget_ptr_sensitivity_rhsbfp_findredundantQS_finishperturb_bounds__vsprintf_chk@@GLIBC_2.3.4set_objmat_appendrowswapINTlastInactiveLinkblockWriteREALtransfer_solution_varrestoreINTmy_dswapappend_columnsfirstActiveLinkadd_SOSfinalize_scalingyacc_readqsortex_swapfind_int_bbvarpresolve_probetighten01make_lagstdin@@GLIBC_2.2.5scale_columnsrandomseedrow_decimalscompute_reducedcostsmulti_usedcolumn_in_lpbfp_rowextraget_partialpriceset_debugunscaled_matset_XLIftranpop_basisset_basisvarLU7FORpresolve_mergerowsget_Ncolumnsinc_col_spacestrrchr@@GLIBC_2.2.5addCandidateVarfree_pseudoclassMPS_writefilebfp_pivotvectorini_writeheaderis_sc_violatedLU7ELMset_obj_boundlp_yylex_initpresolve_finalizemat_equalRowsLU1PENinit_rowcol_namesget_bb_depthlimitMIP_countsscanf@@GLIBC_2.2.5heuristicshashvalLU6UTpresolve_initset_unboundedlp_yy_scan_bytesset_negrangedecrementUndoLadderwrite_lpcommentget_improvemat_findinspresolvefillbranches_BBSOS_is_memberbimprovepushPackedVectorMPS_writefileexdlclose@@GLIBC_2.2.5cloneLinkMPSnameFREEset_bb_rulelp_yyget_lvalisP1extracoldualis_add_rowmodefind_sc_bbvarfindImprovementVarrand_uniformscaled_valuepresolve_statuscheckaddmpscolumnftime@@GLIBC_2.2.5inc_presolve_spaceREPORT_lpscaled_matpow@@GLIBC_2.2.5lp_yy_create_bufferbfp_mustrefactorizereset_paramsdaxpystallMonitor_checkget_boundsmat_rowcompactget_OF_activebfp_preparefactorizationLUSOL_addSingularityLUSOL_tightenpivotget_ptr_constraintsis_maximidamaxlp_yy_delete_bufferLU7ADDscaled_floorset_sos_typeset_rh_vecstrcat@@GLIBC_2.2.5firstInactiveLinkget_negrangeshift_rowdataprint_indentlp_yyallocmulti_valueInitset_obj_fnexLU7RNKmat_additemcolamdlp_yyset_linenoget_var_branchfree_dualsverifyMDOset_simplextyperecompute_solutionsymamd_reportfputs@@GLIBC_2.2.5del_constraintexstrtol@@GLIBC_2.2.5verify_solutionLUSOL_sizetointpowis_SOS_varHBUILDpresolve_reduceGCDis_unboundedbfp_nonzerosLU1MARprint_solutionget_lowboSOS_countmat_zerocompactrelationCharget_str_piv_ruleget_lp_namelp_yy_scan_bufferset_bb_depthlimitstore_boundsqsortex_finishmat_setcolput_bb_branchfuncLUSOL_matcreateHINSERTmulti_mustupdateis_presolveis_lag_traceget_ptr_sensitivity_objadd_artificialinc_matrow_spaceLU1PQ2get_maxpivotspx_runget_origcol_namedel_splitvarsmemcpy@@GLIBC_2.2.5get_scalingget_objectiveget_dv_uppermempool_createget_print_solget_anti_degensingleton_columnsolution_is_intcreate_SOSgroupis_bb_mode__strcpy_chk@@GLIBC_2.3.4undoscaleallocINTfreecuts_BBrefactRecentmat_nonzerosget_sensitivity_rhsLU1FULbfp_pivotallocget_primal_solutionset_tracecheck_degeneracygetvaluePackedVectorprint_lpvarmap_canunlockmat_indexrangestr_set_rh_vecfree_SOSrecfindself_BBpresolve_colsingletonblockWriteBMATSOS_member_sortlistmemmove@@GLIBC_2.2.5strchr@@GLIBC_2.2.5debug_print_boundspartial_freeBlocksbfp_factorizelp_yypop_buffer_stateclear_artificialsremoveLinkSOS_infeasibleexplainbfp_btran_normalclean_SOSgroupfread@@GLIBC_2.2.5presolve_setstatusexmy_idamaxsolveBLAS_dloadLU1OR2set_lowbocreate_SOSrecpresolve_makesparserread_mpsLU1MRPcopy_lpset_basiswrite_LPcompareImprovementVarREPORT_solutionfreeUndoLadderget_pseudonodecostget_sensitivity_objget_str_constr_classREPORT_mat_mmsaveis_constr_typepresolve_initpsrecget_epsdbfp_LUSOLfactorizeunset_OF_p1extrais_nativeBLASis_splitvarwrite_paramspresolve_rowlengthexset_scalelimitshift_basisLU1MXCis_debug__errno_location@@GLIBC_2.2.5compareSubstitutionQSpresolve_singularitiesget_origrow_namebb_bettervarmap_addbfp_LUSOLsetcolumnlp_yypush_buffer_state__bss_startbfp_efficiencylp_yyset_outcreatePackedVectorget_piv_ruleread_mpsexhpsortexpresolve_multiboundspresolve_impliedcolfixgetMDOallocREALcomp_bitsget_basisOFget_basisget_columnexmat_findcolumnfreePricervec_expandLU1MCPmat_multaddmm_write_mtx_crdinc_rowslp_yyrestartMPS_readfileconstruct_sensitivity_objLU6L0T_vpresolve_fillUndorowprimset_epsperturbSOS_is_markedappend_rowsbfp_restartset_col_nameblockWriteBOOL__stack_chk_fail@@GLIBC_2.4delete_lplp_yyget_debuglp_yyget_outlp_yylexis_piv_modeprevInactiveLinkset_maxpivotset_var_branchmat_multrowcolamd_set_defaultspush_BBis_scalemodescale_updatecolumnsstrcmp@@GLIBC_2.2.5set_matddrandfree_lpmat_mergematisBasisVarFeasibleisDualFeasibleset_break_at_firstmat_set_rowmapLU7CYCHUPbfp_initpresolve_altsingletonvalidrestore_basisqsortexbfp_isSetIREPORT_objectiveget_break_numeric_accuracyset_scalingpopPackedVectorrestartPricerbsolve_xA2blockWriteINTmulti_populateSetset_rh_lowercloneREALREPORT_scalespresolve_probefix01lex_fatal_errorSOS_member_countmat_nz_unusedpresolve_coltightenstrcpy@@GLIBC_2.2.5my_ddotLU1L0init_BLASset_epsinteliminate_artificialsfeasiblePhase1SOS_is_activeMPS_writeBAScrash_basisset_sec_thresholdmodifyOF1lin_solvebfp_prepareupdateprintmatSQsrand@@GLIBC_2.2.5longjmp@@GLIBC_2.2.5compareLinkconstruct_solutionunscale_columnscollectMinorVarmat_mapreplacemy_dloadbfp_compatibleset_dv_boundsCurtisReidScalesis_fixedvarbfp_finishfactorizationmulti_recomputespx_solveSOS_set_markedisINTbfp_statusddotget_max_levelLUSOL_vecdensityconstruct_sensitivity_dualspresolve_storeDualUndoget_row_nameSOS_set_GUBvalidate_bounds__ctype_tolower_loc@@GLIBC_2.3invertLUSOL_btranexpand_columnLUSOL_dumpstorevarandweightget_Norig_columnspresolve_rowdominancecalloc@@GLIBC_2.2.5add_constraintexlp_yyset_lvalwrite_lpformWeightsset_boundsset_outputstreamMPSnameFIXEDsetLinkget_variablesLUSOL_reportget_dual_solutionstore_re_op_endpresolve_testrowscale_rowsis_negativeis_use_nameshpsortcompareBoundFlipVarbtranload_BLASSOS_unmarkfclose@@GLIBC_2.2.5dlopen@@GLIBC_2.2.5remove@@GLIBC_2.2.5make_lpSOS_is_member_of_typefindIndexcloneMYBOOLstrncpy@@GLIBC_2.2.5get_pivotingdel_columnexSOS_get_typeset_print_solget_epsintpresolve_setOrigread_paramsLUSOL_realloc_cstrcpyloroundToPrecisionmat_setitemHCHANGEprintvecpresolve_candeletevarfindBasicArtificialLU1RECmat_get_dataperformiterationdlsym@@GLIBC_2.2.5LU1MSPfindBasisPosmat_memoptpresolve_createUndoverifyPricertimeNowget_bb_rulebfp_canresetbasisLU1PQ3initialize_solutionunscaled_valuemulti_truncatingvarverify_stabilityis_obj_in_basisLUSOL_replaceColumnset_epsdset_senseappend_SOSrecmulti_valueListset_verboseprint_constraintsfscanf@@GLIBC_2.2.5LUSOL_pivotLabelfeasibilityOffsetmm_read_mtx_crd_size__sprintf_chk@@GLIBC_2.3.4multi_freeset_rhisDegenerateBasisstderr@@GLIBC_2.2.5bfp_btran_doublepresolve_rowtightenget_Norig_rowsposmatset_partialpriceread_errorset_epspivotlp_yyparseprepare_GUBsearchForREPORT_extendedcolprimresize_SOSgroupget_str_constr_typemodf@@GLIBC_2.2.5bfp_nameget_col_namereportBLAS_dswapREPORT_modelinfoLU1OR1set_var_priorityfind_rowReplacementget_dv_lowermulti_resizefreeLinkmdo_freeget_upboaccumulate_for_scalelenfieldLU1GAUREPORT_constraintinfofwrite@@GLIBC_2.2.5simplexPricerinc_rowcol_spacesortByINTmat_computemaxpost_BBnormalizeVectorinsertLinkrealloc@@GLIBC_2.2.5is_infiniteresize_lplp_solve_versioncheck_solutionfind_varpresolve_rowfixclean_reallocsolve_LPget_rowlp_yy_switch_to_bufferfloor@@GLIBC_2.2.5bfp_refactcountrand@@GLIBC_2.2.5stallMonitor_shortStepspop_BBunload_BBconstruct_duals_edataprepareMDOREPORT_dualsSOS_fix_listtransfer_solutioncolamd_reportinc_columnsstr_add_constraintget_pseudobranchcostwrite_MPSbfp_freebfp_implicitslackSOS_is_feasiblecreate_hash_tablecreate_BBmy_daxpyinc_row_spacecloneINTset_epselpresolve_elimeq2LUSOL_expand_amm_is_validpresolve_rebuildUndopresolve_coldominance01negate_constraintpre_BBini_writedataprint_scalesmulti_restartrename_varlp_yyget_linenoallocFREElp_yy_scan_stringpostsolveis_OF_nzini_openLU6CHKmat_colcompactget_nonzerosHDELETEfindNonBasicSlackbfp_LUSOLtightenaddUndoPresolveSOS_get_candidatesset_timeoutmat_shiftcolsset_obj_in_basisis_break_at_firstset_add_rowmodesqrt@@GLIBC_2.2.5my_dscaladd_columnSOS_can_activatebfp_pivotRHSMIP_stepOFset_columnset_OF_p1extrafree_hash_tableLU6U0_vdelete_SOSrecset_epslevelread_LP1validImprovementVarget_rh_upperMPS_writehandleget_pseudocostspresolve_impliedfreeset_intisnz_origobjset_outputfilerandomdensREPORT_debugdumpBLAS_idamaxupdatecuts_BBrow_plusdeltarhs_storewrite_lpexget_bb_floorfirstini_readdataguess_basisscaleCRSOS_is_fulllog@@GLIBC_2.2.5rename@@GLIBC_2.2.5ini_createbin_countblockWriteAMATfree_pseudocostis_intstrtod@@GLIBC_2.2.5stdout@@GLIBC_2.2.5get_multipriceget_orig_indexdel_constraintget_epsperturbpresolve_getcolumnEQtime@@GLIBC_2.2.5QS_append_initmat_createunpackPackedVectorisPrimalSimplexfflush@@GLIBC_2.2.5SOS_member_updatemapbfp_LUSOLidentitycreateLinkset_rowcompare_basisunload_basiscompareSubstitutionVarget_solutionlimitLUSOL_matfreeresizePricerread_LPisPhase1SOS_shift_colLU6LPK!Suu#hypdb/modules/lpsolve_dev/lp_Hash.h#ifndef HEADER_lp_hash #define HEADER_lp_hash /* For row and column name hash tables */ typedef struct _hashelem { char *name; int index; struct _hashelem *next; struct _hashelem *nextelem; } hashelem; typedef struct /* _hashtable */ { hashelem **table; int size; int base; int count; struct _hashelem *first; struct _hashelem *last; } hashtable; #ifdef __cplusplus extern "C" { #endif STATIC hashtable *create_hash_table(int size, int base); STATIC void free_hash_table(hashtable *ht); STATIC hashelem *findhash(const char *name, hashtable *ht); STATIC hashelem *puthash(const char *name, int index, hashelem **list, hashtable *ht); STATIC void drophash(const char *name, hashelem **list, hashtable *ht); STATIC void free_hash_item(hashelem **hp); STATIC hashtable *copy_hash_table(hashtable *ht, hashelem **list, int newsize); STATIC int find_var(lprec *lp, char *name, MYBOOL verbose); STATIC int find_row(lprec *lp, char *name, MYBOOL Unconstrained_rows_found); #ifdef __cplusplus } #endif #endif /* HEADER_lp_hash */ PK!"hypdb/modules/lpsolve_dev/lp_SOS.h#ifndef HEADER_lp_SOS #define HEADER_lp_SOS /* Specially Ordered Sets (SOS) prototypes and settings */ /* ------------------------------------------------------------------------- */ #include "lp_types.h" #include "lp_utils.h" #include "lp_matrix.h" /* SOS constraint defines */ /* ------------------------------------------------------------------------- */ #define SOS1 1 #define SOS2 2 #define SOS3 -1 #define SOSn MAXINT32 #define SOS_START_SIZE 10 /* Start size of SOS_list array; realloced if needed */ /* Define SOS_is_feasible() return values */ /* ------------------------------------------------------------------------- */ #define SOS3_INCOMPLETE -2 #define SOS_INCOMPLETE -1 #define SOS_COMPLETE 0 #define SOS_INFEASIBLE 1 #define SOS_INTERNALERROR 2 typedef struct _SOSgroup SOSgroup; typedef struct _SOSrec { SOSgroup *parent; int tagorder; char *name; int type; MYBOOL isGUB; int size; int priority; int *members; REAL *weights; int *membersSorted; int *membersMapped; } SOSrec; /* typedef */ struct _SOSgroup { lprec *lp; /* Pointer to owner */ SOSrec **sos_list; /* Array of pointers to SOS lists */ int sos_alloc; /* Size allocated to specially ordered sets (SOS1, SOS2...) */ int sos_count; /* Number of specially ordered sets (SOS1, SOS2...) */ int maxorder; /* The highest-order SOS in the group */ int sos1_count; /* Number of the lowest order SOS in the group */ int *membership; /* Array of variable-sorted indeces to SOSes that the variable is member of */ int *memberpos; /* Starting positions of the each column's membership list */ } /* SOSgroup */; #ifdef __cplusplus extern "C" { #endif /* SOS storage structure */ STATIC SOSgroup *create_SOSgroup(lprec *lp); STATIC void resize_SOSgroup(SOSgroup *group); STATIC int append_SOSgroup(SOSgroup *group, SOSrec *SOS); STATIC int clean_SOSgroup(SOSgroup *group, MYBOOL forceupdatemap); STATIC void free_SOSgroup(SOSgroup **group); STATIC SOSrec *create_SOSrec(SOSgroup *group, char *name, int type, int priority, int size, int *variables, REAL *weights); STATIC MYBOOL delete_SOSrec(SOSgroup *group, int sosindex); STATIC int append_SOSrec(SOSrec *SOS, int size, int *variables, REAL *weights); STATIC void free_SOSrec(SOSrec *SOS); /* SOS utilities */ STATIC int make_SOSchain(lprec *lp, MYBOOL forceresort); STATIC int SOS_member_updatemap(SOSgroup *group); STATIC MYBOOL SOS_member_sortlist(SOSgroup *group, int sosindex); STATIC MYBOOL SOS_shift_col(SOSgroup *group, int sosindex, int column, int delta, LLrec *usedmap, MYBOOL forceresort); int SOS_member_delete(SOSgroup *group, int sosindex, int member); int SOS_get_type(SOSgroup *group, int sosindex); int SOS_infeasible(SOSgroup *group, int sosindex); int SOS_member_index(SOSgroup *group, int sosindex, int member); int SOS_member_count(SOSgroup *group, int sosindex); int SOS_memberships(SOSgroup *group, int column); int *SOS_get_candidates(SOSgroup *group, int sosindex, int column, MYBOOL excludetarget, REAL *upbound, REAL *lobound); int SOS_is_member(SOSgroup *group, int sosindex, int column); MYBOOL SOS_is_member_of_type(SOSgroup *group, int column, int sostype); MYBOOL SOS_set_GUB(SOSgroup *group, int sosindex, MYBOOL state); MYBOOL SOS_is_GUB(SOSgroup *group, int sosindex); MYBOOL SOS_is_marked(SOSgroup *group, int sosindex, int column); MYBOOL SOS_is_active(SOSgroup *group, int sosindex, int column); MYBOOL SOS_is_full(SOSgroup *group, int sosindex, int column, MYBOOL activeonly); MYBOOL SOS_can_activate(SOSgroup *group, int sosindex, int column); MYBOOL SOS_set_marked(SOSgroup *group, int sosindex, int column, MYBOOL asactive); MYBOOL SOS_unmark(SOSgroup *group, int sosindex, int column); int SOS_fix_unmarked(SOSgroup *group, int sosindex, int variable, REAL *bound, REAL value, MYBOOL isupper, int *diffcount, DeltaVrec *changelog); int SOS_fix_list(SOSgroup *group, int sosindex, int variable, REAL *bound, int *varlist, MYBOOL isleft, DeltaVrec *changelog); int SOS_is_satisfied(SOSgroup *group, int sosindex, REAL *solution); MYBOOL SOS_is_feasible(SOSgroup *group, int sosindex, REAL *solution); #ifdef __cplusplus } #endif #endif /* HEADER_lp_SOS */ PK!f>"hypdb/modules/lpsolve_dev/lp_lib.h #ifndef HEADER_lp_lib #define HEADER_lp_lib /* -------------------------------------------------------------------------- This is the main library header file for the lp_solve v5.0 release Starting at version 3.0, LP_Solve is released under the LGPL license. For full information, see the enclosed file LGPL.txt. Original developer: Michel Berkelaar - michel@ics.ele.tue.nl Most changes 1.5-2.0: Jeroen Dirks - jeroend@tor.numetrix.com Changes 3.2-4.0: Kjell Eikland - kjell.eikland@broadpark.no (Simplex code, SOS, SC, code optimization) Peter Notebaert - lpsolve@peno.be (Sensitivity analysis, documentation) Changes 5.0+: Kjell Eikland - kjell.eikland@broadpark.no (BFP, XLI, simplex, B&B, code modularization) Peter Notebaert - lpsolve@peno.be (Sensitivity analysis, New lp parser, LINDO (XLI) parser, VB/.NET interface, documentation) Release notes: Version 4.0 enhances version 3.2 in terms of internal program/simplex architecture, call level interfaces, data layout, features and contains several bug fixes. There is now complete support for semi-continuous variables and SOS constructions. In the process, a complete API was added. The MPS parser has been amended to support this. Sensitivity analysis and variouse bug fixes was provided by Peter Notebaert in 4.0 sub-releases. Peter also wrote a complete documentation of the API and contributed a VB interface, both of which significantly enhanced the accessibility of lp_solve. Version 5.0 is a major rewrite and code cleanup. The main additions that drove forward this cleanup were the modular inversion logic with optimal column ordering, addition of primal phase 1 and dual phase 2 logic for full flexibility in the selection of primal and dual simplex modes, DEVEX and steepest edge pivot selection, along with dynamic cycling detection and prevention. This cleanup made it possible to harmonize the internal rounding principles, contributing to increased numerical stability. Version 5.1 rearranges the matrix storage model by enabling both legacy element record-based storage and split vector storage. In addition the lprec structure is optimized and additional routines are added, mainly for sparse vector additions and enhanced XLI functionality. Support for XML- based models was added on the basis of the LPFML schema via xli_LPFML. Version 5.2 removes the objective function from the constraint matrix, adds a number of presolve options and speed them up. Degeneracy handling is significantly improved. Support for XLI_ZIMPL was added. Multiple and partial pricing has been enhanced and activated. -------------------------------------------------------------------------- */ /* Define user program feature option switches */ /* ------------------------------------------------------------------------- */ # if defined _WIN32 && !defined __GNUC__ # define isnan _isnan # endif #if defined NOISNAN # define isnan(x) FALSE #endif #define SETMASK(variable, mask) variable |= mask #define CLEARMASK(variable, mask) variable &= ~(mask) #define TOGGLEMASK(variable, mask) variable ^= mask #define ISMASKSET(variable, mask) (MYBOOL) (((variable) & (mask)) != 0) /* Utility/system settings */ /* ------------------------------------------------------------------------- */ /*#define INTEGERTIME */ /* Set use of lower-resolution timer */ /* New v5.0+ simplex/optimization features and settings */ /* ------------------------------------------------------------------------- */ /*#define NoRowScaleOF */ /* Optionally skip row-scaling of the OF */ #define DoMatrixRounding /* Round A matrix elements to precision */ #define DoBorderRounding /* Round RHS, bounds and ranges to precision */ #define Phase1EliminateRedundant /* Remove rows of redundant artificials */ #define FixViolatedOptimal #define ImproveSolutionPrecision /* Round optimal solution values */ /*#define IncreasePivotOnReducedAccuracy */ /* Increase epspivot on instability */ /*#define FixInaccurateDualMinit */ /* Reinvert on inaccuracy in dual minits */ /*#define EnforcePositiveTheta */ /* Ensure that the theta range is valid */ #define ResetMinitOnReinvert /*#define UsePrimalReducedCostUpdate */ /* Not tested */ /*#define UseDualReducedCostUpdate */ /* Seems Ok, but slower than expected */ /*#ifdef UseLegacyExtrad */ /* Use v3.2- style Extrad method */ #define UseMilpExpandedRCF /* Non-ints in reduced cost bound tightening */ /*#define UseMilpSlacksRCF */ /* Slacks in reduced cost bound tightening (degen prone); requires !SlackInitMinusInf */ #define LegacySlackDefinition /* Slack as the "value of the constraint" */ /* Development features (change at own risk) */ /* ------------------------------------------------------------------------- */ /*#define MIPboundWithOF */ /* Enable to detect OF constraint for use during B&B */ /*#define SlackInitMinusInf */ /* Slacks have 0 LB if this is not defined */ #define FULLYBOUNDEDSIMPLEX FALSE /* WARNING: Activate at your own risk! */ /* Specify use of the basic linear algebra subroutine library */ /* ------------------------------------------------------------------------- */ #define libBLAS 2 /* 0: No, 1: Internal, 2: External */ #define libnameBLAS "myBLAS" /* Active inverse logic (default is optimized original etaPFI) */ /* ------------------------------------------------------------------------- */ #if !defined LoadInverseLib # define LoadInverseLib TRUE /* Enable alternate inverse libraries */ #endif /*#define ExcludeNativeInverse */ /* Disable INVERSE_ACTIVE inverse engine */ #define DEF_OBJINBASIS TRUE /* Additional rows inserted at the top (1 => OF) */ #define INVERSE_NONE -1 #define INVERSE_LEGACY 0 #define INVERSE_ETAPFI 1 #define INVERSE_LUMOD 2 #define INVERSE_LUSOL 3 #define INVERSE_GLPKLU 4 #ifndef RoleIsExternalInvEngine /* Defined in inverse DLL drivers */ #ifdef ExcludeNativeInverse #define INVERSE_ACTIVE INVERSE_NONE /* Disable native engine */ #else #define INVERSE_ACTIVE INVERSE_LEGACY /* User or DLL-selected */ #endif #endif /* Active external language interface logic (default is none) */ /* ------------------------------------------------------------------------- */ #if !defined LoadLanguageLib # define LoadLanguageLib TRUE /* Enable alternate language libraries */ #endif #define ExcludeNativeLanguage /* Disable LANGUAGE_ACTIVE XLI */ #define LANGUAGE_NONE -1 #define LANGUAGE_LEGACYLP 0 #define LANGUAGE_CPLEXLP 1 #define LANGUAGE_MPSX 2 #define LANGUAGE_LPFML 3 #define LANGUAGE_MATHPROG 4 #define LANGUAGE_AMPL 5 #define LANGUAGE_GAMS 6 #define LANGUAGE_ZIMPL 7 #define LANGUAGE_S 8 #define LANGUAGE_R 9 #define LANGUAGE_MATLAB 10 #define LANGUAGE_OMATRIX 11 #define LANGUAGE_SCILAB 12 #define LANGUAGE_OCTAVE 13 #define LANGUAGE_EMPS 14 #ifndef RoleIsExternalLanguageEngine /* Defined in XLI driver libraries */ #ifdef ExcludeNativeLanguage #define LANGUAGE_ACTIVE LANGUAGE_NONE /* Disable native engine */ #else #define LANGUAGE_ACTIVE LANGUAGE_CPLEXLP /* User or DLL-selected */ #endif #endif /* Default parameters and tolerances */ /* ------------------------------------------------------------------------- */ #define OriginalPARAM 0 #define ProductionPARAM 1 #define ChvatalPARAM 2 #define LoosePARAM 3 #if 1 #define ActivePARAM ProductionPARAM #else #define ActivePARAM LoosePARAM #endif /* Miscellaneous settings */ /* ------------------------------------------------------------------------- */ #ifndef Paranoia #ifdef _DEBUG #define Paranoia #endif #endif /* Program version data */ /* ------------------------------------------------------------------------- */ #define MAJORVERSION 5 #define MINORVERSION 5 #define RELEASE 2 #define BUILD 3 #define BFPVERSION 12 /* Checked against bfp_compatible() */ #define XLIVERSION 12 /* Checked against xli_compatible() */ /* Note that both BFPVERSION and XLIVERSION typically have to be incremented in the case that the lprec structure changes. */ /* Include/header files */ /* ------------------------------------------------------------------------- */ #include #include #include #include #include #include "lp_types.h" #include "lp_utils.h" #if (LoadInverseLib == TRUE) || (LoadLanguageLib == TRUE) #ifdef WIN32 #include #else #include #endif #endif #ifndef BFP_CALLMODEL #ifdef WIN32 #define BFP_CALLMODEL __stdcall /* "Standard" call model */ #else #define BFP_CALLMODEL #endif #endif #ifndef XLI_CALLMODEL #define XLI_CALLMODEL BFP_CALLMODEL #endif #define REGISTER register /* Speed up certain operations */ /* Definition of program constrants */ /* ------------------------------------------------------------------------- */ #define SIMPLEX_UNDEFINED 0 #define SIMPLEX_Phase1_PRIMAL 1 #define SIMPLEX_Phase1_DUAL 2 #define SIMPLEX_Phase2_PRIMAL 4 #define SIMPLEX_Phase2_DUAL 8 #define SIMPLEX_DYNAMIC 16 #define SIMPLEX_AUTODUALIZE 32 #define SIMPLEX_PRIMAL_PRIMAL (SIMPLEX_Phase1_PRIMAL + SIMPLEX_Phase2_PRIMAL) #define SIMPLEX_DUAL_PRIMAL (SIMPLEX_Phase1_DUAL + SIMPLEX_Phase2_PRIMAL) #define SIMPLEX_PRIMAL_DUAL (SIMPLEX_Phase1_PRIMAL + SIMPLEX_Phase2_DUAL) #define SIMPLEX_DUAL_DUAL (SIMPLEX_Phase1_DUAL + SIMPLEX_Phase2_DUAL) #define SIMPLEX_DEFAULT (SIMPLEX_DUAL_PRIMAL) /* Variable codes (internal) */ #define ISREAL 0 #define ISINTEGER 1 #define ISSEMI 2 #define ISSOS 4 #define ISSOSTEMPINT 8 #define ISGUB 16 /* Presolve defines */ #define PRESOLVE_NONE 0 #define PRESOLVE_ROWS 1 #define PRESOLVE_COLS 2 #define PRESOLVE_LINDEP 4 #define PRESOLVE_AGGREGATE 8 /* Not implemented */ #define PRESOLVE_SPARSER 16 /* Not implemented */ #define PRESOLVE_SOS 32 #define PRESOLVE_REDUCEMIP 64 #define PRESOLVE_KNAPSACK 128 /* Implementation not tested completely */ #define PRESOLVE_ELIMEQ2 256 #define PRESOLVE_IMPLIEDFREE 512 #define PRESOLVE_REDUCEGCD 1024 #define PRESOLVE_PROBEFIX 2048 #define PRESOLVE_PROBEREDUCE 4096 #define PRESOLVE_ROWDOMINATE 8192 #define PRESOLVE_COLDOMINATE 16384 /* Reduced functionality, should be expanded */ #define PRESOLVE_MERGEROWS 32768 #define PRESOLVE_IMPLIEDSLK 65536 #define PRESOLVE_COLFIXDUAL 131072 #define PRESOLVE_BOUNDS 262144 #define PRESOLVE_LASTMASKMODE (PRESOLVE_DUALS - 1) #define PRESOLVE_DUALS 524288 #define PRESOLVE_SENSDUALS 1048576 /* Basis crash options */ #define CRASH_NONE 0 #define CRASH_NONBASICBOUNDS 1 #define CRASH_MOSTFEASIBLE 2 #define CRASH_LEASTDEGENERATE 3 /* Solution recomputation options (internal) */ #define INITSOL_SHIFTZERO 0 #define INITSOL_USEZERO 1 #define INITSOL_ORIGINAL 2 /* Strategy codes to avoid or recover from degenerate pivots, infeasibility or numeric errors via randomized bound relaxation */ #define ANTIDEGEN_NONE 0 #define ANTIDEGEN_FIXEDVARS 1 #define ANTIDEGEN_COLUMNCHECK 2 #define ANTIDEGEN_STALLING 4 #define ANTIDEGEN_NUMFAILURE 8 #define ANTIDEGEN_LOSTFEAS 16 #define ANTIDEGEN_INFEASIBLE 32 #define ANTIDEGEN_DYNAMIC 64 #define ANTIDEGEN_DURINGBB 128 #define ANTIDEGEN_RHSPERTURB 256 #define ANTIDEGEN_BOUNDFLIP 512 #define ANTIDEGEN_DEFAULT (ANTIDEGEN_FIXEDVARS | ANTIDEGEN_STALLING /* | ANTIDEGEN_INFEASIBLE */) /* REPORT defines */ #define NEUTRAL 0 #define CRITICAL 1 #define SEVERE 2 #define IMPORTANT 3 #define NORMAL 4 #define DETAILED 5 #define FULL 6 /* MESSAGE defines */ #define MSG_NONE 0 #define MSG_PRESOLVE 1 #define MSG_ITERATION 2 #define MSG_INVERT 4 #define MSG_LPFEASIBLE 8 #define MSG_LPOPTIMAL 16 #define MSG_LPEQUAL 32 #define MSG_LPBETTER 64 #define MSG_MILPFEASIBLE 128 #define MSG_MILPEQUAL 256 #define MSG_MILPBETTER 512 #define MSG_MILPSTRATEGY 1024 #define MSG_MILPOPTIMAL 2048 #define MSG_PERFORMANCE 4096 #define MSG_INITPSEUDOCOST 8192 /* MPS file types */ #define MPSFIXED 1 #define MPSFREE 2 #define MPSIBM 4 #define MPSNEGOBJCONST 8 #define MPS_FREE (MPSFREE<<2) #define MPS_IBM (MPSIBM<<2) #define MPS_NEGOBJCONST (MPSNEGOBJCONST<<2) /* MPS defines (internal) */ #define MPSUNDEF -4 #define MPSNAME -3 #define MPSOBJSENSE -2 #define MPSOBJNAME -1 #define MPSROWS 0 #define MPSCOLUMNS 1 #define MPSRHS 2 #define MPSBOUNDS 3 #define MPSRANGES 4 #define MPSSOS 5 #define MPSVARMASK "%-8s" #define MPSVALUEMASK "%12g" /* Constraint type codes (internal) */ #define ROWTYPE_EMPTY 0 #define ROWTYPE_LE 1 #define ROWTYPE_GE 2 #define ROWTYPE_EQ 3 #define ROWTYPE_CONSTRAINT ROWTYPE_EQ /* This is the mask for modes */ #define ROWTYPE_OF 4 #define ROWTYPE_INACTIVE 8 #define ROWTYPE_RELAX 16 #define ROWTYPE_GUB 32 #define ROWTYPE_OFMAX (ROWTYPE_OF + ROWTYPE_GE) #define ROWTYPE_OFMIN (ROWTYPE_OF + ROWTYPE_LE) #define ROWTYPE_CHSIGN ROWTYPE_GE /* Public constraint codes */ #define FR ROWTYPE_EMPTY #define LE ROWTYPE_LE #define GE ROWTYPE_GE #define EQ ROWTYPE_EQ #define OF ROWTYPE_OF /* MIP constraint classes */ #define ROWCLASS_Unknown 0 /* Undefined/unknown */ #define ROWCLASS_Objective 1 /* The objective function */ #define ROWCLASS_GeneralREAL 2 /* General real-values constraint */ #define ROWCLASS_GeneralMIP 3 /* General mixed integer/binary and real valued constraint */ #define ROWCLASS_GeneralINT 4 /* General integer-only constraint */ #define ROWCLASS_GeneralBIN 5 /* General binary-only constraint */ #define ROWCLASS_KnapsackINT 6 /* Sum of positive integer times integer variables <= positive integer */ #define ROWCLASS_KnapsackBIN 7 /* Sum of positive integer times binary variables <= positive integer */ #define ROWCLASS_SetPacking 8 /* Sum of binary variables >= 1 */ #define ROWCLASS_SetCover 9 /* Sum of binary variables <= 1 */ #define ROWCLASS_GUB 10 /* Sum of binary variables = 1 */ #define ROWCLASS_MAX ROWCLASS_GUB /* Column subsets (internal) */ #define SCAN_USERVARS 1 #define SCAN_SLACKVARS 2 #define SCAN_ARTIFICIALVARS 4 #define SCAN_PARTIALBLOCK 8 #define USE_BASICVARS 16 #define USE_NONBASICVARS 32 #define SCAN_NORMALVARS (SCAN_USERVARS + SCAN_ARTIFICIALVARS) #define SCAN_ALLVARS (SCAN_SLACKVARS + SCAN_USERVARS + SCAN_ARTIFICIALVARS) #define USE_ALLVARS (USE_BASICVARS + USE_NONBASICVARS) #define OMIT_FIXED 64 #define OMIT_NONFIXED 128 /* Improvement defines */ #define IMPROVE_NONE 0 #define IMPROVE_SOLUTION 1 #define IMPROVE_DUALFEAS 2 #define IMPROVE_THETAGAP 4 #define IMPROVE_BBSIMPLEX 8 #define IMPROVE_DEFAULT (IMPROVE_DUALFEAS + IMPROVE_THETAGAP) #define IMPROVE_INVERSE (IMPROVE_SOLUTION + IMPROVE_THETAGAP) /* Scaling types */ #define SCALE_NONE 0 #define SCALE_EXTREME 1 #define SCALE_RANGE 2 #define SCALE_MEAN 3 #define SCALE_GEOMETRIC 4 #define SCALE_FUTURE1 5 #define SCALE_FUTURE2 6 #define SCALE_CURTISREID 7 /* Override to Curtis-Reid "optimal" scaling */ /* Alternative scaling weights */ #define SCALE_LINEAR 0 #define SCALE_QUADRATIC 8 #define SCALE_LOGARITHMIC 16 #define SCALE_USERWEIGHT 31 #define SCALE_MAXTYPE (SCALE_QUADRATIC-1) /* Scaling modes */ #define SCALE_POWER2 32 /* As is or rounded to power of 2 */ #define SCALE_EQUILIBRATE 64 /* Make sure that no scaled number is above 1 */ #define SCALE_INTEGERS 128 /* Apply to integer columns/variables */ #define SCALE_DYNUPDATE 256 /* Apply incrementally every solve() */ #define SCALE_ROWSONLY 512 /* Override any scaling to only scale the rows */ #define SCALE_COLSONLY 1024 /* Override any scaling to only scale the rows */ /* Standard defines for typical scaling models (no Lagrangeans) */ #define SCALEMODEL_EQUILIBRATED (SCALE_LINEAR+SCALE_EXTREME+SCALE_INTEGERS) #define SCALEMODEL_GEOMETRIC (SCALE_LINEAR+SCALE_GEOMETRIC+SCALE_INTEGERS) #define SCALEMODEL_ARITHMETIC (SCALE_LINEAR+SCALE_MEAN+SCALE_INTEGERS) #define SCALEMODEL_DYNAMIC (SCALEMODEL_GEOMETRIC+SCALE_EQUILIBRATE) #define SCALEMODEL_CURTISREID (SCALE_CURTISREID+SCALE_INTEGERS+SCALE_POWER2) /* Iteration status and strategies (internal) */ #define ITERATE_MAJORMAJOR 0 #define ITERATE_MINORMAJOR 1 #define ITERATE_MINORRETRY 2 /* Pricing methods */ #define PRICER_FIRSTINDEX 0 #define PRICER_DANTZIG 1 #define PRICER_DEVEX 2 #define PRICER_STEEPESTEDGE 3 #define PRICER_LASTOPTION PRICER_STEEPESTEDGE /* Additional settings for pricers (internal) */ #define PRICER_RANDFACT 0.1 #define DEVEX_RESTARTLIMIT 1.0e+09 /* Reset the norms if any value exceeds this limit */ #define DEVEX_MINVALUE 0.000 /* Minimum weight [0..1] for entering variable, consider 0.01 */ /* Pricing strategies */ #define PRICE_PRIMALFALLBACK 4 /* In case of Steepest Edge, fall back to DEVEX in primal */ #define PRICE_MULTIPLE 8 /* Enable multiple pricing (primal simplex) */ #define PRICE_PARTIAL 16 /* Enable partial pricing */ #define PRICE_ADAPTIVE 32 /* Temporarily use alternative strategy if cycling is detected */ #define PRICE_HYBRID 64 /* NOT IMPLEMENTED */ #define PRICE_RANDOMIZE 128 /* Adds a small randomization effect to the selected pricer */ #define PRICE_AUTOPARTIAL 256 /* Detect and use data on the block structure of the model (primal) */ #define PRICE_AUTOMULTIPLE 512 /* Automatically select multiple pricing (primal simplex) */ #define PRICE_LOOPLEFT 1024 /* Scan entering/leaving columns left rather than right */ #define PRICE_LOOPALTERNATE 2048 /* Scan entering/leaving columns alternatingly left/right */ #define PRICE_HARRISTWOPASS 4096 /* Use Harris' primal pivot logic rather than the default */ #define PRICE_FORCEFULL 8192 /* Non-user option to force full pricing */ #define PRICE_TRUENORMINIT 16384 /* Use true norms for Devex and Steepest Edge initializations */ /*#define _PRICE_NOBOUNDFLIP*/ #if defined _PRICE_NOBOUNDFLIP #define PRICE_NOBOUNDFLIP 65536 /* Disallow automatic bound-flip during pivot */ #endif #define PRICE_STRATEGYMASK (PRICE_PRIMALFALLBACK + \ PRICE_MULTIPLE + PRICE_PARTIAL + \ PRICE_ADAPTIVE + PRICE_HYBRID + \ PRICE_RANDOMIZE + PRICE_AUTOPARTIAL + PRICE_AUTOMULTIPLE + \ PRICE_LOOPLEFT + PRICE_LOOPALTERNATE + \ PRICE_HARRISTWOPASS + \ PRICE_FORCEFULL + PRICE_TRUENORMINIT) /* B&B active variable codes (internal) */ #define BB_REAL 0 #define BB_INT 1 #define BB_SC 2 #define BB_SOS 3 #define BB_GUB 4 /* B&B strategies */ #define NODE_FIRSTSELECT 0 #define NODE_GAPSELECT 1 #define NODE_RANGESELECT 2 #define NODE_FRACTIONSELECT 3 #define NODE_PSEUDOCOSTSELECT 4 #define NODE_PSEUDONONINTSELECT 5 /* Kjell Eikland #1 - Minimize B&B depth */ #define NODE_PSEUDOFEASSELECT (NODE_PSEUDONONINTSELECT+NODE_WEIGHTREVERSEMODE) #define NODE_PSEUDORATIOSELECT 6 /* Kjell Eikland #2 - Minimize a "cost/benefit" ratio */ #define NODE_USERSELECT 7 #define NODE_STRATEGYMASK (NODE_WEIGHTREVERSEMODE-1) /* Mask for B&B strategies */ #define NODE_WEIGHTREVERSEMODE 8 #define NODE_BRANCHREVERSEMODE 16 #define NODE_GREEDYMODE 32 #define NODE_PSEUDOCOSTMODE 64 #define NODE_DEPTHFIRSTMODE 128 #define NODE_RANDOMIZEMODE 256 #define NODE_GUBMODE 512 #define NODE_DYNAMICMODE 1024 #define NODE_RESTARTMODE 2048 #define NODE_BREADTHFIRSTMODE 4096 #define NODE_AUTOORDER 8192 #define NODE_RCOSTFIXING 16384 #define NODE_STRONGINIT 32768 #define BRANCH_CEILING 0 #define BRANCH_FLOOR 1 #define BRANCH_AUTOMATIC 2 #define BRANCH_DEFAULT 3 /* Action constants for simplex and B&B (internal) */ #define ACTION_NONE 0 #define ACTION_ACTIVE 1 #define ACTION_REBASE 2 #define ACTION_RECOMPUTE 4 #define ACTION_REPRICE 8 #define ACTION_REINVERT 16 #define ACTION_TIMEDREINVERT 32 #define ACTION_ITERATE 64 #define ACTION_RESTART 255 /* Solver status values */ #define UNKNOWNERROR -5 #define DATAIGNORED -4 #define NOBFP -3 #define NOMEMORY -2 #define NOTRUN -1 #define OPTIMAL 0 #define SUBOPTIMAL 1 #define INFEASIBLE 2 #define UNBOUNDED 3 #define DEGENERATE 4 #define NUMFAILURE 5 #define USERABORT 6 #define TIMEOUT 7 #define RUNNING 8 #define PRESOLVED 9 #define ACCURACYERROR 25 /* Branch & Bound and Lagrangean extra status values (internal) */ #define PROCFAIL 10 #define PROCBREAK 11 #define FEASFOUND 12 #define NOFEASFOUND 13 #define FATHOMED 14 /* Status values internal to the solver (internal) */ #define SWITCH_TO_PRIMAL 20 #define SWITCH_TO_DUAL 21 #define SINGULAR_BASIS 22 #define LOSTFEAS 23 #define MATRIXERROR 24 /* Objective testing options for "bb_better" (internal) */ #define OF_RELAXED 0 #define OF_INCUMBENT 1 #define OF_WORKING 2 #define OF_USERBREAK 3 #define OF_HEURISTIC 4 #define OF_DUALLIMIT 5 #define OF_DELTA 8 /* Mode */ #define OF_PROJECTED 16 /* Mode - future, not active */ #define OF_TEST_BT 1 #define OF_TEST_BE 2 #define OF_TEST_NE 3 #define OF_TEST_WE 4 #define OF_TEST_WT 5 #define OF_TEST_RELGAP 8 /* Mode */ /* Name list and sparse matrix storage parameters (internal) */ #define MAT_START_SIZE 10000 #define DELTACOLALLOC 100 #define DELTAROWALLOC 100 #define RESIZEFACTOR 4 /* Fractional increase in selected memory allocations */ /* Default solver parameters and tolerances (internal) */ #define DEF_PARTIALBLOCKS 10 /* The default number of blocks for partial pricing */ #define DEF_MAXRELAX 7 /* Maximum number of non-BB relaxations in MILP */ #define DEF_MAXPIVOTRETRY 10 /* Maximum number of times to retry a div-0 situation */ #define DEF_MAXSINGULARITIES 10 /* Maximum number of singularities in refactorization */ #define MAX_MINITUPDATES 60 /* Maximum number of bound swaps between refactorizations without recomputing the whole vector - contain errors */ #define MIN_REFACTFREQUENCY 5 /* Refactorization frequency indicating an inherent numerical instability of the basis */ #define LAG_SINGULARLIMIT 5 /* Number of times the objective does not change before it is assumed that the Lagrangean constraints are non-binding, and therefore impossible to converge; upper iteration limit is divided by this threshold */ #define MIN_TIMEPIVOT 5.0e-02 /* Minimum time per pivot for reinversion optimization purposes; use active monitoring only if a pivot takes more than MINTIMEPIVOT seconds. 5.0e-2 is roughly suitable for a 1GHz system. */ #define MAX_STALLCOUNT 12 /* The absolute upper limit to the number of stalling or cycling iterations before switching rule */ #define MAX_RULESWITCH 5 /* The maximum number of times to try an alternate pricing rule to recover from stalling; set negative for no limit. */ #define DEF_TIMEDREFACT AUTOMATIC /* Default for timed refactorization in BFPs; can be FALSE, TRUE or AUTOMATIC (dynamic) */ #define DEF_SCALINGLIMIT 5 /* The default maximum number of scaling iterations */ #define DEF_NEGRANGE -1.0e+06 /* Downward limit for expanded variable range before the variable is split into positive and negative components */ #define DEF_BB_LIMITLEVEL -50 /* Relative B&B limit to protect against very deep, memory-consuming trees */ #define MAX_FRACSCALE 6 /* The maximum decimal scan range for simulated integers */ #define RANDSCALE 100 /* Randomization scaling range */ #define DOUBLEROUND 0.0e-02 /* Extra rounding scalar used in btran/ftran calculations; the rationale for 0.0 is that prod_xA() uses rounding as well */ #define DEF_EPSMACHINE 2.22e-16 /* Machine relative precision (doubles) */ #define MIN_STABLEPIVOT 5.0 /* Minimum pivot magnitude assumed to be numerically stable */ /* Precision macros */ /* -------------------------------------------------------------------------------------- */ #define PREC_REDUCEDCOST lp->epsvalue #define PREC_IMPROVEGAP lp->epsdual #define PREC_SUBSTFEASGAP lp->epsprimal #if 1 #define PREC_BASICSOLUTION lp->epsvalue /* Zero-rounding of RHS/basic solution vector */ #else #define PREC_BASICSOLUTION lp->epsmachine /* Zero-rounding of RHS/basic solution vector */ #endif #define LIMIT_ABS_REL 10.0 /* Limit for testing using relative metric */ /* Parameters constants for short-cut setting of tolerances */ /* -------------------------------------------------------------------------------------- */ #define EPS_TIGHT 0 #define EPS_MEDIUM 1 #define EPS_LOOSE 2 #define EPS_BAGGY 3 #define EPS_DEFAULT EPS_TIGHT #if ActivePARAM==ProductionPARAM /* PARAMETER SET FOR PRODUCTION */ /* -------------------------------------------------------------------------------------- */ #define DEF_INFINITE 1.0e+30 /* Limit for dynamic range */ #define DEF_EPSVALUE 1.0e-12 /* High accuracy and feasibility preserving tolerance */ #define DEF_EPSPRIMAL 1.0e-10 /* For rounding primal/RHS values to 0 */ #define DEF_EPSDUAL 1.0e-09 /* For rounding reduced costs to 0 */ #define DEF_EPSPIVOT 2.0e-07 /* Pivot reject threshold */ #define DEF_PERTURB 1.0e-05 /* Perturbation scalar for degenerate problems; must at least be RANDSCALE greater than EPSPRIMAL */ #define DEF_EPSSOLUTION 1.0e-05 /* Margin of error for solution bounds */ #define DEF_EPSINT 1.0e-07 /* Accuracy for considering a float value as integer */ #elif ActivePARAM==OriginalPARAM /* PARAMETER SET FOR LEGACY VERSIONS */ /* -------------------------------------------------------------------------------------- */ #define DEF_INFINITE 1.0e+24 /* Limit for dynamic range */ #define DEF_EPSVALUE 1.0e-08 /* High accuracy and feasibility preserving tolerance */ #define DEF_EPSPRIMAL 5.01e-07 /* For rounding primal/RHS values to 0, infeasibility */ #define DEF_EPSDUAL 1.0e-06 /* For rounding reduced costs to 0 */ #define DEF_EPSPIVOT 1.0e-04 /* Pivot reject threshold */ #define DEF_PERTURB 1.0e-05 /* Perturbation scalar for degenerate problems; must at least be RANDSCALE greater than EPSPRIMAL */ #define DEF_EPSSOLUTION 1.0e-02 /* Margin of error for solution bounds */ #define DEF_EPSINT 1.0e-03 /* Accuracy for considering a float value as integer */ #elif ActivePARAM==ChvatalPARAM /* PARAMETER SET EXAMPLES FROM Vacek Chvatal */ /* -------------------------------------------------------------------------------------- */ #define DEF_INFINITE 1.0e+30 /* Limit for dynamic range */ #define DEF_EPSVALUE 1.0e-10 /* High accuracy and feasibility preserving tolerance */ #define DEF_EPSPRIMAL 10e-07 /* For rounding primal/RHS values to 0 */ #define DEF_EPSDUAL 10e-05 /* For rounding reduced costs to 0 */ #define DEF_EPSPIVOT 10e-05 /* Pivot reject threshold */ #define DEF_PERTURB 10e-03 /* Perturbation scalar for degenerate problems; must at least be RANDSCALE greater than EPSPRIMAL */ #define DEF_EPSSOLUTION 1.0e-05 /* Margin of error for solution bounds */ #define DEF_EPSINT 5.0e-03 /* Accuracy for considering a float value as integer */ #elif ActivePARAM==LoosePARAM /* PARAMETER SET FOR LOOSE TOLERANCES */ /* -------------------------------------------------------------------------------------- */ #define DEF_INFINITE 1.0e+30 /* Limit for dynamic range */ #define DEF_EPSVALUE 1.0e-10 /* High accuracy and feasibility preserving tolerance */ #define DEF_EPSPRIMAL 5.01e-08 /* For rounding primal/RHS values to 0 */ #define DEF_EPSDUAL 1.0e-07 /* For rounding reduced costs to 0 */ #define DEF_EPSPIVOT 1.0e-05 /* Pivot reject threshold */ #define DEF_PERTURB 1.0e-05 /* Perturbation scalar for degenerate problems; must at least be RANDSCALE greater than EPSPRIMAL */ #define DEF_EPSSOLUTION 1.0e-05 /* Margin of error for solution bounds */ #define DEF_EPSINT 1.0e-04 /* Accuracy for considering a float value as integer */ #endif #define DEF_MIP_GAP 1.0e-11 /* The default absolute and relative MIP gap */ #define SCALEDINTFIXRANGE 1.6 /* Epsilon range multiplier < 2 for collapsing bounds to fix */ #define MIN_SCALAR 1.0e-10 /* Smallest allowed scaling adjustment */ #define MAX_SCALAR 1.0e+10 /* Largest allowed scaling adjustment */ #define DEF_SCALINGEPS 1.0e-02 /* Relative scaling convergence criterion for auto_scale */ #define DEF_LAGACCEPT 1.0e-03 /* Default Lagrangean convergence acceptance criterion */ #define DEF_LAGCONTRACT 0.90 /* The contraction parameter for Lagrangean iterations */ #define DEF_LAGMAXITERATIONS 100 /* The maximum number of Lagrangean iterations */ #define DEF_PSEUDOCOSTUPDATES 7 /* The default number of times pseudo-costs are recalculated; experiments indicate that costs tend to stabilize */ #define DEF_PSEUDOCOSTRESTART 0.15 /* The fraction of price updates required for B&B restart when the mode is NODE_RESTARTMODE */ #define DEF_MAXPRESOLVELOOPS 0 /* Upper limit to the number of loops during presolve, <= 0 for no limit. */ /* Hashing prototypes and function headers */ /* ------------------------------------------------------------------------- */ #include "lp_Hash.h" /* Sparse matrix prototypes */ /* ------------------------------------------------------------------------- */ #include "lp_matrix.h" /* Basis storage (mainly for B&B) */ typedef struct _basisrec { int level; int *var_basic; MYBOOL *is_basic; MYBOOL *is_lower; int pivots; struct _basisrec *previous; } basisrec; /* Presolve undo data storage */ typedef struct _presolveundorec { lprec *lp; int orig_rows; int orig_columns; int orig_sum; int *var_to_orig; /* sum_alloc+1 : Mapping of variables from solution to best_solution to account for removed variables and rows during presolve; a non-positive value indicates that the constraint or variable was removed */ int *orig_to_var; /* sum_alloc+1 : Mapping from original variable index to current / working index number */ REAL *fixed_rhs; /* rows_alloc+1 : Storage of values of presolved fixed colums */ REAL *fixed_obj; /* columns_alloc+1: Storage of values of presolved fixed rows */ DeltaVrec *deletedA; /* A matrix of eliminated data from matA */ DeltaVrec *primalundo; /* Affine translation vectors for eliminated primal variables */ DeltaVrec *dualundo; /* Affine translation vectors for eliminated dual variables */ MYBOOL OFcolsdeleted; } presolveundorec; /* Pseudo-cost arrays used during B&B */ typedef struct _BBPSrec { lprec *lp; int pseodotype; int updatelimit; int updatesfinished; REAL restartlimit; MATitem *UPcost; MATitem *LOcost; struct _BBPSrec *secondary; } BBPSrec; #include "lp_mipbb.h" /* Partial pricing block data */ typedef struct _partialrec { lprec *lp; int blockcount; /* ## The number of logical blocks or stages in the model */ int blocknow; /* The currently active block */ int *blockend; /* Array of column indeces giving the start of each block */ int *blockpos; /* Array of column indeces giving the start scan position */ MYBOOL isrow; } partialrec; /* Specially Ordered Sets (SOS) prototypes and settings */ /* ------------------------------------------------------------------------- */ /* SOS storage structure (LINEARSEARCH is typically in the 0-10 range) */ #ifndef LINEARSEARCH #define LINEARSEARCH 0 #endif #include "lp_SOS.h" /* Prototypes for user call-back functions */ /* ------------------------------------------------------------------------- */ typedef int (__WINAPI lphandle_intfunc)(lprec *lp, void *userhandle); typedef void (__WINAPI lphandlestr_func)(lprec *lp, void *userhandle, char *buf); typedef void (__WINAPI lphandleint_func)(lprec *lp, void *userhandle, int message); typedef int (__WINAPI lphandleint_intfunc)(lprec *lp, void *userhandle, int message); /* API typedef definitions */ /* ------------------------------------------------------------------------- */ typedef MYBOOL (__WINAPI add_column_func)(lprec *lp, REAL *column); typedef MYBOOL (__WINAPI add_columnex_func)(lprec *lp, int count, REAL *column, int *rowno); typedef MYBOOL (__WINAPI add_constraint_func)(lprec *lp, REAL *row, int constr_type, REAL rh); typedef MYBOOL (__WINAPI add_constraintex_func)(lprec *lp, int count, REAL *row, int *colno, int constr_type, REAL rh); typedef MYBOOL (__WINAPI add_lag_con_func)(lprec *lp, REAL *row, int con_type, REAL rhs); typedef int (__WINAPI add_SOS_func)(lprec *lp, char *name, int sostype, int priority, int count, int *sosvars, REAL *weights); typedef int (__WINAPI column_in_lp_func)(lprec *lp, REAL *column); typedef lprec * (__WINAPI copy_lp_func)(lprec *lp); typedef void (__WINAPI default_basis_func)(lprec *lp); typedef MYBOOL (__WINAPI del_column_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI del_constraint_func)(lprec *lp, int rownr); typedef void (__WINAPI delete_lp_func)(lprec *lp); typedef MYBOOL (__WINAPI dualize_lp_func)(lprec *lp); typedef void (__WINAPI free_lp_func)(lprec **plp); typedef int (__WINAPI get_anti_degen_func)(lprec *lp); typedef MYBOOL (__WINAPI get_basis_func)(lprec *lp, int *bascolumn, MYBOOL nonbasic); typedef int (__WINAPI get_basiscrash_func)(lprec *lp); typedef int (__WINAPI get_bb_depthlimit_func)(lprec *lp); typedef int (__WINAPI get_bb_floorfirst_func)(lprec *lp); typedef int (__WINAPI get_bb_rule_func)(lprec *lp); typedef MYBOOL (__WINAPI get_bounds_tighter_func)(lprec *lp); typedef REAL (__WINAPI get_break_at_value_func)(lprec *lp); typedef char * (__WINAPI get_col_name_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI get_column_func)(lprec *lp, int colnr, REAL *column); typedef int (__WINAPI get_columnex_func)(lprec *lp, int colnr, REAL *column, int *nzrow); typedef int (__WINAPI get_constr_type_func)(lprec *lp, int rownr); typedef REAL (__WINAPI get_constr_value_func)(lprec *lp, int rownr, int count, REAL *primsolution, int *nzindex); typedef MYBOOL (__WINAPI get_constraints_func)(lprec *lp, REAL *constr); typedef MYBOOL (__WINAPI get_dual_solution_func)(lprec *lp, REAL *rc); typedef REAL (__WINAPI get_epsb_func)(lprec *lp); typedef REAL (__WINAPI get_epsd_func)(lprec *lp); typedef REAL (__WINAPI get_epsel_func)(lprec *lp); typedef REAL (__WINAPI get_epsint_func)(lprec *lp); typedef REAL (__WINAPI get_epsperturb_func)(lprec *lp); typedef REAL (__WINAPI get_epspivot_func)(lprec *lp); typedef int (__WINAPI get_improve_func)(lprec *lp); typedef REAL (__WINAPI get_infinite_func)(lprec *lp); typedef MYBOOL (__WINAPI get_lambda_func)(lprec *lp, REAL *lambda); typedef REAL (__WINAPI get_lowbo_func)(lprec *lp, int colnr); typedef int (__WINAPI get_lp_index_func)(lprec *lp, int orig_index); typedef char * (__WINAPI get_lp_name_func)(lprec *lp); typedef int (__WINAPI get_Lrows_func)(lprec *lp); typedef REAL (__WINAPI get_mat_func)(lprec *lp, int rownr, int colnr); typedef REAL (__WINAPI get_mat_byindex_func)(lprec *lp, int matindex, MYBOOL isrow, MYBOOL adjustsign); typedef int (__WINAPI get_max_level_func)(lprec *lp); typedef int (__WINAPI get_maxpivot_func)(lprec *lp); typedef REAL (__WINAPI get_mip_gap_func)(lprec *lp, MYBOOL absolute); typedef int (__WINAPI get_multiprice_func)(lprec *lp, MYBOOL getabssize); typedef MYBOOL (__WINAPI is_use_names_func)(lprec *lp, MYBOOL isrow); typedef void (__WINAPI set_use_names_func)(lprec *lp, MYBOOL isrow, MYBOOL use_names); typedef int (__WINAPI get_nameindex_func)(lprec *lp, char *varname, MYBOOL isrow); typedef int (__WINAPI get_Ncolumns_func)(lprec *lp); typedef REAL (__WINAPI get_negrange_func)(lprec *lp); typedef int (__WINAPI get_nz_func)(lprec *lp); typedef int (__WINAPI get_Norig_columns_func)(lprec *lp); typedef int (__WINAPI get_Norig_rows_func)(lprec *lp); typedef int (__WINAPI get_Nrows_func)(lprec *lp); typedef REAL (__WINAPI get_obj_bound_func)(lprec *lp); typedef REAL (__WINAPI get_objective_func)(lprec *lp); typedef int (__WINAPI get_orig_index_func)(lprec *lp, int lp_index); typedef char * (__WINAPI get_origcol_name_func)(lprec *lp, int colnr); typedef char * (__WINAPI get_origrow_name_func)(lprec *lp, int rownr); typedef void (__WINAPI get_partialprice_func)(lprec *lp, int *blockcount, int *blockstart, MYBOOL isrow); typedef int (__WINAPI get_pivoting_func)(lprec *lp); typedef int (__WINAPI get_presolve_func)(lprec *lp); typedef int (__WINAPI get_presolveloops_func)(lprec *lp); typedef MYBOOL (__WINAPI get_primal_solution_func)(lprec *lp, REAL *pv); typedef int (__WINAPI get_print_sol_func)(lprec *lp); typedef MYBOOL (__WINAPI get_pseudocosts_func)(lprec *lp, REAL *clower, REAL *cupper, int *updatelimit); typedef MYBOOL (__WINAPI get_ptr_constraints_func)(lprec *lp, REAL **constr); typedef MYBOOL (__WINAPI get_ptr_dual_solution_func)(lprec *lp, REAL **rc); typedef MYBOOL (__WINAPI get_ptr_lambda_func)(lprec *lp, REAL **lambda); typedef MYBOOL (__WINAPI get_ptr_primal_solution_func)(lprec *lp, REAL **pv); typedef MYBOOL (__WINAPI get_ptr_sensitivity_obj_func)(lprec *lp, REAL **objfrom, REAL **objtill); typedef MYBOOL (__WINAPI get_ptr_sensitivity_objex_func)(lprec *lp, REAL **objfrom, REAL **objtill, REAL **objfromvalue, REAL **objtillvalue); typedef MYBOOL (__WINAPI get_ptr_sensitivity_rhs_func)(lprec *lp, REAL **duals, REAL **dualsfrom, REAL **dualstill); typedef MYBOOL (__WINAPI get_ptr_variables_func)(lprec *lp, REAL **var); typedef REAL (__WINAPI get_rh_func)(lprec *lp, int rownr); typedef REAL (__WINAPI get_rh_range_func)(lprec *lp, int rownr); typedef int (__WINAPI get_rowex_func)(lprec *lp, int rownr, REAL *row, int *colno); typedef MYBOOL (__WINAPI get_row_func)(lprec *lp, int rownr, REAL *row); typedef char * (__WINAPI get_row_name_func)(lprec *lp, int rownr); typedef REAL (__WINAPI get_scalelimit_func)(lprec *lp); typedef int (__WINAPI get_scaling_func)(lprec *lp); typedef MYBOOL (__WINAPI get_sensitivity_obj_func)(lprec *lp, REAL *objfrom, REAL *objtill); typedef MYBOOL (__WINAPI get_sensitivity_objex_func)(lprec *lp, REAL *objfrom, REAL *objtill, REAL *objfromvalue, REAL *objtillvalue); typedef MYBOOL (__WINAPI get_sensitivity_rhs_func)(lprec *lp, REAL *duals, REAL *dualsfrom, REAL *dualstill); typedef int (__WINAPI get_simplextype_func)(lprec *lp); typedef int (__WINAPI get_solutioncount_func)(lprec *lp); typedef int (__WINAPI get_solutionlimit_func)(lprec *lp); typedef int (__WINAPI get_status_func)(lprec *lp); typedef char * (__WINAPI get_statustext_func)(lprec *lp, int statuscode); typedef long (__WINAPI get_timeout_func)(lprec *lp); typedef COUNTER (__WINAPI get_total_iter_func)(lprec *lp); typedef COUNTER (__WINAPI get_total_nodes_func)(lprec *lp); typedef REAL (__WINAPI get_upbo_func)(lprec *lp, int colnr); typedef int (__WINAPI get_var_branch_func)(lprec *lp, int colnr); typedef REAL (__WINAPI get_var_dualresult_func)(lprec *lp, int index); typedef REAL (__WINAPI get_var_primalresult_func)(lprec *lp, int index); typedef int (__WINAPI get_var_priority_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI get_variables_func)(lprec *lp, REAL *var); typedef int (__WINAPI get_verbose_func)(lprec *lp); typedef MYBOOL (__WINAPI guess_basis_func)(lprec *lp, REAL *guessvector, int *basisvector); typedef REAL (__WINAPI get_working_objective_func)(lprec *lp); typedef MYBOOL (__WINAPI has_BFP_func)(lprec *lp); typedef MYBOOL (__WINAPI has_XLI_func)(lprec *lp); typedef MYBOOL (__WINAPI is_add_rowmode_func)(lprec *lp); typedef MYBOOL (__WINAPI is_anti_degen_func)(lprec *lp, int testmask); typedef MYBOOL (__WINAPI is_binary_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI is_break_at_first_func)(lprec *lp); typedef MYBOOL (__WINAPI is_constr_type_func)(lprec *lp, int rownr, int mask); typedef MYBOOL (__WINAPI is_debug_func)(lprec *lp); typedef MYBOOL (__WINAPI is_feasible_func)(lprec *lp, REAL *values, REAL threshold); typedef MYBOOL (__WINAPI is_unbounded_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI is_infinite_func)(lprec *lp, REAL value); typedef MYBOOL (__WINAPI is_int_func)(lprec *lp, int column); typedef MYBOOL (__WINAPI is_integerscaling_func)(lprec *lp); typedef MYBOOL (__WINAPI is_lag_trace_func)(lprec *lp); typedef MYBOOL (__WINAPI is_maxim_func)(lprec *lp); typedef MYBOOL (__WINAPI is_nativeBFP_func)(lprec *lp); typedef MYBOOL (__WINAPI is_nativeXLI_func)(lprec *lp); typedef MYBOOL (__WINAPI is_negative_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI is_obj_in_basis_func)(lprec *lp); typedef MYBOOL (__WINAPI is_piv_mode_func)(lprec *lp, int testmask); typedef MYBOOL (__WINAPI is_piv_rule_func)(lprec *lp, int rule); typedef MYBOOL (__WINAPI is_presolve_func)(lprec *lp, int testmask); typedef MYBOOL (__WINAPI is_scalemode_func)(lprec *lp, int testmask); typedef MYBOOL (__WINAPI is_scaletype_func)(lprec *lp, int scaletype); typedef MYBOOL (__WINAPI is_semicont_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI is_SOS_var_func)(lprec *lp, int colnr); typedef MYBOOL (__WINAPI is_trace_func)(lprec *lp); typedef void (__WINAPI lp_solve_version_func)(int *majorversion, int *minorversion, int *release, int *build); typedef lprec * (__WINAPI make_lp_func)(int rows, int columns); typedef void (__WINAPI print_constraints_func)(lprec *lp, int columns); typedef MYBOOL (__WINAPI print_debugdump_func)(lprec *lp, char *filename); typedef void (__WINAPI print_duals_func)(lprec *lp); typedef void (__WINAPI print_lp_func)(lprec *lp); typedef void (__WINAPI print_objective_func)(lprec *lp); typedef void (__WINAPI print_scales_func)(lprec *lp); typedef void (__WINAPI print_solution_func)(lprec *lp, int columns); typedef void (__WINAPI print_str_func)(lprec *lp, char *str); typedef void (__WINAPI print_tableau_func)(lprec *lp); typedef void (__WINAPI put_abortfunc_func)(lprec *lp, lphandle_intfunc newctrlc, void *ctrlchandle); typedef void (__WINAPI put_bb_nodefunc_func)(lprec *lp, lphandleint_intfunc newnode, void *bbnodehandle); typedef void (__WINAPI put_bb_branchfunc_func)(lprec *lp, lphandleint_intfunc newbranch, void *bbbranchhandle); typedef void (__WINAPI put_logfunc_func)(lprec *lp, lphandlestr_func newlog, void *loghandle); typedef void (__WINAPI put_msgfunc_func)(lprec *lp, lphandleint_func newmsg, void *msghandle, int mask); typedef lprec * (__WINAPI read_LP_func)(char *filename, int verbose, char *lp_name); typedef lprec * (__WINAPI read_MPS_func)(char *filename, int options); typedef lprec * (__WINAPI read_XLI_func)(char *xliname, char *modelname, char *dataname, char *options, int verbose); typedef MYBOOL (__WINAPI read_basis_func)(lprec *lp, char *filename, char *info); typedef void (__WINAPI reset_basis_func)(lprec *lp); typedef MYBOOL (__WINAPI read_params_func)(lprec *lp, char *filename, char *options); typedef void (__WINAPI reset_params_func)(lprec *lp); typedef MYBOOL (__WINAPI resize_lp_func)(lprec *lp, int rows, int columns); typedef MYBOOL (__WINAPI set_add_rowmode_func)(lprec *lp, MYBOOL turnon); typedef void (__WINAPI set_anti_degen_func)(lprec *lp, int anti_degen); typedef int (__WINAPI set_basisvar_func)(lprec *lp, int basisPos, int enteringCol); typedef MYBOOL (__WINAPI set_basis_func)(lprec *lp, int *bascolumn, MYBOOL nonbasic); typedef void (__WINAPI set_basiscrash_func)(lprec *lp, int mode); typedef void (__WINAPI set_bb_depthlimit_func)(lprec *lp, int bb_maxlevel); typedef void (__WINAPI set_bb_floorfirst_func)(lprec *lp, int bb_floorfirst); typedef void (__WINAPI set_bb_rule_func)(lprec *lp, int bb_rule); typedef MYBOOL (__WINAPI set_BFP_func)(lprec *lp, char *filename); typedef MYBOOL (__WINAPI set_binary_func)(lprec *lp, int colnr, MYBOOL must_be_bin); typedef MYBOOL (__WINAPI set_bounds_func)(lprec *lp, int colnr, REAL lower, REAL upper); typedef void (__WINAPI set_bounds_tighter_func)(lprec *lp, MYBOOL tighten); typedef void (__WINAPI set_break_at_first_func)(lprec *lp, MYBOOL break_at_first); typedef void (__WINAPI set_break_at_value_func)(lprec *lp, REAL break_at_value); typedef MYBOOL (__WINAPI set_column_func)(lprec *lp, int colnr, REAL *column); typedef MYBOOL (__WINAPI set_columnex_func)(lprec *lp, int colnr, int count, REAL *column, int *rowno); typedef MYBOOL (__WINAPI set_col_name_func)(lprec *lp, int colnr, char *new_name); typedef MYBOOL (__WINAPI set_constr_type_func)(lprec *lp, int rownr, int con_type); typedef void (__WINAPI set_debug_func)(lprec *lp, MYBOOL debug); typedef void (__WINAPI set_epsb_func)(lprec *lp, REAL epsb); typedef void (__WINAPI set_epsd_func)(lprec *lp, REAL epsd); typedef void (__WINAPI set_epsel_func)(lprec *lp, REAL epsel); typedef void (__WINAPI set_epsint_func)(lprec *lp, REAL epsint); typedef MYBOOL (__WINAPI set_epslevel_func)(lprec *lp, int epslevel); typedef void (__WINAPI set_epsperturb_func)(lprec *lp, REAL epsperturb); typedef void (__WINAPI set_epspivot_func)(lprec *lp, REAL epspivot); typedef MYBOOL (__WINAPI set_unbounded_func)(lprec *lp, int colnr); typedef void (__WINAPI set_improve_func)(lprec *lp, int improve); typedef void (__WINAPI set_infinite_func)(lprec *lp, REAL infinite); typedef MYBOOL (__WINAPI set_int_func)(lprec *lp, int colnr, MYBOOL must_be_int); typedef void (__WINAPI set_lag_trace_func)(lprec *lp, MYBOOL lag_trace); typedef MYBOOL (__WINAPI set_lowbo_func)(lprec *lp, int colnr, REAL value); typedef MYBOOL (__WINAPI set_lp_name_func)(lprec *lp, char *lpname); typedef MYBOOL (__WINAPI set_mat_func)(lprec *lp, int row, int column, REAL value); typedef void (__WINAPI set_maxim_func)(lprec *lp); typedef void (__WINAPI set_maxpivot_func)(lprec *lp, int max_num_inv); typedef void (__WINAPI set_minim_func)(lprec *lp); typedef void (__WINAPI set_mip_gap_func)(lprec *lp, MYBOOL absolute, REAL mip_gap); typedef MYBOOL (__WINAPI set_multiprice_func)(lprec *lp, int multiblockdiv); typedef void (__WINAPI set_negrange_func)(lprec *lp, REAL negrange); typedef MYBOOL (__WINAPI set_obj_func)(lprec *lp, int colnr, REAL value); typedef void (__WINAPI set_obj_bound_func)(lprec *lp, REAL obj_bound); typedef MYBOOL (__WINAPI set_obj_fn_func)(lprec *lp, REAL *row); typedef MYBOOL (__WINAPI set_obj_fnex_func)(lprec *lp, int count, REAL *row, int *colno); typedef void (__WINAPI set_obj_in_basis_func)(lprec *lp, MYBOOL obj_in_basis); typedef MYBOOL (__WINAPI set_outputfile_func)(lprec *lp, char *filename); typedef void (__WINAPI set_outputstream_func)(lprec *lp, FILE *stream); typedef MYBOOL (__WINAPI set_partialprice_func)(lprec *lp, int blockcount, int *blockstart, MYBOOL isrow); typedef void (__WINAPI set_pivoting_func)(lprec *lp, int piv_rule); typedef void (__WINAPI set_preferdual_func)(lprec *lp, MYBOOL dodual); typedef void (__WINAPI set_presolve_func)(lprec *lp, int presolvemode, int maxloops); typedef void (__WINAPI set_print_sol_func)(lprec *lp, int print_sol); typedef MYBOOL (__WINAPI set_pseudocosts_func)(lprec *lp, REAL *clower, REAL *cupper, int *updatelimit); typedef MYBOOL (__WINAPI set_rh_func)(lprec *lp, int rownr, REAL value); typedef MYBOOL (__WINAPI set_rh_range_func)(lprec *lp, int rownr, REAL deltavalue); typedef void (__WINAPI set_rh_vec_func)(lprec *lp, REAL *rh); typedef MYBOOL (__WINAPI set_row_func)(lprec *lp, int rownr, REAL *row); typedef MYBOOL (__WINAPI set_rowex_func)(lprec *lp, int rownr, int count, REAL *row, int *colno); typedef MYBOOL (__WINAPI set_row_name_func)(lprec *lp, int rownr, char *new_name); typedef void (__WINAPI set_scalelimit_func)(lprec *lp, REAL scalelimit); typedef void (__WINAPI set_scaling_func)(lprec *lp, int scalemode); typedef MYBOOL (__WINAPI set_semicont_func)(lprec *lp, int colnr, MYBOOL must_be_sc); typedef void (__WINAPI set_sense_func)(lprec *lp, MYBOOL maximize); typedef void (__WINAPI set_simplextype_func)(lprec *lp, int simplextype); typedef void (__WINAPI set_solutionlimit_func)(lprec *lp, int limit); typedef void (__WINAPI set_timeout_func)(lprec *lp, long sectimeout); typedef void (__WINAPI set_trace_func)(lprec *lp, MYBOOL trace); typedef MYBOOL (__WINAPI set_upbo_func)(lprec *lp, int colnr, REAL value); typedef MYBOOL (__WINAPI set_var_branch_func)(lprec *lp, int colnr, int branch_mode); typedef MYBOOL (__WINAPI set_var_weights_func)(lprec *lp, REAL *weights); typedef void (__WINAPI set_verbose_func)(lprec *lp, int verbose); typedef MYBOOL (__WINAPI set_XLI_func)(lprec *lp, char *filename); typedef int (__WINAPI solve_func)(lprec *lp); typedef MYBOOL (__WINAPI str_add_column_func)(lprec *lp, char *col_string); typedef MYBOOL (__WINAPI str_add_constraint_func)(lprec *lp, char *row_string ,int constr_type, REAL rh); typedef MYBOOL (__WINAPI str_add_lag_con_func)(lprec *lp, char *row_string, int con_type, REAL rhs); typedef MYBOOL (__WINAPI str_set_obj_fn_func)(lprec *lp, char *row_string); typedef MYBOOL (__WINAPI str_set_rh_vec_func)(lprec *lp, char *rh_string); typedef REAL (__WINAPI time_elapsed_func)(lprec *lp); typedef void (__WINAPI unscale_func)(lprec *lp); typedef MYBOOL (__WINAPI write_lp_func)(lprec *lp, char *filename); typedef MYBOOL (__WINAPI write_LP_func)(lprec *lp, FILE *output); typedef MYBOOL (__WINAPI write_mps_func)(lprec *lp, char *filename); typedef MYBOOL (__WINAPI write_MPS_func)(lprec *lp, FILE *output); typedef MYBOOL (__WINAPI write_freemps_func)(lprec *lp, char *filename); typedef MYBOOL (__WINAPI write_freeMPS_func)(lprec *lp, FILE *output); typedef MYBOOL (__WINAPI write_XLI_func)(lprec *lp, char *filename, char *options, MYBOOL results); typedef MYBOOL (__WINAPI write_basis_func)(lprec *lp, char *filename); typedef MYBOOL (__WINAPI write_params_func)(lprec *lp, char *filename, char *options); /* Prototypes for callbacks from basis inverse/factorization libraries */ /* ------------------------------------------------------------------------- */ typedef MYBOOL (__WINAPI userabortfunc)(lprec *lp, int level); typedef void (__VACALL reportfunc)(lprec *lp, int level, char *format, ...); typedef char * (__VACALL explainfunc)(lprec *lp, char *format, ...); typedef int (__WINAPI getvectorfunc)(lprec *lp, int varin, REAL *pcol, int *nzlist, int *maxabs); typedef int (__WINAPI getpackedfunc)(lprec *lp, int j, int rn[], double bj[]); typedef REAL (__WINAPI get_OF_activefunc)(lprec *lp, int varnr, REAL mult); typedef int (__WINAPI getMDOfunc)(lprec *lp, MYBOOL *usedpos, int *colorder, int *size, MYBOOL symmetric); typedef MYBOOL (__WINAPI invertfunc)(lprec *lp, MYBOOL shiftbounds, MYBOOL final); typedef void (__WINAPI set_actionfunc)(int *actionvar, int actionmask); typedef MYBOOL (__WINAPI is_actionfunc)(int actionvar, int testmask); typedef void (__WINAPI clear_actionfunc)(int *actionvar, int actionmask); /* Prototypes for basis inverse/factorization libraries */ /* ------------------------------------------------------------------------- */ typedef char *(BFP_CALLMODEL BFPchar)(void); typedef void (BFP_CALLMODEL BFP_lp)(lprec *lp); typedef void (BFP_CALLMODEL BFP_lpint)(lprec *lp, int newsize); typedef int (BFP_CALLMODEL BFPint_lp)(lprec *lp); typedef int (BFP_CALLMODEL BFPint_lpint)(lprec *lp, int kind); typedef REAL (BFP_CALLMODEL BFPreal_lp)(lprec *lp); typedef REAL *(BFP_CALLMODEL BFPrealp_lp)(lprec *lp); typedef void (BFP_CALLMODEL BFP_lpbool)(lprec *lp, MYBOOL maximum); typedef int (BFP_CALLMODEL BFPint_lpbool)(lprec *lp, MYBOOL maximum); typedef int (BFP_CALLMODEL BFPint_lpintintboolbool)(lprec *lp, int uservars, int Bsize, MYBOOL *usedpos, MYBOOL final); typedef void (BFP_CALLMODEL BFP_lprealint)(lprec *lp, REAL *pcol, int *nzidx); typedef void (BFP_CALLMODEL BFP_lprealintrealint)(lprec *lp, REAL *prow, int *pnzidx, REAL *drow, int *dnzidx); typedef MYBOOL (BFP_CALLMODEL BFPbool_lp)(lprec *lp); typedef MYBOOL (BFP_CALLMODEL BFPbool_lpbool)(lprec *lp, MYBOOL changesign); typedef MYBOOL (BFP_CALLMODEL BFPbool_lpint)(lprec *lp, int size); typedef MYBOOL (BFP_CALLMODEL BFPbool_lpintintchar)(lprec *lp, int size, int deltasize, char *options); typedef MYBOOL (BFP_CALLMODEL BFPbool_lpintintint)(lprec *lp, int size, int deltasize, int sizeofvar); typedef LREAL (BFP_CALLMODEL BFPlreal_lpintintreal)(lprec *lp, int row_nr, int col_nr, REAL *pcol); typedef REAL (BFP_CALLMODEL BFPreal_lplrealreal)(lprec *lp, LREAL theta, REAL *pcol); typedef int (BFP_CALLMODEL getcolumnex_func)(lprec *lp, int colnr, REAL *nzvalues, int *nzrows, int *mapin); typedef int (BFP_CALLMODEL BFPint_lpintrealcbintint)(lprec *lp, int items, getcolumnex_func cb, int *maprow, int*mapcol); /* Prototypes for external language libraries */ /* ------------------------------------------------------------------------- */ typedef char *(XLI_CALLMODEL XLIchar)(void); typedef MYBOOL (XLI_CALLMODEL XLIbool_lpintintint)(lprec* lp, int size, int deltasize, int sizevar); typedef MYBOOL (XLI_CALLMODEL XLIbool_lpcharcharcharint)(lprec *lp, char *modelname, char *dataname, char *options, int verbose); typedef MYBOOL (XLI_CALLMODEL XLIbool_lpcharcharbool)(lprec *lp, char *filename, char *options, MYBOOL results); /* Main lp_solve prototypes and function definitions */ /* ------------------------------------------------------------------------- */ struct _lprec { /* Full list of exported functions made available in a quasi object-oriented fashion */ add_column_func *add_column; add_columnex_func *add_columnex; add_constraint_func *add_constraint; add_constraintex_func *add_constraintex; add_lag_con_func *add_lag_con; add_SOS_func *add_SOS; column_in_lp_func *column_in_lp; copy_lp_func *copy_lp; default_basis_func *default_basis; del_column_func *del_column; del_constraint_func *del_constraint; delete_lp_func *delete_lp; dualize_lp_func *dualize_lp; free_lp_func *free_lp; get_anti_degen_func *get_anti_degen; get_basis_func *get_basis; get_basiscrash_func *get_basiscrash; get_bb_depthlimit_func *get_bb_depthlimit; get_bb_floorfirst_func *get_bb_floorfirst; get_bb_rule_func *get_bb_rule; get_bounds_tighter_func *get_bounds_tighter; get_break_at_value_func *get_break_at_value; get_col_name_func *get_col_name; get_columnex_func *get_columnex; get_constr_type_func *get_constr_type; get_constr_value_func *get_constr_value; get_constraints_func *get_constraints; get_dual_solution_func *get_dual_solution; get_epsb_func *get_epsb; get_epsd_func *get_epsd; get_epsel_func *get_epsel; get_epsint_func *get_epsint; get_epsperturb_func *get_epsperturb; get_epspivot_func *get_epspivot; get_improve_func *get_improve; get_infinite_func *get_infinite; get_lambda_func *get_lambda; get_lowbo_func *get_lowbo; get_lp_index_func *get_lp_index; get_lp_name_func *get_lp_name; get_Lrows_func *get_Lrows; get_mat_func *get_mat; get_mat_byindex_func *get_mat_byindex; get_max_level_func *get_max_level; get_maxpivot_func *get_maxpivot; get_mip_gap_func *get_mip_gap; get_multiprice_func *get_multiprice; get_nameindex_func *get_nameindex; get_Ncolumns_func *get_Ncolumns; get_negrange_func *get_negrange; get_nz_func *get_nonzeros; get_Norig_columns_func *get_Norig_columns; get_Norig_rows_func *get_Norig_rows; get_Nrows_func *get_Nrows; get_obj_bound_func *get_obj_bound; get_objective_func *get_objective; get_orig_index_func *get_orig_index; get_origcol_name_func *get_origcol_name; get_origrow_name_func *get_origrow_name; get_partialprice_func *get_partialprice; get_pivoting_func *get_pivoting; get_presolve_func *get_presolve; get_presolveloops_func *get_presolveloops; get_primal_solution_func *get_primal_solution; get_print_sol_func *get_print_sol; get_pseudocosts_func *get_pseudocosts; get_ptr_constraints_func *get_ptr_constraints; get_ptr_dual_solution_func *get_ptr_dual_solution; get_ptr_lambda_func *get_ptr_lambda; get_ptr_primal_solution_func *get_ptr_primal_solution; get_ptr_sensitivity_obj_func *get_ptr_sensitivity_obj; get_ptr_sensitivity_objex_func *get_ptr_sensitivity_objex; get_ptr_sensitivity_rhs_func *get_ptr_sensitivity_rhs; get_ptr_variables_func *get_ptr_variables; get_rh_func *get_rh; get_rh_range_func *get_rh_range; get_row_func *get_row; get_rowex_func *get_rowex; get_row_name_func *get_row_name; get_scalelimit_func *get_scalelimit; get_scaling_func *get_scaling; get_sensitivity_obj_func *get_sensitivity_obj; get_sensitivity_objex_func *get_sensitivity_objex; get_sensitivity_rhs_func *get_sensitivity_rhs; get_simplextype_func *get_simplextype; get_solutioncount_func *get_solutioncount; get_solutionlimit_func *get_solutionlimit; get_status_func *get_status; get_statustext_func *get_statustext; get_timeout_func *get_timeout; get_total_iter_func *get_total_iter; get_total_nodes_func *get_total_nodes; get_upbo_func *get_upbo; get_var_branch_func *get_var_branch; get_var_dualresult_func *get_var_dualresult; get_var_primalresult_func *get_var_primalresult; get_var_priority_func *get_var_priority; get_variables_func *get_variables; get_verbose_func *get_verbose; get_working_objective_func *get_working_objective; has_BFP_func *has_BFP; has_XLI_func *has_XLI; is_add_rowmode_func *is_add_rowmode; is_anti_degen_func *is_anti_degen; is_binary_func *is_binary; is_break_at_first_func *is_break_at_first; is_constr_type_func *is_constr_type; is_debug_func *is_debug; is_feasible_func *is_feasible; is_infinite_func *is_infinite; is_int_func *is_int; is_integerscaling_func *is_integerscaling; is_lag_trace_func *is_lag_trace; is_maxim_func *is_maxim; is_nativeBFP_func *is_nativeBFP; is_nativeXLI_func *is_nativeXLI; is_negative_func *is_negative; is_obj_in_basis_func *is_obj_in_basis; is_piv_mode_func *is_piv_mode; is_piv_rule_func *is_piv_rule; is_presolve_func *is_presolve; is_scalemode_func *is_scalemode; is_scaletype_func *is_scaletype; is_semicont_func *is_semicont; is_SOS_var_func *is_SOS_var; is_trace_func *is_trace; is_unbounded_func *is_unbounded; is_use_names_func *is_use_names; lp_solve_version_func *lp_solve_version; make_lp_func *make_lp; print_constraints_func *print_constraints; print_debugdump_func *print_debugdump; print_duals_func *print_duals; print_lp_func *print_lp; print_objective_func *print_objective; print_scales_func *print_scales; print_solution_func *print_solution; print_str_func *print_str; print_tableau_func *print_tableau; put_abortfunc_func *put_abortfunc; put_bb_nodefunc_func *put_bb_nodefunc; put_bb_branchfunc_func *put_bb_branchfunc; put_logfunc_func *put_logfunc; put_msgfunc_func *put_msgfunc; read_LP_func *read_LP; read_MPS_func *read_MPS; read_XLI_func *read_XLI; read_params_func *read_params; read_basis_func *read_basis; reset_basis_func *reset_basis; reset_params_func *reset_params; resize_lp_func *resize_lp; set_add_rowmode_func *set_add_rowmode; set_anti_degen_func *set_anti_degen; set_basisvar_func *set_basisvar; set_basis_func *set_basis; set_basiscrash_func *set_basiscrash; set_bb_depthlimit_func *set_bb_depthlimit; set_bb_floorfirst_func *set_bb_floorfirst; set_bb_rule_func *set_bb_rule; set_BFP_func *set_BFP; set_binary_func *set_binary; set_bounds_func *set_bounds; set_bounds_tighter_func *set_bounds_tighter; set_break_at_first_func *set_break_at_first; set_break_at_value_func *set_break_at_value; set_column_func *set_column; set_columnex_func *set_columnex; set_col_name_func *set_col_name; set_constr_type_func *set_constr_type; set_debug_func *set_debug; set_epsb_func *set_epsb; set_epsd_func *set_epsd; set_epsel_func *set_epsel; set_epsint_func *set_epsint; set_epslevel_func *set_epslevel; set_epsperturb_func *set_epsperturb; set_epspivot_func *set_epspivot; set_unbounded_func *set_unbounded; set_improve_func *set_improve; set_infinite_func *set_infinite; set_int_func *set_int; set_lag_trace_func *set_lag_trace; set_lowbo_func *set_lowbo; set_lp_name_func *set_lp_name; set_mat_func *set_mat; set_maxim_func *set_maxim; set_maxpivot_func *set_maxpivot; set_minim_func *set_minim; set_mip_gap_func *set_mip_gap; set_multiprice_func *set_multiprice; set_negrange_func *set_negrange; set_obj_bound_func *set_obj_bound; set_obj_fn_func *set_obj_fn; set_obj_fnex_func *set_obj_fnex; set_obj_func *set_obj; set_obj_in_basis_func *set_obj_in_basis; set_outputfile_func *set_outputfile; set_outputstream_func *set_outputstream; set_partialprice_func *set_partialprice; set_pivoting_func *set_pivoting; set_preferdual_func *set_preferdual; set_presolve_func *set_presolve; set_print_sol_func *set_print_sol; set_pseudocosts_func *set_pseudocosts; set_rh_func *set_rh; set_rh_range_func *set_rh_range; set_rh_vec_func *set_rh_vec; set_row_func *set_row; set_rowex_func *set_rowex; set_row_name_func *set_row_name; set_scalelimit_func *set_scalelimit; set_scaling_func *set_scaling; set_semicont_func *set_semicont; set_sense_func *set_sense; set_simplextype_func *set_simplextype; set_solutionlimit_func *set_solutionlimit; set_timeout_func *set_timeout; set_trace_func *set_trace; set_upbo_func *set_upbo; set_use_names_func *set_use_names; set_var_branch_func *set_var_branch; set_var_weights_func *set_var_weights; set_verbose_func *set_verbose; set_XLI_func *set_XLI; solve_func *solve; str_add_column_func *str_add_column; str_add_constraint_func *str_add_constraint; str_add_lag_con_func *str_add_lag_con; str_set_obj_fn_func *str_set_obj_fn; str_set_rh_vec_func *str_set_rh_vec; time_elapsed_func *time_elapsed; unscale_func *unscale; write_lp_func *write_lp; write_LP_func *write_LP; write_mps_func *write_mps; write_MPS_func *write_MPS; write_freemps_func *write_freemps; write_freeMPS_func *write_freeMPS; write_XLI_func *write_XLI; write_basis_func *write_basis; write_params_func *write_params; /* Spacer */ int *alignmentspacer; /* Problem description */ char *lp_name; /* The name of the model */ /* Problem sizes */ int sum; /* The total number of variables, including slacks */ int rows; int columns; int equalities; /* No of non-Lagrangean equality constraints in the problem */ int boundedvars; /* Count of bounded variables */ int INTfuture1; /* Memory allocation sizes */ int sum_alloc; /* The allocated memory for row+column-sized data */ int rows_alloc; /* The allocated memory for row-sized data */ int columns_alloc; /* The allocated memory for column-sized data */ /* Model status and solver result variables */ MYBOOL source_is_file; /* The base model was read from a file */ MYBOOL model_is_pure; /* The model has been built entirely from row and column additions */ MYBOOL model_is_valid; /* Has this lp pased the 'test' */ MYBOOL tighten_on_set; /* Specify if bounds will be tightened or overriden at bound setting */ MYBOOL names_used; /* Flag to indicate if names for rows and columns are used */ MYBOOL use_row_names; /* Flag to indicate if names for rows are used */ MYBOOL use_col_names; /* Flag to indicate if names for columns are used */ MYBOOL lag_trace; /* Print information on Lagrange progression */ MYBOOL spx_trace; /* Print information on simplex progression */ MYBOOL bb_trace; /* TRUE to print extra debug information */ MYBOOL streamowned; /* TRUE if the handle should be closed at delete_lp() */ MYBOOL obj_in_basis; /* TRUE if the objective function is in the basis matrix */ int spx_status; /* Simplex solver feasibility/mode code */ int lag_status; /* Extra status variable for lag_solve */ int solutioncount; /* number of equal-valued solutions found (up to solutionlimit) */ int solutionlimit; /* upper number of equal-valued solutions kept track of */ REAL real_solution; /* Optimal non-MIP solution base */ REAL *solution; /* sum_alloc+1 : Solution array of the next to optimal LP, Index 0 : Objective function value, Indeces 1..rows : Slack variable values, Indeced rows+1..sum : Variable values */ REAL *best_solution; /* sum_alloc+1 : Solution array of optimal 'Integer' LP, structured as the solution array above */ REAL *full_solution; /* sum_alloc+1 : Final solution array expanded for deleted variables */ REAL *edgeVector; /* Array of reduced cost scaling norms (DEVEX and Steepest Edge) */ REAL *drow; /* sum+1: Reduced costs of the last simplex */ int *nzdrow; /* sum+1: Indeces of non-zero reduced costs of the last simplex */ REAL *duals; /* rows_alloc+1 : The dual variables of the last LP */ REAL *full_duals; /* sum_alloc+1: Final duals array expanded for deleted variables */ REAL *dualsfrom; /* sum_alloc+1 :The sensitivity on dual variables/reduced costs of the last LP */ REAL *dualstill; /* sum_alloc+1 :The sensitivity on dual variables/reduced costs of the last LP */ REAL *objfrom; /* columns_alloc+1 :The sensitivity on objective function of the last LP */ REAL *objtill; /* columns_alloc+1 :The sensitivity on objective function of the last LP */ REAL *objfromvalue; /* columns_alloc+1 :The value of the variables when objective value is at its from value of the last LP */ REAL *orig_obj; /* Unused pointer - Placeholder for OF not part of B */ REAL *obj; /* Special vector used to temporarily change the OF vector */ COUNTER current_iter; /* Number of iterations in the current/last simplex */ COUNTER total_iter; /* Number of iterations over all B&B steps */ COUNTER current_bswap; /* Number of bound swaps in the current/last simplex */ COUNTER total_bswap; /* Number of bount swaps over all B&B steps */ int solvecount; /* The number of solve() performed in this model */ int max_pivots; /* Number of pivots between refactorizations of the basis */ /* Various execution parameters */ int simplex_strategy; /* Set desired combination of primal and dual simplex algorithms */ int simplex_mode; /* Specifies the current simplex mode during solve; see simplex_strategy */ int verbose; /* Set amount of run-time messages and results */ int print_sol; /* TRUE to print optimal solution; AUTOMATIC skips zeros */ FILE *outstream; /* Output stream, initialized to STDOUT */ /* Main Branch and Bound settings */ MYBOOL *bb_varbranch; /* Determines branching strategy at the individual variable level; the setting here overrides the bb_floorfirst setting */ int piv_strategy; /* Strategy for selecting row and column entering/leaving */ int _piv_rule_; /* Internal working rule-part of piv_strategy above */ int bb_rule; /* Rule for selecting B&B variables */ MYBOOL bb_floorfirst; /* Set BRANCH_FLOOR for B&B to set variables to floor bound first; conversely with BRANCH_CEILING, the ceiling value is set first */ MYBOOL bb_breakfirst; /* TRUE to stop at first feasible solution */ MYBOOL _piv_left_; /* Internal variable indicating active pricing loop order */ MYBOOL BOOLfuture1; REAL scalelimit; /* Relative convergence criterion for iterated scaling */ int scalemode; /* OR-ed codes for data scaling */ int improve; /* Set to non-zero for iterative improvement */ int anti_degen; /* Anti-degen strategy (or none) TRUE to avoid cycling */ int do_presolve; /* PRESOLVE_ parameters for LP presolving */ int presolveloops; /* Maximum number of presolve loops */ int perturb_count; /* The number of bound relaxation retries performed */ /* Row and column names storage variables */ hashelem **row_name; /* rows_alloc+1 */ hashelem **col_name; /* columns_alloc+1 */ hashtable *rowname_hashtab; /* hash table to store row names */ hashtable *colname_hashtab; /* hash table to store column names */ /* Optionally specify continuous rows/column blocks for partial pricing */ partialrec *rowblocks; partialrec *colblocks; /* Row and column type codes */ MYBOOL *var_type; /* sum_alloc+1 : TRUE if variable must be integer */ /* Data for multiple pricing */ multirec *multivars; int multiblockdiv; /* The divisor used to set or augment pricing block */ /* Variable (column) parameters */ int fixedvars; /* The current number of basic fixed variables in the model */ int int_vars; /* Number of variables required to be integer */ int sc_vars; /* Number of semi-continuous variables */ REAL *sc_lobound; /* sum_columns+1 : TRUE if variable is semi-continuous; value replaced by conventional lower bound during solve */ int *var_is_free; /* columns+1: Index of twin variable if variable is free */ int *var_priority; /* columns: Priority-mapping of variables */ SOSgroup *GUB; /* Pointer to record containing GUBs */ int sos_vars; /* Number of variables in the sos_priority list */ int sos_ints; /* Number of integers in SOS'es above */ SOSgroup *SOS; /* Pointer to record containing all SOS'es */ int *sos_priority; /* Priority-sorted list of variables (no duplicates) */ /* Optionally specify list of active rows/columns used in multiple pricing */ REAL *bsolveVal; /* rows+1: bsolved solution vector for reduced costs */ int *bsolveIdx; /* rows+1: Non-zero indeces of bsolveVal */ /* RHS storage */ REAL *orig_rhs; /* rows_alloc+1 : The RHS after scaling and sign changing, but before 'Bound transformation' */ LREAL *rhs; /* rows_alloc+1 : The RHS of the current simplex tableau */ /* Row (constraint) parameters */ int *row_type; /* rows_alloc+1 : Row/constraint type coding */ /* Optionally specify data for dual long-step */ multirec *longsteps; /* Original and working row and variable bounds */ REAL *orig_upbo; /* sum_alloc+1 : Bound before transformations */ REAL *upbo; /* " " : Upper bound after transformation and B&B work */ REAL *orig_lowbo; /* " " */ REAL *lowbo; /* " " : Lower bound after transformation and B&B work */ /* User data and basis factorization matrices (ETA or LU, product form) */ MATrec *matA; INVrec *invB; /* Basis and bounds */ BBrec *bb_bounds; /* The linked list of B&B bounds */ BBrec *rootbounds; /* The bounds at the lowest B&B level */ basisrec *bb_basis; /* The linked list of B&B bases */ basisrec *rootbasis; OBJmonrec *monitor; /* Objective monitoring record for stalling/degeneracy handling */ /* Scaling parameters */ REAL *scalars; /* sum_alloc+1:0..Rows the scaling of the rows, Rows+1..Sum the scaling of the columns */ MYBOOL scaling_used; /* TRUE if scaling is used */ MYBOOL columns_scaled; /* TRUE if the columns are scaled too */ MYBOOL varmap_locked; /* Determines whether the var_to_orig and orig_to_var are fixed */ /* Variable state information */ MYBOOL basis_valid; /* TRUE is the basis is still valid */ int crashmode; /* Basis crashing mode (or none) */ int *var_basic; /* rows_alloc+1: The list of columns in the basis */ REAL *val_nonbasic; /* Array to store current values of non-basic variables */ MYBOOL *is_basic; /* sum_alloc+1: TRUE if the column is in the basis */ MYBOOL *is_lower; /* " " : TRUE if the variable is at its lower bound (or in the basis), FALSE otherwise */ /* Simplex basis indicators */ int *rejectpivot; /* List of unacceptable pivot choices due to division-by-zero */ BBPSrec *bb_PseudoCost; /* Data structure for costing of node branchings */ int bb_PseudoUpdates; /* Maximum number of updates for pseudo-costs */ int bb_strongbranches; /* The number of strong B&B branches performed */ int is_strongbranch; /* Are we currently in a strong branch mode? */ int bb_improvements; /* The number of discrete B&B objective improvement steps */ /* Solver working variables */ REAL rhsmax; /* The maximum |value| of the rhs vector at any iteration */ REAL suminfeas; /* The working sum of primal and dual infeasibilities */ REAL bigM; /* Original objective weighting in primal phase 1 */ REAL P1extraVal; /* Phase 1 OF/RHS offset for feasibility */ int P1extraDim; /* Phase 1 additional columns/rows for feasibility */ int spx_action; /* ACTION_ variables for the simplex routine */ MYBOOL spx_perturbed; /* The variable bounds were relaxed/perturbed into this simplex */ MYBOOL bb_break; /* Solver working variable; signals break of the B&B */ MYBOOL wasPreprocessed; /* The solve preprocessing was performed */ MYBOOL wasPresolved; /* The solve presolver was invoked */ int INTfuture2; /* Lagragean solver storage and parameters */ MATrec *matL; REAL *lag_rhs; /* Array of Lagrangean rhs vector */ int *lag_con_type; /* Array of GT, LT or EQ */ REAL *lambda; /* Lambda values (Lagrangean multipliers) */ /* REAL lag_bound; */ /* The Lagrangian lower OF bound */ /* REAL lag_accept; */ /* The Lagrangian convergence criterion */ REAL accuracy; REAL accuracy_error; /* Solver thresholds */ REAL infinite; /* Limit for dynamic range */ REAL negrange; /* Limit for negative variable range */ REAL epsmachine; /* Default machine accuracy */ REAL epsvalue; /* Input data precision / rounding of data values to 0 */ REAL epsprimal; /* For rounding RHS values to 0/infeasibility */ REAL epsdual; /* For rounding reduced costs to zero */ REAL epspivot; /* Pivot reject tolerance */ REAL epsperturb; /* Perturbation scalar */ REAL epssolution; /* The solution tolerance for final validation */ /* Branch & Bound working parameters */ int bb_status; /* Indicator that the last solvelp() gave an improved B&B solution */ int bb_level; /* Solver B&B working variable (recursion depth) */ int bb_maxlevel; /* The deepest B&B level of the last solution */ int bb_limitlevel; /* The maximum B&B level allowed */ COUNTER bb_totalnodes; /* Total number of nodes processed in B&B */ int bb_solutionlevel; /* The B&B level of the last / best solution */ int bb_cutpoolsize; /* Size of the B&B cut pool */ int bb_cutpoolused; /* Currently used cut pool */ int bb_constraintOF; /* General purpose B&B parameter (typically for testing) */ int *bb_cuttype; /* The type of the currently used cuts */ int *bb_varactive; /* The B&B state of the variable; 0 means inactive */ DeltaVrec *bb_upperchange; /* Changes to upper bounds during the B&B phase */ DeltaVrec *bb_lowerchange; /* Changes to lower bounds during the B&B phase */ REAL bb_deltaOF; /* Minimum OF step value; computed at beginning of solve() */ REAL bb_breakOF; /* User-settable value for the objective function deemed to be sufficiently good in an integer problem */ REAL bb_limitOF; /* "Dual" bound / limit to final optimal MIP solution */ REAL bb_heuristicOF; /* Set initial "at least better than" guess for objective function (can significantly speed up B&B iterations) */ REAL bb_parentOF; /* The OF value of the previous BB simplex */ REAL bb_workOF; /* The unadjusted OF value for the current best solution */ /* Internal work arrays allocated as required */ presolveundorec *presolve_undo; workarraysrec *workarrays; /* MIP parameters */ REAL epsint; /* Margin of error in determining if a float value is integer */ REAL mip_absgap; /* Absolute MIP gap */ REAL mip_relgap; /* Relative MIP gap */ /* Time/timer variables and extended status text */ double timecreate; double timestart; double timeheuristic; double timepresolved; double timeend; long sectimeout; /* Extended status message text set via explain() */ char *ex_status; /* Refactorization engine interface routines (for dynamic DLL/SO BFPs) */ #if LoadInverseLib == TRUE #ifdef WIN32 HINSTANCE hBFP; #else void *hBFP; #endif #endif BFPchar *bfp_name; BFPbool_lpintintint *bfp_compatible; BFPbool_lpintintchar *bfp_init; BFP_lp *bfp_free; BFPbool_lpint *bfp_resize; BFPint_lp *bfp_memallocated; BFPbool_lp *bfp_restart; BFPbool_lp *bfp_mustrefactorize; BFPint_lp *bfp_preparefactorization; BFPint_lpintintboolbool *bfp_factorize; BFP_lp *bfp_finishfactorization; BFP_lp *bfp_updaterefactstats; BFPlreal_lpintintreal *bfp_prepareupdate; BFPreal_lplrealreal *bfp_pivotRHS; BFPbool_lpbool *bfp_finishupdate; BFP_lprealint *bfp_ftran_prepare; BFP_lprealint *bfp_ftran_normal; BFP_lprealint *bfp_btran_normal; BFP_lprealintrealint *bfp_btran_double; BFPint_lp *bfp_status; BFPint_lpbool *bfp_nonzeros; BFPbool_lp *bfp_implicitslack; BFPint_lp *bfp_indexbase; BFPint_lp *bfp_rowoffset; BFPint_lp *bfp_pivotmax; BFPbool_lpint *bfp_pivotalloc; BFPint_lp *bfp_colcount; BFPbool_lp *bfp_canresetbasis; BFPreal_lp *bfp_efficiency; BFPrealp_lp *bfp_pivotvector; BFPint_lp *bfp_pivotcount; BFPint_lpint *bfp_refactcount; BFPbool_lp *bfp_isSetI; BFPint_lpintrealcbintint *bfp_findredundant; /* External language interface routines (for dynamic DLL/SO XLIs) */ #if LoadLanguageLib == TRUE #ifdef WIN32 HINSTANCE hXLI; #else void *hXLI; #endif #endif XLIchar *xli_name; XLIbool_lpintintint *xli_compatible; XLIbool_lpcharcharcharint *xli_readmodel; XLIbool_lpcharcharbool *xli_writemodel; /* Miscellaneous internal functions made available externally */ userabortfunc *userabort; reportfunc *report; explainfunc *explain; getvectorfunc *get_lpcolumn; getpackedfunc *get_basiscolumn; get_OF_activefunc *get_OF_active; getMDOfunc *getMDO; invertfunc *invert; set_actionfunc *set_action; is_actionfunc *is_action; clear_actionfunc *clear_action; /* User program interface callbacks */ lphandle_intfunc *ctrlc; void *ctrlchandle; /* User-specified "owner process ID" */ lphandlestr_func *writelog; void *loghandle; /* User-specified "owner process ID" */ lphandlestr_func *debuginfo; lphandleint_func *usermessage; int msgmask; void *msghandle; /* User-specified "owner process ID" */ lphandleint_intfunc *bb_usenode; void *bb_nodehandle; /* User-specified "owner process ID" */ lphandleint_intfunc *bb_usebranch; void *bb_branchhandle; /* User-specified "owner process ID" */ /* replacement of static variables */ char *rowcol_name; /* The name of a row/column */ }; #ifdef __cplusplus __EXTERN_C { #endif /* User and system function interfaces */ /* ------------------------------------------------------------------------- */ void __EXPORT_TYPE __WINAPI lp_solve_version(int *majorversion, int *minorversion, int *release, int *build); lprec __EXPORT_TYPE * __WINAPI make_lp(int rows, int columns); MYBOOL __EXPORT_TYPE __WINAPI resize_lp(lprec *lp, int rows, int columns); int __EXPORT_TYPE __WINAPI get_status(lprec *lp); char __EXPORT_TYPE * __WINAPI get_statustext(lprec *lp, int statuscode); MYBOOL __EXPORT_TYPE __WINAPI is_obj_in_basis(lprec *lp); void __EXPORT_TYPE __WINAPI set_obj_in_basis(lprec *lp, MYBOOL obj_in_basis); /* Create and initialise a lprec structure defaults */ lprec __EXPORT_TYPE * __WINAPI copy_lp(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI dualize_lp(lprec *lp); STATIC MYBOOL memopt_lp(lprec *lp, int rowextra, int colextra, int nzextra); /* Copy or dualize the lp */ void __EXPORT_TYPE __WINAPI delete_lp(lprec *lp); void __EXPORT_TYPE __WINAPI free_lp(lprec **plp); /* Remove problem from memory */ MYBOOL __EXPORT_TYPE __WINAPI set_lp_name(lprec *lp, char *lpname); char __EXPORT_TYPE * __WINAPI get_lp_name(lprec *lp); /* Set and get the problem name */ MYBOOL __EXPORT_TYPE __WINAPI has_BFP(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI is_nativeBFP(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI set_BFP(lprec *lp, char *filename); /* Set basis factorization engine */ lprec __EXPORT_TYPE * __WINAPI read_XLI(char *xliname, char *modelname, char *dataname, char *options, int verbose); MYBOOL __EXPORT_TYPE __WINAPI write_XLI(lprec *lp, char *filename, char *options, MYBOOL results); MYBOOL __EXPORT_TYPE __WINAPI has_XLI(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI is_nativeXLI(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI set_XLI(lprec *lp, char *filename); /* Set external language interface */ MYBOOL __EXPORT_TYPE __WINAPI set_obj(lprec *lp, int colnr, REAL value); MYBOOL __EXPORT_TYPE __WINAPI set_obj_fn(lprec *lp, REAL *row); MYBOOL __EXPORT_TYPE __WINAPI set_obj_fnex(lprec *lp, int count, REAL *row, int *colno); /* set the objective function (Row 0) of the matrix */ MYBOOL __EXPORT_TYPE __WINAPI str_set_obj_fn(lprec *lp, char *row_string); /* The same, but with string input */ void __EXPORT_TYPE __WINAPI set_sense(lprec *lp, MYBOOL maximize); void __EXPORT_TYPE __WINAPI set_maxim(lprec *lp); void __EXPORT_TYPE __WINAPI set_minim(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI is_maxim(lprec *lp); /* Set optimization direction for the objective function */ MYBOOL __EXPORT_TYPE __WINAPI add_constraint(lprec *lp, REAL *row, int constr_type, REAL rh); MYBOOL __EXPORT_TYPE __WINAPI add_constraintex(lprec *lp, int count, REAL *row, int *colno, int constr_type, REAL rh); MYBOOL __EXPORT_TYPE __WINAPI set_add_rowmode(lprec *lp, MYBOOL turnon); MYBOOL __EXPORT_TYPE __WINAPI is_add_rowmode(lprec *lp); /* Add a constraint to the problem, row is the constraint row, rh is the right hand side, constr_type is the type of constraint (LE (<=), GE(>=), EQ(=)) */ MYBOOL __EXPORT_TYPE __WINAPI str_add_constraint(lprec *lp, char *row_string, int constr_type, REAL rh); /* The same, but with string input */ MYBOOL __EXPORT_TYPE __WINAPI set_row(lprec *lp, int rownr, REAL *row); MYBOOL __EXPORT_TYPE __WINAPI set_rowex(lprec *lp, int rownr, int count, REAL *row, int *colno); MYBOOL __EXPORT_TYPE __WINAPI get_row(lprec *lp, int rownr, REAL *row); int __EXPORT_TYPE __WINAPI get_rowex(lprec *lp, int rownr, REAL *row, int *colno); /* Fill row with the row row_nr from the problem */ MYBOOL __EXPORT_TYPE __WINAPI del_constraint(lprec *lp, int rownr); STATIC MYBOOL del_constraintex(lprec *lp, LLrec *rowmap); /* Remove constrain nr del_row from the problem */ MYBOOL __EXPORT_TYPE __WINAPI add_lag_con(lprec *lp, REAL *row, int con_type, REAL rhs); /* add a Lagrangian constraint of form Row' x contype Rhs */ MYBOOL __EXPORT_TYPE __WINAPI str_add_lag_con(lprec *lp, char *row_string, int con_type, REAL rhs); /* The same, but with string input */ void __EXPORT_TYPE __WINAPI set_lag_trace(lprec *lp, MYBOOL lag_trace); MYBOOL __EXPORT_TYPE __WINAPI is_lag_trace(lprec *lp); /* Set debugging/tracing mode of the Lagrangean solver */ MYBOOL __EXPORT_TYPE __WINAPI set_constr_type(lprec *lp, int rownr, int con_type); int __EXPORT_TYPE __WINAPI get_constr_type(lprec *lp, int rownr); REAL __EXPORT_TYPE __WINAPI get_constr_value(lprec *lp, int rownr, int count, REAL *primsolution, int *nzindex); MYBOOL __EXPORT_TYPE __WINAPI is_constr_type(lprec *lp, int rownr, int mask); STATIC char *get_str_constr_type(lprec *lp, int con_type); STATIC int get_constr_class(lprec *lp, int rownr); STATIC char *get_str_constr_class(lprec *lp, int con_class); /* Set the type of constraint in row Row (LE, GE, EQ) */ MYBOOL __EXPORT_TYPE __WINAPI set_rh(lprec *lp, int rownr, REAL value); REAL __EXPORT_TYPE __WINAPI get_rh(lprec *lp, int rownr); /* Set and get the right hand side of a constraint row */ MYBOOL __EXPORT_TYPE __WINAPI set_rh_range(lprec *lp, int rownr, REAL deltavalue); REAL __EXPORT_TYPE __WINAPI get_rh_range(lprec *lp, int rownr); /* Set the RHS range; i.e. the lower and upper bounds of a constraint row */ void __EXPORT_TYPE __WINAPI set_rh_vec(lprec *lp, REAL *rh); /* Set the right hand side vector */ MYBOOL __EXPORT_TYPE __WINAPI str_set_rh_vec(lprec *lp, char *rh_string); /* The same, but with string input */ MYBOOL __EXPORT_TYPE __WINAPI add_column(lprec *lp, REAL *column); MYBOOL __EXPORT_TYPE __WINAPI add_columnex(lprec *lp, int count, REAL *column, int *rowno); MYBOOL __EXPORT_TYPE __WINAPI str_add_column(lprec *lp, char *col_string); /* Add a column to the problem */ MYBOOL __EXPORT_TYPE __WINAPI set_column(lprec *lp, int colnr, REAL *column); MYBOOL __EXPORT_TYPE __WINAPI set_columnex(lprec *lp, int colnr, int count, REAL *column, int *rowno); /* Overwrite existing column data */ int __EXPORT_TYPE __WINAPI column_in_lp(lprec *lp, REAL *column); /* Returns the column index if column is already present in lp, otherwise 0. (Does not look at bounds and types, only looks at matrix values */ int __EXPORT_TYPE __WINAPI get_columnex(lprec *lp, int colnr, REAL *column, int *nzrow); MYBOOL __EXPORT_TYPE __WINAPI get_column(lprec *lp, int colnr, REAL *column); /* Fill column with the column col_nr from the problem */ MYBOOL __EXPORT_TYPE __WINAPI del_column(lprec *lp, int colnr); STATIC MYBOOL del_columnex(lprec *lp, LLrec *colmap); /* Delete a column */ MYBOOL __EXPORT_TYPE __WINAPI set_mat(lprec *lp, int rownr, int colnr, REAL value); /* Fill in element (Row,Column) of the matrix Row in [0..Rows] and Column in [1..Columns] */ REAL __EXPORT_TYPE __WINAPI get_mat(lprec *lp, int rownr, int colnr); REAL __EXPORT_TYPE __WINAPI get_mat_byindex(lprec *lp, int matindex, MYBOOL isrow, MYBOOL adjustsign); int __EXPORT_TYPE __WINAPI get_nonzeros(lprec *lp); /* get a single element from the matrix */ /* Name changed from "mat_elm" by KE */ void __EXPORT_TYPE __WINAPI set_bounds_tighter(lprec *lp, MYBOOL tighten); MYBOOL get_bounds(lprec *lp, int column, REAL *lower, REAL *upper); MYBOOL __EXPORT_TYPE __WINAPI get_bounds_tighter(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI set_upbo(lprec *lp, int colnr, REAL value); REAL __EXPORT_TYPE __WINAPI get_upbo(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI set_lowbo(lprec *lp, int colnr, REAL value); REAL __EXPORT_TYPE __WINAPI get_lowbo(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI set_bounds(lprec *lp, int colnr, REAL lower, REAL upper); MYBOOL __EXPORT_TYPE __WINAPI set_unbounded(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI is_unbounded(lprec *lp, int colnr); /* Set the upper and lower bounds of a variable */ MYBOOL __EXPORT_TYPE __WINAPI set_int(lprec *lp, int colnr, MYBOOL must_be_int); MYBOOL __EXPORT_TYPE __WINAPI is_int(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI set_binary(lprec *lp, int colnr, MYBOOL must_be_bin); MYBOOL __EXPORT_TYPE __WINAPI is_binary(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI set_semicont(lprec *lp, int colnr, MYBOOL must_be_sc); MYBOOL __EXPORT_TYPE __WINAPI is_semicont(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI is_negative(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI set_var_weights(lprec *lp, REAL *weights); int __EXPORT_TYPE __WINAPI get_var_priority(lprec *lp, int colnr); /* Set the type of variable */ MYBOOL __EXPORT_TYPE __WINAPI set_pseudocosts(lprec *lp, REAL *clower, REAL *cupper, int *updatelimit); MYBOOL __EXPORT_TYPE __WINAPI get_pseudocosts(lprec *lp, REAL *clower, REAL *cupper, int *updatelimit); /* Set initial values for, or get computed pseudocost vectors; note that setting of pseudocosts can only happen in response to a call-back function optionally requesting this */ int __EXPORT_TYPE __WINAPI add_SOS(lprec *lp, char *name, int sostype, int priority, int count, int *sosvars, REAL *weights); MYBOOL __EXPORT_TYPE __WINAPI is_SOS_var(lprec *lp, int colnr); /* Add SOS constraints */ MYBOOL __EXPORT_TYPE __WINAPI set_row_name(lprec *lp, int rownr, char *new_name); char __EXPORT_TYPE * __WINAPI get_row_name(lprec *lp, int rownr); char __EXPORT_TYPE * __WINAPI get_origrow_name(lprec *lp, int rownr); /* Set/Get the name of a constraint row */ /* Get added by KE */ MYBOOL __EXPORT_TYPE __WINAPI set_col_name(lprec *lp, int colnr, char *new_name); char __EXPORT_TYPE * __WINAPI get_col_name(lprec *lp, int colnr); char __EXPORT_TYPE * __WINAPI get_origcol_name(lprec *lp, int colnr); /* Set/Get the name of a variable column */ /* Get added by KE */ void __EXPORT_TYPE __WINAPI unscale(lprec *lp); /* Undo previous scaling of the problem */ void __EXPORT_TYPE __WINAPI set_preferdual(lprec *lp, MYBOOL dodual); void __EXPORT_TYPE __WINAPI set_simplextype(lprec *lp, int simplextype); int __EXPORT_TYPE __WINAPI get_simplextype(lprec *lp); /* Set/Get if lp_solve should prefer the dual simplex over the primal -- added by KE */ void __EXPORT_TYPE __WINAPI default_basis(lprec *lp); void __EXPORT_TYPE __WINAPI set_basiscrash(lprec *lp, int mode); int __EXPORT_TYPE __WINAPI get_basiscrash(lprec *lp); int __EXPORT_TYPE __WINAPI set_basisvar(lprec *lp, int basisPos, int enteringCol); MYBOOL __EXPORT_TYPE __WINAPI set_basis(lprec *lp, int *bascolumn, MYBOOL nonbasic); MYBOOL __EXPORT_TYPE __WINAPI get_basis(lprec *lp, int *bascolumn, MYBOOL nonbasic); void __EXPORT_TYPE __WINAPI reset_basis(lprec *lp); /* Set/Get basis for a re-solved system */ /* Added by KE */ MYBOOL __EXPORT_TYPE __WINAPI guess_basis(lprec *lp, REAL *guessvector, int *basisvector); MYBOOL __EXPORT_TYPE __WINAPI is_feasible(lprec *lp, REAL *values, REAL threshold); /* returns TRUE if the vector in values is a feasible solution to the lp */ int __EXPORT_TYPE __WINAPI solve(lprec *lp); /* Solve the problem */ REAL __EXPORT_TYPE __WINAPI get_accuracy(lprec *lp); void __EXPORT_TYPE __WINAPI set_break_numeric_accuracy(lprec *lp, REAL accuracy); REAL __EXPORT_TYPE __WINAPI get_break_numeric_accuracy(lprec *lp); REAL __EXPORT_TYPE __WINAPI time_elapsed(lprec *lp); /* Return the number of seconds since start of solution process */ void __EXPORT_TYPE __WINAPI put_bb_nodefunc(lprec *lp, lphandleint_intfunc newnode, void *bbnodehandle); void __EXPORT_TYPE __WINAPI put_bb_branchfunc(lprec *lp, lphandleint_intfunc newbranch, void *bbbranchhandle); /* Allow the user to override B&B node and branching decisions */ void __EXPORT_TYPE __WINAPI put_abortfunc(lprec *lp, lphandle_intfunc newctrlc, void *ctrlchandle); /* Allow the user to define an interruption callback function */ void __EXPORT_TYPE __WINAPI put_logfunc(lprec *lp, lphandlestr_func newlog, void *loghandle); /* Allow the user to define a logging function */ void __EXPORT_TYPE __WINAPI put_msgfunc(lprec *lp, lphandleint_func newmsg, void *msghandle, int mask); /* Allow the user to define an event-driven message/reporting */ MYBOOL __EXPORT_TYPE __WINAPI get_primal_solution(lprec *lp, REAL *pv); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_primal_solution(lprec *lp, REAL **pv); MYBOOL __EXPORT_TYPE __WINAPI get_dual_solution(lprec *lp, REAL *rc); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_dual_solution(lprec *lp, REAL **rc); MYBOOL __EXPORT_TYPE __WINAPI get_lambda(lprec *lp, REAL *lambda); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_lambda(lprec *lp, REAL **lambda); /* Get the primal, dual/reduced costs and Lambda vectors */ /* Read an MPS file */ lprec __EXPORT_TYPE * __WINAPI read_MPS(char *filename, int options); lprec __EXPORT_TYPE * __WINAPI read_mps(FILE *filename, int options); lprec __EXPORT_TYPE * __WINAPI read_freeMPS(char *filename, int options); lprec __EXPORT_TYPE * __WINAPI read_freemps(FILE *filename, int options); /* Write a MPS file to output */ MYBOOL __EXPORT_TYPE __WINAPI write_mps(lprec *lp, char *filename); MYBOOL __EXPORT_TYPE __WINAPI write_MPS(lprec *lp, FILE *output); MYBOOL __EXPORT_TYPE __WINAPI write_freemps(lprec *lp, char *filename); MYBOOL __EXPORT_TYPE __WINAPI write_freeMPS(lprec *lp, FILE *output); MYBOOL __EXPORT_TYPE __WINAPI write_lp(lprec *lp, char *filename); MYBOOL __EXPORT_TYPE __WINAPI write_LP(lprec *lp, FILE *output); /* Write a LP file to output */ MYBOOL __WINAPI LP_readhandle(lprec **lp, FILE *filename, int verbose, char *lp_name); lprec __EXPORT_TYPE * __WINAPI read_lp(FILE *filename, int verbose, char *lp_name); lprec __EXPORT_TYPE * __WINAPI read_LP(char *filename, int verbose, char *lp_name); /* Old-style lp format file parser */ MYBOOL __EXPORT_TYPE __WINAPI write_basis(lprec *lp, char *filename); MYBOOL __EXPORT_TYPE __WINAPI read_basis(lprec *lp, char *filename, char *info); /* Read and write basis from/to file in CPLEX BAS format */ MYBOOL __EXPORT_TYPE __WINAPI write_params(lprec *lp, char *filename, char *options); MYBOOL __EXPORT_TYPE __WINAPI read_params(lprec *lp, char *filename, char *options); void __EXPORT_TYPE __WINAPI reset_params(lprec *lp); /* Read and write parameter file */ void __EXPORT_TYPE __WINAPI print_lp(lprec *lp); void __EXPORT_TYPE __WINAPI print_tableau(lprec *lp); /* Print the current problem, only useful in very small (test) problems */ void __EXPORT_TYPE __WINAPI print_objective(lprec *lp); void __EXPORT_TYPE __WINAPI print_solution(lprec *lp, int columns); void __EXPORT_TYPE __WINAPI print_constraints(lprec *lp, int columns); /* Print the solution to stdout */ void __EXPORT_TYPE __WINAPI print_duals(lprec *lp); /* Print the dual variables of the solution */ void __EXPORT_TYPE __WINAPI print_scales(lprec *lp); /* If scaling is used, print the scaling factors */ void __EXPORT_TYPE __WINAPI print_str(lprec *lp, char *str); void __EXPORT_TYPE __WINAPI set_outputstream(lprec *lp, FILE *stream); MYBOOL __EXPORT_TYPE __WINAPI set_outputfile(lprec *lp, char *filename); void __EXPORT_TYPE __WINAPI set_verbose(lprec *lp, int verbose); int __EXPORT_TYPE __WINAPI get_verbose(lprec *lp); void __EXPORT_TYPE __WINAPI set_timeout(lprec *lp, long sectimeout); long __EXPORT_TYPE __WINAPI get_timeout(lprec *lp); void __EXPORT_TYPE __WINAPI set_print_sol(lprec *lp, int print_sol); int __EXPORT_TYPE __WINAPI get_print_sol(lprec *lp); void __EXPORT_TYPE __WINAPI set_debug(lprec *lp, MYBOOL debug); MYBOOL __EXPORT_TYPE __WINAPI is_debug(lprec *lp); void __EXPORT_TYPE __WINAPI set_trace(lprec *lp, MYBOOL trace); MYBOOL __EXPORT_TYPE __WINAPI is_trace(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI print_debugdump(lprec *lp, char *filename); void __EXPORT_TYPE __WINAPI set_anti_degen(lprec *lp, int anti_degen); int __EXPORT_TYPE __WINAPI get_anti_degen(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI is_anti_degen(lprec *lp, int testmask); void __EXPORT_TYPE __WINAPI set_presolve(lprec *lp, int presolvemode, int maxloops); int __EXPORT_TYPE __WINAPI get_presolve(lprec *lp); int __EXPORT_TYPE __WINAPI get_presolveloops(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI is_presolve(lprec *lp, int testmask); int __EXPORT_TYPE __WINAPI get_orig_index(lprec *lp, int lp_index); int __EXPORT_TYPE __WINAPI get_lp_index(lprec *lp, int orig_index); void __EXPORT_TYPE __WINAPI set_maxpivot(lprec *lp, int max_num_inv); int __EXPORT_TYPE __WINAPI get_maxpivot(lprec *lp); void __EXPORT_TYPE __WINAPI set_obj_bound(lprec *lp, REAL obj_bound); REAL __EXPORT_TYPE __WINAPI get_obj_bound(lprec *lp); void __EXPORT_TYPE __WINAPI set_mip_gap(lprec *lp, MYBOOL absolute, REAL mip_gap); REAL __EXPORT_TYPE __WINAPI get_mip_gap(lprec *lp, MYBOOL absolute); void __EXPORT_TYPE __WINAPI set_bb_rule(lprec *lp, int bb_rule); int __EXPORT_TYPE __WINAPI get_bb_rule(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI set_var_branch(lprec *lp, int colnr, int branch_mode); int __EXPORT_TYPE __WINAPI get_var_branch(lprec *lp, int colnr); MYBOOL __EXPORT_TYPE __WINAPI is_infinite(lprec *lp, REAL value); void __EXPORT_TYPE __WINAPI set_infinite(lprec *lp, REAL infinite); REAL __EXPORT_TYPE __WINAPI get_infinite(lprec *lp); void __EXPORT_TYPE __WINAPI set_epsint(lprec *lp, REAL epsint); REAL __EXPORT_TYPE __WINAPI get_epsint(lprec *lp); void __EXPORT_TYPE __WINAPI set_epsb(lprec *lp, REAL epsb); REAL __EXPORT_TYPE __WINAPI get_epsb(lprec *lp); void __EXPORT_TYPE __WINAPI set_epsd(lprec *lp, REAL epsd); REAL __EXPORT_TYPE __WINAPI get_epsd(lprec *lp); void __EXPORT_TYPE __WINAPI set_epsel(lprec *lp, REAL epsel); REAL __EXPORT_TYPE __WINAPI get_epsel(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI set_epslevel(lprec *lp, int epslevel); void __EXPORT_TYPE __WINAPI set_scaling(lprec *lp, int scalemode); int __EXPORT_TYPE __WINAPI get_scaling(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI is_scalemode(lprec *lp, int testmask); MYBOOL __EXPORT_TYPE __WINAPI is_scaletype(lprec *lp, int scaletype); MYBOOL __EXPORT_TYPE __WINAPI is_integerscaling(lprec *lp); void __EXPORT_TYPE __WINAPI set_scalelimit(lprec *lp, REAL scalelimit); REAL __EXPORT_TYPE __WINAPI get_scalelimit(lprec *lp); void __EXPORT_TYPE __WINAPI set_improve(lprec *lp, int improve); int __EXPORT_TYPE __WINAPI get_improve(lprec *lp); void __EXPORT_TYPE __WINAPI set_pivoting(lprec *lp, int piv_rule); int __EXPORT_TYPE __WINAPI get_pivoting(lprec *lp); MYBOOL __EXPORT_TYPE __WINAPI set_partialprice(lprec *lp, int blockcount, int *blockstart, MYBOOL isrow); void __EXPORT_TYPE __WINAPI get_partialprice(lprec *lp, int *blockcount, int *blockstart, MYBOOL isrow); MYBOOL __EXPORT_TYPE __WINAPI set_multiprice(lprec *lp, int multiblockdiv); int __EXPORT_TYPE __WINAPI get_multiprice(lprec *lp, MYBOOL getabssize); MYBOOL __EXPORT_TYPE __WINAPI is_use_names(lprec *lp, MYBOOL isrow); void __EXPORT_TYPE __WINAPI set_use_names(lprec *lp, MYBOOL isrow, MYBOOL use_names); int __EXPORT_TYPE __WINAPI get_nameindex(lprec *lp, char *varname, MYBOOL isrow); MYBOOL __EXPORT_TYPE __WINAPI is_piv_mode(lprec *lp, int testmask); MYBOOL __EXPORT_TYPE __WINAPI is_piv_rule(lprec *lp, int rule); void __EXPORT_TYPE __WINAPI set_break_at_first(lprec *lp, MYBOOL break_at_first); MYBOOL __EXPORT_TYPE __WINAPI is_break_at_first(lprec *lp); void __EXPORT_TYPE __WINAPI set_bb_floorfirst(lprec *lp, int bb_floorfirst); int __EXPORT_TYPE __WINAPI get_bb_floorfirst(lprec *lp); void __EXPORT_TYPE __WINAPI set_bb_depthlimit(lprec *lp, int bb_maxlevel); int __EXPORT_TYPE __WINAPI get_bb_depthlimit(lprec *lp); void __EXPORT_TYPE __WINAPI set_break_at_value(lprec *lp, REAL break_at_value); REAL __EXPORT_TYPE __WINAPI get_break_at_value(lprec *lp); void __EXPORT_TYPE __WINAPI set_negrange(lprec *lp, REAL negrange); REAL __EXPORT_TYPE __WINAPI get_negrange(lprec *lp); void __EXPORT_TYPE __WINAPI set_epsperturb(lprec *lp, REAL epsperturb); REAL __EXPORT_TYPE __WINAPI get_epsperturb(lprec *lp); void __EXPORT_TYPE __WINAPI set_epspivot(lprec *lp, REAL epspivot); REAL __EXPORT_TYPE __WINAPI get_epspivot(lprec *lp); int __EXPORT_TYPE __WINAPI get_max_level(lprec *lp); COUNTER __EXPORT_TYPE __WINAPI get_total_nodes(lprec *lp); COUNTER __EXPORT_TYPE __WINAPI get_total_iter(lprec *lp); REAL __EXPORT_TYPE __WINAPI get_objective(lprec *lp); REAL __EXPORT_TYPE __WINAPI get_working_objective(lprec *lp); REAL __EXPORT_TYPE __WINAPI get_var_primalresult(lprec *lp, int index); REAL __EXPORT_TYPE __WINAPI get_var_dualresult(lprec *lp, int index); MYBOOL __EXPORT_TYPE __WINAPI get_variables(lprec *lp, REAL *var); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_variables(lprec *lp, REAL **var); MYBOOL __EXPORT_TYPE __WINAPI get_constraints(lprec *lp, REAL *constr); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_constraints(lprec *lp, REAL **constr); MYBOOL __EXPORT_TYPE __WINAPI get_sensitivity_rhs(lprec *lp, REAL *duals, REAL *dualsfrom, REAL *dualstill); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_sensitivity_rhs(lprec *lp, REAL **duals, REAL **dualsfrom, REAL **dualstill); MYBOOL __EXPORT_TYPE __WINAPI get_sensitivity_obj(lprec *lp, REAL *objfrom, REAL *objtill); MYBOOL __EXPORT_TYPE __WINAPI get_sensitivity_objex(lprec *lp, REAL *objfrom, REAL *objtill, REAL *objfromvalue, REAL *objtillvalue); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_sensitivity_obj(lprec *lp, REAL **objfrom, REAL **objtill); MYBOOL __EXPORT_TYPE __WINAPI get_ptr_sensitivity_objex(lprec *lp, REAL **objfrom, REAL **objtill, REAL **objfromvalue, REAL **objtillvalue); void __EXPORT_TYPE __WINAPI set_solutionlimit(lprec *lp, int limit); int __EXPORT_TYPE __WINAPI get_solutionlimit(lprec *lp); int __EXPORT_TYPE __WINAPI get_solutioncount(lprec *lp); int __EXPORT_TYPE __WINAPI get_Norig_rows(lprec *lp); int __EXPORT_TYPE __WINAPI get_Nrows(lprec *lp); int __EXPORT_TYPE __WINAPI get_Lrows(lprec *lp); int __EXPORT_TYPE __WINAPI get_Norig_columns(lprec *lp); int __EXPORT_TYPE __WINAPI get_Ncolumns(lprec *lp); typedef int (__WINAPI read_modeldata_func)(void *userhandle, char *buf, int max_size); typedef int (__WINAPI write_modeldata_func)(void *userhandle, char *buf); MYBOOL __WINAPI MPS_readex(lprec **newlp, void *userhandle, read_modeldata_func read_modeldata, int typeMPS, int options); /* #if defined develop */ lprec __EXPORT_TYPE * __WINAPI read_lpex(void *userhandle, read_modeldata_func read_modeldata, int verbose, char *lp_name); MYBOOL __EXPORT_TYPE __WINAPI write_lpex(lprec *lp, void *userhandle, write_modeldata_func write_modeldata); lprec __EXPORT_TYPE * __WINAPI read_mpsex(void *userhandle, read_modeldata_func read_modeldata, int options); lprec __EXPORT_TYPE * __WINAPI read_freempsex(void *userhandle, read_modeldata_func read_modeldata, int options); MYBOOL __EXPORT_TYPE __WINAPI MPS_writefileex(lprec *lp, int typeMPS, void *userhandle, write_modeldata_func write_modeldata); /* #endif */ #ifdef __cplusplus } #endif /* Forward definitions of functions used internaly by the lp toolkit */ MYBOOL set_callbacks(lprec *lp); STATIC int yieldformessages(lprec *lp); MYBOOL __WINAPI userabort(lprec *lp, int message); /*char * __VACALL explain(lprec *lp, char *format, ...); void __VACALL report(lprec *lp, int level, char *format, ...);*/ /* Memory management routines */ STATIC MYBOOL append_rows(lprec *lp, int deltarows); STATIC MYBOOL append_columns(lprec *lp, int deltacolumns); STATIC void inc_rows(lprec *lp, int delta); STATIC void inc_columns(lprec *lp, int delta); STATIC MYBOOL init_rowcol_names(lprec *lp); STATIC MYBOOL inc_row_space(lprec *lp, int deltarows); STATIC MYBOOL inc_col_space(lprec *lp, int deltacols); STATIC MYBOOL shift_rowcoldata(lprec *lp, int base, int delta, LLrec *usedmap, MYBOOL isrow); STATIC MYBOOL shift_basis(lprec *lp, int base, int delta, LLrec *usedmap, MYBOOL isrow); STATIC MYBOOL shift_rowdata(lprec *lp, int base, int delta, LLrec *usedmap); STATIC MYBOOL shift_coldata(lprec *lp, int base, int delta, LLrec *usedmap); /* INLINE */ MYBOOL is_chsign(lprec *lp, int rownr); STATIC MYBOOL inc_lag_space(lprec *lp, int deltarows, MYBOOL ignoreMAT); lprec *make_lag(lprec *server); REAL get_rh_upper(lprec *lp, int rownr); REAL get_rh_lower(lprec *lp, int rownr); MYBOOL set_rh_upper(lprec *lp, int rownr, REAL value); MYBOOL set_rh_lower(lprec *lp, int rownr, REAL value); STATIC int bin_count(lprec *lp, MYBOOL working); STATIC int MIP_count(lprec *lp); STATIC int SOS_count(lprec *lp); STATIC int GUB_count(lprec *lp); STATIC int identify_GUB(lprec *lp, MYBOOL mark); STATIC int prepare_GUB(lprec *lp); STATIC MYBOOL refactRecent(lprec *lp); STATIC MYBOOL check_if_less(lprec *lp, REAL x, REAL y, int variable); STATIC MYBOOL feasiblePhase1(lprec *lp, REAL epsvalue); STATIC void free_duals(lprec *lp); STATIC void initialize_solution(lprec *lp, MYBOOL shiftbounds); STATIC void recompute_solution(lprec *lp, MYBOOL shiftbounds); STATIC int verify_solution(lprec *lp, MYBOOL reinvert, char *info); STATIC int check_solution(lprec *lp, int lastcolumn, REAL *solution, REAL *upbo, REAL *lowbo, REAL tolerance); /* INLINE */ MYBOOL is_fixedvar(lprec *lp, int variable); /* INLINE */ MYBOOL is_splitvar(lprec *lp, int colnr); void __WINAPI set_action(int *actionvar, int actionmask); void __WINAPI clear_action(int *actionvar, int actionmask); MYBOOL __WINAPI is_action(int actionvar, int testmask); /* INLINE */ MYBOOL is_bb_rule(lprec *lp, int bb_rule); /* INLINE */ MYBOOL is_bb_mode(lprec *lp, int bb_mask); /* INLINE */ int get_piv_rule(lprec *lp); STATIC char *get_str_piv_rule(int rule); STATIC MYBOOL __WINAPI set_var_priority(lprec *lp); STATIC int find_sc_bbvar(lprec *lp, int *count); STATIC int find_sos_bbvar(lprec *lp, int *count, MYBOOL intsos); STATIC int find_int_bbvar(lprec *lp, int *count, BBrec *BB, MYBOOL *isfeasible); /* Solution-related functions */ STATIC REAL compute_dualslacks(lprec *lp, int target, REAL **dvalues, int **nzdvalues, MYBOOL dosum); STATIC MYBOOL solution_is_int(lprec *lp, int index, MYBOOL checkfixed); STATIC MYBOOL bb_better(lprec *lp, int target, int mode); STATIC void construct_solution(lprec *lp, REAL *target); STATIC void transfer_solution_var(lprec *lp, int uservar); STATIC MYBOOL construct_duals(lprec *lp); STATIC MYBOOL construct_sensitivity_duals(lprec *lp); STATIC MYBOOL construct_sensitivity_obj(lprec *lp); STATIC int add_GUB(lprec *lp, char *name, int priority, int count, int *sosvars); STATIC basisrec *push_basis(lprec *lp, int *basisvar, MYBOOL *isbasic, MYBOOL *islower); STATIC MYBOOL compare_basis(lprec *lp); STATIC MYBOOL restore_basis(lprec *lp); STATIC MYBOOL pop_basis(lprec *lp, MYBOOL restore); STATIC MYBOOL is_BasisReady(lprec *lp); STATIC MYBOOL is_slackbasis(lprec *lp); STATIC MYBOOL verify_basis(lprec *lp); STATIC int unload_basis(lprec *lp, MYBOOL restorelast); STATIC int perturb_bounds(lprec *lp, BBrec *perturbed, MYBOOL doRows, MYBOOL doCols, MYBOOL includeFIXED); STATIC MYBOOL validate_bounds(lprec *lp, REAL *upbo, REAL *lowbo); STATIC MYBOOL impose_bounds(lprec *lp, REAL * upbo, REAL *lowbo); STATIC int unload_BB(lprec *lp); STATIC REAL feasibilityOffset(lprec *lp, MYBOOL isdual); STATIC MYBOOL isP1extra(lprec *lp); STATIC REAL get_refactfrequency(lprec *lp, MYBOOL final); STATIC int findBasicFixedvar(lprec *lp, int afternr, MYBOOL slacksonly); STATIC MYBOOL isBasisVarFeasible(lprec *lp, REAL tol, int basis_row); STATIC MYBOOL isPrimalFeasible(lprec *lp, REAL tol, int infeasibles[], REAL *feasibilitygap); STATIC MYBOOL isDualFeasible(lprec *lp, REAL tol, int *boundflips, int infeasibles[], REAL *feasibilitygap); /* Main simplex driver routines */ STATIC int preprocess(lprec *lp); STATIC void postprocess(lprec *lp); STATIC MYBOOL performiteration(lprec *lp, int rownr, int varin, LREAL theta, MYBOOL primal, MYBOOL allowminit, REAL *prow, int *nzprow, REAL *pcol, int *nzpcol, int *boundswaps); STATIC void transfer_solution_var(lprec *lp, int uservar); STATIC void transfer_solution(lprec *lp, MYBOOL dofinal); /* Scaling utilities */ STATIC REAL scaled_floor(lprec *lp, int colnr, REAL value, REAL epsscale); STATIC REAL scaled_ceil(lprec *lp, int colnr, REAL value, REAL epsscale); /* Variable mapping utility routines */ STATIC void varmap_lock(lprec *lp); STATIC void varmap_clear(lprec *lp); STATIC MYBOOL varmap_canunlock(lprec *lp); STATIC void varmap_addconstraint(lprec *lp); STATIC void varmap_addcolumn(lprec *lp); STATIC void varmap_delete(lprec *lp, int base, int delta, LLrec *varmap); STATIC void varmap_compact(lprec *lp, int prev_rows, int prev_cols); STATIC MYBOOL varmap_validate(lprec *lp, int varno); /* STATIC MYBOOL del_varnameex(lprec *lp, hashelem **namelist, hashtable *ht, int varnr, LLrec *varmap); */ STATIC MYBOOL del_varnameex(lprec *lp, hashelem **namelist, int items, hashtable *ht, int varnr, LLrec *varmap); /* Pseudo-cost routines (internal) */ STATIC BBPSrec *init_pseudocost(lprec *lp, int pseudotype); STATIC void free_pseudocost(lprec *lp); STATIC REAL get_pseudorange(BBPSrec *pc, int mipvar, int varcode); STATIC void update_pseudocost(BBPSrec *pc, int mipvar, int varcode, MYBOOL capupper, REAL varsol); STATIC REAL get_pseudobranchcost(BBPSrec *pc, int mipvar, MYBOOL dofloor); STATIC REAL get_pseudonodecost(BBPSrec *pc, int mipvar, int vartype, REAL varsol); /* Matrix access and equation solving routines */ STATIC void set_OF_override(lprec *lp, REAL *ofVector); STATIC void set_OF_p1extra(lprec *lp, REAL p1extra); STATIC void unset_OF_p1extra(lprec *lp); MYBOOL modifyOF1(lprec *lp, int index, REAL *ofValue, REAL mult); REAL __WINAPI get_OF_active(lprec *lp, int varnr, REAL mult); STATIC MYBOOL is_OF_nz(lprec *lp, int colnr); STATIC int get_basisOF(lprec *lp, int coltarget[], REAL crow[], int colno[]); int __WINAPI get_basiscolumn(lprec *lp, int j, int rn[], double bj[]); int __WINAPI obtain_column(lprec *lp, int varin, REAL *pcol, int *nzlist, int *maxabs); STATIC int compute_theta(lprec *lp, int rownr, LREAL *theta, int isupbound, REAL HarrisScalar, MYBOOL primal); /* Pivot utility routines */ STATIC int findBasisPos(lprec *lp, int notint, int *var_basic); STATIC MYBOOL check_degeneracy(lprec *lp, REAL *pcol, int *degencount); #endif /* HEADER_lp_lib */ PK!:b//%hypdb/modules/lpsolve_dev/lp_matrix.h#ifndef HEADER_lp_matrix #define HEADER_lp_matrix #include "lp_types.h" #include "lp_utils.h" /* Sparse matrix element (ordered columnwise) */ typedef struct _MATitem { int rownr; int colnr; REAL value; } MATitem; /* Constants for matrix product rounding options */ #define MAT_ROUNDNONE 0 #define MAT_ROUNDABS 1 #define MAT_ROUNDREL 2 #define MAT_ROUNDABSREL (MAT_ROUNDABS + MAT_ROUNDREL) #define MAT_ROUNDRC 4 #define MAT_ROUNDRCMIN 1.0 /* lp->epspivot */ #if 1 #define MAT_ROUNDDEFAULT MAT_ROUNDREL /* Typically increases performance */ #else #define MAT_ROUNDDEFAULT MAT_ROUNDABS /* Probably gives more precision */ #endif /* Compiler option development features */ /*#define DebugInv*/ /* Report array values at factorization/inversion */ #define NoLoopUnroll /* Do not do loop unrolling */ #define DirectArrayOF /* Reference lp->obj[] array instead of function call */ /* Matrix column access macros to be able to easily change storage model */ #define CAM_Record 0 #define CAM_Vector 1 #if 0 #define MatrixColAccess CAM_Record #else #define MatrixColAccess CAM_Vector #endif #if MatrixColAccess==CAM_Record #define SET_MAT_ijA(item,i,j,A) mat->col_mat[item].rownr = i; \ mat->col_mat[item].colnr = j; \ mat->col_mat[item].value = A #define COL_MAT_COLNR(item) (mat->col_mat[item].colnr) #define COL_MAT_ROWNR(item) (mat->col_mat[item].rownr) #define COL_MAT_VALUE(item) (mat->col_mat[item].value) #define COL_MAT_COPY(left,right) mat->col_mat[left] = mat->col_mat[right] #define COL_MAT_MOVE(to,from,rec) MEMMOVE(&(mat->col_mat[to]),&(mat->col_mat[from]),rec) #define COL_MAT2_COLNR(item) (mat2->col_mat[item].colnr) #define COL_MAT2_ROWNR(item) (mat2->col_mat[item].rownr) #define COL_MAT2_VALUE(item) (mat2->col_mat[item].value) #define matRowColStep (sizeof(MATitem)/sizeof(int)) #define matValueStep (sizeof(MATitem)/sizeof(REAL)) #else /* if MatrixColAccess==CAM_Vector */ #define SET_MAT_ijA(item,i,j,A) mat->col_mat_rownr[item] = i; \ mat->col_mat_colnr[item] = j; \ mat->col_mat_value[item] = A #define COL_MAT_COLNR(item) (mat->col_mat_colnr[item]) #define COL_MAT_ROWNR(item) (mat->col_mat_rownr[item]) #define COL_MAT_VALUE(item) (mat->col_mat_value[item]) #define COL_MAT_COPY(left,right) COL_MAT_COLNR(left) = COL_MAT_COLNR(right); \ COL_MAT_ROWNR(left) = COL_MAT_ROWNR(right); \ COL_MAT_VALUE(left) = COL_MAT_VALUE(right) #define COL_MAT_MOVE(to,from,rec) MEMMOVE(&COL_MAT_COLNR(to),&COL_MAT_COLNR(from),rec); \ MEMMOVE(&COL_MAT_ROWNR(to),&COL_MAT_ROWNR(from),rec); \ MEMMOVE(&COL_MAT_VALUE(to),&COL_MAT_VALUE(from),rec) #define COL_MAT2_COLNR(item) (mat2->col_mat_colnr[item]) #define COL_MAT2_ROWNR(item) (mat2->col_mat_rownr[item]) #define COL_MAT2_VALUE(item) (mat2->col_mat_value[item]) #define matRowColStep 1 #define matValueStep 1 #endif /* Matrix row access macros to be able to easily change storage model */ #define RAM_Index 0 #define RAM_FullCopy 1 #define MatrixRowAccess RAM_Index #if MatrixRowAccess==RAM_Index #define ROW_MAT_COLNR(item) COL_MAT_COLNR(mat->row_mat[item]) #define ROW_MAT_ROWNR(item) COL_MAT_ROWNR(mat->row_mat[item]) #define ROW_MAT_VALUE(item) COL_MAT_VALUE(mat->row_mat[item]) #elif MatrixColAccess==CAM_Record #define ROW_MAT_COLNR(item) (mat->row_mat[item].colnr) #define ROW_MAT_ROWNR(item) (mat->row_mat[item].rownr) #define ROW_MAT_VALUE(item) (mat->row_mat[item].value) #else /* if MatrixColAccess==CAM_Vector */ #define ROW_MAT_COLNR(item) (mat->row_mat_colnr[item]) #define ROW_MAT_ROWNR(item) (mat->row_mat_rownr[item]) #define ROW_MAT_VALUE(item) (mat->row_mat_value[item]) #endif typedef struct _MATrec { /* Owner reference */ lprec *lp; /* Active dimensions */ int rows; int columns; /* Allocated memory */ int rows_alloc; int columns_alloc; int mat_alloc; /* The allocated size for matrix sized structures */ /* Sparse problem matrix storage */ #if MatrixColAccess==CAM_Record MATitem *col_mat; /* mat_alloc : The sparse data storage */ #else /*MatrixColAccess==CAM_Vector*/ int *col_mat_colnr; int *col_mat_rownr; REAL *col_mat_value; #endif int *col_end; /* columns_alloc+1 : col_end[i] is the index of the first element after column i; column[i] is stored in elements col_end[i-1] to col_end[i]-1 */ int *col_tag; /* user-definable tag associated with each column */ #if MatrixRowAccess==RAM_Index int *row_mat; /* mat_alloc : From index 0, row_mat contains the row-ordered index of the elements of col_mat */ #elif MatrixColAccess==CAM_Record MATitem *row_mat; /* mat_alloc : From index 0, row_mat contains the row-ordered copy of the elements in col_mat */ #else /*if MatrixColAccess==CAM_Vector*/ int *row_mat_colnr; int *row_mat_rownr; REAL *row_mat_value; #endif int *row_end; /* rows_alloc+1 : row_end[i] is the index of the first element in row_mat after row i */ int *row_tag; /* user-definable tag associated with each row */ REAL *colmax; /* Array of maximum values of each column */ REAL *rowmax; /* Array of maximum values of each row */ REAL epsvalue; /* Zero element rejection threshold */ REAL infnorm; /* The largest absolute value in the matrix */ REAL dynrange; MYBOOL row_end_valid; /* TRUE if row_end & row_mat are valid */ MYBOOL is_roworder; /* TRUE if the current (temporary) matrix order is row-wise */ } MATrec; typedef struct _DeltaVrec { lprec *lp; int activelevel; MATrec *tracker; } DeltaVrec; #ifdef __cplusplus __EXTERN_C { #endif /* Sparse matrix routines */ STATIC MATrec *mat_create(lprec *lp, int rows, int columns, REAL epsvalue); STATIC MYBOOL mat_memopt(MATrec *mat, int rowextra, int colextra, int nzextra); STATIC void mat_free(MATrec **matrix); STATIC MYBOOL inc_matrow_space(MATrec *mat, int deltarows); STATIC int mat_mapreplace(MATrec *mat, LLrec *rowmap, LLrec *colmap, MATrec *insmat); STATIC int mat_matinsert(MATrec *mat, MATrec *insmat); STATIC int mat_zerocompact(MATrec *mat); STATIC int mat_rowcompact(MATrec *mat, MYBOOL dozeros); STATIC int mat_colcompact(MATrec *mat, int prev_rows, int prev_cols); STATIC MYBOOL inc_matcol_space(MATrec *mat, int deltacols); STATIC MYBOOL inc_mat_space(MATrec *mat, int mindelta); STATIC int mat_shiftrows(MATrec *mat, int *bbase, int delta, LLrec *varmap); STATIC int mat_shiftcols(MATrec *mat, int *bbase, int delta, LLrec *varmap); STATIC MATrec *mat_extractmat(MATrec *mat, LLrec *rowmap, LLrec *colmap, MYBOOL negated); STATIC int mat_appendrow(MATrec *mat, int count, REAL *row, int *colno, REAL mult, MYBOOL checkrowmode); STATIC int mat_appendcol(MATrec *mat, int count, REAL *column, int *rowno, REAL mult, MYBOOL checkrowmode); MYBOOL mat_get_data(lprec *lp, int matindex, MYBOOL isrow, int **rownr, int **colnr, REAL **value); MYBOOL mat_set_rowmap(MATrec *mat, int row_mat_index, int rownr, int colnr, int col_mat_index); STATIC MYBOOL mat_indexrange(MATrec *mat, int index, MYBOOL isrow, int *startpos, int *endpos); STATIC MYBOOL mat_validate(MATrec *mat); STATIC MYBOOL mat_equalRows(MATrec *mat, int baserow, int comprow); STATIC int mat_findelm(MATrec *mat, int row, int column); STATIC int mat_findins(MATrec *mat, int row, int column, int *insertpos, MYBOOL validate); STATIC void mat_multcol(MATrec *mat, int col_nr, REAL mult, MYBOOL DoObj); STATIC REAL mat_getitem(MATrec *mat, int row, int column); STATIC MYBOOL mat_setitem(MATrec *mat, int row, int column, REAL value); STATIC MYBOOL mat_additem(MATrec *mat, int row, int column, REAL delta); STATIC MYBOOL mat_setvalue(MATrec *mat, int Row, int Column, REAL Value, MYBOOL doscale); STATIC int mat_nonzeros(MATrec *mat); STATIC int mat_collength(MATrec *mat, int colnr); STATIC int mat_rowlength(MATrec *mat, int rownr); STATIC void mat_multrow(MATrec *mat, int row_nr, REAL mult); STATIC void mat_multadd(MATrec *mat, REAL *lhsvector, int varnr, REAL mult); STATIC MYBOOL mat_setrow(MATrec *mat, int rowno, int count, REAL *row, int *colno, MYBOOL doscale, MYBOOL checkrowmode); STATIC MYBOOL mat_setcol(MATrec *mat, int colno, int count, REAL *column, int *rowno, MYBOOL doscale, MYBOOL checkrowmode); STATIC MYBOOL mat_mergemat(MATrec *target, MATrec *source, MYBOOL usecolmap); STATIC int mat_checkcounts(MATrec *mat, int *rownum, int *colnum, MYBOOL freeonexit); STATIC int mat_expandcolumn(MATrec *mat, int colnr, REAL *column, int *nzlist, MYBOOL signedA); STATIC MYBOOL mat_computemax(MATrec *mat); STATIC MYBOOL mat_transpose(MATrec *mat); /* Refactorization and recomputation routine */ MYBOOL __WINAPI invert(lprec *lp, MYBOOL shiftbounds, MYBOOL final); /* Vector compression and expansion routines */ STATIC MYBOOL vec_compress(REAL *densevector, int startpos, int endpos, REAL epsilon, REAL *nzvector, int *nzindex); STATIC MYBOOL vec_expand(REAL *nzvector, int *nzindex, REAL *densevector, int startpos, int endpos); /* Sparse matrix products */ STATIC MYBOOL get_colIndexA(lprec *lp, int varset, int *colindex, MYBOOL append); STATIC int prod_Ax(lprec *lp, int *coltarget, REAL *input, int *nzinput, REAL roundzero, REAL ofscalar, REAL *output, int *nzoutput, int roundmode); STATIC int prod_xA(lprec *lp, int *coltarget, REAL *input, int *nzinput, REAL roundzero, REAL ofscalar, REAL *output, int *nzoutput, int roundmode); STATIC MYBOOL prod_xA2(lprec *lp, int *coltarget, REAL *prow, REAL proundzero, int *pnzprow, REAL *drow, REAL droundzero, int *dnzdrow, REAL ofscalar, int roundmode); /* Equation solution */ STATIC MYBOOL fimprove(lprec *lp, REAL *pcol, int *nzidx, REAL roundzero); STATIC void ftran(lprec *lp, REAL *rhsvector, int *nzidx, REAL roundzero); STATIC MYBOOL bimprove(lprec *lp, REAL *rhsvector, int *nzidx, REAL roundzero); STATIC void btran(lprec *lp, REAL *rhsvector, int *nzidx, REAL roundzero); /* Combined equation solution and matrix product for simplex operations */ STATIC MYBOOL fsolve(lprec *lp, int varin, REAL *pcol, int *nzidx, REAL roundzero, REAL ofscalar, MYBOOL prepareupdate); STATIC MYBOOL bsolve(lprec *lp, int row_nr, REAL *rhsvector, int *nzidx, REAL roundzero, REAL ofscalar); STATIC void bsolve_xA2(lprec *lp, int* coltarget, int row_nr1, REAL *vector1, REAL roundzero1, int *nzvector1, int row_nr2, REAL *vector2, REAL roundzero2, int *nzvector2, int roundmode); /* Change-tracking routines (primarily for B&B and presolve) */ STATIC DeltaVrec *createUndoLadder(lprec *lp, int levelitems, int maxlevels); STATIC int incrementUndoLadder(DeltaVrec *DV); STATIC MYBOOL modifyUndoLadder(DeltaVrec *DV, int itemno, REAL target[], REAL newvalue); STATIC int countsUndoLadder(DeltaVrec *DV); STATIC int restoreUndoLadder(DeltaVrec *DV, REAL target[]); STATIC int decrementUndoLadder(DeltaVrec *DV); STATIC MYBOOL freeUndoLadder(DeltaVrec **DV); /* Specialized presolve undo functions */ STATIC MYBOOL appendUndoPresolve(lprec *lp, MYBOOL isprimal, REAL beta, int colnrDep); STATIC MYBOOL addUndoPresolve(lprec *lp, MYBOOL isprimal, int colnrElim, REAL alpha, REAL beta, int colnrDep); #ifdef __cplusplus } #endif #endif /* HEADER_lp_matrix */ PK!+^PP$hypdb/modules/lpsolve_dev/lp_mipbb.h#ifndef HEADER_lp_mipbb #define HEADER_lp_mipbb #include "lp_types.h" #include "lp_utils.h" /* Bounds storage for B&B routines */ typedef struct _BBrec { struct _BBrec *parent; struct _BBrec *child; lprec *lp; int varno; int vartype; int lastvarcus; /* Count of non-int variables of the previous branch */ int lastrcf; int nodesleft; int nodessolved; int nodestatus; REAL noderesult; REAL lastsolution; /* Optimal solution of the previous branch */ REAL sc_bound; REAL *upbo, *lowbo; REAL UPbound, LObound; int UBtrack, LBtrack; /* Signals that incoming bounds were changed */ MYBOOL contentmode; /* Flag indicating if we "own" the bound vectors */ MYBOOL sc_canset; MYBOOL isSOS; MYBOOL isGUB; int *varmanaged; /* Extended list of variables managed by this B&B level */ MYBOOL isfloor; /* State variable indicating the active B&B bound */ MYBOOL UBzerobased; /* State variable indicating if bounds have been rebased */ } BBrec; #ifdef __cplusplus extern "C" { #endif STATIC BBrec *create_BB(lprec *lp, BBrec *parentBB, MYBOOL dofullcopy); STATIC BBrec *push_BB(lprec *lp, BBrec *parentBB, int varno, int vartype, int varcus); STATIC MYBOOL initbranches_BB(BBrec *BB); STATIC MYBOOL fillbranches_BB(BBrec *BB); STATIC MYBOOL nextbranch_BB(BBrec *BB); STATIC MYBOOL strongbranch_BB(lprec *lp, BBrec *BB, int varno, int vartype, int varcus); STATIC MYBOOL initcuts_BB(lprec *lp); STATIC int updatecuts_BB(lprec *lp); STATIC MYBOOL freecuts_BB(lprec *lp); STATIC BBrec *findself_BB(BBrec *BB); STATIC int solve_LP(lprec *lp, BBrec *BB); STATIC int rcfbound_BB(BBrec *BB, int varno, MYBOOL isINT, REAL *newbound, MYBOOL *isfeasible); STATIC MYBOOL findnode_BB(BBrec *BB, int *varno, int *vartype, int *varcus); STATIC int solve_BB(BBrec *BB); STATIC MYBOOL free_BB(BBrec **BB); STATIC BBrec *pop_BB(BBrec *BB); STATIC int run_BB(lprec *lp); #ifdef __cplusplus } #endif #endif /* HEADER_lp_mipbb */ PK!s&&$hypdb/modules/lpsolve_dev/lp_types.h#ifndef HEADER_lp_types #define HEADER_lp_types #ifdef WIN32 #include #endif /* Define data types */ /* ------------------------------------------------------------------------- */ #ifndef LLONG #if defined __BORLANDC__ #define LLONG __int64 #elif !defined _MSC_VER || _MSC_VER >= 1310 #define LLONG long long #else #define LLONG __int64 #endif #endif #ifndef COUNTER #define COUNTER LLONG #endif #ifndef REAL #define REAL double #endif #ifndef REALXP #if 1 #define REALXP long double /* Set local accumulation variable as long double */ #else #define REALXP REAL /* Set local accumulation as default precision */ #endif #endif #ifndef LREAL #if 0 #define LREAL long double /* Set global solution update variable as long double */ #else #define LREAL REAL /* Set global solution update variable as default precision */ #endif #endif #define RESULTVALUEMASK "%18.12g" /* Set fixed-format real-valued output precision; suggested width: ABS(exponent of DEF_EPSVALUE)+6. */ #define INDEXVALUEMASK "%8d" /* Set fixed-format integer-valued output width */ #ifndef DEF_STRBUFSIZE #define DEF_STRBUFSIZE 512 #endif #ifndef MAXINT32 #define MAXINT32 2147483647 #endif #ifndef MAXUINT32 #define MAXUINT32 4294967295 #endif #ifndef MAXINT64 #if defined _LONGLONG || defined __LONG_LONG_MAX__ || defined LLONG_MAX #define MAXINT64 9223372036854775807ll #else #define MAXINT64 9223372036854775807l #endif #endif #ifndef MAXUINT64 #if defined _LONGLONG || defined __LONG_LONG_MAX__ || defined LLONG_MAX #define MAXUINT64 18446744073709551615ll #else #define MAXUINT64 18446744073709551615l #endif #endif #ifndef CHAR_BIT #define CHAR_BIT 8 #endif #ifndef MYBOOL #define MYBOOL unsigned char /* Conserve memory, could be unsigned int */ #endif /* Constants */ /* ------------------------------------------------------------------------- */ #ifndef NULL #define NULL 0 #endif /* Byte-sized Booleans and extended options */ #define FALSE 0 #define TRUE 1 #define AUTOMATIC 2 #define DYNAMIC 4 /* Sorting and comparison constants */ #define COMP_PREFERCANDIDATE 1 #define COMP_PREFERNONE 0 #define COMP_PREFERINCUMBENT -1 /* Library load status values */ #define LIB_LOADED 0 #define LIB_NOTFOUND 1 #define LIB_NOINFO 2 #define LIB_NOFUNCTION 3 #define LIB_VERINVALID 4 #define LIB_STR_LOADED "Successfully loaded" #define LIB_STR_NOTFOUND "File not found" #define LIB_STR_NOINFO "No version data" #define LIB_STR_NOFUNCTION "Missing function header" #define LIB_STR_VERINVALID "Incompatible version" #define LIB_STR_MAXLEN 23 /* Compiler/target settings */ /* ------------------------------------------------------------------------- */ #if (defined _WIN32) || (defined WIN32) || (defined _WIN64) || (defined WIN64) # define __WINAPI WINAPI #else # define __WINAPI #endif #if (defined _WIN32) || (defined WIN32) || (defined _WIN64) || (defined WIN64) # define __VACALL __cdecl #else # define __VACALL #endif #ifndef __BORLANDC__ #ifdef _USRDLL #if 1 #define __EXPORT_TYPE __declspec(dllexport) #else /* Set up for the Microsoft compiler */ #ifdef LP_SOLVE_EXPORTS #define __EXPORT_TYPE __declspec(dllexport) #else #define __EXPORT_TYPE __declspec(dllimport) #endif #endif #else #define __EXPORT_TYPE #endif #ifdef __cplusplus #define __EXTERN_C extern "C" #else #define __EXTERN_C #endif #else /* Otherwise set up for the Borland compiler */ #ifdef __DLL__ #define _USRDLL #define __EXTERN_C extern "C" #ifdef __READING_THE_DLL #define __EXPORT_TYPE __import #else #define __EXPORT_TYPE __export #endif #else #define __EXPORT_TYPE #define __EXTERN_C extern "C" #endif #endif #if 0 #define STATIC static #else #define STATIC #endif #if !defined INLINE #if defined __cplusplus #define INLINE inline #elif (defined _WIN32) || (defined WIN32) || (defined _WIN64) || (defined WIN64) #define INLINE __inline #else #define INLINE static #endif #endif /* Function macros */ /* ------------------------------------------------------------------------- */ #define my_limitrange(x, lo, hi) ((x) < (lo) ? (lo) : ((x) > (hi) ? (hi) : (x))) #ifndef my_mod #define my_mod(n, m) ((n) % (m)) #endif #define my_if(t, x, y) ((t) ? (x) : (y)) #define my_sign(x) ((x) < 0 ? -1 : 1) #if 1 #define my_chsign(t, x) ( ((t) && ((x) != 0)) ? -(x) : (x)) #else #define my_chsign(t, x) ( (2*((t) == 0) - 1) * (x) ) /* "Pipelined", but problem with "negative zero" and possible problems on AIX */ #endif #define my_flipsign(x) ( fabs((REAL) (x)) == 0 ? 0 : -(x) ) #define my_roundzero(val, eps) if (fabs((REAL) (val)) < eps) val = 0 #define my_avoidtiny(val, eps) (fabs((REAL) (val)) < eps ? 0 : val) #if 1 #define my_infinite(lp, val) ( (MYBOOL) (fabs(val) >= lp->infinite) ) #else #define my_infinite(lp, val) is_infinite(lp, val) #endif #define my_inflimit(lp, val) ( my_infinite(lp, val) ? lp->infinite * my_sign(val) : (val) ) #if 0 #define my_precision(val, eps) ((fabs((REAL) (val))) < (eps) ? 0 : (val)) #else #define my_precision(val, eps) restoreINT(val, eps) #endif #define my_reldiff(x, y) (((x) - (y)) / (1.0 + fabs((REAL) (y)))) #define my_boundstr(x) (fabs(x) < lp->infinite ? sprintf("%g",x) : ((x) < 0 ? "-Inf" : "Inf") ) #ifndef my_boolstr #define my_boolstr(x) (!(x) ? "FALSE" : "TRUE") #endif #define my_basisstr(isbasic) ((isbasic) ? "BASIC" : "NON-BASIC") #define my_simplexstr(isdual) ((isdual) ? "DUAL" : "PRIMAL") #define my_plural_std(count) (count == 1 ? "" : "s") #define my_plural_y(count) (count == 1 ? "y" : "ies") #define my_lowbound(x) ((FULLYBOUNDEDSIMPLEX) ? (x) : 0) /* Bound macros usable for both the standard and fully bounded simplex */ /* ------------------------------------------------------------------------- */ /* #define my_lowbo(lp, varnr) ( lp->isfullybounded ? lp->lowbo[varnr] : 0.0 ) #define my_upbo(lp, varnr) ( lp->isfullybounded ? lp->upbo[varnr] : lp->lowbo[varnr] + lp->upbo[varnr] ) #define my_rangebo(lp, varnr) ( lp->isfullybounded ? lp->upbo[varnr] - lp->lowbo[varnr] : lp->upbo[varnr] ) */ #define my_lowbo(lp, varnr) ( 0.0 ) #define my_upbo(lp, varnr) ( lp->lowbo[varnr] + lp->upbo[varnr] ) #define my_rangebo(lp, varnr) ( lp->upbo[varnr] ) #define my_unbounded(lp, varnr) ((lp->upbo[varnr] >= lp->infinite) && (lp->lowbo[varnr] <= -lp->infinite)) #define my_bounded(lp, varnr) ((lp->upbo[varnr] < lp->infinite) && (lp->lowbo[varnr] > -lp->infinite)) /* Forward declarations */ /* ------------------------------------------------------------------------- */ typedef struct _lprec lprec; typedef struct _INVrec INVrec; union QSORTrec; #ifndef UNIONTYPE #ifdef __cplusplus #define UNIONTYPE #else #define UNIONTYPE union #endif #endif /* B4 factorization optimization data */ typedef struct _B4rec { int *B4_var; /* Position of basic columns in the B4 basis */ int *var_B4; /* Variable in the B4 basis */ int *B4_row; /* B4 position of the i'th row */ int *row_B4; /* Original position of the i'th row */ REAL *wcol; int *nzwcol; } B4rec; #define OBJ_STEPS 5 typedef struct _OBJmonrec { lprec *lp; int oldpivstrategy, oldpivrule, pivrule, ruleswitches, limitstall[2], limitruleswitches, idxstep[OBJ_STEPS], countstep, startstep, currentstep, Rcycle, Ccycle, Ncycle, Mcycle, Icount; REAL thisobj, prevobj, objstep[OBJ_STEPS], thisinfeas, previnfeas, epsvalue; char spxfunc[10]; MYBOOL pivdynamic; MYBOOL isdual; MYBOOL active; } OBJmonrec; typedef struct _edgerec { REAL *edgeVector; } edgerec; typedef struct _pricerec { REAL theta; REAL pivot; REAL epspivot; int varno; lprec *lp; MYBOOL isdual; } pricerec; typedef struct _multirec { lprec *lp; int size; /* The maximum number of multiply priced rows/columns */ int used; /* The current / active number of multiply priced rows/columns */ int limit; /* The active/used count at which a full update is triggered */ pricerec *items; /* Array of best multiply priced rows/columns */ int *freeList; /* The indeces of available positions in "items" */ UNIONTYPE QSORTrec *sortedList; /* List of pointers to "pricerec" items in sorted order */ REAL *stepList; /* Working array (values in sortedList order) */ REAL *valueList; /* Working array (values in sortedList order) */ int *indexSet; /* The final exported index list of pivot variables */ int active; /* Index of currently active multiply priced row/column */ int retries; REAL step_base; REAL step_last; REAL obj_base; REAL obj_last; REAL epszero; REAL maxpivot; REAL maxbound; MYBOOL sorted; MYBOOL truncinf; MYBOOL objcheck; MYBOOL dirty; } multirec; #endif /* HEADER_lp_types */ PK!!BsPP$hypdb/modules/lpsolve_dev/lp_utils.h#ifndef HEADER_lp_utils #define HEADER_lp_utils #ifdef FORTIFY #include "lp_fortify.h" #define allocCHAR allocCHAR_FORTIFY #define allocMYBOOL allocMYBOOL_FORTIFY #define allocINT allocINT_FORTIFY #define allocREAL allocREAL_FORTIFY #define allocLREAL allocLREAL_FORTIFY #endif #include "lp_types.h" /* Temporary data storage arrays */ typedef struct _workarraysrec { lprec *lp; int size; int count; char **vectorarray; int *vectorsize; } workarraysrec; typedef struct _LLrec { int size; /* The allocated list size */ int count; /* The current entry count */ int firstitem; int lastitem; int *map; /* The list of forward and backward-mapped entries */ } LLrec; typedef struct _PVrec { int count; /* The allocated list item count */ int *startpos; /* Starting index of the current value */ REAL *value; /* The list of forward and backward-mapped entries */ struct _PVrec *parent; /* The parent record in a pushed chain */ } PVrec; #ifdef __cplusplus extern "C" { #endif /* Put function headers here */ STATIC MYBOOL allocCHAR(lprec *lp, char **ptr, int size, MYBOOL clear); STATIC MYBOOL allocMYBOOL(lprec *lp, MYBOOL **ptr, int size, MYBOOL clear); STATIC MYBOOL allocINT(lprec *lp, int **ptr, int size, MYBOOL clear); STATIC MYBOOL allocREAL(lprec *lp, REAL **ptr, int size, MYBOOL clear); STATIC MYBOOL allocLREAL(lprec *lp, LREAL **ptr, int size, MYBOOL clear); STATIC MYBOOL allocFREE(lprec *lp, void **ptr); REAL *cloneREAL(lprec *lp, REAL *origlist, int size); MYBOOL *cloneMYBOOL(lprec *lp, MYBOOL *origlist, int size); int *cloneINT(lprec *lp, int *origlist, int size); int comp_bits(MYBOOL *bitarray1, MYBOOL *bitarray2, int items); STATIC workarraysrec *mempool_create(lprec *lp); STATIC char *mempool_obtainVector(workarraysrec *mempool, int count, int unitsize); STATIC MYBOOL mempool_releaseVector(workarraysrec *mempool, char *memvector, MYBOOL forcefree); STATIC MYBOOL mempool_free(workarraysrec **mempool); STATIC void roundVector(LREAL *myvector, int endpos, LREAL roundzero); STATIC REAL normalizeVector(REAL *myvector, int endpos); STATIC void swapINT(int *item1, int *item2); STATIC void swapREAL(REAL *item1, REAL *item2); STATIC void swapPTR(void **item1, void **item2); STATIC REAL restoreINT(REAL valREAL, REAL epsilon); STATIC REAL roundToPrecision(REAL value, REAL precision); STATIC int searchFor(int target, int *attributes, int size, int offset, MYBOOL absolute); STATIC MYBOOL isINT(lprec *lp, REAL value); STATIC MYBOOL isOrigFixed(lprec *lp, int varno); STATIC void chsign_bounds(REAL *lobound, REAL *upbound); STATIC REAL rand_uniform(lprec *lp, REAL range); /* Doubly linked list routines */ STATIC int createLink(int size, LLrec **linkmap, MYBOOL *usedpos); STATIC MYBOOL freeLink(LLrec **linkmap); STATIC int sizeLink(LLrec *linkmap); STATIC MYBOOL isActiveLink(LLrec *linkmap, int itemnr); STATIC int countActiveLink(LLrec *linkmap); STATIC int countInactiveLink(LLrec *linkmap); STATIC int firstActiveLink(LLrec *linkmap); STATIC int lastActiveLink(LLrec *linkmap); STATIC MYBOOL appendLink(LLrec *linkmap, int newitem); STATIC MYBOOL insertLink(LLrec *linkmap, int afteritem, int newitem); STATIC MYBOOL setLink(LLrec *linkmap, int newitem); STATIC MYBOOL fillLink(LLrec *linkmap); STATIC int nextActiveLink(LLrec *linkmap, int backitemnr); STATIC int prevActiveLink(LLrec *linkmap, int forwitemnr); STATIC int firstInactiveLink(LLrec *linkmap); STATIC int lastInactiveLink(LLrec *linkmap); STATIC int nextInactiveLink(LLrec *linkmap, int backitemnr); STATIC int prevInactiveLink(LLrec *linkmap, int forwitemnr); STATIC int removeLink(LLrec *linkmap, int itemnr); STATIC LLrec *cloneLink(LLrec *sourcemap, int newsize, MYBOOL freesource); STATIC int compareLink(LLrec *linkmap1, LLrec *linkmap2); STATIC MYBOOL verifyLink(LLrec *linkmap, int itemnr, MYBOOL doappend); /* Packed vector routines */ STATIC PVrec *createPackedVector(int size, REAL *values, int *workvector); STATIC void pushPackedVector(PVrec *PV, PVrec *parent); STATIC MYBOOL unpackPackedVector(PVrec *PV, REAL **target); STATIC REAL getvaluePackedVector(PVrec *PV, int index); STATIC PVrec *popPackedVector(PVrec *PV); STATIC MYBOOL freePackedVector(PVrec **PV); #ifdef __cplusplus } #endif #endif /* HEADER_lp_utils */ #ifdef FORTIFY #if defined CODE_lp_utils && !defined CODE_lp_utils_ int _Fortify_ret; #else extern int _Fortify_ret; #endif #ifdef CODE_lp_utils #define CODE_lp_utils_ #else # undef allocCHAR # undef allocMYBOOL # undef allocINT # undef allocREAL # undef allocLREAL # define allocCHAR(lp, ptr, size, clear) (Fortify_LINE(__LINE__), Fortify_FILE(__FILE__), _Fortify_ret = allocCHAR_FORTIFY(lp, ptr, size, clear), Fortify_LINE(0), Fortify_FILE(NULL), _Fortify_ret) # define allocMYBOOL(lp, ptr, size, clear) (Fortify_LINE(__LINE__), Fortify_FILE(__FILE__), _Fortify_ret = allocMYBOOL_FORTIFY(lp, ptr, size, clear), Fortify_LINE(0), Fortify_FILE(NULL), _Fortify_ret) # define allocINT(lp, ptr, size, clear) (Fortify_LINE(__LINE__), Fortify_FILE(__FILE__), _Fortify_ret = allocINT_FORTIFY(lp, ptr, size, clear), Fortify_LINE(0), Fortify_FILE(NULL), _Fortify_ret) # define allocREAL(lp, ptr, size, clear) (Fortify_LINE(__LINE__), Fortify_FILE(__FILE__), _Fortify_ret = allocREAL_FORTIFY(lp, ptr, size, clear), Fortify_LINE(0), Fortify_FILE(NULL), _Fortify_ret) # define allocLREAL(lp, ptr, size, clear) (Fortify_LINE(__LINE__), Fortify_FILE(__FILE__), _Fortify_ret = allocLREAL_FORTIFY(lp, ptr, size, clear), Fortify_LINE(0), Fortify_FILE(NULL), _Fortify_ret) #endif #endif PK!Nffhypdb/modules/pyrankagg/LICENSE@author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2015, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PK!Y;A#hypdb/modules/pyrankagg/MANIFEST.ininclude README LICENSEPK!Dhypdb/modules/pyrankagg/READMEAuthor: Kevin S. Brown (kevin.s.brown@uconn.edu, github.com/thelahunginjeet) A pure python package for rank aggregation/voting. Currently, only full lists (in which each expert ranks all candidates) are supported, but I plan to extend this to partial list aggregation. Rank aggregation can be performed either on scores (which are first converted to ranks) or ranks. This package depends on code that sorts a dictionary by value. This is provided by kbutil.listutil.sort_by_value. So you either need to install my kbutil package (also on my github site) or replace that function with your own to sort a dict by value. There is testing code in the tests/ directory. To run the tests, just use >python setup.py test See the documentation in the functions for detailed usage and function arguments. The ranking functions accept lists of dictionaries of scores or ranks. For example, if you have: scorelist = [{'milk':1.4,'cheese':2.6,'eggs':1.2,'bread':3.0}, {'milk':2.0,'cheese':3.2,'eggs':2.7,'bread':2.9}, {'milk':2.7,'cheese':3.0,'eggs':2.5,'bread':3.5}] in which there are three experts, four items, and scores have been provided (in which higher score = better), then to aggregate their ranks you would do the following: from pyrankagg.rankagg import FullListRankAggregator FLRA = FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(scorelist) The aggregate ranks are also returned as a dictionary, with item:rank key-value pairs. PK!S=44#hypdb/modules/pyrankagg/__init__.py__all__ = ["metrics","rankagg","linear_assignment"] PK! 66$hypdb/modules/pyrankagg/agreement.py""" Methods for measuring inter-ranker agreement. """ from numpy import zeros def icc(ranks): ''' Accepts a list of lists/arrays of ranks and compute the degree of inter-ranker agreement via the Interclass Correlation Coefficient. Values of the ICC close to 1.0 indicate unanimity, and those close to zero indicate complete lack of consensus. INPUT: ranks: list of lists, required ordering of the ranklists must be the same for all rankers OUTPUT: icc : float Interclass Correlation Coefficient ''' K = len(ranks) N = len(ranks[0]) rij = zeros((N,K)) for i in range(N): for j in range(K): rij[i,j] = ranks[j][i] # average item ranks xnbar = rij.sum(axis=1)/K # overall mean xbar = xnbar.sum()/N # compute s^2 s2 = (1.0/(K*N))*((rij - xbar)**2).sum() # compute the icc d1 = 1.0/(K-1) t1 = (((xnbar-xbar)**2).sum())/N icc = K*d1*t1/s2 - d1 return icc def kendallW(ranks): ''' Accepts a list of lists/arrays of ranks and computes the degree of inter-ranker agreement via Kendall's W. Values of W close to 1.0 indicate unanimity, and those clost to zero indicate complete lack of consensus. INPUT: ranks : list of lists, required order of the ranklists must be the same for all rankers OUTPUT: W : float Kendall's W ''' # build up the rij matrix m = len(ranks) n = len(ranks[0]) rij = zeros((n,m)) for i in range(n): for j in range(m): rij[i,j] = ranks[j][i] # total rank Ri = rij.sum(axis=1) # mean total rank Rbar = Ri.sum()/n # sum of squared deviations S = ((Ri - Rbar)**2).sum() # Kendall's W W = 12.0*S/((m**2)*n*(n**2 - 1)) return W PK!S=447hypdb/modules/pyrankagg/build/lib/pyrankagg/__init__.py__all__ = ["metrics","rankagg","linear_assignment"] PK! 668hypdb/modules/pyrankagg/build/lib/pyrankagg/agreement.py""" Methods for measuring inter-ranker agreement. """ from numpy import zeros def icc(ranks): ''' Accepts a list of lists/arrays of ranks and compute the degree of inter-ranker agreement via the Interclass Correlation Coefficient. Values of the ICC close to 1.0 indicate unanimity, and those close to zero indicate complete lack of consensus. INPUT: ranks: list of lists, required ordering of the ranklists must be the same for all rankers OUTPUT: icc : float Interclass Correlation Coefficient ''' K = len(ranks) N = len(ranks[0]) rij = zeros((N,K)) for i in range(N): for j in range(K): rij[i,j] = ranks[j][i] # average item ranks xnbar = rij.sum(axis=1)/K # overall mean xbar = xnbar.sum()/N # compute s^2 s2 = (1.0/(K*N))*((rij - xbar)**2).sum() # compute the icc d1 = 1.0/(K-1) t1 = (((xnbar-xbar)**2).sum())/N icc = K*d1*t1/s2 - d1 return icc def kendallW(ranks): ''' Accepts a list of lists/arrays of ranks and computes the degree of inter-ranker agreement via Kendall's W. Values of W close to 1.0 indicate unanimity, and those clost to zero indicate complete lack of consensus. INPUT: ranks : list of lists, required order of the ranklists must be the same for all rankers OUTPUT: W : float Kendall's W ''' # build up the rij matrix m = len(ranks) n = len(ranks[0]) rij = zeros((n,m)) for i in range(n): for j in range(m): rij[i,j] = ranks[j][i] # total rank Ri = rij.sum(axis=1) # mean total rank Rbar = Ri.sum()/n # sum of squared deviations S = ((Ri - Rbar)**2).sum() # Kendall's W W = 12.0*S/((m**2)*n*(n**2 - 1)) return W PK!U2&&@hypdb/modules/pyrankagg/build/lib/pyrankagg/linear_assignment.py""" Solve the unique lowest-cost assignment problem using the Hungarian algorithm (also known as Munkres algorithm). """ # Based on original code by Brain Clapper, adapted to NumPy by Gael Varoquaux. # Heavily refactored by Lars Buitinck. # Copyright (c) 2008 Brian M. Clapper , Gael Varoquaux # Author: Brian M. Clapper, Gael Varoquaux # LICENSE: BSD # # Modified by K.S. Brown 2015 for standalone assingnment problems; could not get # most recent version of scikits-learn to build on 64-bit Mac OS X. In addition, # very little of scikits-learn is needed to perform the calculation. # import numpy as np def astype(array,dtype,copy=True): if not copy and array.dtype == dtype: return array return array.astype(dtype) def linear_ass(X): """Solve the linear assignment problem using the Hungarian algorithm. The problem is also known as maximum weight matching in bipartite graphs. The method is also known as the Munkres or Kuhn-Munkres algorithm. Parameters ---------- X : array The cost matrix of the bipartite graph Returns ------- indices : array, The pairs of (row, col) indices in the original array giving the original ordering. References ---------- 1. http://www.public.iastate.edu/~ddoty/HungarianAlgorithm.html 2. Harold W. Kuhn. The Hungarian Method for the assignment problem. *Naval Research Logistics Quarterly*, 2:83-97, 1955. 3. Harold W. Kuhn. Variants of the Hungarian method for assignment problems. *Naval Research Logistics Quarterly*, 3: 253-258, 1956. 4. Munkres, J. Algorithms for the Assignment and Transportation Problems. *Journal of the Society of Industrial and Applied Mathematics*, 5(1):32-38, March, 1957. 5. http://en.wikipedia.org/wiki/Hungarian_algorithm """ indices = _hungarian(X).tolist() indices.sort() # Re-force dtype to ints in case of empty list indices = np.array(indices, dtype=int) # Make sure the array is 2D with 2 columns. # This is needed when dealing with an empty list indices.shape = (-1, 2) return indices class _HungarianState(object): """State of one execution of the Hungarian algorithm. Parameters ---------- cost_matrix : 2D matrix The cost matrix. Does not have to be square. """ def __init__(self, cost_matrix): cost_matrix = np.atleast_2d(cost_matrix) # If there are more rows (n) than columns (m), then the algorithm # will not be able to work correctly. Therefore, we # transpose the cost function when needed. Just have to # remember to swap the result columns back later. transposed = (cost_matrix.shape[1] < cost_matrix.shape[0]) if transposed: self.C = (cost_matrix.T).copy() else: self.C = cost_matrix.copy() self.transposed = transposed # At this point, m >= n. n, m = self.C.shape self.row_uncovered = np.ones(n, dtype=np.bool) self.col_uncovered = np.ones(m, dtype=np.bool) self.Z0_r = 0 self.Z0_c = 0 self.path = np.zeros((n + m, 2), dtype=int) self.marked = np.zeros((n, m), dtype=int) def _find_prime_in_row(self, row): """ Find the first prime element in the specified row. Returns the column index, or -1 if no starred element was found. """ col = np.argmax(self.marked[row] == 2) if self.marked[row, col] != 2: col = -1 return col def _clear_covers(self): """Clear all covered matrix cells""" self.row_uncovered[:] = True self.col_uncovered[:] = True def _hungarian(cost_matrix): """The Hungarian algorithm. Calculate the Munkres solution to the classical assignment problem and return the indices for the lowest-cost pairings. Parameters ---------- cost_matrix : 2D matrix The cost matrix. Does not have to be square. Returns ------- indices : 2D array of indices The pairs of (row, col) indices in the original array giving the original ordering. """ state = _HungarianState(cost_matrix) # No need to bother with assignments if one of the dimensions # of the cost matrix is zero-length. step = None if 0 in cost_matrix.shape else _step1 while step is not None: step = step(state) # Look for the starred columns results = np.array(np.where(state.marked == 1)).T # We need to swap the columns because we originally # did a transpose on the input cost matrix. if state.transposed: results = results[:, ::-1] return results # Individual steps of the algorithm follow, as a state machine: they return # the next step to be taken (function to be called), if any. def _step1(state): """Steps 1 and 2 in the Wikipedia page.""" # Step1: For each row of the matrix, find the smallest element and # subtract it from every element in its row. state.C -= state.C.min(axis=1)[:, np.newaxis] # Step2: Find a zero (Z) in the resulting matrix. If there is no # starred zero in its row or column, star Z. Repeat for each element # in the matrix. for i, j in zip(*np.where(state.C == 0)): if state.col_uncovered[j] and state.row_uncovered[i]: state.marked[i, j] = 1 state.col_uncovered[j] = False state.row_uncovered[i] = False state._clear_covers() return _step3 def _step3(state): """ Cover each column containing a starred zero. If n columns are covered, the starred zeros describe a complete set of unique assignments. In this case, Go to DONE, otherwise, Go to Step 4. """ marked = (state.marked == 1) state.col_uncovered[np.any(marked, axis=0)] = False if marked.sum() < state.C.shape[0]: return _step4 def _step4(state): """ Find a noncovered zero and prime it. If there is no starred zero in the row containing this primed zero, Go to Step 5. Otherwise, cover this row and uncover the column containing the starred zero. Continue in this manner until there are no uncovered zeros left. Save the smallest uncovered value and Go to Step 6. """ # We convert to int as numpy operations are faster on int C = (state.C == 0).astype(np.int) covered_C = C * state.row_uncovered[:, np.newaxis] covered_C *= astype(state.col_uncovered, dtype=np.int, copy=False) n = state.C.shape[0] m = state.C.shape[1] while True: # Find an uncovered zero row, col = np.unravel_index(np.argmax(covered_C), (n, m)) if covered_C[row, col] == 0: return _step6 else: state.marked[row, col] = 2 # Find the first starred element in the row star_col = np.argmax(state.marked[row] == 1) if not state.marked[row, star_col] == 1: # Could not find one state.Z0_r = row state.Z0_c = col return _step5 else: col = star_col state.row_uncovered[row] = False state.col_uncovered[col] = True covered_C[:, col] = C[:, col] * ( astype(state.row_uncovered, dtype=np.int, copy=False)) covered_C[row] = 0 def _step5(state): """ Construct a series of alternating primed and starred zeros as follows. Let Z0 represent the uncovered primed zero found in Step 4. Let Z1 denote the starred zero in the column of Z0 (if any). Let Z2 denote the primed zero in the row of Z1 (there will always be one). Continue until the series terminates at a primed zero that has no starred zero in its column. Unstar each starred zero of the series, star each primed zero of the series, erase all primes and uncover every line in the matrix. Return to Step 3 """ count = 0 path = state.path path[count, 0] = state.Z0_r path[count, 1] = state.Z0_c while True: # Find the first starred element in the col defined by # the path. row = np.argmax(state.marked[:, path[count, 1]] == 1) if not state.marked[row, path[count, 1]] == 1: # Could not find one break else: count += 1 path[count, 0] = row path[count, 1] = path[count - 1, 1] # Find the first prime element in the row defined by the # first path step col = np.argmax(state.marked[path[count, 0]] == 2) if state.marked[row, col] != 2: col = -1 count += 1 path[count, 0] = path[count - 1, 0] path[count, 1] = col # Convert paths for i in range(count + 1): if state.marked[path[i, 0], path[i, 1]] == 1: state.marked[path[i, 0], path[i, 1]] = 0 else: state.marked[path[i, 0], path[i, 1]] = 1 state._clear_covers() # Erase all prime markings state.marked[state.marked == 2] = 0 return _step3 def _step6(state): """ Add the value found in Step 4 to every element of each covered row, and subtract it from every element of each uncovered column. Return to Step 4 without altering any stars, primes, or covered lines. """ # the smallest uncovered value in the matrix if np.any(state.row_uncovered) and np.any(state.col_uncovered): minval = np.min(state.C[state.row_uncovered], axis=0) minval = np.min(minval[state.col_uncovered]) state.C[np.logical_not(state.row_uncovered)] += minval state.C[:, state.col_uncovered] -= minval return _step4 PK!Dhh6hypdb/modules/pyrankagg/build/lib/pyrankagg/metrics.pyfrom numpy import sum,asarray,abs,sign def kendall_tau_distance(s, t): """ Computes the Kendall tau distance between two full lists of ranks, which counts all discordant pairs (where s(i) < s(j) but t(i) > t(j), or vice versa) and divides by: k*(k-1)/2 This is a slow version of the distance; a faster version can be implemented using a version of merge sort (TODO). s,t should be array-like (lists are OK). If s,t are *not* full, this function should not be used. """ numDiscordant = 0 for i in range(0, len(s)): for j in range(i + 1, len(t)): if (s[i] < s[j] and t[i] > t[j]) or (s[i] > s[j] and t[i] < t[j]): numDiscordant += 1 return 2.0 * numDiscordant / (len(s) * (len(s) - 1)) def spearman_footrule_distance(s,t): """ Computes the Spearman footrule distance between two full lists of ranks: F(s,t) = (2/|S|^2)*sum( |s(i) - t(i)| ) the normalized sum over all elements in a set of the absolute difference between the rank according to two different lists s and t. As defined, 0 <= F(s,t) <= 1. s,t should be array-like (lists are OK). If s,t are *not* full, this function should not be used. """ # check that the lists are both full assert len(s) == len(t) return (2.0/len(s)**2)*sum(abs(asarray(s) - asarray(t))) PK!Xی6hypdb/modules/pyrankagg/build/lib/pyrankagg/rankagg.py""" Python code for rank aggregation, for both full and partial lists. For methods/algorithms I have followed the paper "Rank aggregation methods for the web" (2001) C. Dwork, R. Kumar, M. Naor, D. Sivakumar. Proceedings of the 10th international conference on World Wide Web. Created May 22, 2015 @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license (see LICENSE file). Copyright (c) 2015, Kevin S. Brown All rights reserved. """ from XDB.modules.kbutil.listutil import sort_by_value from XDB.modules.pyrankagg.linear_assignment import linear_ass from XDB.modules.pyrankagg.metrics import kendall_tau_distance from numpy import zeros,abs import copy class RankAggregator(object): """ Base class for full and partial list rank aggregation methods. Should not be called directly except in testing situations; houses shared methods to both. """ def __init__(self): pass def convert_to_ranks(self,scoreDict): """ Accepts an input dictionary in which they keys are items to be ranked (numerical/string/etc.) and the values are scores, in which a higher score is better. Returns a dictionary of items and ranks, ranks in the range 1,...,n. """ # default sort direction is ascending, so reverse (see sort_by_value docs) x = sort_by_value(scoreDict,True) y = zip(list(zip(*x))[0],range(1,len(x)+1)) ranks = {} for t in y: ranks[t[0]] = t[1] return ranks def item_mapping(self,items): """ Some methods need to do numerical work on arrays rather than directly using dictionaries. This function maps a list of items (they can be strings, ints, whatever) into 0,...,len(items). Both forward and reverse dictionaries are created and stored. """ self.itemToIndex = {} self.indexToItem = {} indexToItem = {} next = 0 for i in items: self.itemToIndex[i] = next self.indexToItem[next] = i next += 1 return class FullListRankAggregator(RankAggregator): """ Performs rank aggregation, using a variety of methods, for full lists (all items are ranked by all experts). """ def __init__(self): super(RankAggregator,self).__init__() # used for method dispatch self.mDispatch = {'borda':self.borda_aggregation,'spearman':self.footrule_aggregation} def aggregate_ranks(self,experts,areScores=True,method='spearman'): """ Combines the ranks in the list experts to obtain a single set of aggregate ranks. Can operate on either scores or ranks; scores are assumed to always mean higher=better. INPUT: experts : list of dictionaries, required each element of experts should be a dictionary of item:score or item:rank pairs areScores : bool, optional set to True if the experts provided scores, False if they provide ranks method : string, optional which method to use to perform the rank aggregation. options include: 'borda': aggregate by computation of borda scores 'spearman' : use spearman footrule distance and bipartite graph matching """ aggRanks = {} # if the input data is scores, we need to convert if areScores: ranklist = [self.convert_to_ranks(e) for e in experts] else: ranklist = experts # now dispatch on the string method if method in self.mDispatch.keys(): #if self.mDispatch.has_key(method): aggRanks = self.mDispatch[method](ranklist) else: print('ERROR: method') return aggRanks def borda_aggregation(self,ranklist): """ Computes aggregate rank by Borda score. For each item and list of ranks, compute: B_i(c) = # of candidates ranks BELOW c in ranks_i Then form: B(c) = sum(B_i(c)) and sort in order of decreasing Borda score. The aggregate ranks are returned as a dictionary, as are in input ranks. """ # lists are full, so make an empty dictionary with the item keys aggRanks = {}.fromkeys(ranklist[0]) for item in aggRanks: aggRanks[item] = 0 # now increment the Borda scores one list at a time maxRank = len(aggRanks) for r in ranklist: for item in r: aggRanks[item] += maxRank - r[item] # now convert the Borda scores to ranks return self.convert_to_ranks(aggRanks) def footrule_aggregation(self,ranklist): """ Computes aggregate rank by Spearman footrule and bipartite graph matching, from a list of ranks. For each candiate (thing to be ranked) and each position (rank) we compute a matrix W(c,p) = sum(|tau_i(c) - p|)/S where the sum runs over all the experts doing the ranking. S is a normalizer; if the number of ranks in the list is n, S is equal to 0.5*n^2 for n even and 0.5*(n^2 - 1) for n odd. After constructing W(c,p), Munkres' algorithm is used for the linear assignment/bipartite graph matching problem. """ # lists are full so make an empty dictionary with the item keys items = ranklist[0].keys() # map these to matrix entries self.item_mapping(items) c = len(ranklist[0]) % 2 scaling = 2.0/(len(ranklist[0])**2 - c) # thes are the positions p (each item will get a rank() p = range(1,len(items)+1) # compute the matrix W = zeros((len(items),len(items))) for r in ranklist: for item in items: taui = r[item] for j in range(0,len(p)): delta = abs(taui - p[j]) # matrix indices W[self.itemToIndex[item],j] += delta W = scaling*W # solve the assignment problem path = linear_ass(W) # construct the aggregate ranks aggRanks = {} for pair in path: aggRanks[self.indexToItem[pair[0]]] = p[pair[1]] return aggRanks def locally_kemenize(self,aggranks,ranklist): """ Performs a local kemenization of the ranks in aggranks and the list of expert rankings dictionaries in ranklist. All rank lists must be full. The aggregate ranks can be obtained by any process - Borda, footrule, Markov chain, etc. Returns the locally kemeny optimal aggregate ranks. A list of ranks is locally Kemeny optimal if you cannot obtain a lower Kendall tau distance by performing a single transposition of two adjacent ranks. """ # covert ranks to lists, in a consistent item ordering, to use # the kendall_tau_distance in metrics.py lkranks = {} items = aggranks.keys() sigma = [aggranks[i] for i in items] tau = [] for r in ranklist: tau.append([r[i] for i in items]) # starting distance and distance of permuted list SKorig = 0 # initial distance for t in tau: SKorig += kendall_tau_distance(sigma,t) # now try all the pair swaps for i in range(0,len(items)-1): SKperm = 0 j = i + 1 piprime = copy.copy(sigma) piprime[i],piprime[j] = piprime[j],piprime[i] for t in tau: SKperm += kendall_tau_distance(piprime,t) if SKperm < SKorig: sigma = piprime SKorig = SKperm # rebuild the locally kemenized rank dictionary for i in range(0,len(items)): lkranks[items[i]] = sigma[i] return lkranks PK!=hypdb/modules/pyrankagg/build/lib/pyrankagg/tests/__init__.pyPK![ SLSL=hypdb/modules/pyrankagg/build/lib/pyrankagg/tests/runtests.py#! /usr/bin/env python sources = """ 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 """ import sys import base64 import zlib class DictImporter(object): def __init__(self, sources): self.sources = sources def find_module(self, fullname, path=None): if fullname == "argparse" and sys.version_info >= (2,7): # we were generated with = (3, 0): exec("def do_exec(co, loc): exec(co, loc)\n") import pickle sources = sources.encode("ascii") # ensure bytes sources = pickle.loads(zlib.decompress(base64.decodebytes(sources))) else: import cPickle as pickle exec("def do_exec(co, loc): exec co in loc\n") sources = pickle.loads(zlib.decompress(base64.decodestring(sources))) importer = DictImporter(sources) sys.meta_path.insert(0, importer) entry = "import py; raise SystemExit(py.test.cmdline.main())" do_exec(entry, locals()) PK!D8' Ehypdb/modules/pyrankagg/build/lib/pyrankagg/tests/test_aggregation.pyfrom pyrankagg import * import numpy as np class TestFullListAggregation: def setup(self): self.scorelist = [{'milk':1.4,'cheese':2.6,'eggs':1.2,'bread':3.0}, {'milk':2.0,'cheese':3.2,'eggs':2.7,'bread':2.9}, {'milk':2.7,'cheese':3.0,'eggs':2.5,'bread':3.5}] def test_rank_conversion(self): RA = rankagg.RankAggregator() r1 = RA.convert_to_ranks(self.scorelist[0]) assert r1['milk'] == 3,'Item \'milk\' has the wrong rank!' assert r1['cheese'] == 2,'Item \'cheese\' has the wrong rank!' assert r1['eggs'] == 4,'Item \'eggs\' has the wrong rank!' assert r1['bread'] == 1,'Item \'bread\' has the wrong rank!' r2 = RA.convert_to_ranks(self.scorelist[1]) assert r2['milk'] == 4,'Item \'milk\' has the wrong rank!' assert r2['cheese'] == 1,'Item \'cheese\' has the wrong rank!' assert r2['eggs'] == 3,'Item \'eggs\' has the wrong rank!' assert r2['bread'] == 2,'Item \'bread\' has the wrong rank!' r3 = RA.convert_to_ranks(self.scorelist[2]) assert r3['milk'] == 3,'Item \'milk\' has the wrong rank!' assert r3['cheese'] == 2,'Item \'cheese\' has the wrong rank!' assert r3['eggs'] == 4,'Item \'eggs\' has the wrong rank!' assert r3['bread'] == 1,'Item \'bread\' has the wrong rank!' def test_borda_aggregation(self): FLRA = rankagg.FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(self.scorelist,areScores=True,method='borda') assert aggRanks['milk'] == 3,'Item \'milk\' has the wrong aggregate rank!' assert aggRanks['cheese'] == 2,'Item \'cheese\' has the wrong aggregate rank!' assert aggRanks['eggs'] == 4,'Item \'eggs\' has the wrong aggregate rank!' assert aggRanks['bread'] == 1,'Item \'bread\' has the wrong aggregate rank!' def test_footrule_aggregation(self): FLRA = rankagg.FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(self.scorelist,areScores=True,method='spearman') assert aggRanks['milk'] == 3,'Item \'milk\' has the wrong aggregate rank!' assert aggRanks['cheese'] == 2,'Item \'cheese\' has the wrong aggregate rank!' assert aggRanks['eggs'] == 4,'Item \'eggs\' has the wrong aggregate rank!' assert aggRanks['bread'] == 1,'Item \'bread\' has the wrong aggregate rank!' def test_local_kemenization(self): FLRA = rankagg.FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(self.scorelist,areScores=True,method='borda') ranklist = [FLRA.convert_to_ranks(s) for s in self.scorelist] lkRanks = FLRA.locally_kemenize(aggRanks,ranklist) print lkRanks assert lkRanks['milk'] == 3,'Item \'milk\' has the wrong aggregate rank!' assert lkRanks['cheese'] == 2,'Item \'cheese\' has the wrong aggregate rank!' assert lkRanks['eggs'] == 4,'Item \'eggs\' has the wrong aggregate rank!' assert lkRanks['bread'] == 1,'Item \'bread\' has the wrong aggregate rank!' PK!5SSAhypdb/modules/pyrankagg/build/lib/pyrankagg/tests/test_metrics.pyfrom pyrankagg import * import numpy as np class TestConversions: def setup(self): self.scorelist = [{'milk':1.4,'cheese':2.6,'eggs':1.2,'bread':3.0}, {'milk':2.0,'cheese':3.2,'eggs':2.7,'bread':2.9}, {'milk':2.7,'cheese':3.0,'eggs':2.5,'bread':3.5}] def test_spearman_footrule(self): RA = rankagg.RankAggregator() s = RA.convert_to_ranks(self.scorelist[0]) t = RA.convert_to_ranks(self.scorelist[1]) sf = metrics.spearman_footrule_distance(s.values(),t.values()) assert (sf - 0.5) < 1e-08,'Footrule distance is wrong!' def test_kendall_tau(self): ranks1 = [1,2,3,4,5] ranks2 = [3,4,1,2,5] kt = metrics.kendall_tau_distance(ranks1,ranks2) assert (kt - 0.4) < 1e-08,'Kendall tau distance is wrong!' PK!8Soff&hypdb/modules/pyrankagg/kbutil/LICENSE@author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PK!6! *hypdb/modules/pyrankagg/kbutil/MANIFEST.ininclude README LICENSE PK!V%hypdb/modules/pyrankagg/kbutil/READMEAuthor : Kevin S. Brown (kevin.s.brown@uconn.edu, github.com/thelahunginjeet) Assorted python utilities that I find myself repeatedly reinventing/repeating in multiple projects. -listutil.py : utilties for working with lists and dictionaries -plotting.py : making prettier or specialized plots -rand.py : generating random numbers -statistics.py : correlation matrices, smoothing, bootstrapping correlations, z-scoring PK!B66*hypdb/modules/pyrankagg/kbutil/__init__.py__all__ = ["plotting","statistics","rand","listutil"] PK!ć~< < *hypdb/modules/pyrankagg/kbutil/listutil.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import collections,operator def unique(seq, idfun=repr): """ Returns a list of unique items in a sequence of items. There are lots of ways to do this; here is one. """ seen = {} return [seen.setdefault(idfun(e),e) for e in seq if idfun(e) not in seen] def flatten(l): """ Generator that flattens a list. """ for el in l: if isinstance(el,collections.Iterable) and not isinstance(el,basestring): for sub in flatten(el): yield sub else: yield el def sort_by_value(D,reverse=False): """ There are many ways to sort a dictionary by value and return lists/tuples/etc. This is one recommended in PEP265. """ return sorted(D.iteritems(),key=operator.itemgetter(1),reverse=reverse) def circshift(s,n): """ Circularly shifts the input string or list s by n positions. n > 0 will do a shift to the left, and n < 0 to the right. """ return s[n:]+s[:n] PK!++*hypdb/modules/pyrankagg/kbutil/plotting.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import pylab from numpy import ceil,log2,histogram,abs,linspace,zeros,inf,log,vstack from numpy import min as npmin from numpy import max as mpmax from numpy.random import randn from scipy.stats import gaussian_kde from matplotlib.ticker import FuncFormatter from matplotlib import colors _colors = ('k','r','orange','gold','g','b','purple','magenta', 'firebrick','coral','yellow','limegreen','dodgerblue','indigo','orchid', 'tomato','darkorange','greenyellow','darkgreen','deepskyblue','indigo','deeppink') _symbols = ('o','s','^','<','>','x','D','h','p') _lines = ('-','--','-.',':') def color_wheel(colors=_colors,symbols=_symbols,lines=_lines): """ Returns a generator that cycles through a selection of colors,symbols, lines styles for matplotlib.plot. Thanks to Ryan Gutenkunst for this idiom. """ if not colors: colors = ('',) if not symbols: symbols = ('',) if not lines: lines = ('',) while 1: for l in lines: for s in symbols: for c in colors: yield (c,s,l) def pylab_pretty_plot(lines=2,width=3,size=4,labelsize=16,markersize=10,fontsize=20,lfontsize=16,lframeon=False,usetex=True): """ Changes pylab plot defaults to get nicer plots - frame size, marker size, etc. Parameters: ------------ lines : linewidth width : width of framelines and tickmarks size : tick mark length labelsize : font size of ticklabels markersize : size of plotting markers fontsize : size of font for axes labels lfontsize : legend fontsize usetex : use latex for labels/text? """ pylab.rc("lines",linewidth=lines) pylab.rc("lines",markeredgewidth=size/3) pylab.rc("lines",markersize=markersize) pylab.rc("ytick",labelsize=labelsize) pylab.rc("ytick.major",pad=size) pylab.rc("ytick.minor",pad=size) pylab.rc("ytick.major",size=size*1.8) pylab.rc("ytick.minor",size=size) pylab.rc("xtick",labelsize=labelsize) pylab.rc("xtick.major",pad=size) pylab.rc("xtick.minor",pad=size) pylab.rc("xtick.major",size=size*1.8) pylab.rc("xtick.minor",size=size) pylab.rc("axes",linewidth=width) pylab.rc("text",usetex=usetex) pylab.rc("font",size=fontsize) pylab.rc("legend",fontsize=lfontsize) pylab.rc("legend",frameon=lframeon) def plot_pylab_colormaps(): """ Makes a plot of all the pylab colormaps; useful for picking colormaps. Returns a figure to either save or show. """ # get list of colormaps cmap_list = pylab.cm._cmapnames nrows = len(cmap_list) # set up a massive array of subplots gradient = vstack((linspace(0,1,256),linspace(0,1,256))) fig,axes = pylab.subplots(nrows=nrows) fig.subplots_adjust(top=0.95,bottom=0.01,left=0.2,right=0.99,wspace=1.0) # fill in the subplots for ax,name in zip(axes,cmap_list): ax.imshow(gradient,aspect='auto',cmap=getattr(pylab.cm,name)) pos = list(ax.get_position().bounds) x_text = pos[0] - 0.01 y_text = pos[1] + pos[3]/2 fig.text(x_text,y_text,name,va='center',ha='right',fontsize=8) # turn off all the ticks on all the axes for ax in axes: ax.set_axis_off() # return the figure return fig def plot_hist(x,nbins=None,kde=False,color='k',ax=None): """ Plots a histogram (bar plot) of the data in x, with an optional kernel density estimate added. Returns the axes object. Parameters: ------------- x : array-like, required data to plot nbins : integer, optional if None, defaults to 1 + ceil(log2(len(x))) kde : boolean, optional set to True to overlay a kernel density estimate of x color : string, optional color for the bars and optional kde ax : pylab axes object, optional use to pass in a custom set of axes """ if nbins is None: nbins = 1 + ceil(log2(len(x))) if ax is None: ax = pylab.axes(frameon=False) # compute bin counts counts,bin_edges = histogram(x,bins=nbins,density=True) bin_edges = bin_edges[0:-1] barwidth = 0.9*(bin_edges[1] - bin_edges[0]) # bar plot ax.bar(bin_edges,counts,color=color,width=barwidth,alpha=0.5) lpoint = min(x) - 0.025*abs(min(x)) rpoint = max(x) - 0.025*abs(max(x)) # kde if desired if kde is True: kde = gaussian_kde(x) support = linspace(lpoint,rpoint,256) mPDF = kde(support) ax.plot(support,mPDF,color=color,lw=3) # pretty things up ax.get_xaxis().tick_bottom() ax.get_yaxis().set_visible(False) ax.set_xlim([lpoint,rpoint]) ax.set_ylim(bottom=-0.01) return ax def plot_points_plus_kde(xlist,labels,markx=False,lines=3,size=9,ax=None): """ Accepts a list of one-dimensional densities and plots each as points on a line with a KDE on top. Parameters: ------------- xlist : list of array-like objects data to produce density plot for labels : list of legend labels; len(labels) should equal len(xlist) markx : bool, optional put tick labels at the min/max values in x? lines : integer, optional line/marker edge thickness size : integer, optional marker size color : string, optional color for points and kde ax : pylab axes object, optional """ if ax is None: ax = pylab.axes(frameon=False) # cycles through colors cw = color_wheel(lines=('-'),symbols=('o')) for i in xrange(0,len(xlist)): # spin the color wheel (c,s,l) = cw.next() # make the point plot ax.plot(xlist[i],zeros(xlist[i].shape),c+s,markersize=size,mew=lines,alpha=0.5) # kde kde = gaussian_kde(xlist[i]) lpoint = min(xlist[i]) - 0.025*abs(min(xlist[i])) rpoint = max(xlist[i]) + 0.025*abs(max(xlist[i])) support = linspace(lpoint,rpoint,512) mPDF = kde(support) ax.plot(support,mPDF,color=c,lw=lines,label=labels[i]) # prtty things up ax.get_yaxis().set_visible(False) ax.set_ylim(bottom=-0.1) if markx: major_formatter = pylab.FormatStrFormatter('%1.2f') ax.get_xaxis().set_major_formatter(major_formatter) ax.get_xaxis().tick_bottom() minx = min([min(x) for x in xlist]) maxx = max([max(x) for x in xlist]) ax.get_xaxis().set_ticks([minx,maxx]) else: ax.get_xaxis().set_ticks([]) # legend ax.legend(loc='best') return ax def plot_scatter_plus_marginals(x,y,sColor='k',xColor='k',yColor='k',xlim=None,ylim=None): """ Makes a scatter plot of 2D data along with marginal densities in each coordinate, drawn using kernel density estimates. Parameters: ------------- x : 1D array-like object y : 1D array-like object sColor : string, optional color for scatterplot points xColor : string, optional color for KDE(x) yColor : string, optional color for KDE(y) xlim : list, optional x limits for plot; computed from x if none provided ylim : list, optional y limits for plot; computed from y if None """ # axis formatter def my_formatter(x,pos): return '%2.2f'%x # kde/limits kdepoints = 512 inflation = 0.25 # compute axis limits if not provided if xlim is None: xlim = [0,0] xlim[0] = min(x) - inflation*abs(min(x)) xlim[1] = max(x) + inflation*abs(max(x)) if ylim is None: ylim = [0,0] ylim[0] = min(y) - inflation*abs(min(y)) ylim[1] = max(y) + inflation*abs(max(y)) # plot and axis locations left, width = 0.1,0.65 bottom,height = 0.1,0.65 bottom_h = left_h = left + width + 0.05 mainCoords = [left,bottom,width,height] xHistCoords = [left,bottom_h,width,0.2] yHistCoords = [left_h,bottom,0.2,height] f = pylab.figure(1,figsize=(8,8)) # scatter plot axMain = pylab.axes(mainCoords,frameon=False) axMain.scatter(x,y,c=sColor,marker='o',alpha=0.5) axMain.set_xlim(xlim) axMain.set_ylim(ylim) axMain.get_xaxis().set_visible(False) axMain.get_yaxis().set_visible(False) # x histogram axxHist = pylab.axes(xHistCoords,frameon=False) axxHist.get_yaxis().set_visible(False) kdex = gaussian_kde(x) xsupport = linspace(xlim[0],xlim[1],kdepoints) mPDF = kdex(xsupport) axxHist.plot(xsupport,mPDF,xColor,lw=3) # add axis line, clean up axxHist.plot(xlim,[0,0],'k-',lw=3) axxHist.set_xlim(xlim) axxHist.set_xticks(xlim) axxHist.tick_params(axis='x',direction='in',top=False) axxHist.xaxis.set_major_formatter(FuncFormatter(my_formatter)) axxHist.set_yticks([]) # y histogram axyHist = pylab.axes(yHistCoords,frameon=False) axyHist.get_xaxis().set_visible(False) kdey = gaussian_kde(y) ysupport = linspace(ylim[0],ylim[1],kdepoints) mPDF = kdey(ysupport) axyHist.plot(mPDF,ysupport,yColor,lw=3) # add axis line, clean up axyHist.plot([0,0],ylim,'k-',lw=3) axyHist.set_ylim(ylim) axyHist.set_yticks(ylim) axyHist.tick_params(axis='y',direction='in',right=False) axyHist.yaxis.set_major_formatter(FuncFormatter(my_formatter)) axyHist.set_xticks([]) return axMain PK!@l^ &hypdb/modules/pyrankagg/kbutil/rand.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from numpy.random import randint def randchoice(l): ''' Returns and element from list l chosen at random. ''' return l[randint(len(l))] def randbit(size=None): ''' Generates an array of shape size of random {0,1} bits. ''' return randint(2,size=size) def randspin(size=None): ''' Generates an array of shape size of random {-1,1} spin variables. ''' return 2*randbit(size=size) - 1 def randrot(dim=2): ''' Grenerate a random rotation matrix drawn from the Haar distribution (the only uniform distribution on SO(n)). See: Stewart, G.W., 'The efficient generation of random orthogonal matrices with an application to condition estimators', SIAM Journal on Numerical Analysis, 17(3), pp. 403-409, 1980. For more details. INPUT: dim: int, optional the rotation matrix will be dim x dim ''' H = eye(dim) D = ones((dim,)) for n in range(1, dim): x = normal(size=(dim-n+1,)) D[n-1] = sign(x[0]) x[0] -= D[n-1]*sqrt((x*x).sum()) # Householder transformation Hx = eye(dim-n+1) - 2.*outer(x, x)/(x*x).sum() mat = eye(dim) mat[n-1:,n-1:] = Hx H = dot(H, mat) # Fix the last sign such that the determinant is 1 D[-1] = -D.prod() H = (D*H.T).T return H PK!xx'hypdb/modules/pyrankagg/kbutil/setup.py#!/usr/bin/env python from distutils.core import setup,Command """ class PyTest(Command): user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): import sys,subprocess errno = subprocess.call([sys.executable,'tests/runtests.py']) raise SystemExit(errno) """ setup(name='kbutil', version='1.0', description='Python utility functions', author='Kevin Brown', author_email='kevin.s.brown@uconn.edu', url='https://github.com/thelahunginjeet/kbutil', packages=['kbutil'], package_dir = {'kbutil': ''}, license='BSD-3', classifiers=[ 'License :: OSI Approved :: BSD-3 License', 'Intended Audience :: Developers', 'Intended Audience :: Scientists', 'Programming Language :: Python', ], ) PK!+I::,hypdb/modules/pyrankagg/kbutil/statistics.py""" @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license, duplicated as follows: Copyright (c) 2013, Kevin S. Brown All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University of Connecticut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ from numpy import arange,correlate,newaxis,dot,sort,int,floor,log2,sqrt,abs,log from numpy import ceil,interp,isnan,ones,asarray,argsort,zeros,linspace,power from numpy import hanning,hamming,bartlett,blackman,r_,convolve,percentile from numpy import histogram,argmin,argmax from numpy.random import randint from numpy.linalg import svd from scipy.stats import pearsonr,spearmanr,kendalltau,skew from scipy.special import gammaln def iqr(x): """ Computes the interquartile range of x. """ q75,q25 = percentile(x,[75,25]) return q75 - q25 def bin_calculator(x,method='sturges'): """ Estimates the 'appropriate' number of bins for histograms of x, using a variety of rules in the literature. For methods which calculate the bin width, the number of bins can be computed via k = ceil((max(x) - min(x))/h). Supported methods (with N = len(x)) are: 'sturges' : k = ceil(log2(N)) + 1 'sqrt' : k = ceil(sqrt(N)) 'rice' : k = ceil(2*N^(1/3)) 'doane' : k = 1 + ceil(log2(N) + log2(1 + |s|/sigma_s)) here s = skew(x), and sigma_s = sqrt(6*(N-1)/(N+1)(N+3)) 'scott' : h = 3.5*sigma/N^(1/3) here sigma is the sample standard deviation 'fd' (Freedman-Diaconis) : h = 2*IQR(x)/N^(1/3) 'meansq' : computes the optimal bin width (due to Stone) via minimization of mean squared error of the density estimate. Numerically computes: argmin_h J(h,x) where J(h,x) = {2/(h*(n-1)) - (n+1)/(n^2(n-1)h) sum_k N_k^2}. N_k is the number of samples in bin k. This function is extremely noisy so a brute force search is performed. 'bayes' : maximizes the log posterior of a piecewise constant model (following Knuth arXiv:physics/0605197v2); performs brute search in the range 1 to 100 bins. In all cases, this function returns the number of bins to use for the data in x. Unsupported methods default to sturges. """ N = len(x) if method is 'sturges': k = ceil(log2(N)) + 1 elif method is 'sqrt': k = ceil(sqrt(N)) elif method is 'rice': k = ceil(2*power(N,1./3.)) elif method is 'doane': s = skew(x) sigma_s = sqrt((6.*(N-1))/((N+1)*(N+3))) k = ceil(1 + log2(N) + log2(1 + abs(s)/sigma_s)) elif method is 'scott': h = 3.5*x.std()/power(N,1./3.) k = ceil((max(x) - min(x))/h) elif method is 'fd': h = 2*iqr(x)/power(N,1./3.) k = ceil((max(x) - min(x))/h) elif method is 'meansq': # define a function that computes J def J(h,x): N = len(x) k = ceil((max(x) - min(x))/h) Nk,_ = histogram(x,bins=k) return 2./(h*(N-1.)) - ((N+1.)/(h*(N-1.)*N**2))*(Nk**2).sum() # do a brute force search in h hmax = (max(x) - min(x))/5 htry = linspace(0.01,hmax,256) jofh = zeros(len(htry)) for i in xrange(len(htry)): jofh[i] = J(htry[i],x) hopt = htry[argmin(jofh)] k = ceil((max(x) - min(x))/hopt) elif method is 'bayes': maxk = 100 logp = zeros(maxk) for M in xrange(1,maxk+1): Nk,_ = histogram(x,bins=M) logp[M-1] = N*log(M) + gammaln(M/2.) - gammaln(N+M/2.) - M*gammaln(1./2.) + gammaln(Nk + 0.5).sum() k = argmax(logp) + 1 else: print('ERROR: Unsupported method. Defaulting to \'sturges\'') k = ceil(log2(N)) + 1 return int(k) def spearman_footrule_distance(s,t): """ Computes the Spearman footrule distance between two full lists of ranks: F(s,t) = sum[ |s(i) - t(i)| ]/S, the normalized sum over all elements in a set of the absolute difference between the rank according to s and t. As defined, 0 <= F(s,t) <= 1. S is a normalizer which is equal to 0.5*len(s)^2 for even length ranklists and 0.5*(len(s)^2 - 1) for odd length ranklists. If s,t are *not* full, this function should not be used. s,t should be array-like (lists are OK). """ # check that size of intersection = size of s,t? assert len(s) == len(t) sdist = sum(abs(asarray(s) - asarray(t))) # c will be 1 for odd length lists and 0 for even ones c = len(s) % 2 normalizer = 0.5*(len(s)**2 - c) return sdist/normalizer def standardize(X,stype='row'): """ Standardizes (mean subtraction + conversion to unit variance) the array X, according to either rows or columns. """ if stype == 'row': return (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] return (X - X.mean(axis=0)[newaxis,:])/X.std(axis=0)[newaxis,:] def autocovariance(X,norm=False): """ Computes the autocovariance function of X: phi(T) = 1/(N-T) sum_i X'(t_i)*X'(t_i - T) As T gets closer and closer to N, the autocovariance becomes less and less well estimated, since the number of valid samples goes down. This version computes phi(T) at all T (0,...N-1). If norm = True, the autocorrelation (phi(T)/phi(0)), rather than the bare autocovariance is returned. """ Xp = X - X.mean() phi = (1.0/(len(X) - arange(0,len(X))))*correlate(Xp,Xp,"full")[len(X)-1:] if norm: return phi/phi[0] return phi def cross_corrmatrix(X,Y): """ For two data matrices X (M x T) and Y (N x T), corrmatrix(X,Y) computes the M x N set of pearson correlation coefficients between all the rows of X and the rows of Y. X and Y must have the same column dimension for this to work. """ assert X.shape[1] == Y.shape[1] # row standardize X and Y X = (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] Y = (Y - Y.mean(axis=1)[:,newaxis])/Y.std(axis=1)[:,newaxis] return dot(X,Y.T)/X.shape[1] def covmatrix(X): ''' Computes the N x N covariance matrix for an N x p data matrix X. ''' cX = X - X.mean(axis=1)[:,newaxis] return dot(cX,cX.T)/(cX.shape[0] - 1) def corrmatrix(X): ''' Computes the N x N correlation matrix for an N x p data matrix X. ''' sX = (X - X.mean(axis=1)[:,newaxis])/X.std(axis=1)[:,newaxis] return dot(sX,sX.T)/(sX.shape[0] - 1) def empirical_ci(x,alpha=0.05): """ Computes an empirial (alpha/2, 1-alpha/2) confidence interval for the distributional data in x. Returns a tuple (lb,ub) which are the lower and upper bounds for the coverage interval. """ assert alpha > 0.0 xtilde = sort(x) xl = (alpha/2)*len(x) xu = (1.0 - alpha/2)*len(x) l1 = int(floor(xl)) l2 = int(ceil(xl)) u1 = int(floor(xu)) u2 = int(ceil(xu)) lb = interp(xl,[l1,l2],[xtilde[l1],xtilde[l2]]) up = interp(xu,[u1,u2],[xtilde[u1],xtilde[u2]]) return lb,ub def bootstrap_correlation(x,y,cType='pearson',p=0.05,N=5000): """ Computes a simple bootstrap CI on simple correlation coefficients. The CI is computed using the interval method. This won't work properly if x or y are time-series with significant autocorrelation. You need to downsample or use a more complicated bootstrap that preserves that structure. Parameters: ------------ x,y : (1D) lists or arrays of data cType : string, optional should be 'pearson', 'spearman', or 'kendall' p : float, optional the coverage interval will cover 1-p of the cumulative distribution N : integer, optional number of bootstrap replications Returns: ------------ rho,rL,rU : r(x,y) and lower, upper bounds for 1-p CI """ corrTable = {'pearson': pearsonr, 'spearman': spearmanr, 'kendall': kendalltau} try: corr = corrTable[cType] except KeyError: # default to pearson print 'WARNING: Correlation type not supported. Defaulting to Pearson.' corr = pearsonr rho = corr(x,y)[0] rhobs = list() nSamp = len(x) iB = 0 while iB < N: randx = randint(nSamp,size=(nSamp,)) val = corr(x[randx],y[randx])[0] if not isnan(val): rhobs.append(val) iB = iB + 1 # obtain the coverage interval rL,rU = empirical_ci(rhobs,alpha=p) return rho,rL,rU def smooth(x,wlen=11,window='flat'): """Smooth the data using a window with requested size. This method is based on the convolution of a scaled window with the signal. The signal is prepared by introducing reflected copies of the signal (with the window size) in both ends so that transient parts are minimized in the begining and end part of the output signal. Parameters: ------------ x : array type, required the input signal to smoothed wlen : integer, odd, optional the size of the smoothing window; should be an odd integer window : string, optional the type of window. allowed choices are: 'flat', 'hanning', 'hamming', 'bartlett', 'blackman' 'flat' produces a moving average. Returns: ------------ y : array type the smoothed signal Example: ------------ t=linspace(-2,2,0.1) x=sin(t)+randn(len(t))*0.1 y=smooth(x) Stolen from the scipy cookbook and modified. """ if x.ndim != 1: raise ValueError, "smooth only accepts 1 dimension arrays." if x.size < wlen: raise ValueError, "Input vector needs to be bigger than window size." if wlen < 3: return x # dictionary of allowed windows winTable = {'flat' : ones, 'hanning' : hanning, 'hamming' : hamming, 'bartlett' : bartlett, 'blackman' : blackman} try: w = winTable[window] except KeyError: # default to flat print 'WARINING: Unsupported window type. Defaulting to \'flat\'.' w = winTable['flat'] w = w(wlen) # wrap ends around and convolve with the scaled window s=r_[2*x[0]-x[wlen-1::-1],x,2*x[-1]-x[-1:-wlen:-1]] y=convolve(w/w.sum(),s,mode='same') # return vector with bogus ends trimmed return y[wlen:-wlen+1] def discrete_frequency_calculator(intList): ''' Accepts a list of integer values, returning two numpy arrays of values and frequencies. The output frequencies are normalized so that sum(Pn) = 1.0. Input values are requried to be integer; no binning is performed for floating point values. INPUT ------ intList: list of integers, required input list of data of integer type OUTPUT ------ n,Pn : two lists of values and freq(values) frequencies are normalized so that sum(Pn) = 1.0, and the two returned arrays are in 1-1 correspondence, sorted in order of increasing n ''' assert all([type(x) == int for x in intList]) freq = {} n = len(intList) for k in intList: pkinc = 1.0/n if not freq.has_key(k): freq[k] = pkinc else: freq[k] += pkinc # sorting indx = argsort(freq.keys()) return asarray([freq.keys()[x] for x in indx]),asarray([freq.values()[x] for x in indx]) def cdf_sparse(data): ''' Computes the (empirical) cumulative distribution F(x) of data, defined as: F(x) = int_a^b p(x) dx or as a sum. This function only computes F(x) at the data values; to get a "stairstep" plot of the cdf use cdist_dense. INPUT ------ data : array-like, required input data OUTPUT ------ dsort : array sorted data (increasing) cdf : array cdf, evaluated at the values in dsort ''' # sort the data data_sorted = sort(data) # calculate the proportional values of samples p = 1. * arange(len(data)) / (len(data) - 1) return data_sorted,p def cdf_dense(data,limits,npts=1024): ''' Computes the (empirical) cumulative distribution F(x) of samples in data, over a specified range and number of support points. F(x) is defined as: F(x) = int_a^b p(x) dx or as a sum. INPUT ------ data : array-like, required input data limits : array-like, required cdf is computed for npts values between limits[0] and limits[1] npts : int, optional number of support points to evaluate cdf OUTPUT ------ x : array support for the cdf cdf : array cdf, evaluated at the values x ''' # sort the data data_sorted = sort(data) x = linspace(limits[0],limits[1],npts) Fofx = zeros(len(x)) for i in xrange(0,len(x)): Fofx[i] = sum(data_sorted <= x[i]) return x,1.0*Fofx/len(data) def pca(X,k): ''' PCA decomposition of matrix X. X is assumed to be N x p, where p is the number of samples (backwards from many PCA implementations). If you want the p x N version, just transpose what comes out of this function. k is the number of components to retain (probably determined by some PCA stopping rule). Returns the matrix of eigenvectors of X (the "mixing matrix") and the "signals" (projection of the data onto the first k components). ''' # row center the data matrix cX = X - X.mean(axis=1)[:,newaxis] C = covmatrix(cX) # singular value decomp _,s,W = svd(C) # select first k columns W = W[:,:k] # compute signal matrix S = dot(W.T,X) # need to do something about the units return W,S PK!U2&&,hypdb/modules/pyrankagg/linear_assignment.py""" Solve the unique lowest-cost assignment problem using the Hungarian algorithm (also known as Munkres algorithm). """ # Based on original code by Brain Clapper, adapted to NumPy by Gael Varoquaux. # Heavily refactored by Lars Buitinck. # Copyright (c) 2008 Brian M. Clapper , Gael Varoquaux # Author: Brian M. Clapper, Gael Varoquaux # LICENSE: BSD # # Modified by K.S. Brown 2015 for standalone assingnment problems; could not get # most recent version of scikits-learn to build on 64-bit Mac OS X. In addition, # very little of scikits-learn is needed to perform the calculation. # import numpy as np def astype(array,dtype,copy=True): if not copy and array.dtype == dtype: return array return array.astype(dtype) def linear_ass(X): """Solve the linear assignment problem using the Hungarian algorithm. The problem is also known as maximum weight matching in bipartite graphs. The method is also known as the Munkres or Kuhn-Munkres algorithm. Parameters ---------- X : array The cost matrix of the bipartite graph Returns ------- indices : array, The pairs of (row, col) indices in the original array giving the original ordering. References ---------- 1. http://www.public.iastate.edu/~ddoty/HungarianAlgorithm.html 2. Harold W. Kuhn. The Hungarian Method for the assignment problem. *Naval Research Logistics Quarterly*, 2:83-97, 1955. 3. Harold W. Kuhn. Variants of the Hungarian method for assignment problems. *Naval Research Logistics Quarterly*, 3: 253-258, 1956. 4. Munkres, J. Algorithms for the Assignment and Transportation Problems. *Journal of the Society of Industrial and Applied Mathematics*, 5(1):32-38, March, 1957. 5. http://en.wikipedia.org/wiki/Hungarian_algorithm """ indices = _hungarian(X).tolist() indices.sort() # Re-force dtype to ints in case of empty list indices = np.array(indices, dtype=int) # Make sure the array is 2D with 2 columns. # This is needed when dealing with an empty list indices.shape = (-1, 2) return indices class _HungarianState(object): """State of one execution of the Hungarian algorithm. Parameters ---------- cost_matrix : 2D matrix The cost matrix. Does not have to be square. """ def __init__(self, cost_matrix): cost_matrix = np.atleast_2d(cost_matrix) # If there are more rows (n) than columns (m), then the algorithm # will not be able to work correctly. Therefore, we # transpose the cost function when needed. Just have to # remember to swap the result columns back later. transposed = (cost_matrix.shape[1] < cost_matrix.shape[0]) if transposed: self.C = (cost_matrix.T).copy() else: self.C = cost_matrix.copy() self.transposed = transposed # At this point, m >= n. n, m = self.C.shape self.row_uncovered = np.ones(n, dtype=np.bool) self.col_uncovered = np.ones(m, dtype=np.bool) self.Z0_r = 0 self.Z0_c = 0 self.path = np.zeros((n + m, 2), dtype=int) self.marked = np.zeros((n, m), dtype=int) def _find_prime_in_row(self, row): """ Find the first prime element in the specified row. Returns the column index, or -1 if no starred element was found. """ col = np.argmax(self.marked[row] == 2) if self.marked[row, col] != 2: col = -1 return col def _clear_covers(self): """Clear all covered matrix cells""" self.row_uncovered[:] = True self.col_uncovered[:] = True def _hungarian(cost_matrix): """The Hungarian algorithm. Calculate the Munkres solution to the classical assignment problem and return the indices for the lowest-cost pairings. Parameters ---------- cost_matrix : 2D matrix The cost matrix. Does not have to be square. Returns ------- indices : 2D array of indices The pairs of (row, col) indices in the original array giving the original ordering. """ state = _HungarianState(cost_matrix) # No need to bother with assignments if one of the dimensions # of the cost matrix is zero-length. step = None if 0 in cost_matrix.shape else _step1 while step is not None: step = step(state) # Look for the starred columns results = np.array(np.where(state.marked == 1)).T # We need to swap the columns because we originally # did a transpose on the input cost matrix. if state.transposed: results = results[:, ::-1] return results # Individual steps of the algorithm follow, as a state machine: they return # the next step to be taken (function to be called), if any. def _step1(state): """Steps 1 and 2 in the Wikipedia page.""" # Step1: For each row of the matrix, find the smallest element and # subtract it from every element in its row. state.C -= state.C.min(axis=1)[:, np.newaxis] # Step2: Find a zero (Z) in the resulting matrix. If there is no # starred zero in its row or column, star Z. Repeat for each element # in the matrix. for i, j in zip(*np.where(state.C == 0)): if state.col_uncovered[j] and state.row_uncovered[i]: state.marked[i, j] = 1 state.col_uncovered[j] = False state.row_uncovered[i] = False state._clear_covers() return _step3 def _step3(state): """ Cover each column containing a starred zero. If n columns are covered, the starred zeros describe a complete set of unique assignments. In this case, Go to DONE, otherwise, Go to Step 4. """ marked = (state.marked == 1) state.col_uncovered[np.any(marked, axis=0)] = False if marked.sum() < state.C.shape[0]: return _step4 def _step4(state): """ Find a noncovered zero and prime it. If there is no starred zero in the row containing this primed zero, Go to Step 5. Otherwise, cover this row and uncover the column containing the starred zero. Continue in this manner until there are no uncovered zeros left. Save the smallest uncovered value and Go to Step 6. """ # We convert to int as numpy operations are faster on int C = (state.C == 0).astype(np.int) covered_C = C * state.row_uncovered[:, np.newaxis] covered_C *= astype(state.col_uncovered, dtype=np.int, copy=False) n = state.C.shape[0] m = state.C.shape[1] while True: # Find an uncovered zero row, col = np.unravel_index(np.argmax(covered_C), (n, m)) if covered_C[row, col] == 0: return _step6 else: state.marked[row, col] = 2 # Find the first starred element in the row star_col = np.argmax(state.marked[row] == 1) if not state.marked[row, star_col] == 1: # Could not find one state.Z0_r = row state.Z0_c = col return _step5 else: col = star_col state.row_uncovered[row] = False state.col_uncovered[col] = True covered_C[:, col] = C[:, col] * ( astype(state.row_uncovered, dtype=np.int, copy=False)) covered_C[row] = 0 def _step5(state): """ Construct a series of alternating primed and starred zeros as follows. Let Z0 represent the uncovered primed zero found in Step 4. Let Z1 denote the starred zero in the column of Z0 (if any). Let Z2 denote the primed zero in the row of Z1 (there will always be one). Continue until the series terminates at a primed zero that has no starred zero in its column. Unstar each starred zero of the series, star each primed zero of the series, erase all primes and uncover every line in the matrix. Return to Step 3 """ count = 0 path = state.path path[count, 0] = state.Z0_r path[count, 1] = state.Z0_c while True: # Find the first starred element in the col defined by # the path. row = np.argmax(state.marked[:, path[count, 1]] == 1) if not state.marked[row, path[count, 1]] == 1: # Could not find one break else: count += 1 path[count, 0] = row path[count, 1] = path[count - 1, 1] # Find the first prime element in the row defined by the # first path step col = np.argmax(state.marked[path[count, 0]] == 2) if state.marked[row, col] != 2: col = -1 count += 1 path[count, 0] = path[count - 1, 0] path[count, 1] = col # Convert paths for i in range(count + 1): if state.marked[path[i, 0], path[i, 1]] == 1: state.marked[path[i, 0], path[i, 1]] = 0 else: state.marked[path[i, 0], path[i, 1]] = 1 state._clear_covers() # Erase all prime markings state.marked[state.marked == 2] = 0 return _step3 def _step6(state): """ Add the value found in Step 4 to every element of each covered row, and subtract it from every element of each uncovered column. Return to Step 4 without altering any stars, primes, or covered lines. """ # the smallest uncovered value in the matrix if np.any(state.row_uncovered) and np.any(state.col_uncovered): minval = np.min(state.C[state.row_uncovered], axis=0) minval = np.min(minval[state.col_uncovered]) state.C[np.logical_not(state.row_uncovered)] += minval state.C[:, state.col_uncovered] -= minval return _step4 PK!Dhh"hypdb/modules/pyrankagg/metrics.pyfrom numpy import sum,asarray,abs,sign def kendall_tau_distance(s, t): """ Computes the Kendall tau distance between two full lists of ranks, which counts all discordant pairs (where s(i) < s(j) but t(i) > t(j), or vice versa) and divides by: k*(k-1)/2 This is a slow version of the distance; a faster version can be implemented using a version of merge sort (TODO). s,t should be array-like (lists are OK). If s,t are *not* full, this function should not be used. """ numDiscordant = 0 for i in range(0, len(s)): for j in range(i + 1, len(t)): if (s[i] < s[j] and t[i] > t[j]) or (s[i] > s[j] and t[i] < t[j]): numDiscordant += 1 return 2.0 * numDiscordant / (len(s) * (len(s) - 1)) def spearman_footrule_distance(s,t): """ Computes the Spearman footrule distance between two full lists of ranks: F(s,t) = (2/|S|^2)*sum( |s(i) - t(i)| ) the normalized sum over all elements in a set of the absolute difference between the rank according to two different lists s and t. As defined, 0 <= F(s,t) <= 1. s,t should be array-like (lists are OK). If s,t are *not* full, this function should not be used. """ # check that the lists are both full assert len(s) == len(t) return (2.0/len(s)**2)*sum(abs(asarray(s) - asarray(t))) PK!Xی"hypdb/modules/pyrankagg/rankagg.py""" Python code for rank aggregation, for both full and partial lists. For methods/algorithms I have followed the paper "Rank aggregation methods for the web" (2001) C. Dwork, R. Kumar, M. Naor, D. Sivakumar. Proceedings of the 10th international conference on World Wide Web. Created May 22, 2015 @author: Kevin S. Brown, University of Connecticut This source code is provided under the BSD-3 license (see LICENSE file). Copyright (c) 2015, Kevin S. Brown All rights reserved. """ from XDB.modules.kbutil.listutil import sort_by_value from XDB.modules.pyrankagg.linear_assignment import linear_ass from XDB.modules.pyrankagg.metrics import kendall_tau_distance from numpy import zeros,abs import copy class RankAggregator(object): """ Base class for full and partial list rank aggregation methods. Should not be called directly except in testing situations; houses shared methods to both. """ def __init__(self): pass def convert_to_ranks(self,scoreDict): """ Accepts an input dictionary in which they keys are items to be ranked (numerical/string/etc.) and the values are scores, in which a higher score is better. Returns a dictionary of items and ranks, ranks in the range 1,...,n. """ # default sort direction is ascending, so reverse (see sort_by_value docs) x = sort_by_value(scoreDict,True) y = zip(list(zip(*x))[0],range(1,len(x)+1)) ranks = {} for t in y: ranks[t[0]] = t[1] return ranks def item_mapping(self,items): """ Some methods need to do numerical work on arrays rather than directly using dictionaries. This function maps a list of items (they can be strings, ints, whatever) into 0,...,len(items). Both forward and reverse dictionaries are created and stored. """ self.itemToIndex = {} self.indexToItem = {} indexToItem = {} next = 0 for i in items: self.itemToIndex[i] = next self.indexToItem[next] = i next += 1 return class FullListRankAggregator(RankAggregator): """ Performs rank aggregation, using a variety of methods, for full lists (all items are ranked by all experts). """ def __init__(self): super(RankAggregator,self).__init__() # used for method dispatch self.mDispatch = {'borda':self.borda_aggregation,'spearman':self.footrule_aggregation} def aggregate_ranks(self,experts,areScores=True,method='spearman'): """ Combines the ranks in the list experts to obtain a single set of aggregate ranks. Can operate on either scores or ranks; scores are assumed to always mean higher=better. INPUT: experts : list of dictionaries, required each element of experts should be a dictionary of item:score or item:rank pairs areScores : bool, optional set to True if the experts provided scores, False if they provide ranks method : string, optional which method to use to perform the rank aggregation. options include: 'borda': aggregate by computation of borda scores 'spearman' : use spearman footrule distance and bipartite graph matching """ aggRanks = {} # if the input data is scores, we need to convert if areScores: ranklist = [self.convert_to_ranks(e) for e in experts] else: ranklist = experts # now dispatch on the string method if method in self.mDispatch.keys(): #if self.mDispatch.has_key(method): aggRanks = self.mDispatch[method](ranklist) else: print('ERROR: method') return aggRanks def borda_aggregation(self,ranklist): """ Computes aggregate rank by Borda score. For each item and list of ranks, compute: B_i(c) = # of candidates ranks BELOW c in ranks_i Then form: B(c) = sum(B_i(c)) and sort in order of decreasing Borda score. The aggregate ranks are returned as a dictionary, as are in input ranks. """ # lists are full, so make an empty dictionary with the item keys aggRanks = {}.fromkeys(ranklist[0]) for item in aggRanks: aggRanks[item] = 0 # now increment the Borda scores one list at a time maxRank = len(aggRanks) for r in ranklist: for item in r: aggRanks[item] += maxRank - r[item] # now convert the Borda scores to ranks return self.convert_to_ranks(aggRanks) def footrule_aggregation(self,ranklist): """ Computes aggregate rank by Spearman footrule and bipartite graph matching, from a list of ranks. For each candiate (thing to be ranked) and each position (rank) we compute a matrix W(c,p) = sum(|tau_i(c) - p|)/S where the sum runs over all the experts doing the ranking. S is a normalizer; if the number of ranks in the list is n, S is equal to 0.5*n^2 for n even and 0.5*(n^2 - 1) for n odd. After constructing W(c,p), Munkres' algorithm is used for the linear assignment/bipartite graph matching problem. """ # lists are full so make an empty dictionary with the item keys items = ranklist[0].keys() # map these to matrix entries self.item_mapping(items) c = len(ranklist[0]) % 2 scaling = 2.0/(len(ranklist[0])**2 - c) # thes are the positions p (each item will get a rank() p = range(1,len(items)+1) # compute the matrix W = zeros((len(items),len(items))) for r in ranklist: for item in items: taui = r[item] for j in range(0,len(p)): delta = abs(taui - p[j]) # matrix indices W[self.itemToIndex[item],j] += delta W = scaling*W # solve the assignment problem path = linear_ass(W) # construct the aggregate ranks aggRanks = {} for pair in path: aggRanks[self.indexToItem[pair[0]]] = p[pair[1]] return aggRanks def locally_kemenize(self,aggranks,ranklist): """ Performs a local kemenization of the ranks in aggranks and the list of expert rankings dictionaries in ranklist. All rank lists must be full. The aggregate ranks can be obtained by any process - Borda, footrule, Markov chain, etc. Returns the locally kemeny optimal aggregate ranks. A list of ranks is locally Kemeny optimal if you cannot obtain a lower Kendall tau distance by performing a single transposition of two adjacent ranks. """ # covert ranks to lists, in a consistent item ordering, to use # the kendall_tau_distance in metrics.py lkranks = {} items = aggranks.keys() sigma = [aggranks[i] for i in items] tau = [] for r in ranklist: tau.append([r[i] for i in items]) # starting distance and distance of permuted list SKorig = 0 # initial distance for t in tau: SKorig += kendall_tau_distance(sigma,t) # now try all the pair swaps for i in range(0,len(items)-1): SKperm = 0 j = i + 1 piprime = copy.copy(sigma) piprime[i],piprime[j] = piprime[j],piprime[i] for t in tau: SKperm += kendall_tau_distance(piprime,t) if SKperm < SKorig: sigma = piprime SKorig = SKperm # rebuild the locally kemenized rank dictionary for i in range(0,len(items)): lkranks[items[i]] = sigma[i] return lkranks PK!5 hypdb/modules/pyrankagg/setup.py#!/usr/bin/env python from distutils.core import setup,Command class PyTest(Command): user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): import sys,subprocess errno = subprocess.call([sys.executable,'tests/runtests.py']) raise SystemExit(errno) setup(name='pyrankagg', version='1.0', description='Python Package for Rank Aggregation', author='Kevin Brown', author_email='kevin.s.brown@uconn.edu', url='https://github.com/thelahunginjeet/pyrankagg', packages=['pyrankagg'], package_dir = {'pyrankagg': ''}, package_data = {'pyrankagg' : ['tests/*.py']}, cmdclass = {'test': PyTest}, license='BSD-3', classifiers=[ 'License :: OSI Approved :: BSD-3 License', 'Intended Audience :: Developers', 'Intended Audience :: Scientists', 'Programming Language :: Python', 'Topic :: Statistics', ], )PK!)hypdb/modules/pyrankagg/tests/__init__.pyPK![ SLSL)hypdb/modules/pyrankagg/tests/runtests.py#! /usr/bin/env python sources = """ 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 """ import sys import base64 import zlib class DictImporter(object): def __init__(self, sources): self.sources = sources def find_module(self, fullname, path=None): if fullname == "argparse" and sys.version_info >= (2,7): # we were generated with = (3, 0): exec("def do_exec(co, loc): exec(co, loc)\n") import pickle sources = sources.encode("ascii") # ensure bytes sources = pickle.loads(zlib.decompress(base64.decodebytes(sources))) else: import cPickle as pickle exec("def do_exec(co, loc): exec co in loc\n") sources = pickle.loads(zlib.decompress(base64.decodestring(sources))) importer = DictImporter(sources) sys.meta_path.insert(0, importer) entry = "import py; raise SystemExit(py.test.cmdline.main())" do_exec(entry, locals()) PK!D8' 1hypdb/modules/pyrankagg/tests/test_aggregation.pyfrom pyrankagg import * import numpy as np class TestFullListAggregation: def setup(self): self.scorelist = [{'milk':1.4,'cheese':2.6,'eggs':1.2,'bread':3.0}, {'milk':2.0,'cheese':3.2,'eggs':2.7,'bread':2.9}, {'milk':2.7,'cheese':3.0,'eggs':2.5,'bread':3.5}] def test_rank_conversion(self): RA = rankagg.RankAggregator() r1 = RA.convert_to_ranks(self.scorelist[0]) assert r1['milk'] == 3,'Item \'milk\' has the wrong rank!' assert r1['cheese'] == 2,'Item \'cheese\' has the wrong rank!' assert r1['eggs'] == 4,'Item \'eggs\' has the wrong rank!' assert r1['bread'] == 1,'Item \'bread\' has the wrong rank!' r2 = RA.convert_to_ranks(self.scorelist[1]) assert r2['milk'] == 4,'Item \'milk\' has the wrong rank!' assert r2['cheese'] == 1,'Item \'cheese\' has the wrong rank!' assert r2['eggs'] == 3,'Item \'eggs\' has the wrong rank!' assert r2['bread'] == 2,'Item \'bread\' has the wrong rank!' r3 = RA.convert_to_ranks(self.scorelist[2]) assert r3['milk'] == 3,'Item \'milk\' has the wrong rank!' assert r3['cheese'] == 2,'Item \'cheese\' has the wrong rank!' assert r3['eggs'] == 4,'Item \'eggs\' has the wrong rank!' assert r3['bread'] == 1,'Item \'bread\' has the wrong rank!' def test_borda_aggregation(self): FLRA = rankagg.FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(self.scorelist,areScores=True,method='borda') assert aggRanks['milk'] == 3,'Item \'milk\' has the wrong aggregate rank!' assert aggRanks['cheese'] == 2,'Item \'cheese\' has the wrong aggregate rank!' assert aggRanks['eggs'] == 4,'Item \'eggs\' has the wrong aggregate rank!' assert aggRanks['bread'] == 1,'Item \'bread\' has the wrong aggregate rank!' def test_footrule_aggregation(self): FLRA = rankagg.FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(self.scorelist,areScores=True,method='spearman') assert aggRanks['milk'] == 3,'Item \'milk\' has the wrong aggregate rank!' assert aggRanks['cheese'] == 2,'Item \'cheese\' has the wrong aggregate rank!' assert aggRanks['eggs'] == 4,'Item \'eggs\' has the wrong aggregate rank!' assert aggRanks['bread'] == 1,'Item \'bread\' has the wrong aggregate rank!' def test_local_kemenization(self): FLRA = rankagg.FullListRankAggregator() aggRanks = FLRA.aggregate_ranks(self.scorelist,areScores=True,method='borda') ranklist = [FLRA.convert_to_ranks(s) for s in self.scorelist] lkRanks = FLRA.locally_kemenize(aggRanks,ranklist) print lkRanks assert lkRanks['milk'] == 3,'Item \'milk\' has the wrong aggregate rank!' assert lkRanks['cheese'] == 2,'Item \'cheese\' has the wrong aggregate rank!' assert lkRanks['eggs'] == 4,'Item \'eggs\' has the wrong aggregate rank!' assert lkRanks['bread'] == 1,'Item \'bread\' has the wrong aggregate rank!' PK!5SS-hypdb/modules/pyrankagg/tests/test_metrics.pyfrom pyrankagg import * import numpy as np class TestConversions: def setup(self): self.scorelist = [{'milk':1.4,'cheese':2.6,'eggs':1.2,'bread':3.0}, {'milk':2.0,'cheese':3.2,'eggs':2.7,'bread':2.9}, {'milk':2.7,'cheese':3.0,'eggs':2.5,'bread':3.5}] def test_spearman_footrule(self): RA = rankagg.RankAggregator() s = RA.convert_to_ranks(self.scorelist[0]) t = RA.convert_to_ranks(self.scorelist[1]) sf = metrics.spearman_footrule_distance(s.values(),t.values()) assert (sf - 0.5) < 1e-08,'Footrule distance is wrong!' def test_kendall_tau(self): ranks1 = [1,2,3,4,5] ranks2 = [3,4,1,2,5] kt = metrics.kendall_tau_distance(ranks1,ranks2) assert (kt - 0.4) < 1e-08,'Kendall tau distance is wrong!' PK!'hypdb/modules/site-packages/__init__.pyPK!E  'hypdb/modules/site-packages/lp_maker.pyfrom lpsolve55 import * def lp_maker(f = None, a = None, b = None, e = None, vlb = None, vub = None, xint = None, scalemode = None, setminim = None): """LP_MAKER Makes mixed integer linear programming problems. SYNOPSIS: lp_handle = lp_maker(f,a,b,e,vlb,vub,xint,scalemode,setminim) make the MILP problem max v = f'*x a*x <> b vlb <= x <= vub x(int) are integer ARGUMENTS: The first four arguments are required: f: n vector of coefficients for a linear objective function. a: m by n matrix representing linear constraints. b: m vector of right sides for the inequality constraints. e: m vector that determines the sense of the inequalities: e(i) < 0 ==> Less Than e(i) = 0 ==> Equals e(i) > 0 ==> Greater Than vlb: n vector of non-negative lower bounds. If empty or omitted, then the lower bounds are set to zero. vub: n vector of upper bounds. May be omitted or empty. xint: vector of integer variables. May be omitted or empty. scalemode: Autoscale flag. Off when 0 or omitted. setminim: Set maximum lp when this flag equals 0 or omitted. OUTPUT: lp_handle is an integer handle to the lp created.""" if f == None: help(lp_maker) return m = len(a) n = len(a[0]) lp = lpsolve('make_lp', m, n) lpsolve('set_verbose', lp, IMPORTANT) lpsolve('set_mat', lp, a) lpsolve('set_rh_vec', lp, b) lpsolve('set_obj_fn', lp, f) lpsolve('set_maxim', lp) # default is solving minimum lp. for i in range(m): if e[i] < 0: con_type = LE elif e[i] == 0: con_type = EQ else: con_type = GE lpsolve('set_constr_type', lp, i + 1, con_type) if vlb != None: for i in range(n): lpsolve('set_lowbo', lp, i + 1, vlb[i]) if vub != None: for i in range(n): lpsolve('set_upbo', lp, i + 1, vub[i]) if xint != None: for i in range(len(xint)): lpsolve('set_int', lp, xint[i], 1) if scalemode != None: if scalemode != 0: lpsolve('set_scaling', lp, scalemode) if setminim != None: if setminim != 0: lpsolve('set_minim', lp) else: lpsolve('set_maxim', lp); return lp PK!h 'hypdb/modules/site-packages/lp_solve.pyfrom lpsolve55 import * def lp_solve(f = None, a = None, b = None, e = None, vlb = None, vub = None, xint = None, scalemode = None, keep = None): """LP_SOLVE Solves mixed integer linear programming problems. SYNOPSIS: [obj,x,duals,stat] = lp_solve(f,a,b,e,vlb,vub,xint,scalemode,keep) solves the MILP problem max v = f'*x a*x <> b vlb <= x <= vub x(int) are integer ARGUMENTS: The first four arguments are required: f: n vector of coefficients for a linear objective function. a: m by n matrix representing linear constraints. b: m vector of right sides for the inequality constraints. e: m vector that determines the sense of the inequalities: e(i) = -1 ==> Less Than e(i) = 0 ==> Equals e(i) = 1 ==> Greater Than vlb: n vector of lower bounds. If empty or omitted, then the lower bounds are set to zero. vub: n vector of upper bounds. May be omitted or empty. xint: vector of integer variables. May be omitted or empty. scalemode: scale flag. Off when 0 or omitted. keep: Flag for keeping the lp problem after it's been solved. If omitted, the lp will be deleted when solved. OUTPUT: A nonempty output is returned if a solution is found: obj: Optimal value of the objective function. x: Optimal value of the decision variables. duals: solution of the dual problem.""" if f == None: help(lp_solve) return m = len(a) n = len(a[0]) lp = lpsolve('make_lp', m, n) lpsolve('set_verbose', lp, IMPORTANT) lpsolve('set_mat', lp, a) lpsolve('set_rh_vec', lp, b) lpsolve('set_obj_fn', lp, f) lpsolve('set_maxim', lp) # default is solving minimum lp. for i in range(m): if e[i] < 0: con_type = LE elif e[i] == 0: con_type = EQ else: con_type = GE lpsolve('set_constr_type', lp, i + 1, con_type) if vlb != None: for i in range(n): lpsolve('set_lowbo', lp, i + 1, vlb[i]) if vub != None: for i in range(n): lpsolve('set_upbo', lp, i + 1, vub[i]) if xint != None: for i in range(len(xint)): lpsolve('set_int', lp, xint[i], 1) if scalemode != None: if scalemode != 0: lpsolve('set_scaling', lp, scalemode) result = lpsolve('solve', lp) if result == 0 or result == 1 or result == 11 or result == 12: [obj, x, duals, ret] = lpsolve('get_solution', lp) stat = result else: obj = [] x = [] duals = [] stat = result if keep != None and keep != 0: lpsolve('delete_lp', lp) return [obj, x, duals] PK!4e_6hypdb/modules/site-packages/lpsolve55-5.5.0.9.egg-infoMetadata-Version: 1.0 Name: lpsolve55 Version: 5.5.0.9 Summary: Linear Program Solver, Interface to lpsolve Home-page: http://www.peno.be/ Author: Peter Notebaert Author-email: lpsolve@peno.be License: UNKNOWN Description: UNKNOWN Platform: UNKNOWN PK!ntvv4hypdb/modules/site-packages/lpsolve55.cpython-34m.soELF>p@@8@$!44 PP!P!.P? !!$$PtdQtdRtdPP!P!%%GNUj_R$nFx6L{rsEp t9 @$Eؒ C*b A^     !"#$%&()*,-./0Thљq}E#!qXdFS|S|6t8,kϽ= "_K"#^CE9wrӻ|?z _nrb졥=긍⇙R= 4SQ-6< ,z-, pi G Q A x4F  $ t U:  z  < or  .  W VM\ ag x#? @u      W (l  '  :1 _ G  > vf _  ,K|  7    K "  .   }h Gt 6,K >5 R aMw ^_  " t 1  CQD[ 2  n 7  * l R  a 0 , $+F6q nS\  '*48 en   ^I$ p #    R"N    / cu E> fA ^R p^@!  p0   `Hw  H^ " 1J  `.  G ]  P2  .  p1 a{  J  e@!|  a c " " pF) g? "  U a p  .c` ^=N  O/  0<G  `3v Ij  0O  p.  @5[  F__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesPrintfcallocreallocput_logfuncset_outputfileput_abortfuncmallocErrMsgTxt__sprintf_chk__stack_chk_failGetRealScalarCreateLongMatrixSetLongMatrixGetStringfindhashget_Ncolumnsget_row_nameCreateStringget_lp_namewrite_XLIwrite_paramswrite_mpswrite_lpwrite_freempswrite_basisunscaleCreateDoubleMatrixtime_elapsedSetDoubleMatrixset_XLIset_use_namesset_traceset_timeoutset_solutionlimitset_senseset_scalelimitget_Nrowsset_row_nameGetCellCharItemsGetCellStringFreeCellCharItemsset_print_solget_presolveloopsset_preferdualset_obj_boundset_negrangeset_mip_gapset_minimset_maxpivotset_maximset_infiniteset_unboundedset_epspivotset_epsperturbset_epsintset_epselset_epsdset_epsbset_debugset_col_nameset_break_at_valueset_break_at_firstset_bounds_tighterset_BFPset_bb_depthlimitset_basisvarset_add_rowmoderesize_lpreset_paramsread_paramsread_basisprint_tableauprint_strprint_solutionprint_scalesprint_objectiveprint_lpprint_dualsprint_debugdumpprint_constraintsmake_lpis_use_namesis_nativeXLIis_nativeBFPis_maximis_integerscalingis_infiniteget_epsintis_debugis_break_at_firstis_add_rowmodehas_XLIhas_BFPget_working_objectiveget_variablesget_var_primalresultget_var_dualresultget_total_nodesget_total_iterget_timeoutget_statusget_solutionlimitget_solutioncountget_objectiveget_ptr_dual_solutionmemcpyget_ptr_sensitivity_rhsget_sensitivity_rhsget_ptr_sensitivity_objmemsetget_sensitivity_objexget_scalelimitget_print_solget_primal_solutionget_orig_indexget_obj_boundget_Norig_rowsget_Norig_columnsget_nonzerosget_negrangeget_nameindexget_mip_gapget_maxpivotget_max_levelget_columnget_lp_indexget_infiniteget_epspivotget_epsperturbget_epselget_epsdget_epsbget_constraintsget_break_at_valueget_bounds_tighterget_bb_depthlimitdualize_lpdel_constraintdel_columndefault_basiscopy_lplp_solve_versionstrcatstrlen__ctype_toupper_loc__ctype_b_locstpcpyset_verboseset_simplextypeset_scalingset_presolveset_pivotingset_improveset_epslevelset_bb_ruleset_bb_floorfirstset_basiscrashset_anti_degenread_XLIread_freeMPSis_scaletypeis_scalemodeis_presolveis_piv_ruleis_piv_modeis_constr_typeis_anti_degenget_statustextfreeget_rowGetRealVectorset_var_weightsset_var_branchGetIntVectorset_upboset_semicontGetRealSparseVectorset_rowexset_rh_vecset_rh_rangeset_rhset_obj_fnexset_objset_columnexset_matGetpMatrixGetMGetNset_lowboset_intset_constr_typeset_boundsset_binaryset_basisis_feasibleguess_basisget_matCreateDoubleSparseMatrixSetColumnDoubleSparseMatrixget_constr_valueget_basiscolumn_in_lpadd_SOSadd_constraintexadd_columnexdrophashcreate_hash_tableputhashset_lp_nameread_MPSread_LPget_verboseget_simplextypeget_scalingget_presolveget_pivotingget_improveget_bb_ruleget_bb_floorfirstget_basiscrashget_anti_degenstrcpyis_SOS_varis_semicontis_negativeis_intis_unboundedis_binaryget_var_priorityget_var_branchget_upboget_rh_rangeget_rhget_origrow_nameget_origcol_nameget_lowboget_constr_typeget_col_namesignal_setjmp__stpcpy_chk__strcpy_chkdelete_lpexitnow__longjmp_chkEndOfPgrExitFcnfree_hash_tablelpsolvesetargs_Py_NoneStructfree_hash_itemhashvalstrcmp__strdupcopy_hash_tablePyModule_GetStatePyList_NewPyList_SizePyList_AppendPyErr_ClearPyInit_lpsolve55PyModule_Create2PyImport_ImportModulePyObject_GetAttrStringPyCapsule_TypePyExc_RuntimeErrorPyErr_SetStringPyModule_GetDictPyErr_NewExceptionLprec_ErrorObjectPyDict_SetItemStringPyLong_FromLongPyFloat_FromDoublePyCapsule_GetPointerNumPyPyErr_FormatPyExc_ImportErrorPyExc_AttributeError__vsnprintf_chkPySys_WriteStdoutPyArg_UnpackTuplePyType_IsSubtypePyNumber_CheckPyObject_SizePySequence_GetItemPyFloat_AsDoubleLprec_errorflagPyUnicode_AsUTF8AndSizestrncpyPyBytes_AsStringAndSizePyUnicode_FromStringliblpsolve55.solibpthread.so.0libc.so.6_edata__bss_start_endGLIBC_2.11GLIBC_2.3.4GLIBC_2.14GLIBC_2.4GLIBC_2.2.5GLIBC_2.3ti ii ui )ii 5P! X!!Ti! !_i! !li!!{i!!i!!i!0!i!(!i0!`@!iH!X!i`!p!ix!@.!i! !i!@.!i!!i!!j!p!j!!(j !@0!:j8!H!FjP!``!Yjh!x!lj!@(!yj!!j!!j!&!j!P!j!0!j! !j(!8!j@!pP!jX!h!jp!!j!! k!P!k!!#k!!0k!$!:k!!Gk!(!Sk0!`@![kH!0X!ik`!p!vkx!P!k!!k!@!k! !k!!k!`!k!!k !0!k8!H!kP!`!kh!0x! l!#!l! "!/l!!r!`!Jr!0!Wr!!_r !0!mr8!H!xrP!`!rh!@x!r!!r!!r!0!r!!r!!r!!r! !r(! 8!r@! P!rX!h! sp!p!s!!$s!!1s!@!;s!!Ks!!]s!!is!(!ss0!`@!sH!X!s`!Pp!sx!!s!!s!!s!!o!!s!0!s!!s !P0!s8!H!sP!`!th!Сx!t!С!t!!$t!!.t!П!;t! !Et!@(!St!& !dt(!p8!lt@!@P!xtX!h!tp!!t!!t!!t!!t!!t!!t!`!t!(!t0!p @!uH! X! u`!!u!u!"u!$u! u!'u!dv(!z@!*uX!-up!5u!>u!Eu!Ou!Vu!_u!du!mu0!uuH!u`!ux!u!\v!u!w!4v!u!u !u8!uP!uh!u!u!u!u!v!v!*v!?v(!Rv@!gvX!yvp!v!v!v!v!v!v!v!v0!wH!%w`!2wx!Cw!Tw!ew!ww!w!w!w !w8!wP!wh!w!w!x!x!*x!Bx!Yx!ix(!x@!xX!xp!x!x!x!x!y!y!'y!6y0!GyH!Wy`!eyx!sy!y!y!y!y!y!y !y8!yP!zh!#z!8z!Mz!`z!tz!z!z!z(!z@!zX!zp!z!z!{! {!.{!={!M{!_{0!n{H!{`!{x!{!{!{!{!{!{!{ ! |8!|P!-|h!:|!L|![|!k|!z|!|!|!|(!|@!|X!|p!|!|!!!!!!04!3!<!.! !!!=!g!! !!!!!#!!!! !(!0!8!@!H!P! X! `! h! p! x!!!!!!!!!!!!!!!!!! !!!"!# !$(!%0!&8!'@!(H!)P!*X!+`!,h!-p!.x!/!0!1!2!3!4!5!6!7!8!9!:!;!<!>!?!@!A!B!C!D !E(!F0!G8!H@!IH!JP!KX!L`!Mh!Np!Ox!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d !e(!f0!g8!h@!iH!jP!kX!l`!mh!np!ox!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!! !(!0!8!@!H!P!X!`!h!p!x!!!!!!!!!!!!!!!!!!!!! !(!0!8!@!H!P!X!`!h!p!x!!!!!!!!!!!!!!!!!!!!! !(!0!8!@!H!P!X!`!h!p!x!!!!!!!!!!!!!!!!!!!!! !(!0!8!@!H!P!X!`!h!p!x!!!!!!!!!!!!!!!!!HHi!HtKH5ri!%ti!@%ri!h%ji!h%bi!h%Zi!h%Ri!h%Ji!h%Bi!h%:i!hp%2i!h`%*i!h P%"i!h @%i!h 0%i!h % i!h %i!h%h!h%h!h%h!h%h!h%h!h%h!h%h!h%h!h%h!hp%h!h`%h!hP%h!h@%h!h0%h!h %h!h%h!h%zh!h%rh!h %jh!h!%bh!h"%Zh!h#%Rh!h$%Jh!h%%Bh!h&%:h!h'p%2h!h(`%*h!h)P%"h!h*@%h!h+0%h!h, % h!h-%h!h.%g!h/%g!h0%g!h1%g!h2%g!h3%g!h4%g!h5%g!h6%g!h7p%g!h8`%g!h9P%g!h:@%g!h;0%g!h< %g!h=%g!h>%zg!h?%rg!h@%jg!hA%bg!hB%Zg!hC%Rg!hD%Jg!hE%Bg!hF%:g!hGp%2g!hH`%*g!hIP%"g!hJ@%g!hK0%g!hL % g!hM%g!hN%f!hO%f!hP%f!hQ%f!hR%f!hS%f!hT%f!hU%f!hV%f!hWp%f!hX`%f!hYP%f!hZ@%f!h[0%f!h\ %f!h]%f!h^%zf!h_%rf!h`%jf!ha%bf!hb%Zf!hc%Rf!hd%Jf!he%Bf!hf%:f!hgp%2f!hh`%*f!hiP%"f!hj@%f!hk0%f!hl % f!hm%f!hn%e!ho%e!hp%e!hq%e!hr%e!hs%e!ht%e!hu%e!hv%e!hwp%e!hx`%e!hyP%e!hz@%e!h{0%e!h| %e!h}%e!h~%ze!h%re!h%je!h%be!h%Ze!h%Re!h%Je!h%Be!h%:e!hp%2e!h`%*e!hP%"e!h@%e!h0%e!h % e!h%e!h%d!h%d!h%d!h%d!h%d!h%d!h%d!h%d!h%d!hp%d!h`%d!hP%d!h@%d!h0%d!h %d!h%d!h%zd!h%rd!h%jd!h%bd!h%Zd!h%Rd!h%Jd!h%Bd!h%:d!hp%2d!h`%*d!hP%"d!h@%d!h0%d!h % d!h%d!h%c!h%c!h%c!h%c!h%c!h%c!h%c!h%c!h%c!hp%c!h`%c!hP%c!h@%c!h0%c!h %c!h%c!h%zc!h%rc!h%jc!h%bc!h%Zc!h%Rc!h%Jc!h%Bc!h%:c!hp%2c!h`%*c!hP%"c!h@%c!h0%c!h % c!h%c!h%b!h%b!h%b!h%b!h%b!h%b!h%b!h%b!h%b!hp%b!h`%b!hP%b!h@%b!h0%b!h %b!h%b!h%zb!h%rb!h%jb!h%bb!h%Zb!h%Rb!h%Jb!h%Bb!h%:b!hp%2b!h`%*b!hP%"b!h@%b!h0%b!h % b!h%b!h%a!h%a!h%a!h%a!h%a!h%a!h%a!h%a!h%a!hp%a!h`%a!hP%a!h@%a!h0%a!h Hb!H=b!UH)HHw]HX!Ht]@Hb!H=b!UH)HHHH?HHu]HX!Ht]H@=Yb!u'H=X!UHt H=a!}h]0b!fffff.H=83!t&HX!HtUH="3!H]WKf.a!fa!H=H1ffffff.USHHHHHſH(H0HPH0H[H]ff.UHHSHZHÿHHH0HPH0HH[]fATHIUHo@SR `!x2L a!I8G1DHcIH89~YQ؉`!)¸d9qeH=`!HcHH`!HcH4к @H@@1Ht Ht 1HfOtHH58HL LzH56L{H5HL[]A\fH_!HcH뱿 H_!;HH迬L1H?E1HfDG!H~ ffffff.UASHHdH%(H$1,9tIHHVHl$LG H pHE¾H$H1H{@HH$dH3%(u H[]vfDS,H~cH@EHخ,v^!H1ɺHZ^!HAE1HH[H@f.ATUSHH@HdH%(H$11AAHHS1ɾH?H5]!HHtXH舕HtKHc@HEE1AHHH$dH3%(uH[]A\fDHEfAT H]!UHSH5T]!11HcH<9~,HH@HC,E1ۉAH1D?D\!Ex-H=\!IE1fDMcJ<tM IAE9}HD[]A\AE1H fH1H@vDH1ɺHcHHA[]A\E1H1DATUSHHk@1ɺHWH;IHHLI$AE1[]A\D@SHHNH;1dHt$H{@1ɺHD$H[@SHHH;VHt$H{@1ɺHD$H[fDAUATUHSHXdH%(H$H1,H]@Ld$@AAL1H4HAA21HHI,H}LL1HE1HH(AHH$HdH3%(HX[]A\A]H]@Ld$@LAA1H_I$1RH]@Ld$@}AAL1HHAA21HI1BfAVAUATUSHHPdH%(H$H1,Hk@Ld$@AAL1H荽AA2H1HIl1ɺHXH;LLIE1AIELHBH$HdH3%(uTHP[]A\A]A^Hk@Ld$@%AAL1HǼI$OfDATUHSH]@HdH%(H$1AAH1HcH}H1H@E1HH(AH?H$dH3%(u H[]A\Kff.ATUHSH]@HdH%(H$1AAH1H裻H}H1HE1HH(AHH$dH3%(u H[]A\ff.ATUHSH]@HdH%(H$1AAAH1HH}H1HE1HH(AHH$dH3%(u H[]A\ff.ATUHSH]@HdH%(H$1AAH1H#H}H'1HE1HH(AHH$dH3%(u H[]A\ ff.SHH;[fATUSHHk@1ɺH'H;IA$HL[]A\AE1$@ATUHSH]@HdH%(H$1AAAH1HH}H1HE1HH(AH迾H$dH3%(u H[]A\ff.USHHk@HH,HD$L$,H;H,[]@FfDSHBH{@ԣ,H;[@SHH{@褣H,H;[&fDSHH{@t,H;[SHH{@D,H;[@sSHH{@H;[ff.ATUSHHk@K1ɺHH;IHHLI$AE1[]A\@AWAVAUATUHSHdH%(H$1,Le@AAH1L`L3,H}H1ɺL,E1HHAL+H$dH3%(H[]A\A]A^A_fLe@H}AƉ¾L¶EI~P1IA9~.ALLL2H}LuHcDL/ff.SHrH{@,H;[ATUSHHk@;1ɺHH;IlHHLI$AE1[]A\Ժ@SHH{@t,H;[@3ATUHSH]@HdH%(H$1AAH1H31<$H}HE@1H E1HH(AHH$dH3%(u H[]A\@SHH{@脟H;[ff.SHH{@TH;[kff.USHHk@HHHD$ ,L$H;H[]f(@fSH2H;[ fSHH{@褞,H;[wSHH;[fSHH{@TH;[Kff.UHSH]@HH߾,H}_H1ɺH(HH[]HAE1SH"H{@贝H;[[ff.SHH{@脝H;[ ff.SHH{@TH;[ff.SHH{@$H;[ff.SHbH{@H;[ff.SH2H{@ĜH;[ff.SHH{@蔜,H;[@AWAVAUATUHSHdH%(H$1,Le@AAH1L@L,H}H#1ɺL E1HHAL H$dH3%(H[]A\A]A^A_fLe@H}IAƉ¾L袰EI~P1IA9~.ALLLH}LTuHcDL{ff.SHRH{@H;[ff.SH"H{@贚,H;[@SHH{@脚,H;[@ATUHSH]@HdH%(H$1AAH1HCH}Hg1H E1HH(AHH$dH3%(u H[]A\+ff.SHH{@蔙,H;[USHHk@HH\HD$IL$,H;H,[]ffff.ATUHSH]@k1ɺH߾H߾I,H}@HLI$AE1[]A\ffff.ATUHSH]@H1ɺH߾蓲H߾IcH߾D$PL$,H},HLI$HA[]A\E1Lfff.SHRH;[yfAVAUATUSHHPdH%(H$H1,Hk@Ld$@AAL1H蝫AA2H1HI|1ɺHhH;LLIE1AIELHRH$HdH3%(uTHP[]A\A]A^Hk@Ld$@5AAL1HתI$OfDAUATUSHHk@H(Ld$dH%(H$1AAL1Hl1҃(H;LIM1DH<E1HL(AH;(~Ht$HLd$H$dH3%(uH([]A\A] SHH;[)fUSHHdH%(H$1H{@1AAHhH;H}H$dH3%(u H[]ff.S,Ht+YH{@,H;[fD.H;[SHH;[fSHH;[fSHH;[fSHH;[9fATUHSH]@HdH%(H$1qAAH1HH}H1HE1HH(AHH$dH3%(u H[]A\ff.S,Ht+H{@[,H;[fDH;[ATUHSH]@Hw1ɺH߾#H߾IH߾D$L$,,}HHH[HHLI$HA[]A\E1Ϭffffff.ATUHSH]@1ɺH߾wH߾IG,H}@HLI$AE1[]A\Mffff.ATUSHHk@K1ɺHH;ILHLI$AE1[]A\ATUSHHk@1ɺH藫H;IHLI$AE1[]A\郫ATUSHHk@1ɺH7H;IHLI$AE1[]A\#ATUSHHk@+1ɺHתH;IHLI$AE1[]A\êATUSHHk@1ɺHwH;IHLI$AE1[]A\cATUHSH]@k1ɺH߾HIH}HLI$AE1[]A\DATUSHHk@1ɺHgH;IA$HL[]A\AE1d@ATUSHHk@1ɺHGH;IHLI$AE1[]A\3ATUSHHk@;1ɺHH;ILHLI$AE1[]A\ӨATUSHHk@1ɺH臨H;IHLI$AE1[]A\sATUSHHk@{1ɺH'H;IHLI$AE1[]A\ATUSHHk@1ɺHǧH;I,HLI$AE1[]A\鳧ATUSHHk@1ɺH'H;IA$HL[]A\AE1$@AVAUATUSHHk@WH;1ɺHA軤H;IHE1ADLHD轤(~DH警L0HH[]A\A]A^AA顦[]A\A]A^ATUHSH]@1ɺH߾H߾I,H}HA$L[]A\AE1fATUHSH]@+1ɺH߾藣H߾I觋,H}HA$L[]A\AE1那fATUSHHk@1ɺH'H;I|H*HLAE1A$[]A\ffffff.ATUSHHk@K1ɺH跢H;I\H*HLAE1A$[]A\鯢ffffff.ATUSHHk@1ɺH臤H;II$HL[]A\AE1vfDATUSHHk@{1ɺH'H;IHHLI$AE1[]A\@ATUSHHk@1ɺHǣH;IHHLI$AE1[]A\鴣@ATUSHHk@1ɺHgH;IHHLI$AE1[]A\T@ATUSHHk@[1ɺHǠH;IA$HL[]A\AE1Ġ@AWAVAUATUSHHk@H1ɺH]H;IrA$E1ALH^(H;HAH;IHAADLHA(H;HA覟H;Ht$IAHD$IcHLE!HpAADLH艟(~?HEuAL AHHqH[]A\A]A^A_fAUATUSHHk@HHD$\H;Ht$DEH|$H;H;AA1ɺDH莞IHD$IcHLHpE1ADHH臞(~;HwAL(AHHsH[]A\A]H5H6fff.AUATUSHH(HD$HD$HD$.H;HL$HT$Ht$Wt#H|$tH|$tH|$t Hk@DHk@H5HMH;eH;A*A1ɺDH5(HD$~GDH(HD$~-DHHD$HDHD$HD$1HT$Ht$H;zHt$E1ADHDȜHt$AADH觜Ht$AADH膜(~;HvAL(AHHrH([]A\A]AWAVAUATUSHHH$HD$TH;HT$HH<$H|$Hk@H;y1ɉ¾HA腛(H$~xDHc(HD$~^DH@(IHDHIc1HHIGDHD$E1E1HT$H4$E1H;LH4$E1ADHDHt$AADHȚAADLH詚AADLH芚(~;HzAL8AHHvH[]A\A]A^A_Hk@H5յH~GE1ATUSHHk@K1ɺH跙H;IA$HL[]A\AE1鴙@ATUSHHk@1ɺH藛H;I HHLI$AE1[]A\鄛@AVAUATUSHH;H;DlHk@1ɺDHޘH;IH`E1ADLHD(~GHКL0HH[]A\A]A^AAĚ@[]A\A]A^ATUHSH]@1ɺH߾gH߾I7,H}jHHLI$AE1[]A\BfATUSHHk@K1ɺH跗H;IA$HL[]A\AE1鴗@ATUSHHk@1ɺH藙H;I\HHLI$AE1[]A\鄙@ATUSHHk@1ɺH7H;I,HHLI$AE1[]A\$@ATUSHHk@+1ɺHטH;IHHLI$AE1[]A\Ę@ATUSHHk@1ɺH7H;I|A$HL[]A\AE14@ATUHSH]@HdH%(H$1QAAH1HH},H}H1HcH輗E1HH(AH軗H$dH3%(u H[]A\ǽATUHSH]@1ɺH߾H߾I},H}@HA$L[]A\AE1fffff.ATUSHHk@1ɺHǖH;IH$dH3%(u H[]lfff.AVAAUIATAUH-!SH !@D!9Ct(HH9t?{tDc tCu܋CD!9uA}u)H3LH肼H9uD[]A\A]A^L萳|fATAWAVAUATUSH(D>Ht$T$E<H_@1HD$H)t$EIL% !H\$A| M @EtH0II ANE>A|uA|LE}Et) HfDIE}Et IDH uIM9r*پI}IAFI9tI6HDq uH5 "!LYHI\IcV|$HRA| tfHRH= !DžtD;HRA lEEIMA|L f.AI^ L|$LL谱H: Not alH|$@re.HHlowed heLHPQnIcVRL|$LL`H cannot H5?!HHbe combiHPHned withHP fPHD$LHIcFH@<Ƌt$!H|$LmIcV1H([]A\A]A^A_L|$LLͰH|$H: Unknown.HfHL@ vmhAVE1AAAUATIU1SH_@HHHdH%(H$1zu6HLp,H$dH3 %(u%H[]A\A]A^DDHL{ff.SHRH߾@H;[DSH"H߾ H;[镸DSHH߾H;[UDUSHH,tF贿H{@Fo,HߺH;H[]^fDnH;趶fSHRH߾ @H;[%DSH"H߾@H;[镯DSHH߾@H;[eDSH¾H߾H;[DSH蒾H߾H;[DSHbH߾PH;[eDSH2H߾ H;[饹DAWAVAUATUHSHXdH%(H$H1,jXH]@Ll$L$ L$@襽AAL1HGAAL1H)H$0AA1HAAL1HHA1ɺHDD$ 躆1Ҁ$0IDD$ H$0LLLHE޵H̊HHHE1AILHyH$HdH3%(HX[]A\A]A^A_H]@Ll$L$ UAAL1HAAL1HƄ$0Ƅ$@AL$@fDH]@Ll$L$ ջL1HAAwL1HAAYH$0AA1H6`H]@Ll$L$ L$@MAAL1H~AAL1H~H$0AA1H~AAL1H~AЪAVAUATUSHHdH%(H$1,脺HrAHk@AA1HH ~1ɺHDHI;HCHHYHE1AI$LHՃH$dH3%(u'H[]A\A]A^fALƩfDATUSHHk@蛹1HGH߾IrH;XHLI$AE1[]A\ffffff.ATUSHHk@1HǂH߾IH;蘮HLI$AE1[]A\韂ffffff.ATUSHHk@蛸1HGH߾IrH;舳HLI$AE1[]A\ffffff.ATUSHHk@1HǁH߾IH;(HLI$AE1[]A\韁ffffff.ATUSHHk@蛷1HGH߾IrH;XHLI$AE1[]A\ffffff.AUATUSHHk@H1HH߾IHA|f,H;DHLI$HA[]A\A]E1~fffff.ATUSHHk@{1H'H߾IRH;HLI$AE1[]A\ffffff.SHH H߾H;Ht$H{@1ɺHD$舂H[fHSHtWH0HtH;2uF@H;tHHzHuH[醢fDHOHJsH[jf.[HBH0Hfffff.AWAVAUATUSHLc@H!H;y1ɉʼn¾L|uHIHc萲H;I1HIuHcLHDɧE1ALL^|LH(~JLC~L8HL[]A\A]A^A_AAH1~H[]A\A]A^A_ÐAWAVAUATUSHHk@H!H;y1Aĉ¾H{At$HIHc荱HI}c,H;LIuIcLHD跦E1ADLHK{LH(~OH0}L8HH[]A\A]A^A_AAH}fDH[]A\A]A^A_fAUATUSHLc@HH;]HAHc芰EA1HLHhH;HLD1ɺi|LHL(AE1h|HHH[]A\A]AWAVAUATUHSHdH%(H$1,Le@.HLa,H}让1ɺL{E1HHAL{H$dH3%(4H[]A\A]A^A_DLe@花H}1ɉ¾LA=vHItqE~e1IfA9~=ALLLuLHrH}‰ŨuHcDLuIcH脮1AEH¾LI`E~?E1 @E9~IcH}AADLuHcLH膠fDAVAUATUHSH,Le@FL_LD$_,L$H}f(迤L1ɺyHHL[]A\A]A^HAE1yLe@躯H}AHcH>1AEH¾LIpeE~A1 A9~HcH}AƉȅuHcLH.AVAUATUHSH,Le@L^LD$^L$,H},LL1ɺuxHHL[]A\A]A^HAE1hxLe@rH}ɦAHcH1AEH¾LIH^E~@1 A9~HcH}A荧ȅuHcLH8*fff.AVAUATUSHHǭH;hHߺAHcHFHHk@IHߺ/ELAHH$IIiHA\,H;MLDdHD1ɺvHHL0AE1vLH@HHL[]A\A]A^)fATUSHϬH;WpHߺAHcQH{@EAH¾HbH;HHH[]A\DAVAUATUHSH,Le@FL[LD$[,L$H}f(_L1ɺuHHL[]A\A]A^HAE1uLe@身H}AXHAHc;1AAH¾LImaE~?1 @A9~HcH}AD裦ȅuHcLH~-fAVAUATUHSH,Le@LZLD$Z,L$H}f(oL1ɺxtHHL[]A\A]A^HAE1ktLe@zH}XHAHc1AAH¾LI-`Ex?1 @A9|HcH}AD賜ȅuHcLH>-fAVAUATUSHLk@HөH;+D`HߺAMcLQLHHߺ>EAHL$HIXeH;LHLD1ɺsLHL0AE1sLHdHHH[]A\A]A^Mffff.USHH,Hk@ܨHoXHD$\X,L$H;f(H1ɺOrHHH[]HAE1HrH[]eDAVAUATUSHH7H;迟DpHߺIcH踥HHk@IHߺ补ELE1HH$IcHAnW,H;MLDٗHD1ɺaqHHL0AE1`qLHHHL[]A\A]A^fffff.AWAVAUATUSHH8,Hk@$HVHD$VHD$VT$,H;,L$f(1DH1ɺypL0H8H[]A\A]A^A_AE1Hjpf.Ho@HTHIHTLHAljD$$/UH;D$ӝD9jH5ptHRD$HߍpHc责H;1HIHD$(/L$$HDDiMcL耣LHImEID$MAHl$DMgIT$IMA$AAEDL$$AH|$,$>aH;B0MLgDEt.9l$|(IfWAf.zuLLE1Hl$LH@LH5Ht$(H(Hۤ fDH;(;D$fAVAUATUHSH,Le@膤LTLD$T,L$H}f(L1ɺmHHL[]A\A]A^HAE1mLe@H}QAHcH~1AEH¾LIYE~A1 A9~HcH}AƉ4ȅuHcLH.AVAUATUHSH,Le@FLRLD$RL$,H},|L1ɺlHHL[]A\A]A^HAE1lLe@貢H} AHcH61AEH¾LIRE~@1 A9~HcH}A轏ȅuHcLHx*fff.AWAVAUATUHSHdH%(H$1,Le@ޡHL]Q,H}1ɺLWkE1HHALVkH$dH3%(4H[]A\A]A^A_DLe@:H}1ɉ¾LAeHItqE~e1IfA9~=ALLLReLH"H}‰uHcDL@eIcH41AEH¾LIPE~?E1 @E9~IcH}AAD茘uHcLHw6fDAWAVAUATUHSH,Le@LOLD$tOL$bO,$H}L$f(֍L1ɺOiHHL[]A\A]A^A_HAE1@iLe@RH}詗HcغHHAӜIHH1IAELLT1AELLTE~Q1 fDA9~$HcH}AƉA uHcLHLHf.AVAUATUHSH,Le@VLMLD$ML$,H},L1ɺgHHL[]A\A]A^HAE1gLe@H}AHcHF1AEH¾LIME~@1 A9~HcH}A-ȅuHcLH*fff.AVAUATUSHHk@HLD,H;荔A1EtH;KAHߺAvHctEAHH¾ILH;ALdHD1ɺLfHHL(AE1KfHL[]A\A]A^AUATUSHH,,H;贓H;zD,(Hk@HAuHc螙HAEHIQHpKH;L%HD1ɺmeHHL(AE1leHHL[]A\A]fH;H;贓D,(Hk@HߺAuHcؘHAEH¾IQH;:f.AWAVAUATUSHHk@HH;9H;A^AuAƺEHHcTAvIĺHHc=EALHIlPH;LL莎1ɺDHDd1E~McDLHA9E1HADHdLHWLHL(~SHcL(HH[]A\A]A^A_AAHcf.H[]A\A]A^A_ÐAWAVAUATUSHHh,FHk@o1ɺH`HIHHD$(HL$(,H;,袆A$AE1LH`Hh[]A\A]A^A_H;hH;A-AvHAHcV,HD$(HC@HD$0H|$01DD `EHD$8HL$(McDt$LJALl$8EHIHL$@f.E9|.HT$(H;DA藓Ht$@LLMuDt$LL|$0Ht$8E1ADDL_Ht$(H(LvaLH(AAHraHh[]A\A]A^A_HǾG,H|$01DDD$\^EHD$8HD$(ALxHD$\HD$@ @E9HT$(H;DwHD$@LD$8H|$0E1Dt$HD$DHD$L<$DbAufDAWAVAUATUSHH,舖H;ALcLHLLc@HźHEAHHL$IR1ɺLA]LIE,H;MHD AE1ALLv]Mt LHHHHH[]A\A]A^A_@AA Hk@j1ɺH\HID,H;E111SA$HH[]LAE1A\A]A^A_\H[]A\A]A^A_fAVAUATUHS,Lm@ʔL]DD,H}?EEE11úHsHc&H}DHI41ɄtYL^~1fMcDLH9LHAE1^[HL]A\A]A^Q1L1]fH}WWfLm@H}i2fAUATUSHLc@H赓H;=DhHߺIc9EAL1H¾HkI1ɺL']H;HIHLLIEAE1]HHH[]A\A]`AWAVAUATUSHHk@HdH%(H$1HD$ AA1HHHD$VH;LcHLAELIĺH2E11IELHBE1A1ELHLHA9t%LHLHH5uH>HAHD$AL$M,Ht$,H;EL,$1LcH[E1HL0AH[LHLHH$dH3%(uH[]A\A]A^A_腁DAWAVAUATUSHHk@HQH߾?HA@H;D$聉LcHߺLA諎LIHߺ蘎ELH$AHILH;D$ELL艈HD1ɺaZHHL0AE1`ZLHHHL[]A\A]A^A_fff.AVAUATUSHLk@H3H;軇DpHߺMcL贍LHHߺ衍EE1HL$HIKH;LHLD1ɺvYLHL0AE1uYLHHHH[]A\A]A^USHHH= t[要Ht8uH5 H]&Ht`H[]ÐH=]HtHn 1H\'f.1d$HHH? &HuDH ) HH[1]/&ffffff.ATUSHHk@HdH%(H$1聎1HAAH#R<$ISH;t HH;La1غHWE1HHAHWH$dH3%(u H[]A\}DATUSHHdH%(H$1,Hk@I衍AAH1HCQHqL|1ɺHHWH3H[HI{H;HI$}Ht8I$H;tHE1ALHVH$dH3%(uLH[]A\Hk@I迌1AAHHaP(|fAVAUATUSHHPdH%(H$H1, KHk@Ll$@@AAL1HOHAA2H1HAIOLLD^1ɺHHUH3H6ZHIHcH;IU<$t L(E1ALHZUH$HdH3%(HP[]A\A]A^Hk@Ll$@=AAAL1HN$I!DHk@Ll$@AAL1HNHAzff.UHSHcHdH%(H$1= u]H@1ɺH-TAHE1HH,TH$dH3%(u;H[]HT$HT$Ht$H}@1ɺV zfUSHH݉H;uvź H߃H}nHcHH;HyH5 XH=wm5DH[]fH;yH5WH=gm~DH1[]4H;xH5WH=W~H;xH5WH=X~H;xH5WH=WaH;xH5XWH=W9d@H;XxH50WH=XW<@H;0xH5WH=?l@H;xH5VH=V@H;wH5VH=(W@SHH;wHߺ[:f.SH҇H;zHߺ [ f.SH袇H;~Hߺ[f.SHrH;vHߺ[f.SHBH;z{Hߺ [zf.SHH; Hߺ@[Jf.SHH;:zHߺ[f.SH貆H;JwHߺ[f.SH肆H;JwHߺ[f.SHRH;:uHߺ[f.AWAVAUATUSHH,tfHk@H5,H;wH{THHt$HHE1HT$RH[]A\A]A^A_fH?8}AHcH5EII1.fHHuHpHIXLIEHYsD9t$H;gvHIuL%S뽐H{@1LQELMdDHuHH@L9uLH0H[]A\A]A^A_H{@1DHQfffff.AWAVAUATIUSH,tvI\$@藄1ɺHCNHH4,I<$VtAE1HEHHH[]A\A]A^A_NMt$@I<$s|1AźLMEIH~"@I<$ރHsA9HE}AE1DLLpfDAWAVAUATIUSH,tvI\$@臃1ɺH3MHH3,I<$FpAE1HEHHH[]A\A]A^A_MMt$@ I<$c{1AźLLEIH~"@I<$ރHoA9HE}AE1DLLpfDAWAVAUATIUSH,tvI\$@w1ɺH#LHH1,I<$}AE1HEHHH[]A\A]A^A_KMt$@I<$Sz1AźLKEIH~"@I<$ރH}A9HE}AE1DLLpfDAWAVAUATIUSH,tvI\$@g1ɺHKHH0,I<$vrAE1HEHHH[]A\A]A^A_JMt$@I<$Cy1AźLJEIH~"@I<$ރHqA9HE}AE1DLLpfDAWAVAUATIUSH,tvI\$@W1ɺHJHH/,I<$zAE1HEHHH[]A\A]A^A_IMt$@I<$3x1AźLIEIH~"@I<$ރHyA9HE}AE1DLLpfDAWAVAUATIUSH,tvI\$@G1ɺHHHH.,I<$&zAE1HEHHH[]A\A]A^A_HMt$@~I<$#w1AźLoHEIH~"@I<$ރHyA9HE}AE1DLLpfDAWAVAUATIUSH,tvI\$@7~1ɺHGHH-,I<$lHAE1HEHHH[]A\A]A^A_G@Mt$@}I<$v1AźL_GEIH~!@I<$ރHlA9HHE}AE1DLLpAWAVAUATUSHHdH%(H$1,t`}H{@,,H;LsH=H$dH3%(H[]A\A]A^A_@|H;u= AHcH.zEIHIf.H;rLHcLM|H!ကtȺHDHFHDHL)HyLIHiA9zH{@1DLLHAEMdDHuHHL9uLHLs@1ɺƽLFEEII~ H;IqA9HID$}AE1DLLEMH{@1DHGq/kffffff.AWAVAUATIUSH,tvI\$@z1ɺHSBHHc*,I<$&qEAE1HHH[]A\A]A^A_5BDMt$@lzI<$r1AźLAEIH~ @I<$ރHpA9E}AE1DLLpAWAVAUATIUSH,tvI\$@y1ɺHCAHHS),I<$FgEAE1HHH[]A\A]A^A_%ADMt$@\yI<$p1AźL@EIH~ @I<$ރHfA9E}AE1DLLpAWAVAUATUHSH,tvH]@x1ɺH4@HID(,H}jA$AE1LHH[]A\A]A^A_@DL}@1PxH}oDpA1ɺLD?EIx!fDH}iADHA9}AE1DLLqfAWAVAUATIUSH,tfI\$@wH߾J',I<$]sH)FHHt$HHE1HT$6DH[]A\A]A^A_H?nAHcLtEII1.fHfHpLIuHIGH eD9t$I<$rHHuH-uEI|$@1DL1C@Iqaffffff.AWAVAUATUSHH,tfHk@qH+!,H;gH @HHt$HHE1HT$>H[]A\A]A^A_fH?iAHcHnEII1.fH`HpHInLIEH^D9t$H;gHIuL%V?뽐H{@1Lp=ELMdDHuHHкL9uLHH[]A\A]A^A_H{@1DH =fffff.AU1ATUSHHf5 H5mH|$0dH%(H$1bHH@HHD$8 b.f=6 LHD$0,HD$0H|$811AA2HX Hk3H5 HHHHcmHcH@H ЅHD$0,Ld$PH|$8E11AL2H5 HL?Hr@HT$0B9M H` HHHHT$0HHTmHM H|$0TH$dH3%(XH[]A\A]1H- E1H HH H}1҉ރHu1H- 1H H @H H}1҉ރH}uHD$0A H> f + ,HL$LHT$HHt$DH|$@`H5C<H<DL$LDD$HL$DH=QT$@HD$HD$Ht$ 1Ht$H4$H|$8,Ht$0FBLd$PH޺L(aH: InvaliH|$8LHHd lp han@dle.HP@u'Ld$PH޺L`H: UnimplH|$8@H0Hemented.HpL/*H|$8H5;CLd$PL$ LL'cH ;ML1hH|$8L1?`\x\;= TUHcSHH HHt5Hs^Ht Ht Ht8u%HaHn HH[]fDH=8:Ht1HfSHk{[YfHbf1ffff.f= tW S1ۅxf߃9 }H= H= H= Ht [@[ffff.UHHHSHHH|$@dH %(H$81HHDŽ$0}H$0Hu "fDHH;HkWHWHu䃼$t?H$Ht%H$8dH3 %(u#HH[]H H1ZZf.ATAH5MOUSHHHHNH$HH9tO9}(:\HcHž*\De AHE]DeH[H]A\$SHHH8VH;yVH[ATIUSHH_Hl$HtH\$H[HHuI<$1VHL[]A\!Vt11Љt11Hu11@UHSHHvHHHuH[HtH3H4[uHH[]fDAWAVLcAUIATIUHSHHtIcHH8tHLLrHHtHH[]A\A]A^A_At$L LcqZLHYDsHAD$HtJ\I$JHHSHI|$tID$ HtHXI\$ sDI\$ܐATIUHSHHHHHD$uL^HUHHHHtqH|$H9uDHt HHAH9uH9tRHMH9tqHu jfHt HHAH9uH9t:Ht HcGHH|$omH[]A\fHGHAfDHGHAHQHH|$H9uHGHHEuHE fff.ATIUSGHw 9M‰DHHu"If.sH;HLHtH[Hu[H]A\fH[]1A\[]1A\f.UHSHVHHtHrVHH+t H1[]@HCHP0H1[]DATIUHSH.VH8tH V[H8HL]A\[]1A\fAUIATIUSHHtTHI|$ǃRHHtH@H(HH@N,H[]A\A]DHt[t@HI9|0Il$HH5 mWuH=[H9|H:WQDATH=7 US{XH=xJIXHHvH5sJHSHmHHH H9CHڹ H5 KH8TH+i VL]H=CJ11HRVHӹ H51JHHHPUH5I@HHPUH5>HHPtUH5DHHP1[UH5>HHiP1BUH5$EHHPP&UH5EHH4P UH5EHHPTH5DHHOTH5DHHOTH5DHHOTH5DHHO~TH5DHHObTH5DHHpO FTH5DHHTO@*TH5DHH8OTH5DHHOSH5DHHOSH5zDHHNSH5mDHHN1SH5>HHNSH5>HHNiSH5>HHwNMSH5>HH[N1SH5>HH?N1SH5 BHH&NRH5BHH NRH5AHHMRH5AHHMRH5AHHMRH5AHHMpRH5AHH~M TRH5AHHbM8RH5AHHFMRH5AHH*MRH5AHHMQH5AHHLQH5AHHL@QH5{AHHL1QH5#?HHLwQH5?HHL[QH5?HHiL?QH5>HHML #QH5>HH1L@QH5>HHLPH5>HHKPH5>HHKPH5>HHKPH5>HHK{PH5>HHK_PH5>HHmK CPH5>HHQK@'PH5>HH5K PH5>HHKOH5>HHJOH5>HHJOH5x>HHJOH5l>HHJOH5_>HHJ1fOH5}9HHtJJOH5p9HHXJ.OH5h9HHHHHMH5>HHH MH5>HHH MH5>HHH1tMH5|9HHHXMH5q9HHfHu"|$?t I/H|$ H5-WHELHD$:EEtI/tVH Hl$H|$ H5,f.LH6HItcIGLP0@IGLP0Y7H|$ H5+ALt$Dd$,D$H|$E1A}9D$D$0D$8D$4EV;7H|$ H5 +*AusD$,9T$t*Et%T$6H|$ H5*T$Af;T$~EtDd$VD$8D$4Dd$,D$8f.AWAVIAUATUSDHhH|$HT$DD$0HHD$ "=c  HD$ HxHm HHpH9t <L|$ Hl$LHLHD$ pIW8AORɉT$4HT$ HR(:|$PjT$ $E…ɉD$ $D$U1D`HD$ HD$@$1D$V9\$ D$EALjD$WA E9\$ H|$ ;^$D$PD$U1D$4D$VHD$@D$ |$ ADžA u/;\$ vD$AED$WE1#D$DD$ ED$WE1L$,T$(4H|$H5e(oEL$,T$(t|$ |$ AfWL% 1D$,D$(HcHD$H$HHD$Xf|$UA$MD$4H5*HcHHt$@T$(1T$P~HED$HHFHc*D$(E1E1fWf.zt(D$0HL$ID$,AFHHHD$Mt I/ZMt ImjA4$H9\$ (D$,Hh[]A\A]A^A_DHL$@T$(1T$PyHED$HHAHcEDH|$@T$(1T$PHED$HHGHcZfHt$@T$(1T$P~HED$HHFHcH*@HL$@T$(1T$PyHED$HHAHc*DHt$@T$(1T$P~HED$HHFHc*fHL$@T$(1T$PyHED$HHAHc*RfH|$H5t'D$8D$8.fD9D$ |H|$H5%ZfE1|$VHl$ $E1Ht HH7u5Mt I/%Mt Im%@1H|$H5&/H3fH|$H5%D$8 D$8fDIGD$8LP0D$8DIED$8LP0D$8{Mt Im0H|$H5$fHH/HHtm|$WtfHIK6Hk29$Ht$XH.IHf.IGLP0IELP0I{IELP0DHD$ D$UD$VHD$@H|$ 1$D$ D$PD$UD$4t~HD$@E1fD$EALjD$WA $D$WE1D$,1D$PND$VHD$@14$D$PD$UD$4D$VHD$@D$ 11E14ff.AVEAUEATIUSHHHt H5{"HHt$HH4Ht>Ht9HT$HLA9DOMcL.C,H[]A\A]A^#.1EtH5#H ff.HcHIcH4.)fffff.ATIUS~&FHHlf.H;HD(H9u[]LA\3(AWAVAUATUSHHH|$T$(HHD$THD$E1H@;T$(tH|$H55!?\$(Hc-IHD$01HD$HD$8HD$ DD$/fDHCu2,|$/t H+uDLH|$H5"HT$Ht$ H4L|$8MLt$0A~McHch,LIDLH,EB0t H+H ]H9\$(H EAH\$HH*HH++Et H+DLH|$H5}!L|$8%fDLHH|$H59\$(XHHL[]A\A]A^A_DHCHP0HCHP0|HCHP0eH|$F-tA@+E1tH|$H5 wfffff.HcH<,ffff.ff.AWAVAUATUSHXHH|$HHt$(T$DD$@DL$D5ЉD$tL$HcH$HD$CT$HL|$(HD$HHD$ MHL$HLHD$8HcHD$0@|$H|$0C$T$Lt$(HLt$~1E1MLkIAI(M9IEuLt$Lt$8HD$HL$H@HHD$HD$ H9D$uHct$@HusHD$HHT$ǀHD$Du8HX[]A\A]A^A_DHD$L|$I^AILxY(IH|$(HX[]A\A]A^A_#HT$H|$H"(Hct$@HuHt$HdžHiH|$HHWff.HcH<*ffff.AWAVAUATUSHXHH|$HHt$(T$DD$@DL$D3ЉD$tL$HcH"HD$CT$HL|$(HD$HHD$ MHL$HLHD$8HcHD$0@|$H|$0"T$Lt$(HLt$~/E1MI>LkII&M9IEuLt$Lt$8HD$HL$H@HHD$HD$ H9D$uHct$@HusHD$HHT$ǀHD$Du8HX[]A\A]A^A_HD$L|$I^I>ILxK&IH|$(HX[]A\A]A^A_n!HT$H|$HH>&Hct$@HuHt$HdžHjH|$HHXfffff.ATADUSDT$0McL\$ Hl$(Kh*Hct$ Hu&AdžIH[]A\A]A^A_DHHH%s requires %d argument%s.make_lp failedcopy_lp failed%d.%d.%d.%dread_XLI can't read file.read_freeMPS can't read file.Invalid matrix dimension.Unnamedread_MPS can't read file.read_LP can't read file. Out of memory%sThis problem is infeasible%sThis problem is unbounded%sThe B&B routine failed%sTimeout%sUser aborted%slp_solve failed%s'An lp handle is required.Invalid model name: %sadd_columnadd_columnexadd_constraintadd_constraintexadd_SOScolumn_in_lpcopy_lpdefault_basisdel_columndel_constraintdelete_lpdualize_lpfree_lpget_anti_degenget_basisget_basiscrashget_bb_depthlimitget_bb_floorfirstget_bb_ruleget_bounds_tighterget_break_at_valueget_col_nameget_columnget_columnexget_constr_typeget_constr_valueget_constraintsget_dual_solutionget_epsbget_epsdget_epselget_epsintget_epsperturbget_epspivotget_improveget_infiniteget_lowboget_lp_indexget_lp_nameget_matget_max_levelget_maxpivotget_mip_gapget_nameindexget_Ncolumnsget_negrangeget_nonzerosget_Norig_columnsget_Norig_rowsget_Nrowsget_obj_boundget_objectiveget_orig_indexget_origcol_nameget_origrow_nameget_pivotingget_presolveget_presolveloopsget_primal_solutionget_print_solget_rhget_rh_rangeget_rowget_rowexget_row_nameget_scalelimitget_scalingget_sensitivity_objget_sensitivity_objexget_sensitivity_rhsget_sensitivity_rhsexget_simplextypeget_solutionget_solutioncountget_solutionlimitget_statusget_statustextget_timeoutget_total_iterget_total_nodesget_upboget_var_branchget_var_dualresultget_var_primalresultget_var_priorityget_variablesget_verboseget_working_objectiveguess_basishas_BFPhas_XLIis_add_rowmodeis_anti_degenis_binaryis_break_at_firstis_constr_typeis_debugis_feasibleis_freeis_infiniteis_intis_integerscalingis_maximis_nativeBFPis_nativeXLIis_negativeis_piv_modeis_piv_ruleis_presolveis_scalemodeis_scaletypeis_semicontis_SOS_varis_traceis_unboundedis_use_nameslp_solve_versionmake_lpprint_constraintsprint_debugdumpprint_dualsprint_lpprint_objectiveprint_scalesprint_solutionprint_strprint_tableauread_basisread_freempsread_freeMPSread_lpread_LPread_mpsread_MPSread_paramsread_XLIreset_paramsresize_lpset_add_rowmodeset_anti_degenset_basisset_basiscrashset_basisvarset_bb_depthlimitset_bb_floorfirstset_bb_ruleset_BFPset_binaryset_boundsset_bounds_tighterset_break_at_firstset_break_at_valueset_col_nameset_columnset_columnexset_constr_typeset_debugset_epsbset_epsdset_epselset_epsintset_epslevelset_epsperturbset_epspivotset_freeset_improveset_infiniteset_intset_lowboset_lp_nameset_matset_maximset_maxpivotset_minimset_mip_gapset_negrangeset_objset_obj_boundset_obj_fnset_obj_fnexset_outputfileset_pivotingset_preferdualset_presolveset_print_solset_rhset_rh_rangeset_rh_vecset_rowset_rowexset_row_nameset_scalelimitset_scalingset_semicontset_senseset_simplextypeset_solutionlimitset_timeoutset_traceset_unboundedset_upboset_use_namesset_var_branchset_var_weightsset_verboseset_XLItime_elapsedunscalewrite_basiswrite_freempswrite_freeMPSwrite_lpwrite_LPwrite_mpswrite_MPSwrite_paramswrite_XLIget_col_namesget_constr_typesget_intget_no_colsget_no_rowsget_objective_nameget_obj_fnget_obj_funget_problem_nameget_reduced_costsget_row_namesmat_elmprint_handleread_lp_fileget_handlereturn_constants<<=>>=FREQNEUTRALCRITICALSEVEREIMPORTANTNORMALDETAILEDFULLMPS_FREEMPS_IBMMPS_NEGOBJCONSTNOMEMORYSUBOPTIMALUNBOUNDEDUSERABORTTIMEOUTPRESOLVEDPROCFAILPROCBREAKNOFEASFOUNDANTIDEGEN_NONEANTIDEGEN_FIXEDVARSANTIDEGEN_COLUMNCHECKANTIDEGEN_STALLINGANTIDEGEN_NUMFAILUREANTIDEGEN_LOSTFEASANTIDEGEN_INFEASIBLEANTIDEGEN_DYNAMICANTIDEGEN_DURINGBBANTIDEGEN_RHSPERTURBANTIDEGEN_BOUNDFLIPBRANCH_CEILINGBRANCH_FLOORBRANCH_AUTOMATICBRANCH_DEFAULTCRASH_NONECRASH_MOSTFEASIBLECRASH_LEASTDEGENERATEIMPROVE_NONEIMPROVE_SOLUTIONIMPROVE_DUALFEASIMPROVE_THETAGAPIMPROVE_BBSIMPLEXMSG_PRESOLVEMSG_LPFEASIBLEMSG_LPOPTIMALMSG_MILPFEASIBLEMSG_MILPEQUALMSG_MILPBETTERNODE_FIRSTSELECTNODE_GAPSELECTNODE_RANGESELECTNODE_FRACTIONSELECTNODE_PSEUDOCOSTSELECTNODE_PSEUDONONINTSELECTNODE_PSEUDORATIOSELECTNODE_USERSELECTNODE_WEIGHTREVERSEMODENODE_BRANCHREVERSEMODENODE_GREEDYMODENODE_PSEUDOCOSTMODENODE_DEPTHFIRSTMODENODE_RANDOMIZEMODENODE_GUBMODENODE_DYNAMICMODENODE_RESTARTMODENODE_BREADTHFIRSTMODENODE_AUTOORDERNODE_RCOSTFIXINGNODE_STRONGINITPRESOLVE_NONEPRESOLVE_ROWSPRESOLVE_COLSPRESOLVE_LINDEPPRESOLVE_SOSPRESOLVE_REDUCEMIPPRESOLVE_KNAPSACKPRESOLVE_ELIMEQ2PRESOLVE_IMPLIEDFREEPRESOLVE_REDUCEGCDPRESOLVE_PROBEFIXPRESOLVE_PROBEREDUCEPRESOLVE_ROWDOMINATEPRESOLVE_COLDOMINATEPRESOLVE_MERGEROWSPRESOLVE_IMPLIEDSLKPRESOLVE_COLFIXDUALPRESOLVE_BOUNDSPRESOLVE_DUALSPRESOLVE_SENSDUALSPRICER_FIRSTINDEXPRICER_DANTZIGPRICER_DEVEXPRICER_STEEPESTEDGEPRICE_PRIMALFALLBACKPRICE_MULTIPLEPRICE_PARTIALPRICE_ADAPTIVEPRICE_RANDOMIZEPRICE_AUTOPARTIALPRICE_LOOPLEFTPRICE_LOOPALTERNATEPRICE_HARRISTWOPASSPRICE_TRUENORMINITSCALE_NONESCALE_EXTREMESCALE_RANGESCALE_MEANSCALE_GEOMETRICSCALE_CURTISREIDSCALE_QUADRATICSCALE_LOGARITHMICSCALE_USERWEIGHTSCALE_POWER2SCALE_EQUILIBRATESCALE_INTEGERSSCALE_DYNUPDATESCALE_ROWSONLYSCALE_COLSONLYSIMPLEX_PRIMAL_PRIMALSIMPLEX_DUAL_PRIMALSIMPLEX_PRIMAL_DUALSIMPLEX_DUAL_DUALEPS_TIGHTEPS_MEDIUMEPS_LOOSEEPS_BAGGYget_dual_solution: sensitivity unknown.get_sensitivity_rhs: sensitivity unknown.get_sensitivity_obj: sensitivity unknown.add_SOS: sosvars and weights vector must have same size.This problem is degenerative%sNumerical failure encountered%sNo feasible branch and bound solution found%slpsolve Python Interface version 5.5.0.9%susing lpsolve version %d.%d.%d.%d%s%sUsage: ret = lpsolve(%sfunctionname%s, arg1, arg2, ...)%sԒ4\đs !';b}{@ c)7I%0 C 8 ǽ D%P5\g%&-% =KKL[j zKTwnumpy.core.multiarray_ARRAY_API_ARRAY_API not found_ARRAY_API is NULL pointerlpsolve.errorInfinitelpsolveExpecting a scalar argument.invalid vector.Expecting a character array.lpsolve55numpy.core.multiarray failed to import_ARRAY_API is not PyCapsule objectmodule compiled against ABI version %x but this version of numpy is %xmodule compiled against API version %x but this version of numpy is %xFATAL: module compiled as unknown endianFATAL: module compiled as little endian, but detected different endianness at runtimeinvalid vector (non-numerical item).Expecting a character element.invalid vector (non-string item).PPPPPPPPPPPPPPPPPPPPPPT<8888x888H8888888888888Xꌠ9Y>)F;8`x0@( X `x @   @ ``  P  X  P p  !P !x " P" " " " @#H $ $ P% %@&@p&`&' 'P'p''((P@(pp((()0)`)0*+@+p+0,`,8,`@--.@/(00hP00 1@1`1181X`22`33@4@4p5`550606`6P778 p8P89:p:0:`P;;<p< ?APC@DDpEPE@FFG`G@GpHIpII8J0KKKPLHLxMpM@N(NXO`OO0PPHPh0QQR @UX U V @V pV!V0!WP!@Wp!pW!W!W!X!0X"[`"\"]"]#^8#^h#_#_#0`$` $aH$b$ c%c@%e%g%`h &`i`&i&k&Pl '@m`'m'n'q((rp( t( v)wX)y)y)@{ *|**Pp+p+ +Є8,,І,,`0-h--P-0.`8.X.x.. .P../8/X//0`001ЖP1110@2@2P2`03304@P445H5555505(6`6Ь6 6`66@7x7 7p708p8888989 h99P90(: x::;(;X;;;;@< X<0<<zRx $FJ w?;*3$"D8 \0 t( $0 EAAM pAD$X GALD pDA, BGE , ABC ,  ADJ AAA < vAj E 4\ BFA N  AABG <;BGF  ABZ | ABU ,\BFA AAB<AL mA$:AL kA<DBBA D(G (A ABBD Dh:BBB A(A0J 0A(A BBBH 4`BFD K  AABA 4BFD K  AABA 4<pBFD K  AABA 4tBFD K  AABA AQ,\BFA xAB4BFD K  AABA $48ZAFK0vEA\p-Ac|*Ad)Ac-Ac%A_,\BFA AABL,uBBB B(A0D8G 8A0A(B BBBC | )Ac,0\BFA AAB`-Ac4pBFD K  AABA $%A_D%A_$dWAFK0vAAPAQP)Ac`AQ`%A_$ poAIH }DA4%A_T%A_t%A_%A_%A_%A_-AcL(uBBB B(A0D8G 8A0A(B BBBC dX%A_h-Acx-Ac4BFD K  AABA )Ac$ SAFK0vEA,D XsBFD UAB,t BFD H0d GAB AQD :BBB A(A0J 0A(A BBBH < BGA A(N (A ABBA L AQ,l uAFJ\ AAA  PAl K S @AQ @AQ @AQ @AQ4< @BFD K  AABA t PAl K S, BFD H0q GAB, xsBFD UAB, ]BFA BAB,$ ]BFA BAB,T ( ]BFA BAB, X ]BFA BAB, ]BFA BAB, kBFD MAB, \BFA xAB,D (!]BFA BAB,t X!]BFA BAB, !]BFA BAB, !]BFA BAB,!]BFA BAB,4"\BFA xABLdH"BGB A(A0 (A BBB\ A(A BBB,"nBFD GAB,"nBFD GAB,8#aBFA PAB,Dx#aBFA PAB,t#ZBFA vAB,#\BFA AAB,$\BFA AAB,H$\BFA AAB,4x$\BFA xABLd$BGB B(A0A8KPi8A0A(B BBB<%BGA A(K@ (A ABBI <&BGA A(GP(A ABBL4h( BGB B(A0A8GP 8A0A(B BBBH ,8*\BFA xAB,h*\BFA AABL*BGB A(A0 (A BBB_ A(A BBB,4+nBFD PAB,dX+\BFA xAB,+\BFA AAB,+\BFA AAB,+\BFA AAB,$,\BFA xAB4TH,BFD K  AABA ,,rBFD KAB,0-\BFA AAB,`-\BFA AABL-BGA A(K@ (D ABBh D(A ABB,l0.nBFD PAB,p.\BFA xAB,.\BFA xAB,.\BFA xAB,,/\BFA xAB,\0/\BFA xAB,`/\BFA xABL/BGA A(K0z (D ABBg D(A ABB, 0\BFA xAB,<@0]BFA BAB,lp0\BFA AAB,0]BFA BAB,0oBFD QAB,1oBFD QAB,P1AQ,LP1nBFA SAB,|1ACJ AAA < 2BEE D(H0a (A BBBH L2BBB B(A0A8D`X 8C0A(B BBBA D<4BPB D(E0KJ 0A(A BBBF 85+AeH5+AeX5+Ae,h5nAAG ~ CAM 5+Ae45+AeT5+Aet5+Ae5+Ae5+Ae6+AeL6PBBB B(A0D8G  8A0A(B BBBA DD9 BBB A(A0J 0A(A BBBC ,9qBFA VAB,0:qBFA VAB,:qBFA VAB,:qBFA VAB,L ;qBFA VAB4|p;BGA A(K0^(G ABB,;qBFA VAB(BGA A(K0(G ABBL$>BBB B(A0D8G 8A0A(B BBBF Dt8@=BBB A(D0D@p 0D(A BBB^ D0ADBBB A(D0D@s 0D(A BBBc <8BBGB A(A0G@0G(A BBB,DBkBFA ZABDt8C>BBB A(D0D@p 0D(A BBB^ D0D>BBB A(D0D@p 0D(A BBB^ <(EBGB A(A0K@0G(A BBB4DEAAG0o DAc DAA<|PFBGB A(A0G@0G(A BBBLGBBB B(A0A8Gp 8D0A(B BBBe D `I=BBB A(D0D@p 0D(A BBB^ DT XJDBBB A(D0D@s 0D(A BBBc L `KBBB B(A0D8G 8A0A(B BBBF L MBBB B(A0D8DP 8D0A(B BBB[ Dr`Jr0Wr_rmrxrr@rrr0rrrr r r r sps$s1s@;sKs]sisss`ssPssssos0ssPsstСtСt$t.tП;t Et@(St&dtplt@xtttttttt`ttp u uuu"u$u u'udvz*u-u5u>uEuOuVu_udumuuu u u u \v u w 4v u u u u u u u uuvv*v?vRv gv@yvvvvvvvvvw%w@2w@Cw@Tw@ew@wwwwwwwwwwxx*xBxYxixxx x@xxxxyy'y 6y@GyWyeysyyy y@yyyyyz#z 8z@Mz`ztzzzzzzzzz{ {.{ ={M{_{n{{{@{{{{{{{ ||-| :|@L|[|k|z|| | | | |@|@|@|@ p gP!X!ox  ? !n3(; o 3oo0oj!Ɔֆ&6FVfvƇև&6FVfvƈֈ&6FVfvƉ։&6FVfvƊ֊&6FVfvƋ֋&6FVfvƌ֌&6FVfvƍ֍&6FVfvƎ֎&6FVfvƏ֏&6FVfvƐ֐&6FVfvƑ֑&6FVfvƒ֒&6FVfvƓ֓&6FVfvƔ֔&6FVfvƕ֕&6FVf!lpsolve('functionname', arg1, arg2, ...) -> execute lpsolve functionname with args!043<. !GCC: (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4,`V,s/,6|33~s`+ *`VJint##r2T; </2(4 %{8{4X4o2{#C0 CT (4 Y \  4 ( 0 8 @ H P S+X M1` A h z1 4p 4t )x ^6[ ; "  )% . / 0 1 2I ,44 ] 6 B ! ' " ,$4[T q2f AT7% U 4;4 [ 9 D{T  " ? (9  )4@ 6 *H9 0T47 x  ;? i 2! k ` l1 N ^ O 3 P Q 7, Q(  U7 0 8 VT 8  W @ " X H 5 YP e9 Z X  ^ `  _ h 7) ` p  d x 9 e E f a> g  h : k nT 33 p w6 t( y< w2 { S) ~ F e) R @ ( 3 0  T; = ^ M j CB   v (A"  0  8<  @' 2H" PF0 X? `2C hI p/- 7 x b/ 7 + m o ^ p < qk r0E -7 s 2r =C4R" ]cr }. 4y3 4 G P |buf obj len  :,  4 / 4$ k/ ( 2 |0 B |8 - |@  H7 - 44q; C, 4    4( 8 3 9 4R   +C    &  #    h ( S= 0 % 8 T @ ` $ h Y. p 5? x   >    N9  %  -<  |    Q    ?    :  S8      . R P  : R 3   r = r R  2 ( 0 0  8  "@ [ #rH' $  & + 'R 2 ( 4 ) *  - o# . 9 /N 0 ( 3& , 7  4C I T 2 :` f 4  4l <    = >  4 3 ?p @  A   ? B' - F 4@ CN D E FA< Gg2 H   \ I       3 (( }) /)* (+4 A- yD. 01(   get setdoc D 9/'h= :$b} B5" %4>D BBEC;.87`-y 21=+dB < > {C  .;&!#zF(@D>=F$C/-PEG>F Z* ]K >^K r!_K `K 0 aK jbK( cK0 =dK8 eK@ AfKH >gKP hKX D6iK` >jKh ,kLp = l Lx *mL $nL ioL IAp#L q)L Dr/L As5L `!t;L uAL QvGL wML (xSL DyYL Ez_L {eL |kLv}qL{ ~wLv }L7LL AL(pL0s*L84L@@LH@CLP"1LX? L`(LhCLplLx25LO@L*L>$L5LL5 LLMh8Mr@ M%M$M8'M5%M'+M?1M<7M=M CMIM 9OM(SUM03*[M85aM@gMH:"mMP;sMX6yM`0Mhl"Mp MxyM<MM<&M%M&M M^MH?M; M~"M2MM-4M@MM}M.MMCN, N f4N(7N0N8!N@R0'NH:-NP(3NX''9N` ?Nh+ENp<KNxs,QN"WN]N "cN1iNBoN&uN{NN'N N NN2NNNN_"NeANDNj'N N(N0v=N8`N@ NH2NP,NX)N`=Nht.Op: Ox8O5O4O(A#O)O3/O85O-;OAOZGOUCMOSOEYO1_OeO*kO]qO3wO1}Ou O-O tO(3.O0;O8O@3OH:OPRDOX`D O`! Oh0 OpA Ox1 OZ#O0O<O O8O[5O9ONP(P# Pc&P|7PP=%P+P1P,,7PR=PE CPy!IP ""OP(#UP0)$[P8#0%aP@&&gPHx'mPPR%(sPX:)yP`*PhS,+Pp ,Px$-P&.P=/P%0P>@1P 2P@3P#4P5P%=6P 7P8P .9P:P ,;P&#<P =P.>P/?P@Q, A Q <BQ(CQ04>DQ8,E!Q@F'QH4G-QP'H3QXE'I9Q`A!J?Qh8KEQp&6LKQxB9MQQ"NWQ4Qw*TsumW45X475Y4 @Z4C:[44\4\;_4$`4a48dB:eBfBgBQBhBiBjBv,lBmB<nBEoBBpB@r4/s4&t4 u4E+w-J+x*|*y ~*;*-*--D*(D* &*(C/*0*8 *@U*H *Pobj*X `" hE= p` x9474d0444?4_  j6I144MA4mB.B6B2B -'444454{:4p"/A/-]Q` ]Q4cQ<(cQ :I CiQ v4 q:4 G4 ~%4$  *( !0 8 GUB95@ 4H D4L SOS95P X *`  h A>*p rhs*x 1 iQ  * * ;* ;* '0 .oQ 06uQ 9uQ Y7{Q  {Q  Q .* iB  B B B a4   * @I ;FI /  Q \@ 4( ^E 4,  40 ^* 44 z-8 2-@ :6-H ,-P 4X 4\ y8B` KBa Bb 'Bc ?4d 20h **p Bx   * !- "-  %- S@&- J'- 'E(- )- 5*-  +- z,- K-- (04 814 24 34 74  )54 ?64 -74 *84 P9 : ;1 8<1 >-( 1@-0 &B-8 BC-@ #E-H F-P 4IQX >JQ` M-h N-p O-x BR- S- *T- <U- V- 8W{ <Z a 7dQ eQ fQ EgQ hQ iQ 4jQ !kQ 'lQ mQ J<nQ oQ (pQ iqQ( v'rQ0 AsQ8 tQ@ 2BuQH vQP <4wQX H#xQ` nyQh P&zQp <{Qx  |Q O6}Q i ~Q 6Q  Q 2#Q  Q 5Q  Q Q %  R 0 R R R  R /#R X-)R /R A 5R &;R AR( )GR0 M/MR8 0SR@ YRH $@P  X  8A` 0h A8Ap 1dAx m94   2A  A ! 0  3*3- (,lp(,  4 ?4 B4 )4 " $4 2.,$ wA48 A74< 4@ 4D F%4H 9D4L 4P 4T A-X B-` >,h - f;- 'E- =N, B B &B34>,-N,^,  *"0&, z(- )-  *- 8+4lp,(, -B(".j,;/ .lp1(, <24 q34 44 5 . 6 7.( q8*0 $9*8 .:@ &;4H J><4L =-P r>-X ?-` :@-h 5%A-p C B-x >C- E)DB EB IFB ;GB, F.;H, @ n.lp(, <4 4 M- @&. < .   4 ' . E .y.= y.(/ F/ <4 a 4 4 ^0. >. /.F. " `/ 2  4 ? 4 \ -"// %hs0lpk(, 5n4 75o4 $r4 s4 Zt4 ?z * {( 9|*0 ?~8 @ CH 0P 8X *` (F*h 'E-p ;:-x 4- -:B B%k/ % 0lp(, 4  0s0& ~0A01 84  @I ;FI 74 _=1(0A0X1lp(, #54 C$4 =%4 68 s$ $*( "$*0 $18 $-1@ / 1H BP0-18]2lp(, #(4 )"4  4 9; -  ]2 = ]2( `% c20`/11 : 3  3 C 3lp (, 84 4 $4 D4$ >.4( U4, \40 ;-8 -@ &-H *P ;*X $-` :E-h x4p 94t Bx +%By B#Bz 3DB{  4A B #2!Bu2:"u2O((%4lp(, E4 \'4 + . 5B P(3f<4 e0.4lp0(, `,1J5 l24 +34 .44 554 E6 7( ;H95 !95 "4 # c$4 3D%B <&4 '4$ (( ,)*0 *8 /2+@14;,4P5?5D*b54v5(,%+55(,A,55(,4D-545(,4:25B5(,*3 6B'6(,4*436BQ6(,*4-*5]6B6(,4*4-{636?7646(,444*.8646(,*96(,7(,f :77(,L;(7B<7(,4W<(76=7J">`7Bo7(,>?{777(,@747(,A7B7(,Bj%B7C7<D7E7|#F`7/G8-#8(,u0H/8C8(,4B\8(,4*EJh848(,4*@K848(,4<L8-8(,44*M5b3N5"O8P8 Q8/R8S8JT8-U72V8+W5Xe9-y9(,4fY88Z99(,[7,\9-9(,44]9-9(,4BB7^7C_7 `:-3:(,Ba?:4S:(,Bb_:Bs:(,Bc::(,BB(d:4:(,B4e7Bf8g7Zh7)9i7@j7 k8=2l8!m8 n/8?o/8ApI;c;(,B:q7i5r72s73t5u7v;B;(,**bCw;B;(,;*x;y;Mz;{<B8<(,;;|D<Bg<(,;;;;}s<B<(,;;;\~;Me9m>e9h8$C8/8C8)7)<B=(,**!"=BE=(,****I3Q=Bo=(,***57 D77@7/86={=(,>= =(,b7=$e9-81e9C e98R5O!785`7`7'`7(70(7%&`7&>B>(,44>`7;>B>(,*-E(71?B?(,-v(7*`7\`7(8`7`7/`7N (78`7(7#(7G4(7< (72(7t(7 (7k`7 ??90 @(,@44!)@9@(,4E@BY@(, 77C77L )@;@@(,;7$@@(,@V5(@A(,A5-@!#A8A(,8Av5bJAdA(,dA45vA(,A4F;A(,A4mA(,A4ABB(,B7A )7+>_:6)@JWB4pB(,44B77)@))@b<)@M*)@E@j1BBB(,4B BBC(,4-- C#C(,B6C-+;CKC(,-\C8 cCBC(,44*CBC(,4_> C ;CM5;Cw&;CH-;C8(7?;Cj;Cq)(7 )@6-;CO'B C_DBxD(,4-<E@6DBD(,44-7,)@)7ADD(,B-oB(7k;C}_D;C55E 6-/CE@f_EoE(, {EBE(,4BpE)@C@EE(,44)@U;K_D-_Do?FF(,*?C84cCk CV1;Cj- )@ Bi C )@> )@9FF(,{3C _D|>+5b$)@>E@M47:E@GB0G(,4-wG5E@k?E@P$8Q 7+E@GBG(, ' E@: G!E@4"G#GBG(,BB8$E@_ %AB*(7+"H8H(,4!,DHYH(,!Z-eH4H(,4*.(.H4H(,4*=/H-H(,4-0H4I(,IBUA1IB+I(,BB27IGI4BE3SIBgI44%47I9I"Q:7 <7=8:>8,?I*I(,NA?:BI4 J(,44IBCJ+J(,*r/D7JVJ(,**n4E`7=F_:G(7/HJBJ(,44W?IJBJ(,444,JJ-J(,44*7KK-K(,-*{MeHGN5K4XK(,4XKKRI(SJTKBK(,4%UG55'6Q6666677<7H7T7o777777778#8\8888888999)959A9M9Y9y999999::3::::::::; ;;%;1;=;c;o;{;;;;;;;<<8<g<<<<<<<<<<=E=o={=========>>>)>5>A>M>Y>e>q>}>>>>>>?#?/?;?G?S?_?k?w????????>S:??@9@Y@e@q@}@@@@@@ AA>AjAAABABB'B3B?BKBpB|BBBBBBBC#C/CKCWCCCCCCCCCC DD#D/D;DGDSDxDDDDDDDDE#E/E E;EGESEoEEEEEEEEFF*F6FBFNFZFfFrF~FFFFs:FFFFFFG0GR :?S $@ A4 f/B4R`.CR C$JSptr& ''JS%S8*Slp,(,h-4cmd.S f./S@#C0JS0S1E1PSI)T ; 0v . ,!7&@ 0+@\nT )E] \^4 ,_b >`b +aB\zTTTSTcmd T 94nT$F1T%'3%j&R>1U'ET'\4',b(buf)i4*?4OU'4&?5U'4+,)lp0(,+,)I,5I+,>,,4&jU'EjT(ptrj,ClJS,O:lJS&:3 gV(lp0 (,' (h 4+,.+,)I,5I+,>,,4$R4V-__s%|!$9fV%'3f%jf$ DV%'3%j%I&=`W'E`T(ptr`,CbJS$0LW%'30%j0%0I&1W'ET'\4',b.W)bufW)ptr+)iprWW{&g"X'ET,+)m4)i4,-$DL:X%'3L%oL4%LI& X'E T)ipr W,.3 W+)n 4)i 4&  X'E T)ipr W,.3 W+)n 4)i 4&1 Y'E T)ipr W,.3 W+)n 4)i 4&+A ZY'EA T)iprC W,.3C W+)nF 4)iF 4&0 Y'E T)ipr W,.3 W+)n 4)i 4&Y'ET)iprW,.3W+)n4)i4&x 2Z'E T)ipr"W,.3"W+)n%4)i%4&(4Z'ET)iprW,.3W+)i4)n4+,-)ptr)bufW&Z'ET)dpr*,% *+)n4)i4&;|0['E|T)dpr~*,% ~*+)m4)i4&5"bx['EbT)dprd*,% d*+)mg4)ig4&m@['ET,+)m4)i4,-&c8\'ET,+)n4)i4,-&AP\'ET)dpr*,% *+)n4)i4&\'ET)iprW,.3W+)i4)m4+,-)ptr)bufW&A]'ET,+)n4)i4,-&*]'ET)i4)hp/+)bufW.w],4,y24,4, 4+,B]]/1$4`]0lp(,U1ET2s(p ^0sig4U2,r^3lp(,4E93bufr5~Y6U Qi6TQ/ EC_4ET4I4<IC7ptr|8V&_9V9W|:; W<ƗY6U16T@<Y6UT6TQ/G {G`4E{T94<{I7ptr}8V0_9V9W:0; WS<Y6U16T@<Y6UT6T1/4@ga4ET3lp0(,3err7i48X``9.X9#X9X=ژY`6T s $ &3$=VY`6U|6T 6Qv=eYa6U|6T h=wY2a6U|6T `6Qv=ZKa6U </Z6Uv6TQ2`/~b4ETT4,4>/Ipb?bufW~8gV@Tb9V9wV+m4ETCEj}A,47iprWQ=?gal6Uv6T2=]Zl6Us6T06Q26Rw6X 6Y1=i[l6Tw=Zm6Us6T16Q16R0=Z0m6Us6Q16R16X06Y1@šrZ2Сfn4ETtCEj}A,47iprW=gam6Uv6T2=Zm6Us6T06Q26Rw6X 6Y1=)[n6Tw=@Z,n6Us6T16Q16R0=aZXn6Us6Q16R16X06Y1@rZ2O0\q4EOT 7dprQ*=Egajq6Us6T1=YW\q6Uv6T16Q16R0@d{\5\6UU#@6Q16R16X06Y12 r4ETCEj}A,4,7iprWl=gaEr6Uv6T2=ݤZyr6Us6T06Q26Rw6X 6Y1=\r6Tw=Zr6Us6T16Q16R0=!Zr6Us6Q16R16X06Y1@ErZ2.PZs4ET=gga=s6Us6T3=twZZs6Uv6T3=wZws6Uv6T25\6Q X-42 v- t4EvT=gas6Us6T2=̥wZs6Us6T2Eݥ\2 =m*t4EmT<=gaXt6Us6T2=wZvt6Us6T2E ]2d)t4EdT=gat6Us6T2=,wZt6Us6T2E9 ]2@R@-ru4ERT=NgaFu6Us6T2=\wZdu6Us6T2Em7]2%"p%u4E"T =~gau6Us6T2=wZu6Us6T2EN]2|\v4E|Tl7ipr~W=gaDv6Us6T1=ɦZkv6Uv6T16Q16R0@Ԧe]5Z6UU#@6Q16R16X06Y12=ux4ET+A,4?bufW}7iprW'Fw7m4J7i47pa -=gaMw6T2@e]={]w6U|6T26Q~6R1=>]w6U|6T6Qs6Rw6X=L]w6Ts6Qw^20%|4ET=>gaY|6Us6T2=LwZw|6Us6T2EUU^2`W"}4ET=wga|6Us6T3=wZ|6Uv6T3=wZ }6Uv6T25l^6aX-2w7{}4ETc=Ϊgam}6Us6T1Eת^2^& )}4E T=ga}6Us6T2=wZ}6Us6T2E ^2# K~4E T=ga=~6Us6T1E'^2 d 0%~4Ed TG=>ga~6Us6T2=LwZ~6Us6T2EU^27L `o4EL TA,N 4 7iprO WK=wga-6Uv6T2=wZJ6Us6T2@^=Z~6Us6T16Q16R05ϫZ6UU#@6Q16R16X06Y12U#B Ы%!4EB Tn=ޫga6Us6T2=wZ6Us6T2E^219 %4E9 T=gal6Us6T2=wZ6Us6T2E% _20' 0%4E' T=>ga6Us6T2=LwZ6Us6T2EU#_2 `%4E TR=ngaZ6Us6T2=|wZx6Us6T2E:_2[D %4E T=gaс6Us6T2=wZ6Us6T2EQ_2MD %t4E T=άgaH6Us6T2=ܬwZf6Us6T2Eh_25 -4E T6 =ga6Us6T2= wZ݂6Us6T2E_2 u4E T A, 4 ?buf W}7ipr W~!F27n 4!7i 4!7pa -]"=ga6T2@-[=.{]Ƀ6U|6T26Q~6R1=^]6U|6T6Qs6Rw6X=l_6Ts6Qw<]6U6T~=bgaO6Uv6T3=Z6U|6T06Q36Rw6X6Y1=wZ6U|6T2=_6Qw=Zބ6U|6T16Q16R0=խZ 6U|6Q16R16X06Y1@rZ2o %4E T"=gac6Us6T2=wZ6Us6T2EŮ_2{- Ю-4E T"=ޮgaڅ6Us6T2=wZ6Us6T2E_2p  -}4E T>#=gaQ6Us6T2=wZo6Us6T2E-_2X. 04E. T#C0 Ej}A,1 4#7ipr2 W+$=_ga6Uv6T2=}Z,6Us6T06Q26Rw6X 6Y1=_D6Tw=Zk6Us6T16Q16R0=Z6Us6Q16R16X06Y1@rZ21 )4E TN$=ga6Us6T2= wZ6Us6T2E`2PC S4E T$=7gag6Us6T3=DwZ6Uv6T3=WwZ6Uv6T25s-`6Q X-42 s4E T$7ipr W\%=ga6Uv6T2=Z?6Us6T16Q16R0=wZ\6Us6T2@ʰM`5Z6UU#@6Q16R16X06Y12-Q 4EQ T%7iprS W&=ga6Uv6T3=-Z6Us6T16Q16R0==wZ46Us6T3=PwZQ6Us6T2=gh`p6Q X-45Z6UU#@6Q16R16X06Y128 4E TO&=ga6Us6T1E`2#A :4E T&7n 4&C Ej}Cc  S}7ipr W2'=ga~6Us6T3=#Z6Uv6T06Q26R|6X 6Y1=DZ6Uv6T06Q36Rw6X26Y1=XZ 6Uv6T16Q16R0=i`*6T|6Qw=Z\6Uv6T}6Q16R16X06Y1=˲gas6T2=Z6Uv6T06Q26R|6X 6Y1@rZ2! (4E! T{'C# Ej}A,$ 4'7ipr% W/(>^?ptr/ }<ʳ^[6Uv6T}6Q16R1=6ga{6Us6T2=TZ6Uv6T06Q26R|6X 6Y1=l`Ǎ6T|=Z6Uv6T16Q16R0=Z6Uv6Q16R16X06Y1@rZ2- 4E TR(=gas6Us6T1E`2  u64E T(?buf W~=9ga܎6Us6T2=XZ6Us6T06Q26Rw6X6Y1=c`(6Tw@rZ2[ P4E T(7n 4r)A75 4)=ga6Us6T2=wZ6Us6T2E´a=Ҵga6T15a6T12q= N4E T)=ga@6Us6T1Ea2 4E T@*=ga6Us6T1E,a2 4E T*=.ga6Us6T1E7>a2e' @Y4E T*=NgaK6Us6T1EWPa2Dq `4Eq T$+Cs Ej}A,t 4+7ipru W+=gaԑ6Uv6T2=Z6Us6T06Q26Rw6X 6Y1=ba 6Tw=еZG6Us6T16Q16R0=Zs6Us6Q16R16X06Y1@rZ2`A^ P@4E^ T+7n` 4],A75` 4,=7ga6Us6T2=EwZ6Us6T2ER}a=bga,6T15p}a6T12Z"E pl4EE T,7iprG W@-=ga6Uv6T2=Z“6Us6T16Q16R0=wZߓ6Us6T2=wZ6Us6T1=Ӷa6T X-4=`@6Uv6Q g5Z6UU#@6Q16R16X06Y12* sD4E* T-7ipr, W-=5gaǔ6Uv6T2=IZ6Us6T16Q16R0=YwZ 6Us6T2@ja5Z6UU#@6Q16R16X06Y12 2 ]4E T3.7ipr W.=ga6Us6T1=ɷZƕ6Uv6T16Q16R0@Էa5Z6UU#@6Q16R16X06Y12" ]4E T.7ipr Wh/=gaZ6Us6T1=)Z6Uv6T16Q16R0@4a5]Z6UU#@6Q16R16X06Y12{t `]u4Et T/7iprv W'0=uga6Us6T1=Z<6Uv6T16Q16R0@a5Z6UU#@6Q16R16X06Y12g ]04Eg Tp07ipri W0=ոgaЗ6Us6T1=Z6Uv6T16Q16R0@a5Z6UU#@6Q16R16X06Y127Z ]4EZ T/17ipr\ W1=5ga6Us6T1=IZ6Uv6T16Q16R0@T b5}Z6UU#@6Q16R16X06Y12 3 kÙ4E3 T17ipr5 WO2=gaF6Uv6T2=Zm6Us6T16Q16R0=wZ6Us6T2@¹"b5Z6UU#@6Q16R16X06Y12]\~4E]T27dpr_*3=ga6Us6T1=W\E6Uv6T16Q16R0@$=b5L\6UU#@6Q16R16X06Y12(P]94ETW37iprW3=egaٚ6Us6T1=yZ6Uv6T16Q16R0@Sb5Z6UU#@6Q16R16X06Y12M0]4ET47iprW4=źga6Us6T1=ٺZ6Uv6T16Q16R0@ib5 Z6UU#@6Q16R16X06Y127]4ET47iprWK5=%gaO6Us6T1=9Zv6Uv6T16Q16R0@Db5mZ6UU#@6Q16R16X06Y12a4p]j4ET57iprW 6=ga 6Us6T1=Z16Uv6T16Q16R0@b5ͻZ6UU#@6Q16R16X06Y12,л]%4ETS67iprW6=gaŝ6Us6T1=Z6Uv6T16Q16R0@b5-Z6UU#@6Q16R16X06Y12CX0\4EXT77dprZ*7=Ega6Us6T1=YW\6Uv6T16Q16R0@db5\6UU#@6Q16R16X06Y12.9<4E9T77n;48A,<487dpr=*(97ipr>Wq9=gai6Us6T1@-[=żW\6Uv6T}6Q16R0=Ӽb6T|=\6Uv6T|6Q}6R16X06Y1=Z6Uv6T16Q16R15?Z6UU#@6Q16R16X16Y12Pn4ET97dpr*9=ega6Uv6T2=yW\6Us6T16Q16R0=wZ۠6Us6T2@b5\6UU#@6Q16R16X06Y12;n4ET>:7dpr*:=սgao6Uv6T2=W\6Us6T16Q16R0=wZ6Us6T2@ c5.\6UU#@6Q16R16X06Y1220a4ET:7dpr*^;=EgaG6Us6T1=YW\n6Uv6T16Q16R0@d(c5\6UU#@6Q16R16X06Y12y"ab4ET;7dpr*<=ga6Us6T1=ɾW\)6Uv6T16Q16R0@Ծ>c5\6UU#@6Q16R16X06Y126 Z4ETf<7iprW<=%ga6Us6T1=9Z6Uv6T16Q16R0@DTc5jZ6UU#@6Q16R16X06Y12Yp\ؤ4ET%=7iprW==gax6Us6T1=Z6Uv6T16Q16R0@jc5̿Z6UU#@6Q16R16X06Y12 vп\4EvT=7iprxWZ>=ga36Us6T1=ZZ6Uv6T16Q16R0@c5,Z6UU#@6Q16R16X06Y12&i0\N4EiT>7iprkW?=Ega6Us6T1=YZ6Uv6T16Q16R0@dc5Z6UU#@6Q16R16X06Y12\ 4ETb?7dpr*?=ga6Us6T1=W\Ц6Uv6T16Q16R0@c5\6UU#@6Q16R16X06Y12yB4EBT!@7mD4@7nD4@C-DE*A,F4@7dprG*ZA7iprHWA8W [9@WA95W?B9*WwB<c6U6Q } $ &3$=ga6Us6T1=#W\-6Uv6T16Q16R0@.c=R\l6Uv6T|6Q16R16X06Y1@g-[=~W\6Uv6T}6Q16R1=b6T|=\6Uv6T|6Q}6R16X16Y1@e]=W\!6Uv6T}6Q16R2=c:6T='\m6Uv6T6Q}6R16X26Y1=KZ6Uv6T16Q16R3`4E>TI7i@4IA,A4I7dprB*YJ7iprCWJ=uga96Us6T1@}e]@-[=W\{6Uv6T}6Q16R0=d6T|=\Ƴ6Uv6T|6Q}6R16X06Y1=Z6Uv6T16Q16R15Z6UU#@6Q16R16X16Y120n4ETJ7iprW&K=Egat6Uv6T2=YZ6Us6T16Q16R0=iwZ6Us6T2@vd5Z6UU#@6Q16R16X06Y120 \4EToK7dpr*K=gaL6Us6T1=W\s6Uv6T16Q16R0@ e5\6UU#@6Q16R16X06Y125o\g4EoT.L7iprqWL=ga6Us6T1=)Z.6Uv6T16Q16R0@4#e5\Z6UU#@6Q16R16X06Y129$b`\"4EbTL7iprdWcM=uga¶6Us6T1=Z6Uv6T16Q16R0@9e5Z6UU#@6Q16R16X06Y12*U\ݷ4EUTM7iprWW"N=ga}6Us6T1=Z6Uv6T16Q16R0@Oe5Z6UU#@6Q16R16X06Y12J@H \4EHTkN7dprJ*N=5ga86Us6T1=IW\_6Uv6T16Q16R0@Tee5|\6UU#@6Q16R16X06Y12g*ܹ4E*T*OA,,4O?buf-W~7ipr.WO=ga6Uv6T3=ZF6Us6T06Q26Rw6X6Y1=wZc6Us6T3={e{6Tw=Z6Us6T16Q16R0=%Zι6Us6Q16R16X06Y1@IrZ2#Pr4ETO7dpr*EP=ega76Uv6T2=yW\^6Us6T16Q16R0=wZ{6Us6T2@e5\6UU#@6Q16R16X06Y12: \o4ETP7iprWQ=ga6Us6T1=Z66Uv6T16Q16R0@e5,Z6UU#@6Q16R16X06Y1210\*4ETMQ7iprWQ=Egaʻ6Us6T1=YZ6Uv6T16Q16R0@de5Z6UU#@6Q16R16X06Y12iD4ET R7col4RA,4S7dpr*`S7iprWS=ga6Us6T2=wZҼ6Uv6T2@e]=W\6Uv6Q16R0=e&6T H-46Q|@e]=\`6Uv6T|6R16X06Y1=8Z6Uv6T16Q16R15fZ6UU#@6Q16R16X16Y12kn4ETS7iprW-T=ga6Uv6T2=Z56Us6T16Q16R0=wZR6Us6T2@f5Z6UU#@6Q16R16X06Y127\F4ETvT7dpr*T=ga6Us6T1=W\ 6Uv6T16Q16R0@$f5L\6UU#@6Q16R16X06Y12v wP\4EwT5U7dpry*U=ega6Us6T1=yW\ȿ6Uv6T16Q16R0@3f5\6UU#@6Q16R16X06Y12qj\4EjTU7dprl*jV=ga\6Us6T1=W\6Uv6T16Q16R0@If5 \6UU#@6Q16R16X06Y12P\w4EPTV7dprR*)W=%ga6Us6T1=9W\>6Uv6T16Q16R0@D_f5l\6UU#@6Q16R16X06Y12 ECp\24ECTrW7dprE*W=ga6Us6T1=W\6Uv6T16Q16R0@uf5\6UU#@6Q16R16X06Y12D6\4E6T1X7dpr8*X=ga6Us6T1=W\6Uv6T16Q16R0@f5,\6UU#@6Q16R16X06Y120<4ETXA, 4Y7dpr *Y7ipr WGZ=Kgah6Us6T1@Se]=dW\6Uv6Q16R0=rf6T|@~e]=\6Uv6T|6R16X06Y1=Z6Uv6T16Q16R15Z6UU#@6Q16R16X16Y12Dw\4EwTjZ7dpry*Z=ga6Us6T1=)W\6Uv6T16Q16R0@4f5\\6UU#@6Q16R16X06Y12j`]4EjT)[7iprlW[=ugaR6Us6T1=Zy6Uv6T16Q16R0@f5Z6UU#@6Q16R16X06Y12$K\m4EKT[7iprMW^\=ga 6Us6T1=Z46Uv6T16Q16R0@f5Z6UU#@6Q16R16X06Y12?6  ](4E T\7iprW]=5ga6Us6T1=IZ6Uv6T16Q16R0@Tf5}Z6UU#@6Q16R16X06Y12>o4ETf]7iprW]=ga6Uv6T2=Z6Us6T16Q16R0=wZ6Us6T2@g5Z6UU#@6Q16R16X06Y12Ao4ET^7iprWq^=ga[6Uv6T2=Z6Us6T16Q16R0=)wZ6Us6T2@6/g5_Z6UU#@6Q16R16X06Y12 `14ET^=nga#6Us6T1EwJg2=n4ET_7iprW|_=ga6Us6T1=Z6Uv6T16Q16R0@\g=`6Us6Q g5Z6UU#@6Q16R16X06Y127 4E7 T_C9 4}Cy29 4}C9 4~C 9 4~?buf: W~C?: ~GgV94> HV g9wV$`ZA6)4eGV<9Ve9V!f<g6U6T}8V=9VFfKV9Vkf8V@ C9VfKV9VfGV7NHV]HV<g6U6T}8VP8{LVKVHV@g@h@'h=[[6U}=/Z6U6T=6TMT@=/Z&6U6T</Z6U6T/X>P4;4EPTf4 P49g4,PbgA\R4 h?bufSW~=FZ6Us6T06Qv6Rw6X6Y0=TwZ 6Us6Tv=L-6U|6Tw6Q~@rZ2!#+4ET@h=ga6Us6T2=E6Us6T26Q@Eh2#[+34E[Th=ga6Us6T2=E%6Us6T26Q E,h29@++4E+Th=ga~6Us6T2= E6Us6T26Q E+Ch2s|0n4E|T$iAfB~4i=Lga 6Us6T3=ZwZ)6Us6T3=pEM6Us6T26Q EZh=gaq6T2@^20j+4EjTi=ga6Us6T2=E6Us6T26Q Evh2<[ +x4E[ Tj=gaG6Us6T2=Ej6Us6T26Q@Eh2A0 +4E0 Tdj=ga6Us6T2= E6Us6T26Q @E+h2*% 0+r4E% Tj=>ga@6Us6T2=PEd6Us6T26Q E[h2 `+4E Tj=nga6Us6T2=E6Us6T26Q4Eh2E +h4E THk=ga86Us6T2=EZ6Us6T26Q8Eh2U +4E Tk=ga6Us6T2=E6Us6T26Q2Ei24 Pc4E Tk7n 4lA 4lCX/ EjwC  EjyC Ej{Cc  Ej}7ipr WKm=[ga6Uv6T5=yZ6Us6T06Q16R}6X 6Y1=Z6Us6T06Q26R|6X 6Y1=Z96Us6T06Q36R{6X 6Y1=Zm6Us6T06Q46R~6X 6Y1=E6Uv6T56Q@=Z6Us6T16Q16R0=2i6U}6T|6R~6Xv=D`6Uv6Q h=gZ:6Us6T6Q16R16X06Y1=gaQ6T2=Z6Us6T06Q16R}6X 6Y1=Z6Us6T06Q26R|6X 6Y1=+ga6T3=IZ6Us6T06Q16R}6X 6Y1=gZ86Us6T06Q26R|6X 6Y1=Zm6Us6T06Q36R{6X 6Y1=ga6T4=Z6Us6T06Q16R}6X 6Y1=Z6Us6T06Q26R|6X 6Y1=Z!6Us6T06Q36R{6X 6Y1=0ZU6Us6T06Q46R~6X 6Y1@@rZ2 8 @ 4E8 Tm7n: 4nAc : 4@nC; Ej}7ipr< Wvn=|ga6Us6T2=E6Us6T26Q =ZD6Uv6T06Q16Rw6X 6Y1=Zk6Uv6T16Q16R0=Ei6Uw6T~=`6Us6Q h= Z6Uv6T|6Q16R16X06Y1=@ga6T1@JrZ2  Pq4E Tn7ipr W5o=ega`6Us6T2=yZ6Uv6T16Q16R0=E6Us6T26Q @`i5Z6UU#@6Q16R16X06Y12' q4E T~o7ipr Wo=ga?6Us6T2=Zf6Uv6T16Q16R0=E6Us6T26Q @{i5AZ6UU#@6Q16R16X06Y12 Pq4E T=p7ipr Wp=ega6Us6T2=yZE6Uv6T16Q16R0=Ei6Us6T26Q @i5Z6UU#@6Q16R16X06Y12  q4E Tp7ipr Wrq=ga6Us6T2=Z$6Uv6T16Q16R0=EH6Us6T26Q @i5AZ6UU#@6Q16R16X06Y12! Pq`4E Tq7ipr W1r=ega6Us6T2=yZ6Uv6T16Q16R0=E'6Us6T26Q @i5Z6UU#@6Q16R16X06Y12:e4ETzr7iprWr=ga6Us6T3=Z6Uv6T16Q16R0=E6Us6T36Q1=$wZ!6Uv6T2=3i96Q}5bZ6UU#@6Q16R16X06Y12pqB4ET9s7iprWs=ga6Us6T2=Z6Uv6T16Q16R0=E 6Us6T26Q2@j5Z6UU#@6Q16R16X06Y12C?N4ETsCh=ga6Us6T2=E6Us6T26Q @"j<8^[6Us6Th6Q16R02g#@r4ETDt3ptrt8UI9Uzu9Uu:;Uv;U w@=jBz=j6UT5=j6UT2 4ETjw7n4x7vec*gxA,4x7dpr* y7iprWSy8W'9@Wvy95Wy9*W z<7c6U~6T}6Q v $ &3$=ga6Us6T1@-[=W\6U|6T16Qv6R0=r^6Us6Tv $ &6Q8= Oj6T06Q}=R\R6U|6T~6Q16Rv6X06Y1=]p6Us6T}=}Z6U|6T16Q16R15Z6UU#@6Q16R16X16Y1264ETVz7n4 {7vec*S{A,4{7dpr*{7iprW?|8W99@Wb|95W|9*W }hz7i47n47vec7pa--F ?bufW}=]I6U|6T6Qs6Rw6X=Ll6Uv6Tw6Q4=j6Ts<]6U6T~=vga6T2@-[={]6U|6T26Q~6R0=r^6Uv6T~ $ &6Q4=:jG6U|6T26Q6R06X~6Y1=dj_6T}4ET7n4A4AP7vec*A,4φ7iprW=9ga6Us6T3@A-[=Zr^6Us6Tv6Q8=qr^<6Us6T~ $ &6Q4=Fkv6Uv6T36Q|6R}6X16Y~6w0=wZ6Uv6T2=yk6Q~6R|6X}=Z6Uv6T16Q16R0=Z 6Uv6Q16R16X06Y1=(6Us6T}56UU2  k?4ET7m4y7vec*=1ga6Us6T2@9e]=Or^6Us6T| $ &6Q8=qoj6Us6T26Qv6R16X|6Y1=|k)6Tv56UU2N,>14ETA,4j7iprWFu7i47m47vec*=Fga6T2@Oe]=er^6Uv6Ts $ &6Q8=ojB6U|6T26Q}6R06Xs6Y1=kZ6Ts<6Uv6T}=ga6Uv6T3=wZ6U|6T3=wZ6U|6T2=k6aH-=Z6U|6T16Q16R055Z6Q16R16X06Y12>#4ETA,4h7iprWFg7i47m47vec*ы=ga6T2@e]=r^6Uv6Ts $ &6Q8=oj46U|6T26Q}6R06Xs6Y1=kL6Ts<6Uv6T}=ga6Uv6T3=wZ6U|6T3=wZ6U|6T2=1k6aH-=HZ6U|6T16Q16R05uZ6Q16R16X06Y12',A4EAT7nC4fAC4AD7vecE*A,F4>7iprGWf=-ga6Us6T2@5-[=Or^6Us6T|6Q8=br^6Us6T|6Q4=FkY6U}6T26Qv6R|6X16Y~6w0=kw6Qv6R|=Z6U}6T16Q16R0=Z6U}6Q16R16X06Y1=6Us6T|56UU2E!(4E!TFA,'4;7ipr(W}=$gar6Us6T3=1wZ6Uv6T3=DwZ6Uv6T2=Zl6aX-=qZ6Uv6T16Q16R05Z6UU#@6Q16R16X06Y1E#2.. ,4E T7m 4A 47A m7vec *A, 47ipr W=ga6Us6T3@e]=r^6Us6Tv6Q8=r^*6Us6T~ $ &6Q4="Fkd6Uv6T36Q|6R}6X06Y~6w0=2wZ6Uv6T2=G?l6Q~6R|6X}=_Z6Uv6T16Q16R0=Z6Uv6Q16R16X06Y1=6Us6T}56UU2( 4E T7A, 47ipr WFP67m 4)7n 47j 4A 1A  gA 47obj *&A *7vec *0A? *f7a -7mat =ilX6Uv6T2=lv6Uv6T|=l6Uv6T|@e]=/Z6Uv6T =h=r^6Us6T # $ &6Q8=Oj6T06Q= r^46Us6T}6Q8=3r^W6Us6T}6Q4=Fk6U6T26X16Y6wv=?l6Tv6R|6X}=6Us6T}= 6Us6T|= 6Us6T=%ga(6Us6T2@8-[=gaS6Us6T4=wZp6Uv6T4=wZ6Uv6T3=wZ6Uv6T2=/l6Q -46a-=GZ6Uv6T16Q16R05vZ6Q16R16X06Y129 P=4E T.A, 47ipr W*FT7i 4M7n 47vec *=ga6T2@-[="r^6Uv6T} $ &6Q8=@oj!6U|6T26Q~6R06X}6Y1=ll96Ts<6Uv6T~=zgaq6Uv6T3=wZ6U|6T3=wZ6U|6T2=l6aH-=Z6U|6T16Q16R05Z6Q16R16X06Y128n D 4En T,A,p 47iprq W(FF7it 4K7nt 47vect =Nga6T2@W-[=jr^6Uv6T} $ &6Q4=j6U|6T26Q~6R06X}6Y1=l+6Ts<6Uv6T~=gac6Uv6T3=wZ6U|6T3=wZ6U|6T2=l6Q H-4= Z6U|6T16Q16R058Z6Q16R16X06Y123 4E T*A, 47ipr Wt>!7i 47m 47vec 7pa -FF?buf W}=]6U|6T6Qs6Rw6X=.L6Uv6Tw6Q1=;m+6Ts6Uv6T3=4E`6Uv6T36Q1=CwZ}6U|6T2=Rm6Qs=iZ6U|6T16Q16R0=Z6U|6Q16R16X06Y1@rZ21^  4E^ THA,` 47ipra WDF7id 4g7nd 4ڝAe *Ae *F=ga6T3@-[=r^6Uv6Ts6Q8=r^6Uv6Ts6Q8=oj&6U|6T26Q~6R06X}6Y1=ojY6U|6T36Q6R06X}6Y1=JwZ 6U|6T2=Zga' 6T2@G-[=Zr^] 6Uv6T} $ &6Q4=xj 6U|6T26Q~6R06X}6Y1=am 6Ts<6Uv6T~=ga 6Uv6T3=wZ 6U|6T3=wZ 6U|6T2=am< 6Q H-4=Zc 6U|6T16Q16R05(Z6Q16R16X06Y12 < 4E Tz7i 4٠A* A BEA, 4h7ipr W=ga 6Us6T3=wZ< 6Uv6T3@e]@-[=,r^ 6Us6T~ $ &6Q4=Mj 6Uv6T26Q|6R16X~6Y1=\m 6T|6Q}=tZ 6Uv6T16Q16R0=Z& 6Uv6Q16R16X06Y156UU2"'F4ET7i4%7n4[7vec*Ai,-A,487iprW`=ga 6Us6T3@e]@-[=r^&6Us6T} $ &6Q8=#ojY6Uv6T26Q|6R16X}6Y1=0wZv6Uv6T3=;m6T|=SZ6Uv6T16Q16R0=tZ6Uv6Q16R16X06Y1B6UU=ga6T2@e]@-[=r^T6Us6T} $ &6Q8=oj6Uv6T26Q|6R16X}6Y1@=b2e_ 4EeT7ig477ng47mg4A9=h*ܤAi%A!iA,j4ܥ7iprkW6A.3kW=gaj6Us6T2@'-[@2e]=Lr^6Us6T} $ &6Q8=cr^6Us6T~ $ &6Q4=oj 6Uv6T26Q|6R16X}6Y1=m'6T|6Q=ZO6Uv6T~6Q16R0=Z|6Uv6Q~6R16X06Y1=6Us6T=6Us6T|=Z6Uv6T16Q16R15FZ6UU#@6Q16R16X16Y12@` 4ETǦ7dpr*SA% *%7iprWFp>7m47n47i4bAp&47vec*tA,48W9@Wl95W9*W<c6T6Q>?nz4=mk6U6T~6Q|6R0=e6T}6Q<2n6U6T06Q~6R|6X6Y}6w6w06w~6w@ ga@(e]@3-[=Jr^.6Us6T~ $ &6Q8=wW\Y6U6T~6Q|6R0=ey6T~6Q=\6U6T6Q~6R|6X06Y1=&6Us6T=JZ6U6T16Q16R1=nZ"6U6Q16R16X16Y1<wZ6U6T2=ga[6Us6T3=W\6Uv6T16Q16R0=wZ6Uv6T3=wZ6Uv6T2=Cn6Q -4<\6Uv6T|6Q16R16X06Y12LP4ET%7n4*A4sA ЭA*-7dpr*=xga6Us6T3@-[=r^6Us6T|6Q8=r^6Us6Q4=Fk+6U|6T36Qv6R}6X16Y~6w0=W\R6U|6T16Q16R0=wZo6U|6T2=cn6Q6Rv6X}=:\6U|6T~6Q16R16X06Y1=J6Us6T}Bl6UU=ga6T2=W\:6Uv6T16Q16R0=wZW6Uv6T2=cnx6Q06R06X05\6UU#@6Q16R16X06Y128 !4E!T7n#47i#4*A*#vA #A$BS7ipr%WA.3%W =6ga[6Uv6T2=CwZx6U}6T2@Qe]=zr^6Uv6Ts $ &6Q4=n6T|6Q~=Z6U}6Ts6Q16R0=Z!6U}6Qs6R16X06Y1B:6UU=ZX6U}6Ts@ -[=ga|6T1@'e]204ETA7n47vec*ز7iprW!=Kga6Us6T2@Se]=gr^96Us6T} $ &6Q8=ojl6U|6T26Qv6R06X}6Y1=Z6U|6T16Q16R0=n6Tv=Z6U|6T}6Q16R16X06Y156UU2e4ETW7n4˳AA,*JA[(4Ab(4ܴA,4?bufW}7iprW5=ga6Us6T6==Z6Uv6T06Q26R}6X6Y1@E-[=[r^!6Us6T}6Q4=nr^D6Us6T}6Q8=jw6Uv6T56Q|6R06X~6Y0=oj6Uv6T66Q}6R06X~6Y0=6Us6T}=6Us6T|=/Z 6Uv6T }=wZ(6Uv6T4=wZE6Uv6T3=n6T}6R }-46X6Y|6w}=*Z6Uv6T16Q16R0=KZ6Uv6Q16R16X06Y1=V6Us6T}=a6Us6T|@rZ2m!g!4ETXAc47n4A4#AF7vec*|A\-ŶA,47iprW%=ga6Us6T4=E 6Us6T36Q1=wZ% 6Uv6T4@-[=r^U 6Us6T}6Q8= r^x 6Us6T}6Q4=. Fk 6Uv6T26Q|6R}6X16Y~6w0=G n 6Q|6R}6X6a-=_ Z!6Uv6T16Q16R0= Z3!6Uv6Q16R16X06Y1= Q!6Us6T}5 6UU2i B#4EiTH7mk4Ak4߷Al7vecm*8A,n47iproW= ga"6Us6T2@ e]= r^@"6Us6T|6Q8= r^c"6Us6T|6Q4=" Fk"6U}6T26Qv6R|6X06Y~6w0=2 +o"6Qv6R|=J Z"6U}6T16Q16R0=k Z#6U}6Q16R16X06Y1=v ,#6Us6T|5 6UUIU J$9V̸9V.9VF#;%Vd> #N2V;>V= ~[#6UU< Po6T0= [#6Us= ko$6Ud6T0= [($6Us5A o6UT6TQ6Q02I P %4E TA, 4?buf W~7ipr W_8U  $9V9V9V< B#6Tw= ga %6Us6T2= Z@%6Uv6T06Q26Rw6X6Y1= oX%6Tw= Z%6Uv6T16Q16R0= Z%6Uv6Q16R16X06Y1@ rZ2{5s N'4Es T'7nu 4Ac u 4Cv Ej}Av 7iprw W8U @ v&9VM9Vp9V@ B#=_ ga&6Us6T2=} Z&6Uv6T06Q16Rw6X 6Y1= E&6Us6T26Q = o'6Uw= Z*'6Uv6T16Q16R0= `O'6Us6Q _h@ ~[= Z'6Uv6T|6Q16R16X06Y1=A ga'6T1=_ Z'6Uv6T06Q16Rw6X 6Y1@n rZ28R p *4ER T7nT 4AT 4aCU Ej}Cw*U S}7iprV WоGUXk (9V9V<9V{9a+;WD=Z8+6Uv6T16Q16R0<Z6Uv6Q16R16X06Y1>( ,9qWg9eW9YWO(PW~PW~=+6Us6TQ6Q~MTv<^[6Uv6T~6Q16R0@rZ27.-4ETA,4=#gas,6Us6T1@+o=?LW,6Us6Q @hp@pE~Y@p@p@p@0p@Xp@p@p@p2O&-4EOT=gay-6Us6T1@p5LW6UU6Q@2%9 &.4E9T=.ga-6Us6T1@6+p5FLW6UU6Q 2tP&.4ETb=^gaa.6Us6T1@fAp5vLW6UU6Q 23'(&/4E(T=ga.6Us6T1@Wp5LW6UU6Q 2&u/4ET =gaK/6Us6T1@mp5LW6UU6Q 2q &/4ET=ga/6Us6T1@p5LW6UU6Q@2DAa&^04EaT=ga406Us6T1@&p56LW6UU6Q 2dX@&04EXT==Nga06Us6T1@Vp5fLW6UU6Q42*Bp&D14EBT=~ga16Us6T1@p5LW6UU6Q82,&14ET=ga16Us6T1@p5LW6UU6Q2IWb39WZPWFpR39W:p;WC:p;W;W;W8Vc29V9V<p6T|@Xe]=kr^26Us6T $ &6Q8=C_26Us=C[26Tv=^[26Us6T~6Qv6R0= 36Us=)36Us6T~<0^[6Us6T~6Q6R0=gao36Us6T2=wZ36Uv6T2@C[=8^[36Uv6T6Q16R0<q6U|I:X@ T59GX9;SXN_X>z49GXOz;SX;_XMOz;lX;vX=ga46U|6Ts@-[=Z46U~6T}6Qs6R0<"%q6Ts=iga46U|6T2=}Z56Us6T16Q16R0=wZ956Us6T2@%qEZIXP 69X+;XNX>zU69XOz;X ;X?Oz;Xu;X=ga66U|6Ts@-[=Z>66U~6T}6Qs6R0<2@q6Ts=ygar66U|6T2=Z66Us6T16Q16R0=wZ66Us6T2@@qEZIX` N89X;XNX>z79XOz;X;X1Oz;Xg;Y=ga76U|6Ts@ -[=!Z76U~6T}6Qs6R0zO99YOz;+Y;7Y#Oz;DYY;NY=ga96U|6Ts@-[=1Z896U~6T}6Qs6R0z:9gYOz;sY;YOz;YK;Y=$ga:6U|6Ts@--[=AZ:6U~6T}6Qs6R0 zI<9YO z;Y;YO z;Y=;Ys=4ga;6U|6Ts@=-[=QZ2<6U~6T}6Qs6R09Y;ZWNZ>0y=9YO0y;Z;ZO0y;Z/;&Ze=Dgay=6U|6Ts@M-[=aZ=6U~6T}6Qs6R0<q6Ts=ga=6U|6T2=Z >6Us6T16Q16R0=wZ'>6Us6T2@qE,ZI2Z1QA9?ZNKZNWZ>@@9?Z6O@;KZY;WZO@;dZ;nZFA@;yZ;ZPZ}8V7?9V9V< p6Tw=rr^`?6Us6T} $ &6Q8=qx?6Tv=?6T46QwMTs=r^?6Us6Q1=*^[?6Us6Tv6Q}6R0=H?6Us=X@6Us6T~<^[6Us6T~6Q}6R0=Jga^@6Us6T1@R-[=zZ@6U~6T}6Qv6R0=q@6Tv<Z6U~6T6Q}6R16X06Y1=ga@6Us6T2=wZA6Us6T2@q=LWCA6Us6Q4@rZIZB9Z;ZFNZ>xRB9Z|Ox;Z;ZOx;Z;ZT=gaB6U|6Ts@-[=W\;B6U~6T}6Qs6R0<q6Ts=gaoB6U|6T2=-W\B6Us6T16Q16R0==wZB6Us6T2@JqE{\IZ KD9Z;[8N [> xC9ZnO x;[; [O x;[;$[F= gaC6U|6Ts@ e]= W\C6U~6T}6Qs6R0< r6Ts=) gaC6U|6T2== W\D6Us6T16Q16R0=M wZ0D6Us6T2@Z rE \I0[!E9=[;I[*NU[>!wKE9=[`O!w;I[;U[O!w;b[';l[]=!gaD6Uv6T1@!e]=!W\4E6U6T~6Q16Rs%xJ9\O%x;!\U;-\O%x;:\;D\=%gaJ6U|6Ts@%-[=%W\J6U~6T}6Qs6R0<%r6Ts=%gaK6U|6T2=-%W\BK6Us6T16Q16R0==%wZ_K6Us6T2@J%rE{%\IP\&1N9]\iNi\Nu\>&N9]\O&;i\;u\!O&;\W;\TFyM;\;\ P\}8VO' oL9VC9V <]'p6Tw=&r^L6Us6T} $ &6Q8=&rL6Tv=&L6T16QwMTs=O'r^L6Us6Q1=z'^[M6Us6Tv6Q}6R0='4M6Us='RM6Us6T~<'(^[6Us6T~6Q}6R0=&gaM6Us6T1@&e]='ZM6U~6T}6Qv6R0='rM6Tv<(Z6U~6T6Q}6R16X06Y1=:&ga3N6Us6T2=H&wZQN6Us6T2@T&r=c&LW{N6Us6Q1@1(rZI\@(bP9\fP\FP$P9\:P;\O:P;\;\;\8V)5O9V9V"<)p6T|@(-[=(r^kO6Us6T $ &6Q8=)C_O6Us=))rO6Tv=P)^[O6Us6T~6Qv6R0=p)O6Us=)O6Us6T~<)^[6Us6T~6Q6R0=h(gaAP6Us6T2=u(wZ^P6Uv6T2@(r=(^[P6Uv6T6Q16R0<(q6U|I])U9]E;];)]FUP5]|G1U*!N2Q9BUHO + 9BUk>/,dRPF]|PR]|P^]|Pj]|=H,rgQ6U|6T|6Q|6R|<,~Y6U @~6T h6w h6w h6w !i6w !i6w hGV,OWR9V9V<,r6U|6Ts6Q8V,PR9VKV9VGV-2R9V9V?<-r6U|6Ts6Q8V- 3S9VxKV9V>\-OSPx]}GV\-DsS9V9VT6Us=*ZsT6U{6T06Q16R|6X6Y0=*[T6U|Q<+T6U{={+koT6U6T0=+oT6Ts6Q0=+koT6U6T0=+oU6Ts6Q0=,wZ4U6U{6T1=,/ZTU6U{6T|=A-/ZtU6U{6T|H/XA`:eJS@W/=j<_/=j6Us=/js:X6Uw6TU6QT=3/PRX6Uw@/rZVlp@7 p!Wy4A]Q h!WA]Q `!WDA]Q X!W(B4 P!WCi L!W/FDi J!W!E H!)TYW(b,Y ! YTAYC00WY ! 1YXX(YM SZ"IY![:YII[YI\t.Y(,8A["BY(,\,Z(,@[B/ZI]i(64IZ W^4rZ4T!_C], <-Z W4](SWZ W444ZDVZ WW4444]6;4 [ W [444R]#/-[]Q[25S4C[(,[l"Y^[(,4ZY~[ W-44[s*[(,[&6B[(,B["B[(,['B[(,[B\(,[A!B*\(,[B9BE\(,\,bW\(,]f K*{\ W444[4>z-\(,Z#P\ W*4444[ B\(,\ .\(,BB\  ](,B\%= ](,{\J7](,4\@N](,B\%e](,-[O4{](,] F-] W444ZK7H] W-44[=XB](,4ZnJ]-4\R%^(,4[54'^(,\&e>^(,B\U^(,-\)l^(,-\^(,B-\|7^(,\c&^(,4\#^(,\ ^(,-[0?B^(,4\Z#/ _(,-\1,#_(,-\0:_(,-\!Q_(,-\`Dh_(,-\RD_(,-\:_(,B[]B_(,4\t&_(,-\-_(,B\u 7_(,B[]B`(,\1#-`(,4[UCm4M`(,44[Bh`(,B[-B`(,44\8`(,[(AB`(,[B`(,\2`(,\ a(,\`a(,4\v=,a(,\>a(,\Pa(,\j'ba(,[DB}a(,\eAa(,4[_"(,a44[Ba(,B[ "Ba(,[Ba(,["B b(,[<B"b(,[ B=b(,-[-Sb(,[(Bib(,[R0Bb(,[7Bb(,[f4Bb(,[,Bb(,[C7-b(,[.<Bb(,*[9- c(,4[@:-(c(,4[23 >c(,[~"4 Tc(,[; {jc(,[^4c(,[ K4c(,[&L4c(,[6-c(,`c[ Bc(,;[5CBd(,;;;[<&BBDd(,***`Dad4[SGBd(,;;[FBd(,****[ -d(,[?4d(,['Bd(,*[4 e(,4[5 -#e(,[5N49e(,[>$R4Oe(,[*44ee(,[O@*-{e(,[l4e(,B[(-e(,B[? 4e(,["124e(,[nD(Bf(,4*[p4f(,4[7-3f(,[{ 0-If(,[v--_f(,[-uf(,[E-f(,[D-f(,[?Bf(,*[D'-f(,[9Bf(,[$$4f(,[D6Bg(,[ >B/g(,4[ A+BJg(,4\ j\g(,[=(,rg(,\g^<1F1g^H.R.Tg^ga+Sggg pa#Oh.\&#,h(,4\#fCh(,4\>@Zh(,4\xvh(,44\#0 h(,4\< h(,4[ABh(,4\*h(,4\ h(,4\Eki(,4\Zi(,4[4(,Ei4[(,`i4[ B{i(,4['Bi(,4[Bi(,4[Bi(,4[&Bi(,4[: Bj(,44[B"j(,4[H?=j(,4\GOj[6Boj(,4*]D4j W4*444[ ,JBj(,*[Bj(,44]1C4k W4444[:B&k(,4-[ GBFk(,4B]#E4yk W4*444[&Bk(,44*\ k(,*[S,Bk(,4-[Bk(,4-[RBl(,4*[EB?l(,4-[; Bil(,44*]9l W4]>4l W]!A4l W[(/Bl(,44-[9<Bl(,4-[8CBm(,4B[3BBam(,4--[3EBm(,4B[nBm(,B[''tBm(,*-[rBm(,*]M*n W444Z3XCn W444*4*4[@2-cn(,44[Q-n(,44*[= oBn(,B[#4n(,*[jT4n(,444*[B+o(,4*4-[>BPo(,4*Z ko/]Q]9]Qo44](/o4/]Q[NBo(,[5(,o4[8(,o4[.w4p(,[4+p(,[%g4Ap(,[y4Wp(,[8'4mp(,[$4p(,[v  4p(,[IA4p(,[i!4p(,[*l4p(,[,4p(,^u99q[R.I%q[UB@q(,4[ HB[q(,4[1IBvq(,4[+DBq(,4[@Bq(,4[FBq(,4[}K4q(,4[-44q(,4[;-r(,4[;-3r(,4[:"-Nr(,4[r@Zir(,4[h8_r(,4[A=-r(,4[4r(,4[A^r(,4^P2Z2rT^sT]  f5s4]* ?4JsJsTb$BjsJs4c$H WSW`+F/# <;#/int %^8^X4#r2B;C*(WY\  4 ( 0 8 @ H P S+X M1b` A hh z1 Wp Wt )ex ^64 I "n ~ )%p . / 0 1 2 ,4W ] 6 B!b'b"h,$W1 ~ {*  { < W'E = F( BFB<Wa W W^0> HF9/<Wa WiWF~ht% &0XU1T(60XUs $ &T8N W {,F9p0 [hp9Bi0r0r}F@0Oht@hpBHthpBHX0Uv0r0rUUFXW0<9\FX7<XWT,Z;mtmpZ;#hH 1Jh5hthTFjHQ1 )n5n\1Uv41Uv(tHp1ttWOHtBhtthpvHYFwW_19pU}T|1U}1XU1T 1U}P2HBbhthpHXhp1H hp2H)FWi29[U|Tv2sU|3UXDF`3vBhtHBFFW3L}FHFH5|3Y3-Q|Rv3[Uvh(h:)r !G5 "lF vFW  #cF NM`+G33J 9?VOOX4 intyAyO;7d "?(4)]@6*H90Or2ԉ# <#/% V8 V];O o2 V N#H VC 0k C ( ]Y H\ H H 4 H  H(  H0  H8  H@  HH  HP S+ HX M1 {` A h z1 ]p  ]t ) x ^6    "    ) %  .; /; 0; 1; 2 , 4] ] 6H (O K CK uK -G ;MG ; B ! {' {" ,$ ] J kNO CNO N];H Oq2 f= ]; H UL7x ;?iQ2!k`l1N ^ O 3P Q 7,Q( U 0 8 V 8 W @ "X H 5Y;P e9ZP X ^5` _;h 7)`Ap d\ x 9ej EfP a>g  hD :kG n 33p w6t y<w {} S)~  e) @  0 T;= M CB  (A"0 8<| @'H"PF0X?`2ChIp/- x/  Q+m,o^ p<qkr 0E0 6E-7P Vjsu {r ]"  .  ]#y3. 4]M G Pbuf;objlen:, ] /]$k/H(20B8-@;H 7M-  ]  ] q;* 0 @  C,K Q ]e p v ] ;8  ] e ;k +CE E&E#EE hj(S=%0%%8T%@E`$EhY.Ep 5?Ex % >; % N9E %E -<E |E  j Q  E  E ? E   E :E S8E E EE%. P : 3E  = R ; 2( 0;0  @ 8 "E@ [#H'$w &@ +' 2(E 4)#* -p o#. 9/ N0L (3   ; 4   2:  ]  ] `l<   H=P>% + ]D H3?.p@0 Ah n } ?B   ]@C0ND0EuF.A<G.g2H  \I !5 k  @ p 3 (})/)*4(+]A- MyD  01(  Hget setAdocHD; HQ(#^ TH#' lN(BP3/M ? I(!^ "eI#5J$1L%  I&P Hh/N02K1(I20N38yN4J@K5HK6 PK7XG8| `5' -A;" L R]k;  JNLM,JEC;l.87`-y 21=+dB < > {C  .;&!#zF(@D>=F$C/PE֢IJZN5IڇJ.lJ 4 G5& K6, >82K1 M2&   ;BObLkNb;;wHln];;Gn;;];mMq;;];Hr;;Nz]';J{3]Q;Q; M}c;;;;vL;;;;IN] ;H GKX< ^ = dNDk HFN cHN #GMN (ON GQ] (HS] FU]$ H[(( fMa0 f8fk.@ NmH NsP5N]H; HI] ;;3MI#]A;Q;KM]k;;;BIN;;;;L;;;=J] ;;Q xL IL Gb Gh Jn Mt z J J M M oH {JN0N-N J8H@oG HbJ PF XG `GhLp\\O  B b    ' W     AO  O  k  w  K Kv( a w@ 2x  HKt 4UMP ^  NHnd] MQ BQ( a 0 L@8 (]@ HHXMFL GF Zf3 ]dT >^jT r!_pT `vT 0 a|T jbT( cT0 =dT8 eT@ AfTH >gTP hTX D6iT` >jTh ,kTp = lTx *mT $nT ioT IApT qT DrT AsT `!tT uT QvT wU (xU Dy U EzU {U |Uv}$U{ ~*Uv 0U76U$U5UU5 UUUh8Ur@U%U$U8'U5U'U?U<UU UU 9V(SV03*V85V@VH:" VP;&VX6,V`02Vhl"8Vp >VxyDV<JVPV<&VV%\V&bV hV^nVH?tV; zV~"V2VV-4V@VV}V.VVCV,V f4V(7V0V8V@R0VH:VP(VX''V` Vh+Vp<Vxs,W" WW "W1WB"W&(W.W4W':W @W FWLW2RWXW^WdW_"jWeApWDvWj'|W W(W0v=W8`W@ WH2WP,WX)W`=Wht.Wp:Wx8W5W4W(AWW3W8W-WWZWUCXXE X1XX*X]$X3*X10Xu 6X-Yx$-DY&.JY=/PY%0VY>@1\Y 2bY@3hY#4nY5tY%=6zY 7Y8Y .9Y:Y ,;Y&#<Y =Y.>Y/?Y@Y, AY <BY(CY04>DY8,EY@FYH4GYP'HYXE'IY`A!JYh8KYp&6LYxB9MZ"N Z4Qw*TH!sumW]5X]75Y] @Z]C:[]4\]\;_]$`]a]8d:efgQBhijv,lm<nEoBp@r]/s]&t] u]E+w-J+xv3|v3y ~v3;v3-v3--Dv3(Dv3 &v3(C/v30v38 v3@Uv3H v3P!objv3X`"hE=p`x9]7]d0]]]?]_  j6q1]]MA]m.62 -']]]]5]{:]p"7A7-Z` Z4Z<(Z :q CZ v] q:] G] ~%]$  v3( !0 8 !GUB=@ ]H D]L !SOS=P X v3`  h A>v3p !rhsv3x 1 Z  v3 v3 ;v3 ;v3 'a9 ."Z 06(Z 9(Z Y7.Z  .Z  4Z .v3 i     a]   v3 @q ;Fq /  :Z \@ ]( ^E ],  ]0 ^* ]4 z-8 2-@ :6-H ,-P ]X ]\ y8` Ka b 'c ?]d 2a9h *v3p Bx   v3 !- "-  %- S@&- J'- 'E(- )- 5*-  +- z,- K-- (0] 81] 2] 3] 74 )5] ?6] -7] *8] P9 : ;: 8<: >-( 1@-0 &B-8 BC-@ #E-H F-P 4I@ZX >JFZ` M-h N-p O-x BR- S- *T- <U- V- 8WV <ZH a; 7dLZ eRZ fXZ Eg^Z hdZ ijZ 4jpZ !kpZ 'ljZ mvZ J<n^Z o^Z (p|Z iqZ( v'rZ0 AsZ8 tZ@ 2BuZH vZP <4wjZX H#xZ` nypZh P&zjZp <{jZx  |jZ O6}dZ i ~jZ 6pZ  Z 2#Z  jZ 5Z  pZ Z %;  Z 0Z Z Z  Z /Z X-Z Z A Z &Z Z( )Z0 M/[8 0[@  [H $IP  ;X  I` 0;h AIp 1Jx m9]  ; 2I ; I !; 0H  3q33 - 4lp4  ] ?] B] )] "+ $] 24$ wA]8 A7]< ]@ ]D F%]H 9D]L ]P ]T A-X B-` 4h - f;- 'E- =5   & ]4O-5ON5O  |3"0&x5 z(- )-  *- 8+]lp,4 -(".5;/6lp14 <2] q3] 4] 56 6 76( q8v30 $9v38 .:@ &;]H J><]L =-P r>-X ?-` :@-h 5%A-p C B-x >C- E)D E IF ;G x5"F 6;H5 @ !7lp4<]] M@6 < i7H ]' i7E i7 ,7= ,7(7F7<]a ] ]^0i7>i7 7 o7Fz7 " 82  ]? ]\ -"7 %h&9lpk45n]75o] $r]s]Zt]?z * {(9|v30?~8@CH0P8Xv3`(Fv3h'E-p;:-x4--:%8 % a9lp4 ] a9 &9& 19A09 8]  @q ;Fq 7] _=9( r9Ar9X:lp4 #5] C$] =%] 68 s$ $v3( "$v30 $:8 $-:@ / :H P g998;lp4 #(] )"]  ] 9; -  ; = ;( `% ;0 8 :: : l< l<C l<lp 48]]$] D]$>.](U],\]0;-8-@&-Hv3P;v3X$-`:E-hx]p9]t x+%yB#z3D{4A #2! (;:"(;O((<lp4 E] \'] + . 5 P(}<f< e0.[=lp04`,1=l2]+3].4]55]E6 7( ;H=!="]#Hc$]3D%<&] ']$ ((,)v30*8/2+@ <;,[= > =D*>])>4;%+5>J>4;HA,V>k>4;]D-w>]>4;]:2>>4v33>>4]v34>?4v3]-*5?8?4]v3]-{6>?7P?]}?4H]]]v3.8?]?4v39?4?4f :??4L;??4]W<?6=?J">@"@4>?.@9@9@ 4@K@]Z@4Af@@4j%BK@CK@<DK@EK@|#F@/G@-@4u0H@H@4]A4]v3EJA]9A4]v3@KEA]YA4]<LeA-A4]]v3M>b3N>"O@P@ Q@/R@S@JT@-UK@2V@+W>XB-,B4]fYEA8ZDBHSB4[K@,\kB-B4]]]B-B4]7^K@C_K@ `B-B4aB]C4bC&C4c2CGC4(dSC]lC4H4eK@Bf@gK@ZhK@)9iK@@jK@ k@=2l@!mEA n@?o@ApCD4:qK@i5rK@2sK@3t>uK@v^D|D4v3v3bCwDD4D v3xDyDMzD{DD4DD|DE4DDDD}&EDE4DDD\~DMBm>BA$@@C@)K@)EE4v3v3!EE4v3v3v3v3I3F"F4v3v3v35K@ DK@K@@K@@6jFVyF4>FF4b7F$B-EA1BC BEAR>O!K@@5@@'@?0?%&@&TGmG4]]>@;GG4v3-E?1GG4-v?*@\@(8@@/@N ?8@?#?G4?< ?2?t? ?k@ HH90H4H]]!HH4]H I4H ??C??L H;TIdI4H;?$|II4I;  >(II4I; k>-I!II4I; )>bIJ4J;] J>)J4BJH]HF;NJ4bJH]mnJ4JHHHH]JJ4HHB?J )?+TGC6HJ K]#K4]]Bf@7H)Hb<HM*HHj1wKK4] KK4]-- KK46K-+KK4-\@ L9L4]]v3EL^L4]H_TG K KM5Kw&KH-K8??KjKq)? H6-KO'wK KM+M4]-<H6CMaM4]]-?,H)?AMM4-oB?kK}MK5>E>-/KHfN"N4 .NLN4]pEHK@pNN4]]HU^DKM-Mo?NN4v3?@4Lk ELV1Kj- H wKi K H> H9IOYO4V3K M|TG+>b$H>HM4K@:HOO4H]-wO5Hk?HP$@Q ?+H7PKP4 ' H: 7P!H4"7P#PP4HHB8$H_ %JB*?+PP4]H#,PH Q4H#Z-Q];Q4]v3.(.GQ]eQ4]v3=/qQ-Q4]-0Q]Q4qUA1QQ42QQ]BE3RR]]%4Q92RHQ:? <K@=EA:>@,?sRv3R4NABBR]R4]]qCRR4v3r/DR S4v3v3n4E@=FCG?/H9SWS4]]HW?IcSS4]]],JS-S4]]v37KS-S4-v3{MQGNS] T4] T SR2R(ScST5TXT4HHH]%UP > > > ? 8? D? }? ? ? ? ? ? @ "@ ?@ Z@ @ @ @ @ @ @ @ A 9A YA A A A A A A A A A A B  B ,B 8B SB _B B B B B B GC lC xC C C C C C C C C C C D "D .D :D FD RD |D D D D D D E DE PE \E tE hE E E E E E E "F .F :F FF RF ^F yF F F F F F F F F F G  G G $G 0G [;[h=lhs>3[:?[$@A]f/B] k[`.Cv[ H7[J8$GG\%f.G\% V%[G&<]&eG'lhsM\ [ 3[(+IJ]\)__sJH)__nJ*|J*IJ\ +]\%f.G\,arg'm]-&N+!]8]%f.G\,arg'n]&".)]&N-&N (0;j]*'30;*j0*0(GuH]*'3uH*ju*u/?GO]3K5^0mOk1 2JP3 ^2NP4"45Us63^5Uv735Uv/NJ]047^0mJL8NJe 0argJ;I3@ ^9IK]6P4^5Us:_4T5TQ7B45Us;[p4r_<[< \0<\="\=.\c>:\64-=_5U|?4B?5W?#5B?65q@N]]_'st_]&G`&Na._&Nh._&Nq-&N}ADMd@5[GBmlBdlCr_U5 b1 =_=_a=_3 n`=_z4"D5Uv3 `=_4:D5Us3@ `=_4D5Us6d5x`5U 65`5Uv5T 65a5T 6JD4a5Us5T06Dؤ\a5T 5Q 6D{a5T 6Eؤa5T 6CEؤa5T 05Q96^Ea5T 6{Eؤa5T x7E5T  6U5?b5U !5T ?5q65db5U|65(b5U %5T05Q06 6Hb5Us5T -66gb5U16&6Hb5Us5T dv606gc5U36B6H*c5Us5T *u6L6gAc5U26^6Hfc5Us5T z6e6g}c5U06w6Hc5Us5T 'u6~6gc5U066Hc5Us5T {66gc5U166Hd5Us5T {66g1d5U266HVd5Us5T {66gmd5U366Hd5Us5T {66gd5U467Hd5Us5T {6 7gd5U767H e5Us5T {6&7g!e5U8687HFe5Us5T {6B7g]e5U@6T7He5Us5T  |6^7ge5UO6p7He5Us5T |6z7ge5U 67He5Us5T -|67gf5U@67H8f5Us5T :|67gPf5U67Huf5Us5T L|67gf5U 67Hf5Us5T [|67gf5U 67Hf5Us5T k|68g g5U 68H/g5Us5T z|68gFg5U0618Hkg5Us5T %w6;8gg5U16M8Hg5Us5T 2w6W8gg5U26i8Hg5Us5T Cw6s8gg5U468Hh5Us5T Tw68g6h5U868H[h5Us5T ew68grh5U068Hh5Us5T z68gh5U168Hh5Us5T z68gh5U268Hi5Us5T z68g&i5U369HKi5Us5T z69gbi5U46*9Hi5Us5T z649gi5U86F9Hi5Us5T {6P9gi5U@6b9Hi5Us5T  {6l9gj5U 6~9Hl5U26w:Hcl5Us5T sy6:gzl5U46:Hl5Us5T y6:gl5U 6:Hl5Us5T y6:gl5U@6:Hm5Us5T y6:g1m5U6:HVm5Us5T y6:gom5U 6;Hm5Us5T y6 ;gm5U 6;Hm5Us5T y6);gm5U 6;;Hn5Us5T y6E;g)n5U 6W;HNn5Us5T y6a;ggn5U 6s;Hn5Us5T z6};gn5U 6;Hn5Us5T #z6;gn5U @6;Ho5Us5T 8z6;g!o5U 6;HFo5Us5T Mz6;g_o5U@<$6;Ho5Us5T `z6;go5U@=$6;Ho5Us5T tz6 <go5U@>$6<Hp5Us5T z6%<gp5U@?$67<H>p5Us5T z6A<gWp5U@@$6S<H|p5Us5T z6Z<gp5U06l<Hp5Us5T u6v<gp5U16<Hp5Us5T u6<g q5U26<H0q5Us5T v6<gGq5U46<Hlq5Us5T v6<gq5U86<Hq5Us5T *v6<gq5U@6<Hq5Us5T ?v6=gq5U 6=H!r5Us5T Rv6=g9r5U@60=H^r5Us5T gv6:=gvr5U6L=Hr5Us5T yv6V=gr5U 6h=Hr5Us5T v6r=gr5U 6=Hs5Us5T v6=g.s5U06=HSs5Us5T v6=gjs5U26=Hs5Us5T v6=gs5U36=Hs5Us5T w6=gs5U56=Ht5Us5T |6=gt5U66 >HCt5Us5T |6>gZt5U96)>Ht5Us5T |63>gt5U:6E>Ht5Us5T |6L>gt5U06^>Ht5Us5T w6h>gu5U16z>H3u5Us5T w6>gJu5U26>Hou5Us5T w6>gu5U36>Hu5Us5T x6>gu5U46>Hu5Us5T x6>gu5U56>H#v5Us5T *x6>g:v5U66?H_v5Us5T Bx6?gvv5U76"?Hv5Us5T Yx6,?gv5U86>?Hv5Us5T ix6H?gv5U@6Z?Hw5Us5T x6d?g+w5U 6v?HPw5Us5T x6?ghw5U@6?Hw5Us5T x6?gw5U6?Hw5Us5T x6?gw5U 6?Hx5Us5T x6?g!x5U 6?HFx5Us5T x6?g_x5U 6@Hx5Us5T x6 @gx5U 6@Hx5Us5T y6(@gx5U 6:@Hy5Us5T y6D@gy5U 6V@H>y5Us5T 'y6`@gWy5U @6r@H|y5Us5T 6y6|@gy5U 6@Hy5Us5T Gy6@gy5U 6@Hy5Us5T u6@gz5U06@H3z5Us5T u6@gJz5U16@Hoz5Us5T u6@gz5U26@Hz5Us5T \v6Agz5U36AHz5Us5T u6#Agz5U465AH#{5Us5T w6?Ag:{5U56QAH_{5Us5T 4v6[Agv{5U66mAH{5Us5T u6wAg{5U76AH{5Us5T u6Ag{5U96AH|5Us5T u6Ag*|5U:6AHO|5Us5T u6Agf|5U;6AH|5Us5T u6Ag|5U<6AH|5Us5T u6Bg|5U=6BH}5Us5T u6Bg}5U06.BH?}5Us5T v68BgV}5U16JBH{}5Us5T v6TBg}5U26fBH}5Us5T v6pBg}5U36BH}5Us5T v6Bg ~5U16BH/~5Us5T ww6BgF~5U86BHk~5Us5T w6Bg~5U@6BH~5Us5T w6Bg~5U 6BH~5Us5T w6Bg~5U6CH"5Us5T w6Cg;5U 6*CH`5Us5T w61Cgw5U06CCH5Us5T -u6MCg5U16_CH5Us5T 5u6iCg5U26{CH5Us5T >u6Cg+5U36CHP5Us5T Eu6Cgg5U46CH5Us5T Ou6Cg5U56CHȀ5Us5T Vu6Cg߀5U66CH5Us5T _u6C|%5a -ꌠ9Y>)F7 DH5Us5T 3D"EBEk/HB#Fap~FbufB !GS\F <\ ]3 =] OXIDGI\U<\( PXID=]a = ] O{I=*] 4I5Us6dIR5Us5Tv6wI&15Us7I<5Us?I 7@I&5UsK, -IjEf.G\ E ]e M" Qa-NOKN 6I5Us5TT6I\5Us5Tv6IS?5Us5T D6I\]5Us5Tv6I&u5UvR JmK1]JQEf.G\FE ]~LvecE]Llen]EG]Nret]~1@ MM"Ni]LNj]Nk]Nm]Nn]pM]}SOKNMN3p 2MNcMG]8MM]BMG]MLN(3 /MN4N5U3 YMN4N5U?mJ 6J\5U}5T~6J\5U}5T~6jK&5U6MS5U5T 6N&5U6)NS"5U5T 6:Nm:5U6sNSa5U5T a6NR5U5Ts?Nq6NS5U5T a6O<͊5U?EOq6VOS5U5T a?Oq7OS5U5T a76J5U5TTK]OEf.G\E ]TLvecv3E]Llen]EG]Nret]T 10 My M" Ni]"!Nj]!Nk]!Nm]Z"Nn]F#M]S$SOKNMN$3` MN9%MG]&MM]'MG]'MLN(3 MN)4T5U3 'MN)4T5U?MP 6jP\R5U}5T~6yP\p5U}5T~6JQ&5U6SS5U5T 6S&ɍ5U6TS5U5T 6*Tm5U6aTS/5U5T a6{TRM5U5Ts?Tq6TS5U5T a6U<5U?5Uq6FUSώ5U5T a?tUq7US5U5T a7P5U5TTK#]UEf.G\)E ]**Lvecv3c*E*E]M+Llen]+Tcol]M ,M"E,MYI,M_I-Ni]l.Nj].Nk]V/Nm]/Nn]0M]<2Na-2SOKNMN33 ēMNu4MG]L5MM]6MG]6MLN73pMN:84[5U3MN"p84[5U}3GMN84J\5U3qMN84Z\5U}30MN94z\5U}?DV 6aV\Ƒ5Uv5T6pV\5Uv5T6:W&5U?Wq6XS25U~5T a6ZSY5U~5T 6ZS5U~5T a6[&5Uv?0[q6A[S̒5U~5T 6I[m5Uv6g[S 5U~5T a?[q6[S?5U~5T a6[R]5Uv5Ts6\&u5Uv6\<5Uv6+\R5Uv5T7\<5U7V5U~5TTK6-]]qEf.-G\H9Lppm-M\9E -]9Lbuf-H,:E<-]:E O-]J;M"/;UJ0HNptr1H;G8]^`F<^]<<Llen]>Ni])??^ݦW^ݦ5UUK K^}Ef.KG\M?E K]?LlenK]?E OK]?NmM]U@NiM]@UJNMO#AM"O[ANpa0PANpaPANstrPHBMPN#BFptrPH3ƗMN}YB4a5UsG8]_<^]BMN!C4 a5Us3PhMNWC4*a5Us6^5U5TT61_S5U5T a6B_Ә5Us $ &5T8?_q6_15U}5Tv6_S%5U5T H6_ M5Us5T5Q6_p5U~ $ &5T16j`R5Us5Tv?{`q?`q6`1ƙ5U}5Tv6`S5U5T (6`1 5U}5Ts6`S25U5T a6:a<L5U?Uaq7maS5U5T qKf v3aEf.G\CLm]CLn]CE ]8DWa)5UTQ $ &3$Kv3aEf.G\qDLm]DLn]DE ]EWa}5UU5TT5QQ5RRD#a͝Ef.G\UELmatv3ELm]FLn]FE ]FEF]HG3-M[GGMeG HNi]@HNj]dHNlen]HM<]HMGv3HG[b<\I< \I<[J1>"\>.\=:\YJ7sc^5U5Q6 b-5Uv6}b-5U?b|?Gc|X[c2<\J< \JI[Pc2>"\>.\Y:\#7c^5UZdcݦ5U?~c|K(McMEf.G\2KLm]kKLn]KE ]KWc)5UTQ $ &3$ VDDcEf.G\LLmatMvLLm]LLn]JME ]MEF] N3M[G iNMeG NNi ]ONj ]%ONlen ]IOM< ]OMG MOG[e0%<\RP< \P<[P10>"\>.\=:\Q7e^5U5Q69d-ş5Uv6d-ߟ5U?dg?uegX[e2 r<\^Q< \QI[Pe2>"\>.\Y:\#7e^5UZeݦ5U?egD3-eEf.-G\QE -],RTm-]QLn-]xRLmat-v3RE-]SEO-v3^SE-SE<-]SLnz-*TFsr/v3UNa/-aTNii0]TNi0]TNj0]UDGfEf.GG\ULstrGVLmG]pWE G] X3`M[GPkXNiQ]XNlenQ]YG[#gZ<\QY< \Y<[Y1>"\>.\=:\#ZWig^5UU6f-5Us $ &?g?G[}gKI\PI \T<[xZ1>"\>.\=:\Z?xg?[NN  "N5OS[H,%  !?ZO[RJ/J ![IU !\ \( ]MS\I\/H \PL \\H ^L*  " ;_cK  "_J]  "`L;-`M4B`N5W`M9]qaK W`K!+bIcDH R`J!;ؤ`VK #`G"r  ] `F(b M H`L#o]g`J$|V`M%--dH H]åH]\cM&ե#c"'3G\`L"!] #b L]&kkbI(u]<b9K(RbK(m`L%1-e;;OblI)mHdG GHݦHfG*;b:*; `8L+X])bB*;?gI)% $ > $ > : ; II!I/   I  : ;  : ; I8 : ;I8 : ; &I : ; 'I& : ; : ;I8'I : ; I8  : ; : ;I : ;< : ; (  : ;  : ;I8 : ; : ;I8 <!"'I# : ; I8$.?: ; 'I 4%: ; I&.: ;' ': ;I(: ;I)4: ;I*.: ;'I + ,4: ;I-: ; I. /.: ;'I@B0: ;I1: ;I2.: ;'@B3: ;I4: ;I5B16B74: ;I81RUX Y91: U;41<1=1> ?4: ;I@1A4: ;IBB1C4: ;ID!I/EB1F UG1X YH1I.1@BJ1X YK1L1 M1BN41O P41QR.1@BS.?: ;'@BT.?: ;'I@BU.?: ;'@V4: ; IW4: ; IX4: ; I?<Y4: ;I?<Z.?: ; '<[.?: ;'I<\.?: ;'<].?: ; 'I<^.?: ; n'I<_.?'4<`.?'I4<a.?: ; 'I<b.?: ; n'<c.?: ; '<% $ > $ > : ; I  I : ;  : ; I8 : ;I8 : ; I !I/ &I.?: ; 'I@B: ; I4: ; I4: ; I1B1.?: ; '@B: ; I14: ; IB1: ; I4: ; I 4: ; I4: ; I?<.?: ; 'I< I!.?: ; '<".?: ; n'I<#.?: ;'I<% $ > : ; II!I/ $ >  : ;  : ; I8  : ;    I : ;I8 : ; &I'II&: ;I : ; : ;I8 : ; I8 ' : ;  : ;<'I : ; (  : ;  : ; : ;I8  : ;! : ;I8"<#$.: ;' %: ;I&4: ;I'4: ;I(.?: ; 'I 4): ; I*: ; I+.?: ;'I ,: ;I- . /.: ; 'I@B0: ; I1 U24: ; I3 U45B61718: ; I94: ; I:BB;.1@B<1=41>41?1@.: ;'I A.?: ; 'I@BB4: ; IC1RUX Y D.?: ;'@BE: ;IF4: ;IG1RUX YH1I1J!I/K.?: ;'I@BL: ;IM4: ;IN4: ;IO P Q4: ;I RB1S4: ;I T: ;IU4: ;IV1RUX YWB1X1X YY41ZB1[4: ; I\4: ; I?<]4: ;I?<^4: ;I?_4: ; I?`.?: ; 'I<a.?: ; '<b.?: ;'I<c.?: ; '<d.?: ; n'I<e.?'I4<f.?: ;'<g.?: ;'I<o /usr/include/x86_64-linux-gnu/bits/usr/lib/gcc/x86_64-linux-gnu/4.8/include/usr/include/usr/include/python3.4m/home/chandrasekhara/python3venv/lib/python3.4/site-packages/numpy/core/include/numpy../..lpsolve.cstring3.hstdio2.hstddef.htypes.hstdio.hlibio.hsigset.hsignal.hsetjmp.hsetjmp.hpyport.hobject.hmethodobject.hdescrobject.hctype.hndarraytypes.hlp_types.hlp_lib.hlp_utils.hlp_Hash.hlp_matrix.hlp_mipbb.hlp_SOS.hpythonmod.hlpsolvecaller.hstdlib.hstring.hsetjmp2.h `u _K9MZX&XZ<=(tmJwU[eXXe<=t.19NF#h$v=sg|tY>#pwX}tC/||Jt(#q?/YIYh=;=Y`J3S^zJt3Y=s=Y[%D4zfPz.&//=x̆F\\*N-=rHl{;Y <u< fsJ ct1U.@IY=;=ueKI.#UwYYY}#UwYYY5斏~@-=":==us( (Lt 3͏==KKx*]3S^zJt3Yɻ-=":==uc/3S^zJt3Yɻ-=":==uc/3S^zJt3Yɻ-=":==uc/3S^zJt3Yɻ-=":==ul/!W=Y=q1U.@IY=;=gI3S^zJt3Yɻ-=":==u/!WLHKY-IK-V !W=YKu!W=YYu!W=YKl!W=YKN!W=Yl1U.@IY=;=ueKI.<3I>:==un+ZHYW=:>Y;Yx~!W=YKo1U.@IY=;=ueKI.!W=YKd3S^zJt3Y/-=":==uQ(!W=Y`!W=Yu!WLHKY-euX!W=Y=u!W=YKu!W=Y=~!W=YfNT%ENY;=>I=+>n!W=Yu!W=Yl!W=Yu!W=Yu!W=Yu!W=Yu!W=YK<3I>:==un+ZHYW=:>Y;Yx[!W=Yu!W=YKu!W=YK3S^zJt3Yɻ-=":==uZ/!W=YKu!WLHKY-IK-I 1U\IY==eKI|1U\FMY==2eLIgI!W=Y=A 3͏==KKx*4zX{yJ{yX4Yu-K":==uY[&!W=Y=r#U1Y׭g-#q?2!=9\kX!W=Y=u!W=Y=u!W=Y=u!W=Y=m3S^zJt3Yɻ-=":==ub/#q?2!=9\[X0V[GLY==?eLIgI`1U\IY==eKIm1U.@IY=;=eKI~ 1U.@IY=;=eKIm 1U.@IY=;=eKIm 1U.@IY=;=eKIm 1U.@IY=;=eKIS 1U\IY==eKIv<1U.@IY=;=gI 1U.@IY=;=eKI` 1U.@IY=;=eKIF 1U.@IY=;=eKIm 1U.@IY=;=eKIm 1U.@IY=;=eKIM 1U.@IY=;=gI[4zXfDHY=Y;=eKYg=:@I1U\IY==!;g=Im1U\IY==!;g=I1U.@IY=;=hIm<1U.@IY=;=hIm<1U.@IY=;=gIa1U.@IY=;=ueKIm.1U.@IY=;=ueKIm.1U.@IY=;=ueKI|.1U.@IY=;=gI5yX wJQZ=;=Ƀ=Y;==[Ƀ=Y=q<=qJXّ!IZe=y5yX tvJLYYKx<xJXhe=v.4zXYgJ#/Y!sY/Mq[/$!KYhe= 4zXY=YsK/Mq[/Mq?gKr< XIr<  ggsKYבhe=eXtP1U.@IY=;=gI~1U.@IY=;=ueKId.4zXfBYgY;=eKYg=:@~1U\IY===eKI1U.@IY=;=gI`1U.@IY=;=ueKIm.1U.@IY=;=ueKIm.1U.@IY=;=ueKIm.1U.@IY=;=gI\3S^zJt3Y-=":==uh+1U\IY==Y;g=Im&1U.@IY=;=ueKIm.1U.@IY=;=ueKI}.4zX{yJPY;gehe;LY;Kg?H>d(1U\IY===eKIS1U.@IY=;=gId1U.@IY=;=gIm1U.@IY=;=gI`1U.@IY=;=gIm1U.@IY=;=gIm1U.@IY=;=gIL3SzzJOYe=Y;Kg?H>b>$~1U.@IY=;=gIm1U.@IY=;=eKI[ 1U.@IY=;=ueKI.1U.@IY=;=eKIc 1U\IY==KeKIm1U\IY==KeKIq!W=Y=q1U.@IY=;=eKI$*V0ZYk4Km.xY0t tEkJ~.;oXfYsKsIK/X;=k4 f!J_"<^<gK~.~X<~<J~X.~t(_X*.~~XX~<J28@~*$Fxb2(!W=Yg~!W=YgN!W=Yg~"KI/-yȟi!W=Yg}!W=YgS!W=Yg}!W=Ygu!W=Ygc!W=Yg_!W=YgC<3撕ZxY#M=3=Ko)ZY̆sZY)ZxY#ΰ~X 3̠M"=e=KKw%\b }1U.@IY==!eKIm1U.@IY==!eKIm1U.@IY==!eKIm1U.@IY==!eKIm1U.@IY==!eKI~1UxFMY=='eLIgeF1U.@IY==!eKI}#UwYYYt; =Q.-1>T+X>P.5yX wJQY-/=;=ut 5yX wJQY-====st $t4zX twJPY;=W=Y;K:==vIgeG<2YIY3>:==ue.[GY>XY;Yx{W=YYv tI:=>I=>q[GYW=W=ZYvI==>I=>q[GYW=W=ZYv.5yXY==H==Y=;K:==uIg\2T.@Y==YgIYI:=>I=>q[GY=W=ZYvTI:=>I=>q[GY=W=ZY=v5yX uJQY=;==Y;K:==uIgO I6;=?H>*>tf}5yXYg=H==Y=;K:==uIg.'IW=>I=Z%:>eu]7OgYK=Y;=@YIhe;Kv <vzJ=@  jtI:=>I=>q[GYW=W=ZYvUI==>I=>q[GYW=W=ZYv~.<2YIY3>:==ue.[GY>XY;Yx{W=YYv t~IQ=>I=>nt\FY=YW=-=YvSI==>I=>q[GYW=W=ZYv.4zXfCIY! ===Y;K:==ugz̟ZI==\ɭ;K:==vIgetZI==Z~f5yX sJQZ;=YI=Y;I==YKYZg?H>(x' I==4ZX;=Y=r[i!;YYYKvX Xv< fv< Xh;= `  ƄY;Y%/6q~ϟ-gh=H==Z>Y=YIgu%rJ==EA)}~F!K//=Y-/W/QgscW/w 3S|xJOY=W=Y=e=ueKvIgeTX6xX wJt6Y(=Y;=W=/;=KYE-=":==uK/5yX vJQZ!=Y;gY=Y;==Y;K:==uIgQ5yX uJQYg;==Y;K:==uIgYw/zx;=s <sJ Y;=uZ t W==KKuZYUY-=;gge==s0[" W==KKuZYUY-=;gge==s0" W==KKuZYUY-=;gge==s0" W==KKuZYUY-=;gge==s0N" W==KKuZYUY-=;gge==s0" W==KKuZYUY-=;gge==s0~" W===KuZYUY-=;gge==e0#<1)e-s=i;=uG>p<p<"Z1W;gYW==s0wXE< W==guZYUY-=;gge==W0}$ W==guZYUY-=;gge==W0[$ I==uuZK+YI=!;=WZ%WK-YjXV>;=t <tJ Y;=uvZ tKIK-YjtV>;=u <uJ Y;=uZ t} W==guZYUY-=;gge==W0~$<1)e-s=i;=uG>y<y<"Z1W;gYW==s0wX<IK-YjtV>;=y<yJY;=uZ t3)uzt^zX4Z+ .&;=kL#*_ M,/-uW/-huWxXwX|*K\.J#\#\.J#\X#J\X$<_XwJ w  <wX \ Xt2J!W=Y=}Kb$-=W w   x8T2[:ZN=;KYz X%K /usr/include/x86_64-linux-gnu/bits/usr/lib/gcc/x86_64-linux-gnu/4.8/include/usr/includehash.ctypes.hstddef.hlibio.hhash.hstdio.hmalloc.hstring2.h /v uf Yk;=KGK>M'!;=u1YK]I=IfrYY) w< H[Yugw.nɝ=Y;=YI>gYZ=K 8N/"<Zr\_L0r\ XYMf u \K;K/ Xx8C;=VK Xxy.5  L /home/chandrasekhara/python3venv/lib/python3.4/site-packages/numpy/core/include/numpy/usr/include/x86_64-linux-gnu/bits/usr/include/usr/lib/gcc/x86_64-linux-gnu/4.8/include/usr/include/python3.4m../..pythonmod.c__multiarray_api.hstdio2.hstring3.hsetjmp.hsigset.hsetjmp.hstddef.htypes.hstdio.hlibio.hstdarg.hunistd.hpyport.hobject.hmethodobject.hdescrobject.hlistobject.hmoduleobject.hnpy_common.hndarraytypes.hlp_types.hlp_lib.hlp_utils.hlp_Hash.hlp_matrix.hlp_mipbb.hlp_SOS.hpythonmod.hpycapsule.hpyerrors.himport.hmodsupport.hdictobject.hlongobject.hfloatobject.hsysmodule.hlpsolvecaller.habstract.hunicodeobject.hstdlib.hbytesobject.h 3Lx֞=:> .vWY;u/On Xt1y33 Xtt <[9?jW=gYtu\>@  t w< twJ JwG4G fg st  ,_$>kd_$-hv$7~}<}XK[s =uZcfgiZgYW^Yp @.-XyJWNuX Ju  .qX-[nxXr Xu.Y;=/=;H Z:>1 tZ JxJDx.f.fB.X#;%ttqtt5tt'#Xn07%<6f.fB.X#;%tttqtt5tt'Xp07%< 6Y yXfy<Zv [,Yy<<y<f1+[g[-=-Y;Ym];Tg-= EYuT ;y<yX;Y/Ztugg8@j YY X,xfi X;/4k[:K$;ugj,Z.*=W=Iwt XYYWtp<$Z_XWY);ugi,Z.*=W=Iwt XYYWtpX"Z`XY,/.Y;I\[;Ywuu;Y1/mXtY;K f-=H>H4~XYto6~YtXLIcharlong long intget_constraints_funcset_var_weights_funcnb_lshiftepsmachineimpl_set_anti_degenscaling_usedmultiblockdiv__lenbasisvectorset_partialprice_funcvarmanagedstep_base__pad1__pad2__pad3__pad4__pad5add_constraintexval_nonbasicget_print_sol_functighten_on_setNPY_CHARsuboffsetsis_obj_in_basis_func_Py_NoneStructallocfuncget_lp_index_funcUBtrackbfp_btran_doublereleaseimpl_get_objectiveset_col_name_funcimpl_get_upbofreeallocmemset_BFP_funcbb_workOFget_ptr_dual_solution_funcconsttype_constrainttypenb_andusereturnimpl_set_debugmemsetset_rh_funcdel_constraint_funcPyVarObjectstr_add_lag_con_funcprint_lp_funcget_basis_funcobjfromimpl_set_add_rowmodelag_acceptOFcolsdeletedimpl_get_orig_indexUPcostimpl_is_use_namesimpl_read_freeMPSget_anti_degen_funcmp_subscriptoldpivruleget_epspivot_funcnodestatusimpl_get_nameindexrhsmaxset_simplextype_funcmemberposimpl_set_mip_gap/home/chandrasekhara/leantaas/lp_solve_5.5/extra/PythonXLIbool_lpcharcharcharintget_ptr_lambdaNPY_OBJECTimpl_is_maximget_lambda_funcimpl_get_var_dualresultget_ptr_sensitivity_objimpl_get_lp_indexml_namebfp_resizeCreateDoubleSparseMatrixsos_priorityimpl_lp_solve_versionget_ptr_variablesimpl_is_SOS_varconsttype_MPSget_bb_depthlimit_functruncinfimpl_return_constantsshapesource_is_fileint_varsbb_cuttypesq_inplace_repeatread_XLI_funcgetcolumnex_funcbasis_validget_epsperturb_funcimpl_get_bounds_tightercurrentstepget_lowbo_funcbfp_factorizeimpl_set_basistp_deallocget_bb_rule_funcget_ptr_sensitivity_objex_funcimpl_is_integerscalingiternextfuncimpl_print_solutionimpl_set_break_at_valuesortedListbfp_memallocatedget_var_priority_funcbfp_findredundant_ISpunctBFPint_lpintintboolboolmajorversionset_maxim_funcsetattrfuncget_ptr_sensitivity_obj_funcrow_typeBFPreal_lplong doubleBFP_lpimpl_set_BFP_SOSgroup__chis_semicont_funcset_outputfile_funcgetMDOIcountNPY_HEAPSORTGetpMatrixinternalimpl_set_var_branchreallocget_pseudocosts_func_ISlowerhas_XLI_funcNPY_STRINGimpl_get_constr_typelag_statuswrite_MPS_functp_weaklistnodessolvedcrashmodeset_negrange_funcset_obj_funcget_epsd_funcread_LP_funcvectorsizeset_print_sol_funcnlhstp_newimpl_set_rhimpl_is_anti_degenmip_relgapgetMDOfuncnb_inplace_xor_OBJmonrecset_epsb_funcstr_add_lag_conis_scalemode_funcis_negative_funcoutstreambfp_colcountimpl_get_epspivotimpl_is_infiniteimpl_print_handlexli_nametp_baseimpl_default_basisset_lag_trace_funccolumns_scaledupdatesfinishedmonitor_ISxdigitimpl_set_infinite_DeltaVrecimpl_get_obj_boundget_var_primalresult_func_unused2CreateDoubleMatrixNPY_SHORTobjtillimpl_set_traceset_columnex_funccallocmemtp_basicsizebuildactivelevelelementwritelogbfp_pivotcounttp_membersget_mip_gap_functrackerset_upbo_funcwrite_mps_funcimpl_get_timeoutbufferinfowas_sq_slicewrite_params_funcimpl_get_improvebfp_isSetIsc_loboundset_bounds_funcBFPint_lptp_flagsimpl_get_obj_fnis_SOS_var_funcdestructorvar_basicimpl_get_scalelimitbascolumn0tp_setattroimpl_is_semicontGetRealScalarimpl_get_maxpivotprint_solution_funccolname_hashtabimpl_set_bounds_tighterget_epsel_funcimpl_is_scaletypeGetCellCharItemsbsolveIdximpl_set_semicontimpl_set_rh_vecorig_objindex1print_duals_funcset_debug_funcoldpivstrategydpr0col_mat_rownrimpl_get_basismallocmemunscale_funcob_basedefault_basis_funcfull_solutionmsghandlereadonlyget_obj_bound_funcuserabortrootbasisctrlchandleimpl_set_XLIExitFcncontentmodeimpl_get_solutionlimitsimplex_modeimpl_get_var_primalresultP1extraValPy_bufferset_mip_gap_funcset_obj_fnexset_constr_type_funcimpl_get_scalingget_ptr_sensitivity_rhs_funcuse_col_namesRcycle_vtable_offsetimpl_read_basis__builtin___strcpy_chkimpl_is_binary_BBPSrectp_initget_ptr_dual_solutionnb_remainderrowcol_nametp_freesos_intsget_ptr_primal_solution_funcset_epspivot_funcnb_inplace_remainderbb_varactiveimpl_get_epsintset_add_rowmode_func__s2get_multiprice_funcexplainfuncpivdynamicset_semicont_funcis_piv_mode_funcis_unboundedis_piv_rule_funcINTfuture1INTfuture2set_basisvar_funcget_ptr_variables_functernaryfuncget_statustext_funcimpl_get_constraintslag_boundimpl_delete_lpnb_indexget_working_objective_funcset_use_names_funcbfp_compatibleNPY_LONGDOUBLEsq_containstp_setattrimpl_print_tableauis_basicobjcheckget_variables_funcimpl_add_SOSstep_last__fmtspx_actionconstanthashis_anti_degen_func__mask_was_savedimpl_get_Nrowsprint_debugdump_funcimpl_routineconsttype_verboseinitializednb_subtractget_mat_byindex_funcNPY_BOOLset_basiscrash_funcbb_breaknb_absoluteob_typeexit_markinquiryNPY_UNICODEimpl_set_negrangetp_getattrcurrent_iter_IO_backup_base__jmp_buf_tagtagorderconsttype_improvethisinfeasBFP_lprealintadd_columnex_funcvartypeGetMGetNnb_invertxli_compatiblecol_endBFPint_lpintrealcbintinttotal_bswapsos_allocis_int_funcwrite_freemps_funcwasPreprocessedbsolveValbest_solution_ISprintnb_inplace_floor_dividestdincreate_handleset_actionfuncprint_scales_funcbfp_initimpl_set_epselsos_countbfp_refactcountbfp_freeBFPint_lpbool_IO_read_endbfp_pivotRHSconsttype_crashdescrsetfuncimpl_set_bb_floorfirstBFPbool_lpintisdualobj1tp_as_sequencebb_limitlevellongjmpget_row_name_func_IO_save_basebfp_pivotmaxMcycleget_ptr_constraintsget_var_dualresult_funcimpl_set_lp_namemat_allocNPY_ULONGFreeCellCharItemsset_obj_bound_funcis_roworderprimsolutionnb_divmodimpl_set_col_name_IO_write_endfilename__builtin___sprintf_chkget_nz_funcmodel_is_validget_lpcolumnimpl_get_pivotingbb_breakOFget_constr_value_funcsprintfget_Norig_columns_funcimpl_get_epsperturbis_nativeBFP_funcdescrgetfuncimpl_print_lp_IO_buf_baseclear_actionssizeargfuncobj_basedatanameimpl_is_presolvePyMappingMethodsimpl_is_piv_rulespx_traceput_bb_nodefunc_funcset_multipriceimpl_get_constr_valueput_msgfunc_funcimpl_set_presolvetimestartimpl_set_upboget_ptr_lambda_funcnb_floatnb_inplace_rshiftbb_deltaOFimpl_get_verboseget_Lrows_funcimpl_print_objectiveimpl_set_obj_boundreportfuncbb_constraintOFsq_lengthlastrcfdel_column_funcis_lag_trace_funcbfp_implicitslackset_outputstreamxli_writemodelNPY_NTYPESis_strongbranchstr_add_constraint_funcset_preferdual_funclastsolutionget_solutionlimit_funclp_solve_version_func_IO_markernrhs0printfunc_hashelem_lprecget_rh_funcimpl_get_statusset_sense_funcimpl_get_var_priorityGetRealVectorfreeListwrite_XLI_funcparentmembersSorteddrophashsosvars_piv_rule_CreateStringwrite_LP_funcget_rowex_funcmemcpygetattrofuncimpl_get_mip_gappresolve_undo_IO_lock_tvectorarray_IO_read_ptrset_outputstream_funcset_var_branch_funcimpl_set_solutionlimit__builtin_stpcpybfp_updaterefactstats_ISupper_flags2consttypestp_version_tagget_lambdabb_upperchangeuse_row_namesimpl_is_piv_modesq_ass_itemset_XLI_funcepssolutionMatrixObjectimpl_get_bb_floorfirstimpl_is_nativeBFPmip_absgapimpl_write_lpbb_PseudoCostxli_readmodel_IO_write_ptrbfp_ftran_normalimpl_get_sensitivity_objexBFPint_lpintbfp_efficiencynitemscol_tagmatAmylogmatLimpl_set_freenextelemPyBufferProcsset_column_funcgetattrfuncPy_hash_t_presolveundorecsq_inplace_concatimpl_guess_basisimpl_get_epselBFPcharbb_nodehandlesq_repeatconsttype_nodeobjstepstr_set_rh_vechashfuncP1extraDimimpl_set_rowget_mat_funcneedshandleconstantfromstrset_pseudocosts_func__srcreprfuncset_obj_in_basistimeendnb_inplace_powerbb_usebranchtp_as_numbercolmaxsos_varsstr_add_constraintimpl_get_sensitivity_rhsexnb_intimpl_column_in_lpread_basis_funclimitruleswitches__saved_maskget_maxpivot_funcobjfromvalue_ISblankis_trace_funcimpl_get_solutioncopy_lp_funchBFPNPY_LONGnb_inplace_true_dividecolumns_allocis_use_names_func_locklongstepsdo_presolveread_params_funcorig_upbobb_maxlevelsignal_ISalphais_actionobj_lastmultivarstp_descr_setgetvectorfuncnb_powerstepListthetaimpl_add_columnepsprimalimpl_get_objective_nameset_lowbo_functp_hashNPY_QUICKSORTvarmap_locked_ISalnum_IO_buf_endvisitprocshort unsigned intset_bounds_tighter_funcdualundotp_printget_basiscolumnnb_inplace_lshiftoptionsset_row_name_func_IScntrlmodelnamenb_true_dividetp_richcompare_IO_read_baseget_origcol_name_funcnzindeximpl_print_strtp_iterset_improve_funcbfp_mustrefactorizebb_branchhandleNPY_CDOUBLEob_refcntimpl_write_freempsget_verbose_funcget_columneximpl_add_constraintbasisvector0consttype_presolveprint_constraints_funcget_sensitivity_objex_funcget_orig_index_funcvar_is_freeput_logfunc_funcimpl_is_nativeXLIexitnowlimitstallupdatelimitimpl_get_rhtp_allocdualize_lp_funcimpl_make_lpimpl_get_row_nameimpl_get_total_iter_MATitemimpl_write_params_pricerecsetter_shortbuf_sbuftp_basesget_epsb_funclenfuncPrintfimpl_set_outputfile__ctype_b_locimpl_get_handleimpl_set_verbosebfp_pivotvectorisSOSbfp_nonzerosimpl_set_epspivotfreemembf_getbufferget_bounds_tighter_funcunsigned charbb_parentOFGetRealSparseVectorimpl_set_maximNPY_CLONGDOUBLEfindhashSetDoubleMatriximpl_set_simplextypeput_abortfunc_funcfixed_obj_posmyabortimpl_get_Norig_columnstime_elapsed_funcset_verbose_funcorig_to_varget_upbo_funcctrlcdeletedAsetargslastvarcusget_row_func_ISgraphvalueListimpl_get_bb_depthlimitUPboundrows_allocfixed_rhsclear_actionfunc_MATrec__sighandler_tsc_cansetepszeroorig_sumCcycleimpl_set_print_solsecondaryget_basiscrash_funcsc_varsnb_positivehXLIimpl_set_scalelimitget_partialprice__off_tnb_inplace_subtractimpl_get_simplextypelphandlestr_funcXLIbool_lpcharcharboolconsttype_priceis_break_at_first_funcget_sensitivity_rhsbfp_indexbaseimpl_set_maxpivotsparseset_epsel_funcimpl_get_solutioncountget_OF_activeimpl_set_preferdualnb_multiplybb_limitOFset_rowexis_constr_type_funcdualsfromsc_boundPySequenceMethodstp_is_gcimpl_is_feasibleimpl_get_presolvewrite_MPSset_int_funcblocknowimpl_print_dualsbfp_finishupdatebfp_preparefactorizationimpl_is_scalemode_nextimpl_write_mpsimpl_get_primal_solutionis_add_rowmode_funcwasPresolvedbfp_prepareupdatefreefuncstdoutpseodotypegetpackedfunccolblocksNPY_VOID_partialreccount1count2ErrMsgTxtSIGINT_funcputhashml_flagsbb_statusimpl_set_matlp_lastimpl_is_debugget_nameindex_funcXLIbool_lpintintintimpl_get_dual_solutionCreateLongMatrixreset_params_funcset_partialpriceml_methtp_as_mappingsortedx_attrtp_weaklistoffsettp_iternextset_unbounded_funcput_bb_nodefuncset_bb_depthlimit_funcbb_solutionlevelget_scaling_func__s1_lenset_minim_func_old_offsetget_sensitivity_obj_funclpsolve.cimpl_get_nonzerosobjtillvalueget_ptr_sensitivity_objexset_bb_rule_funcbb_improvementsimpl_get_lp_namebascolumnadd_constraintex_funcimpl_set_bb_ruleis_integerscaling_functimeheuristicmainlooplag_rhsimpl_get_basiscrash_setjmp__ctype_toupper_locNPY_UINTwrite_lp_funcset_break_at_value_funcreal_solution_IO_save_endGNU C 4.8.4 -mtune=generic -march=x86-64 -g -g -O2 -fwrapv -fPIC --param ssp-buffer-size=4 -fstack-protectorPyObjectimpl_is_intblockendresize_lp_funcmp_lengthimpl_set_var_weightsconsttype_msgimpl_set_obj_fntp_itemsizeobjobjprocimpl_set_rh_rangesos_listthresholdis_lag_traceimpl_unscaleBFPrealp_lpconsttype__resultset_maxpivot_funcimpl_has_BFPBFPlreal_lpintintrealimpl_get_anti_degenput_abortfuncrowname_hashtabget_improve_funcprimalundotp_delset_infinite_funcset_epsint_funcexplainNPY_UBYTEset_scaling_funcimpl_set_break_at_firstput_bb_branchfunc_funcresultsset_rh_range_funcnzdrowbb_cutpoolusedimpl_resize_lpgetbufferprocget_var_branch_funcconsttype_solveimpl_set_use_namesimpl_set_columnnodesleft__builtin_strlennb_xorstructlpsolvecallerput_logfuncmaxorderscalarsimpl_get_variablesinvBbb_breakfirstssizeobjargproccolumn_in_lp_funcindexSetPyNumberMethodsoldnameblockposis_nativeXLI_funcget_break_at_value_funcset_obj_in_basis_funcdualstillset_actionxlinameCheck_nrhsformatBFP_lprealintrealintreportndimget_epsint_functp_finalizeNPY_NTYPES_ABI_COMPATIBLEstr_add_columnrejectpivotBFPbool_lpintintcharshort intget_rowexconsttype_branchimpl_set_pivotingroutinesmake_lp_functp_mroimpl_is_break_at_firstsimplex_strategyget_col_name_funcimpl_is_freeimpl_set_epsintis_binary_funcloghandletp_getsetwas_sq_ass_sliceset_unboundedconsttype_simplexrow_endimpl_set_boundsGetIntVectorimpl_get_max_levelPyGetSetDef__builtin_strcat_markersset_scalelimit_funcset_binary_func_filenoreturnconstantpiv_strategyimpl_is_negativeimpl_set_epsperturbusermessage_typeobjectimpl_set_bb_depthlimitis_infinite_funcsuminfeasimpl_is_traceidxstepUBzerobasedmembersMappedget_objective_func__builtin___stpcpy_chknewfunc__ssize_tminorversionimpl_get_total_nodesBOOLfuture1get_infinite_funcget_presolveloops_funcis_scaletype_func__int32_tNPY_USHORTbb_usenodeimpl_set_constr_typetp_name_INVrec__destipr0tp_docset_handlenameget_sensitivity_rhs_funcget_dual_solution_funcobjobjargprocimpl_set_binaryPyMethodDefSetColumnDoubleSparseMatrixreset_basisset_trace_funcsq_concatsetattrofuncget_primal_solution_func_IO_write_baseset_rowex_funcimpl_get_var_branchbfp_statusis_presolve_funcsizetypeimpl_has_XLIBFPbool_lpcmdhashalignmentspacerwrite_LPdynrangemp_ass_subscriptwrite_freeMPS_funcrowblocksget_Ncolumns_funcbfp_restartimpl_read_XLIget_Lrowsgettersos1_countimpl_get_Norig_rowsimpl_get_Ncolumnsdelete_handleset_epsd_funcset_lag_traceget_presolve_funcimpl_read_MPSget_ptr_sensitivity_rhs__s2_lenepsdualisrowimpl_get_presolveloopshas_BFP_funcstr_set_obj_fn_functp_reservedget_simplextype_funcGetString__resimpl_write_XLIbb_boundsbigMimpl_dualize_lpbfp_pivotalloc_cur_columnbb_varbranchtp_traversedelete_lp_funcimpl_get_rowset_anti_degen_func_piv_left_set_break_at_first_funcset_mat_funcget_timeout_funcbfp_canresetbasisget_max_level_funcBFPreal_lplrealrealbinaryfuncNPY_BYTEstartstepGetCellStringbb_basisget_total_nodes_funcimpl_set_minimPy_ssize_timpl_get_infiniteimpl_solve__sigset_tbb_totalnodesmax_pivotsconsttype_pricerbfp_nameimpl_is_add_rowmodewrite_freeMPSimpl_read_LPtraverseprocis_maxim_funcvar_to_origwrite_basis_funcnb_floor_divideimpl_get_origcol_namespx_perturbed__off64_timpl_reset_paramsset_epslevel_funcsectimeoutrow_tagimpl_set_intbb_lowerchangeget_lp_name_funcvarnobb_levelLBtrack__jmp_buftp_callsolvecountget_Norig_rows_funcimpl_write_basisnb_inplace_addmylprectp_reprmsgmask__builtin_strcpyrootboundscol_mat_valueget_ptr_primal_solutionimpl_set_lowboEndOfPgrcreate_hash_tableset_timeout_funcbf_releasebufferset_pseudocostsput_msgfuncmodel_is_purerow_end_validinfnormboundedvarsallocatedmemory0allocatedmemory1fixedvarsperturb_count_BBrecimpl_is_constr_typeget_pivoting_funcstr_add_column_funcselfnb_inplace_orcalloctp_as_buffervar_type_ISspaceedgeVectorprint_str_funcis_feasible_funcNPY_CFLOATrestartlimitread_MPS_functp_dictsum_allocprevinfeasreleasebufferprocimpl_get_rh_range_multirec_SOSrecdirtyconsttype_antidegennoderesultprint_tableau_funcorig_lowboset_columnexlong long unsigned intbfp_rowoffsetset_lp_name_funcnb_inplace_multiplyinitprocbfp_finishfactorizationset_bb_floorfirst_functp_clearex_statusNPY_ULONGLONGget_pseudocostsbb_traceget_sensitivity_objob_sizetimepresolvedimpl_set_improvestr_set_obj_fnget_bb_floorfirst_funcaddallocmemimpl_set_timeoutNPY_INTguessvectorcurrent_bswapnb_negativeprevious_ISdigitimpl_print_scalesget_OF_activefuncimpl_set_row_namesq_itemput_bb_branchfuncimpl_copy_lpLOcosttp_descr_getspxfuncBFPbool_lpboolNPY_HALFnb_reservedadd_columneximpl_del_constraintimpl_time_elapsedorig_rhsretriescreateconstanttp_getattroget_rh_range_funcfree_lp_funcget_total_iter_funcnb_rshiftNPY_FLOATis_debug_funcset_solutionlimit_funcmaxboundworkarraysfree_lpNPY_TIMEDELTAset_row_funcnb_inplace_andget_origrow_name_funcnb_or_objectimpl_get_statustextBFPbool_lpintintintstr_set_rh_vec_funcrichcmpfunc__jmpbufadd_SOS_funchandle_validimpl_get_print_solcol_mat_colnrbb_cutpoolsizetp_cacheset_epsperturb_funcvec1spx_statusequalitiesget_constr_type_funcconsttype_epsimpl_set_scalingimpl_get_negrangebb_PseudoUpdatesimpl_get_origrow_nameimpl_set_senseget_Nrows_functp_methodsgetiterfunc_workarraysrecset_presolve_funcget_status_funcimpl_get_matconsttype_scaleimpl_del_columnml_doc__valimpl_read_paramsisfloornb_boolimpl_get_bb_ruleinvertfuncimpl_print_constraintscountstepimpl_get_lowboimpl_set_epsleveldebuginfoget_partialprice_functhisobjbfp_ftran_prepare_basisrecimpl_get_col_name_chainlphandleint_funcprevobjPyCFunction__longjmp_chkbfp_btran_normaltp_dictoffsetnames_usedptr0ptr1maxloopsset_multiprice_funcbb_heuristicOFuserabortfuncis_obj_in_basismallocreset_basis_funclag_con_typeNPY_LONGLONGget_negrange_functimecreatestridesprint_objective_funcget_multipricenb_addtp_subclassesget_mat_byindeximpl_set_basisvarget_ptr_constraints_funcNPY_DOUBLENPY_USERDEFstructallocatedmemoryNPY_TYPESimpl_get_working_objectivechildrow_matget_scalelimit_func_IO_FILE__stack_chk_failget_solutioncount_funcstrncatfull_dualsisGUBNcycleNPY_DATETIMEimpl_set_epsbimpl_set_epsdimpl_get_columnPyMemberDefclosurehandlehashlphandleint_intfunclphandle_intfuncSetLongMatriximpl_print_debugdumpimpl_get_break_at_valueimpl_get_epsbtp_strimpl_get_epsdstreamownedepsvalueunaryfuncLOboundis_actionfuncNPY_MERGESORTbb_strongbranchesset_pivoting_funcimpl_set_objimpl_set_basiscrashget_columnex_funcis_unbounded_funcstructlpsolveset_obj_fnex_funcmembershipblockcountuserhandleNPY_NOTYPELprecObjectQSORTrecrowmaxinterruptedis_lowercopy_hash_tableh_tab_pstring__strdup__builtin_strcmpfree_hash_tablefree_hash_itemnew_elemHashPrimeshash.chashindex_hashtablehashvalnewsizefreematPyModule_GetDictfastclipalignmentexactcountsetitemgetitembyteorderoverflow_arg_arealpsolve_clearreg_save_areaPyObject1PyObject2cancastscalarkindtomat1pythonmod.c__builtin_strncpyfastputmasktype_numPyArray_CopySwapNFuncsetlhsm_freestrides0PyModule_Create2numpyfasttakePyModuleDefPyArray_NonzeroFuncelsizePyExc_AttributeErrorPyErr_SetStringob_itemPyExc_RuntimeErrornonzeroPyArray_SetItemFunclpsolve_docPyTypeObject__intptr_tscalarkindweakreflistmodule_state__gnuc_va_listsubarray__builtin___vsnprintf_chkPyNumber_CheckPyObject_GetAttrStringvsnprintfNPY_CLIPMODEPyArray_ScalarKindFuncitem1item2m_initPyUnicode_AsUTF8AndSizePyModuleDef_BasePyUnicode_FromStringPyArray_ArgSortFuncPyCapsule_Typecastmoduledefvret__apPyArray_FillFuncm_docNPY_CLIPerrordotfunc_py_tmpLprec_errorflagnpy_boolm_indexPyArray_FastTakeFunclpsolve_methodscancasttoNpyAuxData_tagfillNPY_CPU_UNKNOWN_ENDIANcastdictcopyswapnPyLong_FromLongsize1PyArray_ArgFuncPyCapsule_GetPointerNPY_WRAPargmaxNpyAuxDataPySequence_GetItemm_traverseNpyAuxData_FreeFuncm_namePyObject_Size_PyArray_DescrPyErr_FormatLprec_ErrorObjectfp_offsetgp_offsetclonePyImport_ImportModule__va_list_tagPyArray_FillWithScalarFuncm_reloadPyArray_ArrFuncsm_clearPyErr_Clear_arr_descrPyModule_GetStateargminPyType_IsSubtypem_copyPyBytes_AsStringAndSizePyExc_ImportErrorPyArray_GetItemFuncPyArray_VectorUnaryFuncIsNumPyPyArrayObjectPyArg_UnpackTuplePyFloat_AsDoublePy_intptr_tPyArray_FastPutmaskFuncNPY_CPU_BIGPyDict_SetItemStringdimensionsnpy_intpPyErr_NewExceptionPyArray_SortFuncPyInit_lpsolve55tagPyArrayObject_fieldsPyArray_CopySwapFuncNpyAuxData_CloneFuncPyArray_DotFuncstrides1copyswapPyFloat_FromDoublePySys_WriteStdoutPyList_NewscanfuncPyList_Appendvisitlpsolve_traversem_basefillwithscalarargsortPyArray_FromStrFuncPyArray_ScanFuncNPY_RAISEtypeobjPyListObjectm_methodsm_sizeNPY_CPU_LITTLEPyList_Sizec_apiHasNumpyPyArray_CompareFuncPyArray_FastClipFuncc_metadata_py_decref_tmp_import_arrayarryShowError 'U'1U *T*1T 0Q01Q@HUHSU@KTKSUST@SQSQ\ePeVP\SUfPU#UVUTUTPSPVUPvU#Uv@FUFLULv@T\TF\FITI\QFQFPQPQ00S@BPBSPFSV]0]S ] 0]0T]TU3S35U5:ST Y :T gV@ZUZrs@rUSUPU~s@~U8AP+7P7VVUVU v@ wUwUVUv@u@UU0P!:0:ZX00S0f\fvR 1w01!:P:JZJQzQZZP!vP0 -;w0-;0U*S*+v@+;u@;<UP-\-;T@QUQ{S{|UUSU U uVuUUV"U"iVinUa42i3Za-BuvinvPpUY SY a Ua S3a 2  P ^ ] ] U  V \ s@\ e U ] v` e v& @ Pp U V  s@ % U  v % v P0 ^ U^ V s@ U v v P  U N VN s@ UN v vf P U S U U  S  v@ + u@+ , U  P  \ + T0 ^ U^ V s@ U v v P U=S=>v@>JUP]U]tSt}UUSUUSUUS UU0S05U@TUTSv@u@UosPs\TUuVu~U~UV p1P1P 1:TPP ^0SQsS 0P_ P -U-DSDIUPdUdSv@u@UP\TUSUUEVEs@UEvv]wPUSUUSUUISIJv@JWU`mUmrSrwUUSUUSUUSUU7V7Ss@Snu@noU7TvTnpWnPp}U}SUUSUUSU U  S %U0=U=PSPUU`mUmSUUSUUVUU5V=@p1P1P&-1ZtPP-^0SQsS&-0P&_&-P@MUM`S`eUp}U}SUUSUU.V.|s@|U.}vvF`PUSUU S v@U 4U4Vu@UTXPX\TU V 3u@34UP"\"3T@MUMRSRWU`UISIQUQS3Q2PN]]USv@US}}*DPUSUUS U %S0FUF]S]bUb{S{U=b2b1YaTzT1USUUSUUSUUSU.U.^V^s@U^vvvPUSU S U21T T1(U(Vu@UHLPL\TU" V" 2 u@2 3 UP$ \$ 2 T@ T UT S v@ u@ Uo s Ps \ T U S v@ u@ U P \ T!!U!K!SK!L!v@L!\!u@\!]!U/!3!P3!N!\N!\!T`!t!Ut!!S!!v@!!u@!!U!!P!!\!!T!!U! "S " "v@ ""u@""U!!P!"\""T "4"U4"z"Vz""u@""UT"X"PX"|"\|""T""U""S""v@""u@""U""P""\""T"#U#;#S;#<#v@<#L#u@L#M#U###P##>#\>#L#TP#d#Ud##S##v@##u@##U##P##\##T##U##S##v@# $u@ $ $U##P##\# $T$$$U$$[$S[$\$v@\$l$u@l$m$U?$C$PC$^$\^$l$Tp$$U$$S$$v@$$u@$$U$$P$$\$$T$$U$%S%%v@%+%u@+%,%U$%P%%\%+%T0%H%UH%%S%%v@%%u@%%U%%S%%v@%%U`%d%Pd%%]%%]%%~%%p%%~k%r%Pr%%\%%\%%P%&U&D&VD&]&u@]&^&U$&(&P(&F&\F&]&T`&t&Ut&&V&&u@&&U&&P&&\&&T&&U&)'S)'*'v@*'0'u@0'1'U&'P','\,'0'T@'T'UT''S''v@''u@''Uo's'Ps''\''T''U''S''v@' (u@ ( (U''P''\' (T($(U$(Z(SZ([(v@[(k(u@k(l(U?(C(PC(](\](k(Tp((U((S((v@((u@((U((P((\((T((U()S))v@)+)u@+),)U()P))\)+)T0)D)UD)q)Sq)r)v@r))u@))U_)c)Pc)t)\t))T))U)+S++v@++Uu*y*Py*+]**P*u*])I*0I*M*pM**~*+|))P)$*\$*+*P+**\**P*+_*+P**Q*+ } $ &3$**p**T*+_ +C+UC+,S,,v@,,U,4,S+,\U+,},4,}++P++Z+ ,P++ | $ &3$++Q+, | $ &3$++H#++T@,q,Uq,.S..U,.\,,p-.}- .P .K.UK.0S00U0@0S..P.0\80@0\./P//])///080@0P//P//^//0^\..pb/0020p/ 0P//Q// | $ &3$//0//P//^@0T0UT00S00v@00u@00Uo0s0Ps00\00T00U00S00v@00u@00U00P00\00T11U11S11v@11u@11U11S11v@11U,11]11]k11~11p11~H1O1PO11\11\11P11U1-2V-2=2u@=2>2U22P2/2\/2=2T@2T2UT22S22v@22u@22Uo2s2Ps22\22T22U22S22v@22u@22U22P22\22T33U3J3SJ3K3v@K3[3u@[3\3U/333P33M3\M3[3T`3t3Ut33S33v@33u@33U33P33\33T33U34S44v@44u@44U33P34\44T 4N4UN44V44s@44U44V44V44P45U5H5VH5a5u@a5b5U$5(5P(5J5\J5a5Tp55U55S55v@55u@55U55P55\55T55U56S66v@6+6u@+6,6U56P66\6+6T06J6UJ66S66v@67u@77U77S77v@77Ua6e6-4e67 H-466}67p77}66P66\77\67P 747U47}7V}77u@77UT7X7PX77\77T77U77S77v@77u@77U77P77\77T78U818S1828v@28K8u@K8L8U8#8P#848\48K8TP8d8Ud88S88v@88u@88U88P88\88T88U88S88v@8 9u@ 9 9U88P88\8 9T9$9U$9Q9SQ9R9v@R9k9u@k9l9U?9C9PC9T9\T9k9Tp99U99S99v@99u@99U99P99\99T99U9d:Sd:e:v@e::u@::U::S::v@::U:i:}i::p::} ::P:g:\::\l::P::U::S::v@::u@::U::P::\::T;;U;K;SK;L;v@L;\;u@\;];U/;3;P3;N;\N;\;T`;t;Ut;;S;;v@;;u@;;U;;P;;\;;T;;U; <S < <v@ <<u@<<U;;P;<\<<T <4<U4<~<V~<<u@<<UT<X<PX<<\<<T<<U<<V<<u@<<U<<P<<\<<T= =U ==S==U =4=U4=|=S|=}=v@}==u@==UO=S=PS==\==T==U==>S=>?>U?>D>S=>>V>>?>~?>D>VP>t>Ut>>^>>U>>^P>t>Tt>>\>>T>>\P>t>Qt>>]>>Q>>]k>t>0>>s>>T>>]>@?U@?PA@PARAURAAU>@?T@?PAPARATRAA>@?Q@?PAPARAQRAA@@P@V@^}@PA^cArAPrAA^>.?0.?PAVPARA0cAAV.?@?T@?T?]T?h?^h?o?~o?@^P@V@SV@f@]f@x@Sx@}@^?V@Sx@PAScAAS>@?T@?A@]A@V@SV@PA]PARATcAA]@PA]@PA]?o?8$8&2$p"}@@]}@@@@ȟ@@@PAȟ@PAAAUAB\BBUB5B\AATAAQABVBBTB5BVAAQAB^BBQB5B^ABP.B4BP@BMBUMBfBSfBkBUpB}BU}BBSBBUBBUBBSBBUBBUBCSC"CU"C>CSBCVC!CQCP@CMCUMCfCSfCkCUpC}CU}CCSCCUCCUCCSCCUCCUCCSCCUD DU D&DS&D+DU0D=DU=DVDSVD[DU`DmDUmDDSDDUDDUD'FV'F0FU0FJFUJFFVFFUF/GV/GRGURGGVDE50FF2F/G3/GG4EEXE0FvGGvEEPE/F_GG_GHUHHSHHv@HHUHHSH1H2HH11HH^HH^pHtHPtHH\HH\HIUIOISOIPIv@PI`Iu@`IaIU)I-IP-IRI\RI`ITpIIUIISIIv@IIu@IIUIIPII\IITIJUJOJSOJPJv@PJ`Ju@`JaJU)J-JP-JRJ\RJ`JTpJJUJJSJJv@JJu@JJUJJPJJ\JJTJKUKOKSOKPKv@PK`Ku@`KaKU)K-KP-KRK\RK`KTpKKUKKSKKv@KLu@LLUKKPKK\KLTL$LU$LoLSoLpLv@pLLu@LLUILMLPMLrL\rLLTLLULLSLLULLUL6MU6MPMUPMRMULMTMMSMMTMMTM1MS1M5MU5M6MT6MAMSAMBMTBMRMSLLUL6MUBMPMUPMRMULMTMMSMMTMMTM1MS1M5MU5M6MTBMRMSLLQLMUM MQ MMUM,MUBMRMQLL0LMQM(MQBMRM0`M~MU~M(NS(N+N|@+NNNu@NNONUONUNSUNXN|@XN_NUMMPM)NVONVNVMMPM-N]ONZN]M1N1NNNpON^NMMPM/N^ON\N^NNNPMMQM)N v $ &3$ONVN v $ &3$MMTM-N}ONZN}M/N^ON\N^`N~NU~N;OS;OO\bOpO\NNPN@O]bOrO]NDODOaOpbOvONNPNBO^bOtO^0OaOPNNQN>O | $ &3$bOpO | $ &3$NNTN@O}bOrO}NBO^bOtO^OOUO#PS#P,PU,P-PUOOPOO]OOPO$PV$P,PTO(P}OPP0PqPUqPPVPQUQQUQ*RVPPpQGQ1GQUQPUQQ1QQPQQ1QQPQR1RRPR%R1PPP;QGQ0GQiQSiQmQQmQQsQQSQQ0QQ0QQ]QR}RR]R%R0.Q2QP2Q%R^QQPQ%R_9QGQPGQQ_QQPQQ_0RYRUYRRVRRURRURmSVRRp S)S1)S5SR5SOS1OSVSRfSmS1RRP S)S0)S?SS?SOSsOSVSSfSmS0RSPSmS]SSPSmS^pSSUSSVSTUT-TU-TTVSSphTqT1qT}TR}TT1TTRTT1TTPhTqT0qTTSTTsTTSTT0?TITPITT]cTgTPgTT^TTUTUSUUUUUUTTPTBU^BUFUPFUcU^2U6UP6UU]UUPUU\UUTcUU~zUUPUUUU#VS#V*VU*V+VUUUPU&V\ VVPV$VV$V*VT0VYVUYVVVVVUVVUVnWVVVp#W,W1,W5WR5WPW1PWWWRgWnW1VVP#W,W0,W?WS?WPWsPWWWSgWnW0VWPWnW^W"WP"WnW]pWWUWWVWXUX%XU%XXVWWpcXlX1lXuXRuXX1XXRXX1WXPcXlX0lXXSXXTXXsXXSXX0=XDXPDXX^^XbXPbXX]XXUXYSYYUYYUXXPX?Y^(Y7YP#Y'YP'YY\XYPYYVYYT?YY~VYpYPYYUYZSZZv@Z7Zu@7Z8ZU8ZEZSEZJZUJZKZUZZsZ7Zp Z7ZPPZhZUhZ6[S6[A[UA[B[UqZZPZZ~ZZPZZ^ZZPZ;[]ZZPZ9[\9[A[TZ=[~[[PP[{[U{[[S[\U\]S\\p\]~Y]h]p]]p[\PL\P\PP\\_\]]]_X\\\P\\]\]1]T]VT]X]TX]]]v]]]V\\P\]]]]]]A]Rh]]]]%]0%]B]^B]I]p~"I]X]Qh]]0\\0\\P\\_\][]]]]0\\0\\P\\_\][]]_]]0\\P\]\] ]\ ]A]Qh]]\]A]au]]a7\>\P>\\\]]\]^U^t^Vt^^U^^U^-_VQ^T^p^^1^^R^_1__R&_-_1}^^P^^0^^S^_s__S&_-_0^^P^-_]^^P^-_^0_Y_UY__V__U__U_t`V__p(`1`11`=`R=`V`1V`]`Rm`t`1__P(`1`01`G`SG`V`sV`]`Sm`t`0_ `P `t`]#`'`P'`t`^``U`JaVJaSaUSaeaUeazbV``pSaa1aaPaa1aaPa4b14b=bP=bWb1Wb^bPnbub1a)aPaa0aaSaaQaasaaSaa0*b4b04bHb]HbWb}Wb^b]nbub0~aaPaub^%b)bP)bub_aaPaa_a bP b%b_bbUbcVc@cU@cMcUMcdVbbpcc1ccPcc1ccPdd1(c?cPcc0ccSccsccSdd0hclcPlcd]uccPcd^ccPcd_ dIdUIddVddUddUddeVddpe!e1!e-eR-eFe1FeMeR]ede1ddPe!e0!e7eS7eFesFeMeS]ede0ddPdde]eePede^peeUe\P\!!!P!! _ P _101` 2 101` 2 101`SSs2 SPQ1 Q !*!G!PG!l!1!!!!1!!1P\`1\ !\!G!1G!l!\y!!\!!!!\!!1!!\ 02!0!!!!01] !1*!G!1G!l!]!!]D0^^`0^ !!G!0G!!^!!^D0p#(``0 2!!G!0G!!!!0!!!!pD0``0 2!!G!0G!!!!0!!!!0D0P~8#``0 2!!G!0G!!!!P!!!!~8#u1`0 !1!G!0!!1!!1 ( _ _T Z _ _"'"U'")~"'"T'")T"'"Q'"%~%*%~#*%/%P/%)~"'"R'"%^%%~%x%^{%)^"'"X'")"'"Y'"e$Se$&Y&&S&(Y()S0"S"PS")'n'V''V($(P$(N(VN(V(PV((V((P((V$$0$h%]{%&0&'0n'']'(0($(P$(Q(VQ(V(]((P$$0$h%_{%&0&'0n''_'N(0N(V(P((0H$$0$h%{%&&(""0" #\O#$0()01)Q)0e))0H$$0$Z%SZ%^%s{%&S&(S""P""~""P" #~b##1##~((P((~()P1)Q)~e)t)~t))P))~))1""0""P" # #@#QO#b#0b#$1''1''15(J(P()0)1)Q1)Q)1e)t)Pt))0))P))1"$0$h%{%&&&0&(()0"$ $>%aZ%h%a{%%a%&a&&&& &'ai'n'a''a''' (a() " #1b##0((1()1t))1))06""0""_""O##0((()0e)t)_t))0))_))06""0""q""O##0((()0e))0))q))06""0""VO##0((V()0e))06""0""Q""8#""O##0((()0e)t)Qt))0))8#))0l""1O##0((1()0e)t)1t))0))1))04%>%_''_C%N%]'']1';'_V(o(_@'K']o((]'']((]) *U *]*S]*e*Ue**S)*T**T) *Q * *V **Q) *R *`*\`*e*Re**\) *X *4*]4*F*} $q $-(F*L*X $q $-(L*P*X $H $-(e**]) *Y *d*^d*e*Ye**^ *$*P$*?*Ve*o*V)%*0%*P*Pe*l*PI*V*]I*P*PI*P*UP*V*\**U**U**T**T**Q**P**Q**R**R**X**X** x $ &**Q** X $ &** p $ &3$t"**p $ &3$T"**U**\**U**U**T**T**0* +U +-* +T +-T* +Q +-* +R +U+SU+O-RO--S:+P+Q_-l-Pg++0+S,VS,a,Sn,,V,,s, -S-O-V+-+P-+-+I,S,,P,,S-O-Sg+r+Pr+ -]-O-] ,*,P:+ -\-O-\++S/-?-S ,a,^, -^-/-^ ,a,_, -_-/-_5,?,S-/-S,,S?-O-S--U--U--T--T--Q--Q--R--R--U--U--T--T--Q--Q--R--R-$.U$.///U//-(.T(.///T//-.Q.(.P(./Q//Q//-(.R(./R//R//S-(.X(.///X//-(.Y(.///Y//0.9.P9.,/C/l///..P..S0..0..0.,/C/l///..S0....^..^..^./^C/V/^V/l/S /,/// /,/T//T//  $ & /,/// /,/#//#//P//T//  $ &//T//  $ &//U//U//T//T//Q//Q//R//R0T0UT0111U120X0TX0111T120N0QN0X0PX01Q11Q120X0RX01R11R12S0X0XX0111X120X0YX0111Y12`0i0Pi0Z1q111100P0#1S`000000N0Z1q1111N00S`0000^00^1 1^#151^q11^11S:1Z111:1Z1T11T11  $ &:1Z111:1Z1#11#11P11T11  $ &11T12  $ &222U222U2R2TR22T22T2R2RR22R22R2G2XG22X22X22Y22y22Y2222[2222V2222V2222Z2222Sa22a~22T22R20a2{2T{22X22x22022R2 a22P22p22P22P22p22P22 23U3f3^f3i3Ui33^33U33U33U33^33U33^2 3T 33_3,3s",303s"#03>3s"33T33_33T33_2 3Q 33S33Q33Q33S33Q33S2 3R 3333R3333P3b3\b3f3~f3i3U#i3s3\3303 3Q 33S3s3QC3b3\b3f3~f3i3U#i3s3\C3s3TC3f3^f3i3Ui3s3^C3f3~f3i3U#i3s3~33^33U33^33~33U#33~TY\{]  !&-****++++/ // /?(?@@@@@@@@@@@AxAAAALM M-MBMRMMMMMNNNN;QQQQRaSfSmS TTTTVbWgWnWXXXXYZZZZ@Z \]]]^!_&_-__h`m`t`aaaa@c ddddXe]edeik kkyj~jjjjjEs[spss=tAtJtWtxu{uuu|}}}8};}?}G}f|@`oRP̐` /BܓKhrzĕٕP\]`ep]`epuז +8B%+8Bhpqz}u|88PP`jmtx|&A`e2IdiQ8Pd8P(..8fl1 8!D 8!!!!! ( T Z 6"h%%(1)X)e))4%>%''C%N%''1';'`(p(@'K'p((''((4*:*I*Q*****++0-@-,, ,+,5,?, -0-,,@-P-.,/H/l/// /,///?0Z1x1111:1Z1113Z3p3s3w3z333C3Z3p3s3w3z3333333.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.data.rel.ro.dynamic.got.got.plt.data.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str.debug_loc.debug_ranges$.o8 @x x ?Ho00bUo 3 3pd33(;nnn xpps~pp=gg gg T5P!PX!X`!`! # !!h!!@ @!@` 0@)i# (e*+40VO?%[J>0nX7## xT"x 0 33n p  p g gP!X!`!!!!!!@!  `! p. A W@!fX! P! `J! p   E G @ P!p!  v6H!G WX!b ;t @\ < :  П:  С  P  0\0 = PZP -_ *p ) @- p% \ u ) \ -  @ %0 0%B `WS b )t  0% `o Ы% % 0% `% % % - u% %= Ю-U -m 0z ) S s   :    u P0 B W e @v ` P p s ] ] `] ] ] k) \9 P]G ]^ ]r p] л] 0\  Pn n 0a a Z& p\6 п\M 0\d \w     \ \ ` 0n* \= \Q `\h \z \  Pr \ 0\  n \  P\  \/  \>  p\L  \Z  0o  \  `]  \  ]  o  o  `  n   6 ! @  PP `!]  f  +w  +  +  0n  +  +  +  0+  `+  +  +4  PB  @ T  Pqf  qx  Pq  q  Pq   pq  N  @r      4  =B  DT  a  kq  >  >        P=  D      D  )  F:  _K  `X  Pn  }  0          P   N  p  P  &- &B P&S &e &w & & @& p& & b @  P   `  p (  5  D  Z 1n |  ! "X #b $ &1 @(b )L!h!&!/ -= @.LS_ 3Km 047~ p4!h "!!@ !T0`!!!@!!<GRgs p.  @5[/ K[gv~ ^ a1GX p1` Ijnw ]@! F  c4CP]q} E g P2 0O  `..:GWiw H ^=#18HPWbx J 1J (;G[g az . p^  0< pF) +;GYkv / a.D p0 S_ku '1EV "[ ciw " -5Gdq@! f*4BN ejy  `3v(2CX` t U  ,<Pcu `Hwz O(=J "\iz    2 E Q ] k u           !"! p$! .c,!;!I! GT!b!s!! "!!!!!!!""crtstuff.c__JCR_LIST__deregister_tm_clonesregister_tm_clones__do_global_dtors_auxcompleted.6973__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entrylpsolve.cmyabortinterruptedSIGINT_funcmylogcallocmemmallocmemcreate_handlelp_lastlpCheck_nrhsimpl_return_constantsreturn_constantsimpl_get_handlehandlehashimpl_print_handleimpl_get_Ncolumnsimpl_get_objective_nameimpl_get_lp_nameimpl_write_XLIimpl_write_paramsimpl_write_mpsimpl_write_lpimpl_write_freempsimpl_write_basisimpl_unscaleimpl_time_elapsedimpl_set_XLIimpl_set_use_namesimpl_set_traceimpl_set_timeoutimpl_set_solutionlimitimpl_set_senseimpl_set_scalelimitimpl_get_Nrowsimpl_set_row_nameimpl_set_print_solimpl_get_presolveloopsimpl_set_preferdualimpl_set_outputfileimpl_set_obj_boundimpl_set_negrangeimpl_set_mip_gapimpl_set_minimimpl_set_maxpivotimpl_set_maximimpl_set_infiniteimpl_set_freeimpl_set_epspivotimpl_set_epsperturbimpl_set_epsintimpl_set_epselimpl_set_epsdimpl_set_epsbimpl_set_debugimpl_set_col_nameimpl_set_break_at_valueimpl_set_break_at_firstimpl_set_bounds_tighterimpl_set_BFPimpl_set_bb_depthlimitimpl_set_basisvarimpl_set_add_rowmodeimpl_resize_lpimpl_reset_paramsimpl_read_paramsimpl_read_basisimpl_print_tableauimpl_print_strimpl_print_solutionimpl_print_scalesimpl_print_objectiveimpl_print_lpimpl_print_dualsimpl_print_debugdumpimpl_print_constraintsimpl_make_lpimpl_is_use_namesimpl_is_traceimpl_is_nativeXLIimpl_is_nativeBFPimpl_is_maximimpl_is_integerscalingimpl_is_infiniteimpl_get_epsintimpl_is_debugimpl_is_break_at_firstimpl_is_add_rowmodeimpl_has_XLIimpl_has_BFPimpl_get_working_objectiveimpl_get_variablesimpl_get_var_primalresultimpl_get_var_dualresultimpl_get_total_nodesimpl_get_total_iterimpl_get_timeoutimpl_get_statusimpl_get_solutionlimitimpl_get_solutioncountimpl_get_objectiveimpl_get_solutionimpl_get_dual_solutionimpl_get_sensitivity_rhseximpl_get_sensitivity_objeximpl_get_scalelimitimpl_get_print_solimpl_get_primal_solutionimpl_get_orig_indeximpl_get_obj_boundimpl_get_Norig_rowsimpl_get_Norig_columnsimpl_get_nonzerosimpl_get_negrangeimpl_get_nameindeximpl_get_mip_gapimpl_get_maxpivotimpl_get_max_levelimpl_get_columnimpl_get_lp_indeximpl_get_infiniteimpl_get_epspivotimpl_get_epsperturbimpl_get_epselimpl_get_epsdimpl_get_epsbimpl_get_constraintsimpl_get_break_at_valueimpl_get_bounds_tighterimpl_get_bb_depthlimitimpl_dualize_lpimpl_del_constraintimpl_del_columnimpl_default_basisimpl_copy_lpimpl_lp_solve_versioncreateconstant.isra.0constantsconstantfromstrconstanthashconstantimpl_set_verboseimpl_set_simplextypeimpl_set_scalingimpl_set_presolveimpl_set_pivotingimpl_set_improveimpl_set_epslevelimpl_set_bb_ruleimpl_set_bb_floorfirstimpl_set_basiscrashimpl_set_anti_degenimpl_read_XLIimpl_read_freeMPSimpl_is_scaletypeimpl_is_scalemodeimpl_is_presolveimpl_is_piv_ruleimpl_is_piv_modeimpl_is_constr_typeimpl_is_anti_degenimpl_get_statustextfreememimpl_get_obj_fnimpl_get_rowimpl_set_var_weightsimpl_set_var_branchimpl_set_upboimpl_set_semicontimpl_set_rowimpl_set_rh_vecimpl_set_rh_rangeimpl_set_rhimpl_set_obj_fnimpl_set_objimpl_set_columnimpl_set_matimpl_set_lowboimpl_set_intimpl_set_constr_typeimpl_set_boundsimpl_set_binaryimpl_set_basisimpl_is_feasibleimpl_guess_basisimpl_get_matimpl_get_constr_valueimpl_get_basisimpl_column_in_lpimpl_add_SOSimpl_add_constraintimpl_add_columnset_handlename.part.4impl_set_lp_nameimpl_read_MPSimpl_read_LPreturnconstantimpl_solveimpl_get_verboseimpl_get_simplextypeimpl_get_scalingimpl_get_presolveimpl_get_pivotingimpl_get_improveimpl_get_bb_ruleimpl_get_bb_floorfirstimpl_get_basiscrashimpl_get_anti_degenimpl_get_row_nameimpl_is_SOS_varimpl_is_semicontimpl_is_negativeimpl_is_intimpl_is_freeimpl_is_binaryimpl_get_var_priorityimpl_get_var_branchimpl_get_upboimpl_get_rh_rangeimpl_get_rhimpl_get_origrow_nameimpl_get_origcol_nameimpl_get_lowboimpl_get_constr_typeimpl_get_col_namemainloop.constprop.24initializedcmdhashroutinesdelete_handleimpl_delete_lphash.cpythonmod.clpsolve_clearlpsolve_traversesetlhs.part.0moduledefHasNumpybuf.15243lpsolve_methodslpsolve_doc__FRAME_END____JCR_END____dso_handle_DYNAMIC__TMC_END___GLOBAL_OFFSET_TABLE_solve__ctype_toupper_loc@@GLIBC_2.3PyList_Newset_binaryPyDict_SetItemStringis_semicontfree@@GLIBC_2.2.5write_lpset_row_nameget_rowget_sensitivity_rhsis_constr_typetime_elapsedset_intget_matEndOfPgrprint_debugdumpget_rh_rangePyInit_lpsolve55strncpy@@GLIBC_2.2.5_ITM_deregisterTMCloneTableget_constr_typeput_logfuncdel_constraintunscalestrcpy@@GLIBC_2.2.5resize_lpget_solutionlimitset_boundsGetCellCharItemsget_break_at_valueCreateDoubleSparseMatrixread_basisset_print_solget_statusPyObject_GetAttrStringget_ptr_dual_solutionget_var_priorityputhashGetRealScalarread_MPSget_basiswrite_freempswrite_XLIGetStringget_anti_degenget_epsbget_epsdset_basiscrashset_var_weights_edataput_abortfuncwrite_paramssetargsCreateLongMatrixget_working_objectiveset_preferdualget_presolveset_epslevelstpcpy@@GLIBC_2.2.5get_verboseprint_lpPrintf_finistrlen@@GLIBC_2.2.5get_orig_indexis_SOS_varset_XLIdrophash__stack_chk_fail@@GLIBC_2.4free_hash_tableset_columnexexitnowhas_BFPPyExc_RuntimeErroris_piv_ruleadd_columnexPyErr_SetStringPyModule_GetStateget_variablesset_improveget_bb_floorfirstset_obj_fnexmemset@@GLIBC_2.2.5get_basiscrashis_maximGetNis_piv_modePySequence_GetItemFreeCellCharItemsget_bb_depthlimitget_row_nameget_max_levelis_intget_constraintsset_matget_rhset_rh_vec__strdup@@GLIBC_2.2.5GetIntVectorPyFloat_FromDoubleget_bounds_tighterfindhashPyLong_FromLongget_obj_boundprint_strset_BFPget_origcol_name_setjmp@@GLIBC_2.2.5is_integerscalingset_timeoutPyErr_NewExceptionget_lp_namecalloc@@GLIBC_2.2.5PyErr_ClearCreateDoubleMatrixPyList_Appendlpsolvestrcmp@@GLIBC_2.2.5GetCellStringset_rhsignal@@GLIBC_2.2.5del_column__gmon_start__lp_solve_versionhashvalErrMsgTxtset_use_namesmemcpy@@GLIBC_2.14get_simplextypeset_lp_nameis_break_at_firstPyArg_UnpackTupledualize_lpget_bb_ruleset_bb_ruleset_maxpivotcreate_hash_tablehas_XLISetDoubleMatrixget_sensitivity_objexget_mip_gapset_negrangePyModule_Create2set_outputfile__stpcpy_chk@@GLIBC_2.3.4PyImport_ImportModulefree_hash_itemget_timeoutguess_basisset_debugget_pivotingis_use_namesget_var_primalresultis_debugPyObject_Sizemalloc@@GLIBC_2.2.5get_var_dualresultset_upboset_epsbset_epsd_Py_NoneStructset_presolvedefault_basisdelete_lpget_primal_solutionPyFloat_AsDouble_endSetLongMatrixprint_tableauget_ptr_sensitivity_rhsNumPymake_lpis_add_rowmodeset_bb_floorfirstget_infinitecolumn_in_lpset_infiniteis_scalemodeget_Norig_columnswrite_basisget_total_nodesset_pivotingadd_SOSget_solutioncount__vsnprintf_chk@@GLIBC_2.3.4get_col_nameget_ptr_sensitivity_objget_var_branchPyList_Sizeget_upborealloc@@GLIBC_2.2.5get_Norig_rows__strcpy_chk@@GLIBC_2.3.4__bss_startget_epselCreateStringset_col_nameget_scalelimitset_senseset_unboundedget_scalingSetColumnDoubleSparseMatrixget_statustext__longjmp_chk@@GLIBC_2.11get_total_iterset_basisvarget_presolveloopsget_lp_indexset_add_rowmoderead_LPPyCapsule_Typeget_Nrowsset_lowboset_var_branchcopy_hash_tableset_basisadd_constraintexPyUnicode_FromStringcopy_lp_Jv_RegisterClassesPyExc_ImportErrorset_bounds_tighterprint_objectiveis_nativeXLIGetRealSparseVectorPyExc_AttributeErrorset_epsintset_constr_typePyNumber_Checkget_Ncolumnsset_epselset_scalingset_simplextypestrcat@@GLIBC_2.2.5set_break_at_firstset_bb_depthlimitGetMset_maximset_minimPyType_IsSubtypeGetRealVectorPyUnicode_AsUTF8AndSizeread_XLIis_nativeBFPreset_paramsget_print_solPyErr_Formatis_feasibleset_mip_gapset_semicontPyCapsule_GetPointerget_nonzerosLprec_ErrorObjectget_epspivotPyModule_GetDictget_negrangeset_verboseget_epsperturb_ITM_registerTMCloneTableprint_constraintswrite_mpsget_constr_valueset_scalelimitget_maxpivotset_objis_unboundedPyBytes_AsStringAndSizeset_break_at_valueprint_dualsis_infiniteis_anti_degenget_lowboset_traceprint_scalesPySys_WriteStdoutget_improveis_binaryis_presolveset_solutionlimitread_paramsset_rh_rangeis_negativeget_column__cxa_finalize@@GLIBC_2.2.5_initExitFcnset_anti_degenget_objectiveGetpMatrixget_nameindexget_origrow_nameset_obj_boundLprec_errorflagget_epsintis_scaletype__ctype_b_loc@@GLIBC_2.3read_freeMPSset_rowexset_epsperturb__sprintf_chk@@GLIBC_2.3.4set_epspivotprint_solutionPK!$hypdb/modules/statistics/__init__.pyPK!D`9hypdb/modules/statistics/cit.py from math import * import matplotlib.pyplot as plt import numpy as np import pandas as pd import scipy.special as special from FairDB.utils.read_data import read_from_csv # from rpy2.robjects.packages import importr import FairDB.modules.infotheo.info_theo as info from FairDB.utils.util import get_distinct,remove_dup from rpy2 import robjects as ro import time import random import sys from numpy import ceil,convolve,histogram,sqrt from random import randrange,choices from scipy.special import entr from scipy.stats import chi2 def entropy(X,base=e): #x=data[X].values #x=x.flatten() #freqlist = np.bincount(x) total=np.sum(X) probs =np.divide(X,total) ent=entr(probs) return np.sum(ent) def bootstrap_ci_ct(data, stat, num_samples=10000, conf=0.95): """ Bootstrap confidence interval computation on a contingency table Parameters ---------- data : Contingency table collected from independent samples stat : Statistic to bootstrap. Takes a contingency table as argument num_samples : Number of bootstrap samples to generate conf : Confidence level for the interval Returns ------- ci_low : The lower level of the confidence interval ci_high : The upper level of the confidence interval """ if isinstance(data, pd.DataFrame): data = data.values dim = data.shape data = data.flatten() data += 1 n = data.sum() # print 'Bootstrap on data of size {}'.format(n) probas = (1.0*data)/n # Obtain `num_samples' random samples of `n' multinomial values, sampled # with replacement from {0, 1, ..., n-1}. For each sample, rebuild a # contingency table and compute the stat. temp = np.random.multinomial(n, probas, size=num_samples) bs_stats = [row.reshape(dim) for row in temp] bs_stats = [stat(ct) for ct in bs_stats] alpha = 1-conf ci_low = np.percentile(bs_stats, 100*alpha/2) ci_high = np.percentile(bs_stats, 100*(1-alpha/2)) return ci_low, ci_high def ci_mi(g, dof, n, conf): p_low = 1-(1-conf)/2 p_high = (1-conf)/2 g_low = special.chndtrinc(g, dof, p_low) g_high = special.chndtrinc(g, dof, p_high) ci_low, ci_high = ((g_low+dof)/(2.0*n), (g_high+dof)/(2.0*n)) return ci_low, ci_high def ztst_proportion_two_samples(m1, v1, n1, m2, v2, n2, x=0, tail=1): z1 = ((m1 - m2) - x) z2 = sqrt((v1 / n1) + (v2 / n2)) z_score = abs(z1) / z2 p_value = stats.norm.cdf(z_score) p_value *= 2 return p_value, z_score def shuffle(data, x,z=[],groups=[]): df=data if z: df[x[0]]=groups.transform(np.random.permutation) #df[x] = df[x].transform(np.random.permutation) else: df[x]=df[x].transform(np.random.permutation) return df def fast_permutation_tst_cmi4(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1,optimized=False): if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r record = [] k = 0 localsample=100 start = time.time() stat_0=info.Info.CMI(data, x ,y, z) if z: if isinstance(z, str): z = [z for z in z.split(",")] res=dict() size=len(data.index) grouped = data.groupby(z+y+z) groupedsize=grouped.size() groupedname = groupedsize.index.values grouplist=groupedsize.tolist() pro=list() total=sum(grouplist) inclutiondic=dict() frac = fraction for item in grouplist: pro.insert(0, item / total) #print(item / total) pro.reverse() #prob=0 #groupedsize.tolist()/len(groupedsize.tolist()) if len(groupedname)>100: #sampledgroups=data.groupby(z).apply(lambda x: x.sample(frac=.1)) sampledgroups=groupedsize.sample(frac=frac, replace=False) #weights=pro else: sampledgroups = groupedsize #sampledgroups=groupedsize #sampledgroups=np.random.choice(groupedname, 100,replace=False,p=pro) #print('########################') #print(sum(pro)*total) #print(len(groupedsize.index.values)) #print(len(sampledgroups.index.values)) #print('########################') #for groups in np.nditer(sampledgroups): # print(groups) #print(sampledgroups) ##samplesize=len(groupedsize.index.values) #orgsize = len(sampledgroups.index.values) i=0 residual=0 for name in sampledgroups.index.values: tmp=sampledgroups[name] inclusion=frac #(tmp/total)/ subgroup=grouped.get_group(name) groupsize = len(subgroup.index) a=subgroup.groupby(x).size() b = subgroup.groupby(y).size() if not len(a)>=2 or not len(b)>=2: h_a = entropy(a) h_b = entropy(b) c = subgroup.groupby(x+y).size() residual+=((h_a+h_b-entropy(c))*groupsize/size)/inclusion continue a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) h_a = entropy(a) h_b = entropy(b) samples = r2dtable(localsample, a, b) record=[] for sample in samples: freq = np.array(sample).flatten() groupsize1 = freq.sum() #print(inclusion) mi_z = ((h_a+h_b-entropy(freq.tolist()))*groupsize/size)/inclusion record.insert(0,mi_z) res[name]=record print(i) record=[] end = time.time() print('time') print(end - start) for i in range(0, num_samples): cmi=residual for item in res.keys(): cmi+=res[item][random.randint(0, localsample-1)] record.insert(0, cmi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= cmi else: a = data.groupby(x).size() b = data.groupby(y).size() c= data.groupby(x+y).size() h_a=entropy(a) h_b=entropy(b) h_ab = entropy(c) stat_0=h_a+h_b-h_ab a=R('c'+str(tuple(a))) b=R('c' + str(tuple(b))) samples=r2dtable(num_samples,a,b) for sample in samples: freq=np.array(sample).flatten() mi = h_a+h_b-entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if debug: print(x) print(y) print(z) print(stat_0) print(k) plt.hist(record) plt.show() #time.sleep(1) #plt.close() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) print("#####") print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def con_permutation_tst_cmi(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1,optimized=False): if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r record = [] k = 0 localsample=100 start = time.time() stat_0=info.Info.CMI(data, x ,y, z) if z: if isinstance(z, str): z = [z for z in z.split(",")] res=dict() size=len(data.index) grouped = data.groupby(z) groupedsize=grouped.size() groupedname = groupedsize.index.values grouplist=groupedsize.tolist() pro=list() total=len(grouplist) inclutiondic=dict() frac = fraction for item in grouplist: pro.insert(0, item / total) #print(item / total) pro.reverse() #prob=0 #groupedsize.tolist()/len(groupedsize.tolist()) sampledgroups = groupedsize if fraction!=1: if len(groupedname)>100: #sampledgroups=data.groupby(z).apply(lambda x: x.sample(frac=.1)) sampledgroups=groupedsize.sample(n=int(frac*total), replace=False) #weights=pro else: pass #sampledgroups=groupedsize #sampledgroups=np.random.choice(groupedname, 100,replace=False,p=pro) #print('########################') #print(sum(pro)*total) #print(len(groupedsize.index.values)) #print(len(sampledgroups.index.values)) #print('########################') #for groups in np.nditer(sampledgroups): # print(groups) #print(sampledgroups) i=0 residual=0 hist_list=0 for name in sampledgroups.index.values: tmp=sampledgroups[name] inclusion=fraction# (tmp/total) subgroup=grouped.get_group(name) groupsize = len(subgroup.index) a=subgroup.groupby(x).size() b = subgroup.groupby(y).size() if not len(a)>=2 or not len(b)>=2: h_a = entropy(a) h_b = entropy(b) c = subgroup.groupby(x+y).size() residual+=((h_a+h_b-entropy(c))*groupsize/size)/inclusion continue a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) h_a = entropy(a) h_b = entropy(b) #print('table generation') start = time.time() samples = r2dtable(localsample, a, b) end = time.time() #print('time') #print(end - start) #print('table generated') i+=1 sys.stdout.write("Permuted samples ... %s%%\r" % (i*100/len(grouped))) sys.stdout.flush() record=[] for sample in samples: freq = np.array(sample).flatten() groupsize1 = freq.sum() #print(inclusion) mi_z = ((h_a+h_b-entropy(freq.tolist()))*groupsize/size)/inclusion record.insert(0,mi_z) if hist_list: hist=histogram(record,bins=100, normed=True) hist_list=convolve(hist,hist_list) else: hist_list=histogram(record,bins=100, normed=True) #plt.plot(X) #plt.show() print(X) res[name]=record #print(i) record=[] end = time.time() print('time') print(end - start) for i in range(0, num_samples): cmi=residual for item in res.keys(): cmi+=res[item][random.randint(0, localsample-1)] record.insert(0, cmi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= cmi else: a = data.groupby(x).size() b = data.groupby(y).size() c= data.groupby(x+y).size() h_a=entropy(a) h_b=entropy(b) h_ab = entropy(c) stat_0=h_a+h_b-h_ab a=R('c'+str(tuple(a))) b=R('c' + str(tuple(b))) samples=r2dtable(num_samples,a,b) for sample in samples: freq=np.array(sample).flatten() mi = h_a+h_b-entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if debug: print(x) print(y) print(z) print(stat_0) print(k) plt.hist(record) plt.show() #time.sleep(1) #plt.close() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def generate_permuated_mi2(x_margin,y_margin,prob,n): r2dtable = ro.r['r2dtable'] R = ro.r x_margin = R('c' + str(tuple(x_margin))) y_margin = R('c' + str(tuple(y_margin))) samples = r2dtable(n, x_margin, y_margin) record = [] for sample in samples: freq = np.array(sample).flatten() mi_z = ((entropy(x_margin) + entropy(y_margin) - entropy(freq.tolist())) * prob) record.insert(0, mi_z) ''' if len(np.unique(mi_z))<10: print(len(np.unique(mi_z))) print(mi_z) ''' return record def generate_permuated_mi(grouped,name,x,y,localsample,size,fraction): r2dtable = ro.r['r2dtable'] R = ro.r subgroup = grouped.get_group(name) groupsize = len(subgroup.index) a = subgroup.groupby(x).size() b = subgroup.groupby(y).size() residual=0 #print(groupsize) #print(name,a,b,groupsize) if not len(a) >= 2 or not len(b) >= 2: h_a = entropy(a) h_b = entropy(b) c = subgroup.groupby(x + y).size() residual += (h_a + h_b - entropy(c)) * groupsize / size *1/fraction return residual a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) h_a = entropy(a) h_b = entropy(b) if sum(a)!=sum(b): return 0 samples = r2dtable(localsample, a, b) #sys.stdout.write("Permuted samples ... %s%%\r" % (i * 100 / len(grouped))) #sys.stdout.flush() record = [] for sample in samples: freq = np.array(sample).flatten() mi_z = ((h_a + h_b - entropy(freq.tolist())) * groupsize / size) record.insert(0, mi_z) return record def smart_fast_permutation_tst_cmi4(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1, optimized=False): start = time.time() if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r record = [] k = 0 localsample=100 start = time.time() stat_0=info.Info.CMI(data, x ,y, z) if z: if isinstance(z, str): z = [z for z in z.split(",")] res=dict() size=len(data.index) row_num=get_distinct(data,x) col_num=get_distinct(data, y) grouped = data.groupby(z) groupedsize=grouped.size() df=pd.DataFrame({'group':groupedsize.index.values, 'size':groupedsize.values}) df=df.sort_values(by=['size'],ascending=False) groupedname = groupedsize.index.values grouplist=groupedsize.tolist() pro=list() total=len(grouplist) residual=0 entropy_vector=dict() sample_cont_tables=dict() indicator=dict() if debug: print(stat_0) counter = 0 totalgroups=len(grouplist) if debug: print('initialization time') print(end - start) start=time.time() for name in df['group']: counter+=1 p=len(indicator.keys()) #print(p) if len(indicator.keys())==num_samples-1: #pass break if sum(indicator.values()) >= pvalue*num_samples: pass #break subgroup = grouped.get_group(name) groupsize = len(subgroup.index) if groupsize<2: break #print(groupsize) for i in range(1, num_samples): if i in entropy_vector.keys(): if entropy_vector[i] >= stat_0: indicator[i]=1 #print(i,counter) continue #upper_bound=groupsize/size*1.3+entropy_vector[i] #print(groupsize,entropy_vector[i],upper_bound,entropy([1,1,1,1])) #upper_bound=100 #if upper_bound=stat_0: # k+=1 if debug: print('sampling completed') print(end - start) k=sum(list(indicator.values())) x=list(entropy_vector.values()) if debug: print(indicator) if debug: plt.hist(x) plt.show() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) if debug: print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def get_max_mi(x_marginal,y_marginal): #y_marginal=sorted(y_marginal,reverse=False) #x_marginal = sorted(x_marginal, reverse=True) total=sum(x_marginal) h_a=0 for x in x_marginal: if x: h_a+=-x/total *log(x/total) h_b=0 for x in y_marginal: if x: h_b+=-x/total *log(x/total) return min(h_a,h_b) if len(x_marginal)<2 or len(y_marginal)<2: return 0 a=x_marginal.copy() b = y_marginal.copy() row_number=len(a) col_number=len(b) counter=0 M = np.full([row_number, col_number], 0) for i in range(row_number-1,0, -1): col_counter=0 row_counter = i counter-=1 for j in range(col_number, 0, -1): if row_counter>=0 and col_counter<=col_number-1: #print(row_counter, col_counter) can=min(a[row_counter],b[col_counter]) M[row_counter,col_counter]=can #print(M) a[row_counter]-=can b[col_counter]-=can row_counter-=1 col_counter+=1 counter=0 for i in range(row_number - 1, 0, -1): col_counter = 1+counter row_counter = row_number-1 counter += 1 for j in range(0, col_number-col_counter, 1): if row_counter >= 0 and col_counter <= col_number - 1: #print(row_counter, col_counter) can = min(a[row_counter], b[col_counter]) M[row_counter, col_counter] = can #print(M) a[row_counter] -= can b[col_counter] -= can row_counter -= 1 col_counter += 1 freq = M.flatten() h_ab=0 for x in freq: if x: h_ab+=-x/total *log(x/total) mi = h_a + h_b - h_ab return mi ''' b.reverse() a=np.array(a) b = np.array(b) c= np.minimum(a,b) freq=c.tolist() while len(c)>0: a=np.subtract(a,c) b = np.subtract(b, c) b=b.tolist() b.reverse() b=np.array(b) a = a[~(a == 0)] b = b[~(b == 0)] c = np.minimum(a, b) freq+=c.tolist() print(freq) ''' def get_piv_ct_table(data,x,y,z,fraction): # create a contingacy table and some statistics regarding mutual information grouped = data.groupby(z) sampledgroups=grouped.size().index size=len(data.index) columns = ['groupname', 'prob', 'xmargin', 'ymargin', 'wmi','bound'] df = pd.DataFrame(columns=columns) if 1: ## create a group by object tmp=data.groupby(z+x).size() x_good_groups=tmp.groupby(z).size() tmp=data.groupby(z+y).size() y_good_groups=tmp.groupby(z).size() grouped = data.groupby(z) groupedsize = grouped.size() groupedname = groupedsize.index.values #print('orgi',len(groupedname)) grouplist = groupedsize x_good_groups=np.subtract(x_good_groups,np.repeat(1, len(x_good_groups))) y_good_groups = np.subtract(y_good_groups, np.repeat(1, len(y_good_groups))) good_groups=np.multiply(x_good_groups, y_good_groups) grouplist=np.multiply(good_groups,grouplist) total=sum(grouplist) goodindex=np.nonzero(grouplist) sampledgroups=groupedsize.ix[goodindex] ## sample from the groups if fraction<1: weights=grouplist.ix[goodindex].values weights=weights / np.sum(weights) gg=np.sum(weights) num=np.size(goodindex) print('xxxxx') print(num) if num==0: return df, size, 0 if num<50: sampledgroups = sampledgroups.index.values else: if num < 100: fraction = 1 else: fraction=1/num*fraction*200 if num>5000: fraction = 1 / num * fraction * 100 if num>10000: fraction = 1 / num * fraction /2 if gg==1: sampledgroups = sampledgroups.sample(frac=fraction, replace=False, weights=weights) elif gg!=0: sampledgroups = sampledgroups.sample(frac=fraction, replace=False) else: return df,size,0 sampledgroups=sampledgroups.index.values else: sampledgroups = sampledgroups.index.values #print(sampledgroups) ## compute the original conditional mutual information stat_0 = 0 #print('sampleorgi', len(sampledgroups)) for name in sampledgroups: try: subgroup=grouped.get_group(name) except: continue groupsize = len(subgroup.index) x_margin = subgroup.groupby(x).size() y_margin = subgroup.groupby(y).size() if len(x_margin)>=2 and len(y_margin)>=2: ### discard the group if it has zero entropy xy_margins = subgroup.groupby(x + y).size() prob = groupsize / size h_x=entropy(x_margin) h_y=entropy(y_margin) wmi = (h_x + h_y - entropy(xy_margins)) * prob bound=min(h_x,h_y)*prob df.loc[len(df)] = [name, prob, x_margin.values, y_margin.values, wmi,bound] stat_0 += wmi #print(len(df.index)) return df,size,stat_0 def get_ct_table(data,x,y,z,fraction,maxmc,cont=False, debug=False): # create a contingacy table and some statistics regarding mutual information start=time.time() g_grouped = data.groupby(remove_dup(x+y+z))['count'].sum().reset_index(name = "count") #print(len(g_grouped)) grouped =g_grouped.groupby(z)['count'].sum().reset_index(name = "count") groupsize=grouped['count'] size=sum(g_grouped['count']) columns = ['groupname', 'prob', 'xmargin', 'ymargin', 'wmi','bound'] df = pd.DataFrame(columns=columns) fre_xz=g_grouped.groupby(z+x)['count'].sum() x_good_groups=fre_xz.groupby(z).size() ## compute groups with non-zere H(z|x) #x_good_groups = x_good_groups - 2 #print(len(x_good_groups)) fre_yz=g_grouped.groupby(z+y)['count'].sum() y_good_groups = fre_yz.groupby(z).size() fre_xyz = g_grouped.groupby(z+x + y)['count'].sum() high_good_groups = fre_xyz.groupby(z).size() y_good_groups = fre_yz.groupby(z).size() #y_good_groups = y_good_groups - 2 #print(len(y_good_groups)) good_groups=np.multiply(x_good_groups, y_good_groups) good_groups[good_groups > 0]=1 fre_xy = g_grouped.groupby(x + y)['count'].sum() good_groups[good_groups <= 0] = 0 #good_groups=np.min(x_good_groups, y_good_groups) good_groups = np.multiply(good_groups, high_good_groups) groupsize=np.multiply(good_groups,groupsize) sampledgroups=groupsize[groupsize>0] #sampledgroups=np.nonzero(groupsize) #sampledgroups=groupsize.ix[goodindex] ## sample from the groups num = np.size(sampledgroups) # num of groups if debug: print('xxxxx') print(num) if num==0: return df, size, 0 #print(maxmc) if fraction<1 and num>10: weights=sampledgroups / np.sum(sampledgroups) n=log10(num)*log10(num)*20*fraction n=int(n) print(num) print(n) if n<50: sampledgroups = sampledgroups.sample(n=min(num,50), replace=False, weights=weights) elif n >300: sampledgroups = sampledgroups.sample(n=min(num, 300), replace=False, weights=weights) else: sampledgroups = sampledgroups.sample(n=n, replace=False, weights=weights) sampledgroups = sampledgroups.index.values if debug: print('xxxxx') print(len(sampledgroups)) else: sampledgroups = sampledgroups.index.values #print(sampledgroups) ## compute the original conditional mutual information end=time.time() stat_0 = 0 #print('sampleorgi', len(sampledgroups)) grouped = g_grouped.groupby(z) for name in sampledgroups: subgroup=grouped.get_group(name) groupsize = sum(subgroup['count']) x_margin = subgroup.groupby(x)['count'].sum() y_margin = subgroup.groupby(y)['count'].sum() if len(x_margin)>=2 and len(y_margin)>=2: ### discard the group if it has zero entropy xy_margins = subgroup.groupby(x + y)['count'].sum() prob = groupsize / size h_x=entropy(x_margin) h_y=entropy(y_margin) wmi = (h_x + h_y - entropy(xy_margins)) * prob bound=min(h_x,h_y)*prob df.loc[len(df)] = [name, prob, x_margin.values, y_margin.values, wmi,bound] stat_0 += wmi return df,size,stat_0 def ulti_fast_permutation_tst(data, x, y ,z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1, loc_num_samples=100, cont=False,view=True,maxmc=100,bin=100): ### covert input to list if ther are string if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] if view==False: data = data.groupby(remove_dup(x+y+z)).size() data = pd.DataFrame(data.reset_index(name="count")) ## number of simulated permutation test taken for each group localsample=loc_num_samples if z: if isinstance(z, str): z = [z] #row_num=get_distinct(daxta,x) ## compute frequency of x #col_num=get_distinct(data, y) ## compute frequency of y df, size, stat_0=get_ct_table(data,x,y,z,fraction,cont=cont,debug=debug,maxmc=maxmc) #create a k -way contingacy table #z_states=len(df.index) ''' if fraction<-1 and z_states>1000000000: par_z_states = int(len(df.index) * fraction) df = df.sort_values(by='wmi', ascending=False) # sort by the value of wmi df = df.reset_index(drop=True) resi=df.loc[par_z_states+1:z_states+1] df=df.loc[0:par_z_states] stat_0-=np.sum(resi['wmi']) ''' #df=df.sort_values(by='wmi',ascending=False) #sort by the value of wmi #print(df) #if fraction!=1: # #if len(df.index)>10000: #sampledgroups=data.groupby(z).apply(lambda x: x.sample(frac=.1)) # df=df.sample(frac=fraction, replace=False) #weights=pro # if debug: # print('samplegroup size') # print(len(df.index)) #print(df) #print(df) if debug: print(stat_0) per_margins=dict() counter = 0 x=[] if len(df.index)>0: for index, row in df.iterrows(): prob = row['prob'] x_margins = row['xmargin'] y_margins = row['ymargin'] counter+=1 ran_mi=generate_permuated_mi2(x_margins,y_margins,prob,loc_num_samples) #print(loc_num_samples) if loc_num_samples=stat_0: k += 1 else: k=num_samples else: record=list() k=0 x_margins = data.groupby(x)['count'].sum() y_margins = data.groupby(y)['count'].sum() if len(x_margins)<2 or len(y_margins)<2: return [1, 0] c = data.groupby(x+y)['count'].sum() h_a = entropy(x_margins) h_b = entropy(y_margins) h_ab = entropy(c) r2dtable = ro.r['r2dtable'] R = ro.r stat_0 = h_a + h_b - h_ab x_margins = R('c' + str(tuple(x_margins))) y_margins = R('c' + str(tuple(y_margins))) if sum(x_margins)!= sum(y_margins): return [-1,-1] samples = r2dtable(localsample, x_margins, y_margins) k=0 for sample in samples: freq = np.array(sample).flatten() mi = h_a + h_b - entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi x=record #for i in entropy_vector.values(): # if i>=stat_0: # k+=1 #print('sampling completed') #print(end - start) #print(indicator) if debug: print('original mutual', stat_0) plt.hist(x,bin) plt.show() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) if debug: print("#####") print(k) print((ci_low,ci_hight)) print("#####") # return [max(ci_hight, 1.0/num_samples),stat_0] return ci_low, ci_hight, stat_0 def ulti_fast_permutation_tst_cmi4(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1, k=100, optimized=False): ### covert input to list if ther are string start = time.time() if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] ## number of simulated permutation test taken for each group localsample=100 start = time.time() if z: if isinstance(z, str): z = [z] ## size of data size=len(data.index) #row_num=get_distinct(data,x) ## compute frequency of x #col_num=get_distinct(data, y) ## compute frequency of y df, size, stat_0=get_ct_table(data,x,y,z,fraction,debug=debug) #create a k -way contingacy table #df=df.sort_values(by='wmi',ascending=False) #sort by the value of wmi #print(df) #z_states=len(df.index) #if fraction<1 and z_states>10: # par_z_states = int(len(df.index) * fraction) # df = df.sort_values(by='wmi', ascending=False) # sort by the value of wmi # df = df.reset_index(drop=True) # resi=df.loc[par_z_states+1:z_states+1] # df=df.loc[0:par_z_states] # stat_0-=np.sum(resi['wmi']) #print(df) df = df.sort_values(by='bound', ascending=False) # sort by the value of wmi df=df.reset_index(drop=True) #print(df) partial_per_cmi=dict() ## keeps partial cmi on permuted samples sample_cont_tables=dict() ## keep permutation sample for each group indicator=dict() ## dictionary of incicators which records the p-value of each permuated sample bound_dic = dict() if debug: print(stat_0) #print('initialization time') #print(end - start) res=list() ## records the upper bounds ### compute the upper bound for the mutual information of each group times its probabality good_groups=list() redidual=0 ''' for index, row in df.iterrows(): name = row['name'] prob = row['prob'] x_margins = row['xmargin'] y_margins = row['ymargin'] #print(a.values,b.values) bound=groupsize/size* get_max_mi(x_margins.values,y_margins.values)*1/fraction if bound!=0: res.insert(0,bound) good_groups.insert(0, name) else: h_a = entropy(x_margins) h_b = entropy(y_margins) y_margins = subgroup.groupby(y).size() h_ab = entropy(y_margins) redidual =redidual+ groupsize / size *(h_a+h_b-h_ab) * 1 / fraction ''' counter = 0 sampleflags=np.arange(1, num_samples,1).tolist() upper_bound = sum(df['bound']) if len(df.index)>0: for index, row in df.iterrows(): name = row['groupname'] prob = row['prob'] x_margins = row['xmargin'] y_margins = row['ymargin'] counter+=1 ### check how manny p-values are computed ##p=len(indicator.keys()) #print(p) if len(sampleflags)==0: # checks if all permutaed samples are settled #pass break #print(len(sampleflags),index) check_ones=sum(indicator.values()) # checks if all we get enough evidance to rekect the null hypotheis if check_ones >= pvalue*num_samples: #pass break #print(len(sampleflags)) #print(counter) #print(len(df.index)) for i in sampleflags: if i in partial_per_cmi.keys(): if partial_per_cmi[i] >= stat_0: indicator[i]=1 sampleflags.remove(i) continue #print(counter) if index>0: bound= upper_bound+partial_per_cmi[i] if bound=stat_0: # k+=1 #print('sampling completed') #print(end - start) #print(indicator) if debug: plt.hist(x) plt.show() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) if debug: print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def smart_fast_permutation_tst_cmi4(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1, optimized=False): ### covert input to list if ther are string start = time.time() if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] ## number of simulated permutation test taken for each group localsample=100 start = time.time() ## compute the original conditional mutual information stat_0=info.Info.CMI(data, x ,y, z) if z: if isinstance(z, str): z = [z] ## size of data size=len(data.index) #row_num=get_distinct(data,x) ## compute frequency of x #col_num=get_distinct(data, y) ## compute frequency of y grouped = data.groupby(z) ## create a group by object groupedsize=grouped.size() ## this is a tupel which contain group names and group's dataframe ## sample from the group by object #### a dataframe which contains group name and their frequencies and sorted by the sizes df=pd.DataFrame({'group':groupedsize.index.values, 'size':groupedsize.values}) print('number of groups') print(len(df.index)) df=df[df['size']>2] print('number of groups') print(len(df.index)) df=df.sort_values(by=['size'],ascending=False) end=time.time() print('initialization',end-start) #### if fraction!=1: if len(groupedsize)>10000: #sampledgroups=data.groupby(z).apply(lambda x: x.sample(frac=.1)) groupedsize=groupedsize.sample(frac=fraction, replace=False) #weights=pro if debug: print('samplegroup size') print(len(groupedsize)) ## list of group sizes grouplist=groupedsize.tolist() entropy_vector=dict() ## keeps entropies sample_cont_tables=dict() ## keep permutation sample for each group indicator=dict() ## dictionary of incicators which records the p-value of each permuated sample if debug: print(stat_0) #print('initialization time') #print(end - start) res=list() ## records the upper bounds ### compute the upper bound for the mutual information of each group times its probabality good_groups=list() redidual=0 for name in df['group']: subgroup = grouped.get_group(name) groupsize = len(subgroup.index) a = subgroup.groupby(x).size() b = subgroup.groupby(y).size() #print(a.values,b.values) if (len(a) >= 2 and len(b) >= 2) and groupsize>10: bound=groupsize/size* get_max_mi(a.values,b.values)*1/fraction if bound!=0: res.insert(0,bound) good_groups.insert(0, name) else: h_a = entropy(a) h_b = entropy(b) b = subgroup.groupby(y).size() h_ab = entropy(b) redidual =redidual+ groupsize / size *(h_a+h_b-h_ab) * 1 / fraction res.reverse() #print(len(df.index)) df=df[df['group'].isin(good_groups)] #print(len(df.index)) k=0 ### compute the upper bound for the mutual information of each group times its probabality ### plues the upper bounds of the MI of smaller groups for i in range(0,len(res)): tmp=0 for j in range(i, len(res)): tmp+= res[j] res[i]=tmp ### #print(res) counter = 0 if len(df.index==0): for name in df['group']: counter+=1 ### check how manny p-values are computed p=len(indicator.keys()) #print(p) if p==num_samples-1: break check_ones=sum(indicator.values()) if check_ones >= pvalue*num_samples: break #subgroup = grouped.get_group(name) groupsize = len(subgroup.index) #if groupsize<2: # break #print(groupsize) for i in range(1, num_samples): if i in entropy_vector.keys(): if entropy_vector[i] >= stat_0-redidual: indicator[i]=1 #print(i,counter) #continue upper_bound=res[counter-1]+entropy_vector[i] if upper_bound=stat_0: # k+=1 #print('sampling completed') #print(end - start) #print(indicator) if debug: plt.hist(x) plt.show() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) if 1: print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] ''' record=np.array() end = time.time() print('time') print(end - start) for i in range(0, num_samples): cmi=residual for item in res.keys(): cmi+=res[item][random.randint(0, localsample-1)] np.insert(record, cmi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= cmi else: a = data.groupby(x).size() b = data.groupby(y).size() c= data.groupby(x+y).size() h_a=entropy(a) h_b=entropy(b) h_ab = entropy(c) stat_0=h_a+h_b-h_ab a=R('c'+str(tuple(a))) b=R('c' + str(tuple(b))) samples=r2dtable(num_samples,a,b) for sample in samples: freq=np.array(sample).flatten() mi = h_a+h_b-entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if debug: print(x) print(y) print(z) print(stat_0) print(k) plt.hist(record) plt.show() #time.sleep(1) #plt.close() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] ''' def fast_permutation_tst_cmi3(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1,optimized=False): if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r record = [] k = 0 localsample=100 start = time.time() inf=info.Info(data) stat_0=inf.CMI(x ,y, z) if z: if isinstance(z, str): z = [z for z in z.split(",")] res=dict() size=len(data.index) grouped = data.groupby(z) groupedsize=grouped.size() groupedname = groupedsize.index.values grouplist=groupedsize.tolist() pro=list() total=len(grouplist) inclutiondic=dict() frac = fraction for item in grouplist: pro.insert(0, item / total) #print(item / total) pro.reverse() #prob=0 #groupedsize.tolist()/len(groupedsize.tolist()) sampledgroups = groupedsize if debug: print('group size') print(len(groupedsize)) if fraction!=1: if len(groupedname)>100: #sampledgroups=data.groupby(z).apply(lambda x: x.sample(frac=.1)) sampledgroups=groupedsize.sample(n=int(frac*total), replace=False) #weights=pro if debug: print('samplegroup size') print(len(sampledgroups)) else: pass #sampledgroups=groupedsize #sampledgroups=np.random.choice(groupedname, 100,replace=False,p=pro) #print('########################') #print(sum(pro)*total) #print(len(groupedsize.index.values)) #print(len(sampledgroups.index.values)) #print('########################') #for groups in np.nditer(sampledgroups): # print(groups) i=0 residual=0 for name in sampledgroups.index.values: tmp=sampledgroups[name] inclusion=fraction# (tmp/total) subgroup=grouped.get_group(name) groupsize = len(subgroup.index) a=subgroup.groupby(x).size() b = subgroup.groupby(y).size() if not len(a)>=2 or not len(b)>=2: #h_a = entropy(a) #h_b = entropy(b) #c = subgroup.groupby(x+y).size() #residual+=((h_a+h_b-entropy(c))*groupsize/size)/inclusion continue a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) h_a = entropy(a) h_b = entropy(b) #print('table generation') start = time.time() if sum(a)==sum(b): samples = r2dtable(localsample, a, b) end = time.time() #print('time') #print(end - start) #print('table generated') i+=1 sys.stdout.write("Permuted samples ... %s%%\r" % (i*100/len(grouped))) sys.stdout.flush() record=[] for sample in samples: freq = np.array(sample).flatten() groupsize1 = freq.sum() #print(inclusion) mi_z = ((h_a+h_b-entropy(freq.tolist()))*groupsize/size)/inclusion record.insert(0,mi_z) res[name]=record #print(i) record=[] end = time.time() #print('time') #print(end - start) for i in range(0, num_samples): cmi=residual for item in res.keys(): cmi+=res[item][random.randint(0, localsample-1)] record.insert(0, cmi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= cmi else: a = data.groupby(x).size() b = data.groupby(y).size() c= data.groupby(x+y).size() h_a=entropy(a) h_b=entropy(b) h_ab = entropy(c) stat_0=h_a+h_b-h_ab a=R('c'+str(tuple(a))) b=R('c' + str(tuple(b))) samples=r2dtable(num_samples,a,b) for sample in samples: freq=np.array(sample).flatten() mi = h_a+h_b-entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if debug: print(x) print(y) print(z) print(stat_0) print(k) plt.hist(record) plt.show() #time.sleep(1) #plt.close() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def fast_permutation_tst_cmi4(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=5000, debug=False, fraction=1,optimized=False): if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r record = [] k = 0 localsample=100 start = time.time() stat_0=info.Info.CMI(data, x ,y, z) if z: if isinstance(z, str): z = [z for z in z.split(",")] res=dict() size=len(data.index) grouped = data.groupby(z) groupedsize=grouped.size() groupedname = groupedsize.index.values grouplist=groupedsize.tolist() pro=list() total=len(grouplist) inclutiondic=dict() frac = fraction for item in grouplist: pro.insert(0, item / total) #print(item / total) pro.reverse() #prob=0 #groupedsize.tolist()/len(groupedsize.tolist()) sampledgroups = groupedsize if debug: print('group size') print(len(groupedsize)) if fraction!=1: if len(groupedname)>100: #sampledgroups=data.groupby(z).apply(lambda x: x.sample(frac=.1)) sampledgroups=groupedsize.sample(n=int(frac*total), replace=False) #weights=pro if debug: print('samplegroup size') print(len(sampledgroups)) else: pass #sampledgroups=groupedsize #sampledgroups=np.random.choice(groupedname, 100,replace=False,p=pro) #print('########################') #print(sum(pro)*total) #print(len(groupedsize.index.values)) #print(len(sampledgroups.index.values)) #print('########################') #for groups in np.nditer(sampledgroups): # print(groups) i=0 residual=0 for name in sampledgroups.index.values: tmp=sampledgroups[name] inclusion=fraction# (tmp/total) subgroup=grouped.get_group(name) groupsize = len(subgroup.index) a=subgroup.groupby(x).size() b = subgroup.groupby(y).size() if not len(a)>=2 or not len(b)>=2: #h_a = entropy(a) #h_b = entropy(b) #c = subgroup.groupby(x+y).size() #residual+=((h_a+h_b-entropy(c))*groupsize/size)/inclusion continue a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) h_a = entropy(a) h_b = entropy(b) #print('table generation') start = time.time() if sum(a)==sum(b): samples = r2dtable(localsample, a, b) end = time.time() #print('time') #print(end - start) #print('table generated') i+=1 sys.stdout.write("Permuted samples ... %s%%\r" % (i*100/len(grouped))) sys.stdout.flush() record=[] for sample in samples: freq = np.array(sample).flatten() groupsize1 = freq.sum() #print(inclusion) mi_z = ((h_a+h_b-entropy(freq.tolist()))*groupsize/size)/inclusion record.insert(0,mi_z) res[name]=record #print(i) record=[] end = time.time() #print('time') #print(end - start) for i in range(0, num_samples): cmi=residual for item in res.keys(): cmi+=res[item][random.randint(0, localsample-1)] record.insert(0, cmi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= cmi else: a = data.groupby(x).size() b = data.groupby(y).size() c= data.groupby(x+y).size() h_a=entropy(a) h_b=entropy(b) h_ab = entropy(c) stat_0=h_a+h_b-h_ab a=R('c'+str(tuple(a))) b=R('c' + str(tuple(b))) samples=r2dtable(num_samples,a,b) for sample in samples: freq=np.array(sample).flatten() mi = h_a+h_b-entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if debug: print(x) print(y) print(z) print(stat_0) print(k) plt.hist(record) plt.show() #time.sleep(1) #plt.close() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) print("#####") print(k) print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def perf(a,b,num_samples): Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) exp=list() record=list() for i in range(100, num_samples,10000): print(i) start = time.time() samples = r2dtable(10000, a, b) end = time.time() record.insert(0, end-start) print(end-start) record.reverse() plt.plot(record) plt.show() def fast_permutation_tst_cmi(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=100, debug=False, optimized=False): Rstats = importr('stats') r2dtable = ro.r['r2dtable'] R = ro.r stat_0=0 record = [] k = 0 residual=0 stat_0 = info.Info.CMI(data, x, y, z) i=0 if z: res=dict() size=len(data.index) grouped = data.groupby(z) perf=list() for name, subgroup in grouped: groupsize = len(subgroup.index) a=subgroup.groupby(x).size() b = subgroup.groupby(y).size() if len(a)>=2 and len(b)>=2: a = R('c' + str(tuple(a))) b = R('c' + str(tuple(b))) print(a) print(b) h_a = entropy(a) h_b = entropy(b) #print('table generation') start = time.time() samples = r2dtable(num_samples, a, b) end = time.time() perf.insert(0,end) #print('time') #print(end - start) #print('table generated') record=[] for sample in samples: freq = np.array(sample).flatten() groupsize1 = freq.sum() mi_z = (h_a+h_b-entropy(freq.tolist()))*groupsize/size record.insert(0,mi_z) res[name]=record else: h_a = entropy(a) h_b = entropy(b) h_ab = entropy(subgroup.groupby(x+y).size()) residual+=h_a+h_b-h_ab #print(res) i+=1 sys.stdout.write("Permuted samples ... %s%%\r" % (i*100/len(grouped))) sys.stdout.flush() record=[] for i in range(0, num_samples): cmi=residual for item in res.keys(): cmi+=res[item][i] record.insert(0, cmi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= cmi else: a = data.groupby(x).size() b = data.groupby(y).size() c= data.groupby(x+y).size() h_a=entropy(a) h_b=entropy(b) h_ab = entropy(c) stat_0=h_a+h_b-h_ab a=R('c'+str(tuple(a))) b=R('c' + str(tuple(b))) samples=r2dtable(num_samples,a,b) for sample in samples: freq=np.array(sample).flatten() mi = h_a+h_b-entropy(freq.tolist()) record.insert(0, mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if debug: print(x) print(y) print(z) print(stat_0) print(k) plt.hist(record) plt.show() #time.sleep(1) #plt.close() pval = (1.0*k) / num_samples ci_low=pval-1.96 * sqrt(pval*(1-pval)/num_samples) ci_hight=pval+1.96 * sqrt(pval*(1-pval)/num_samples) print("#####") print((ci_low,ci_hight)) print("#####") return [max(ci_hight, 1.0/num_samples),stat_0] def permutation_tst_cmi(data, x, y, z=[], ratio=0.5, pvalue=0.05, num_samples=100, debug=False, optimized=False): if ratio<1: data = data.sample(frac=ratio, replace=False) # stat_0 = info.Info.CMI(data,x,y,z) if isinstance(x, str): x = [x] if isinstance(y, str): y = [y] if z: if isinstance(z, str): z = [z for z in z.split(",")] a = entropy(x + z) b = info.Info.entropy(tuple(y + z)) if a != 0 and b != 0: c = info.Info.entropy(tuple(x + y + z)) d = info.Info.entropy(tuple(z)) stat_0 = (a + b - c - d) else: stat_0 = 0 else: a = info.Info.entropy(tuple(x) ) b = info.Info.entropy(tuple(y) ) if a != 0 and b != 0: c = info.Info.entropy(tuple(x + y)) stat_0 = a + b - c else: stat_0 = 0 stat_1 = info.Info.CMI(x, y, z) record=[] cutoff=pvalue*num_samples k = 0 i=0 for _ in range(num_samples): permutation=data.copy() if z: groups=permutation.groupby(z)[x[0]] permutation=shuffle(permutation, x,z,groups) else: permutation = shuffle(permutation, x) c=info.Info.H(permutation, x + y+z) #print(info.Info.H(permutation, z)) if z: mi=(a + b - c - d) else: mi = (a + b- c) #mi = info.Info.CMI(permutation, x, y, z) record.insert(0,mi) # compute number of time that we get a permutation mi greater than the sample mutual information k += stat_0 <= mi if optimized: if k>cutoff: break if num_samples-i0: self.statevalues[att]= tmp.values def creataradomtable(self,name,p=20): # generate a random query wrt a tretament att # conn.cursor will return a cursor object, you can use this cursor to perform queries randomattval={} for att in self.statevalues.keys(): x = self.statevalues[att] x=x.tolist() if att!=self.treatment and att!=self.forceoverlap: n = randint(int(len(x)/2)+1, len(x)) randomattval[att]=sample(x,n) randomattval[self.treatment] = sample(self.statevalues[self.treatment].tolist(), self.treatmentlevel) x = randomattval[self.treatment] s = str(x).replace('[', '(') s = str(s).replace(']', ')') query = 'select {} from {} where {} in {} group by {} having ' \ 'count(distinct {})={}'.format(self.forceoverlap, self.table, self.treatment, s, self.forceoverlap, self.treatment,self.treatmentlevel) print(query) tmp = pd.read_sql_query(query, con=self.myConnection) res = tmp.values if len(res)>1: n = randint(2, len(res)) if n>15: n=randint(4, 10) randomattval[self.forceoverlap] = sample(res.tolist(),n) else: return 0 wherecluse='' counter=1 for att in randomattval.keys(): x=randomattval[att] s=str(x).replace('[','(') s=str(s).replace(']', ')') if counter==len(randomattval.keys()): wherecluse=wherecluse+'{} in {}'.format(att,s) else: wherecluse = wherecluse + '{} in {} AND '.format(att,s) counter=counter+1 #q1='DROP table if exists q{}; '.format(name) curs = self.myConnection.cursor() try: # curs.execute("DROP TABLE if exists q{}").format(name) #curs.execute(q1) q2='Create materialized view q{} as (Select * from {} where {})'.format(name, self.table, wherecluse) curs.execute(q2) self.myConnection.commit() print(q2) except Exception as inst: print(type(inst)) # the exception instance print(inst.args) # arguments stored in .args print(inst) #q1 = 'drop materialized view if exists sampleq{} cascade'.format(name) try: q3= 'Create materialized view sampleq{} as (Select * from q{} TABLESAMPLE BERNOULLI ({}))'.format(name,name,p) curs.execute(q3) self.myConnection.commit() except Exception as inst: print(type(inst)) # the exception instance print(inst.args) # arguments stored in .args print(inst) try: q0 = 'select count(distinct {}) from q{}'.format(self.treatment,name) res=curs.execute(q0) res=curs.fetchall() except Exception as inst: print(type(inst)) # the exception instance print(inst.args) # arguments stored in .args print(inst) if res[0][0]!=2: return 0 else: return ['q'+str(name),q2] #return the name of a table and the query used to create it def deletetable(self,name): curs = self.myConnection.cursor() q1="DROP materialized view if exists {} cascade".format(name) q2 = "DROP materialized view if exists sampleq{} cascade".format(name) curs.execute(q1) curs.execute(q2) self.myConnection.commit()PK!__hypdb/utils/read_data.pyimport pandas as pd import psycopg2 def read_from_csv(filename, sep=None, header=0, to_drop=None): """ Load data from csv into a FairDB friendly format Parameters: ----------- filename : abs path of the csv sep : data separator (regex or string) header : number of header lines to drop to_drop : opt A list with attributes (columns) to drop from the loaded data Returns ------- data : the loaded dataset """ try: if sep: _sep = sep else: _sep = r'\s*,\s*' data = pd.read_csv(filename, header=header, sep=_sep, engine='python', na_values="?") if to_drop: for attribute in to_drop: data = data.drop(attribute, axis=1) except IOError: print("Error: Cannot open file \"%s\"" % filename) raise except Exception as inst: print("Error: {} loading data from file {}".format(inst, filename)) raise return data def read_from_db(relation, condition=None,host='localhost', user='bsalimi', password='1', dbname='postgres'): Connection = psycopg2.connect(host=host, user=user, password=password, dbname=dbname) try: if condition == None: query = 'SELECT * FROM {}'.format(relation) else: query = 'SELECT * FROM {} where {}'.format(relation, condition) df = pd.read_sql_query(query, con=Connection) except Exception as inst: print("Error: {} loading data from database {}".format(inst, relation)) raise return dfPK!?,hypdb/utils/util.pyimport numpy as np import pandas as pd def list2string(list): return str(list).replace('[]', '').replace('[', '').replace(']', '').replace("'", '').replace(" ","") def dict_to_rank(x,loc): sorted_x = reversed(sorted(x.items(), key=lambda e: e[1][loc])) out_dict = {} old=-1 i=0 for idx, (key, item) in enumerate(sorted_x): if old==item[loc]: out_dict[key] = i else: out_dict[key] = i+1 i=i+1 old=item[loc] #print(sorted(out_dict.items(), key=lambda x: x[1])) return out_dict def top_kdict(dic,k): kv_list=sorted(dic.items(), key=lambda x: x[1]) kv_list=kv_list[-k:] kv_list=dict(kv_list) return list(kv_list.keys()) def unique_rows(a): a = np.ascontiguousarray(a) unique_a = np.unique(a.view([('', a.dtype)]*a.shape[1])) return unique_a.view(a.dtype).reshape((unique_a.shape[0], a.shape[1])) def remove_dup(lst): lst=set(lst) return list(lst) def get_distinct(data,att): #print('#################') #print(att) #print(type(att)) ##data=np.array(data[att]) #dtype = data.dtype.descr * ncols #struct = data.view(dtype) freqlist = data.groupby(att).size() #uniq = np.unique(struct) #uniq = uniq.view(data.dtype).reshape(-1, ncols) #states=np.unique(data[att]) #df= data[att].drop_duplicates() #print(freqlist) return len(freqlist) def printTable(myDict, colList=None): """ Pretty print a list of dictionaries (myDict) as a dynamically sized table. If column names (colList) aren't specified, they will show in random order. Author: Thierry Husson - Use it as you want but don't blame me. """ if not colList: colList = list(myDict[0].keys() if myDict else []) myList = [colList] # 1st row = header for item in myDict: myList.append([str(item[col] or '') for col in colList]) colSize = [max(map(len,col)) for col in zip(*myList)] formatStr = ' | '.join(["{{:<{}}}".format(i) for i in colSize]) myList.insert(1, ['-' * i for i in colSize]) # Seperating line for item in myList: print(formatStr.format(*item)) def bining(df,att,bins,group_names=False): df[att] = pd.cut(df[att], bins, labels=group_names) return dfPK!HW"TThypdb-0.0.5.dist-info/WHEEL A н#J."jm)Afb~ ڡ5 G7hiޅF4+-3ڦ/̖?XPK!H#1hypdb-0.0.5.dist-info/METADATATMo8W K ؒ?VH؋ibNE@)q,HPH̛ؒyq+LaOkVc <q|o),a׃06hUup)vs5_ñ+׊eqUc0ѣ÷DoT#͊ 9m$)+,U,AP&]ؤ%6} )^UFo+h޸R:6tO#RAٴ1&F',>hQ1kN @̵6yx'}'!k Z,yxK#~{qcQºjt\%28~}1lx>#ό?CeSg,U<_ C Z3ol:On,\b< 4A jO]=j67B;BIҍ^S>f莫VFQ?IѶv+Ԋ7B%!G_ pʟ;e| sh1YVb{(4LLT3<AOI|nhL5 d%DU{-ben$'hǏi'Ptx$ t N5f~ ](.**vNКѭz9-˵,N?uL4V_ؒ2AhY[1*03#|FFkCFpD?ja탿g֡I7v;QO=Q9~R5 !3L%5w;j A2zǴk F ڍ!/OH]I!8uPK!HNQ hypdb-0.0.5.dist-info/RECORDrY<,IHb b/veݧo"̪̿2=奄]#8f("(O* gX#Qtf0TmC>Ho$df.y E46ZoǢdIJ1r %4t@\ZG1RWZ\M3wN>j2[p2~_l㩺z'\E3b1 ңZv5 I3uQ}ZwL ǣX^>@,'"3YƜ(:$C@MHo;s(q%LA.s|(} o-bViZl 0T!`kX ` Q{ϰr݁ǯi`M7v }X5$UP4޳> p8ת4m2G%t+k6!| JPC-DAw?^䯬~)8p4qL'QnLKArUTGݏ5h+]=zqP-2jyҢ> a\dI`>ʌ"r?+bYdMWūY !H"*/Fg5pjnC`  Y^LLOP{_ ?X1!ъ@٢Н Z;z&ktG}= iӮ~ӹ4ɺ)xn+ڗ~Qb's@C:aєx3[:\Spr'aJ^a)&?j2AMC,e6d(&<*O))()U~9K> ; & ;4eȬlf;|oelȤ0C[}YwQ?wԙicM kV„-6,@Q8m%qyU5\$??цYh\dn;Cl;\Drvh4 KtիPam11dGSDd41 hF~Q{%O+qJ}Ȧ[]8'rdy#{[kohTYAF与v;&Em`wï^{7jh(y`,MZRm6ׂ&wҰ9p, _Ӧ_|{ʙف6%?撖v{AML?V#>OwHe^ p/p>r=ͤ`Y6_e 0/VG|&Yͅ3@UDY#S2>|$;!h u-̕Ť{F\dNmbN-'J"Rj,Ds|w.GP6vT#}6rq?:"V7+iJ0'lrLph8['*bpJW[DN jXM4=۰]ӟHCp'vW]g[k4LFG>MDTs\+ˀ0VD|lѸpBs-YºゴavKdrf(DNcEVʓ 5; r%9i,F(b)q xGW>qf MHuCGWSS(RapF€{YƇ7x_>>և|#;7v^ : k=bʡf*suNt77і^ vӥ}~D_oE}Ib<\p1ZӑxA6i;ɚD4urVl49MI9*!?  ?AOS]? iagowͱ?[& и:Ojx IU(V]eMx`P2mkhz[ި;D V#h\˛+n.7[?eA,Z.yz?,ewL׵.mܞ$nۭj|p(en1a ʬlr YSR[p%˲*y"Ə D0zM뽺PK!Uhypdb/__init__.pyPK!V$=hypdb/core/MultipleTrreatmentTest.pyPK!hypdb/core/__init__.pyPK!e> > Khypdb/core/att_filtering.pyPK!chypdb/core/cov_selection.pyPK!Gshypdb/core/explanation.pyPK!|0Qdhypdb/core/matching.pyPK!vi##>hypdb/core/query.pyPK!i"7hypdb/modules/lpsolve_dev/lp_lib.hPK!:b//% hypdb/modules/lpsolve_dev/lp_matrix.hPK!+^PP$;hypdb/modules/lpsolve_dev/lp_mipbb.hPK!s&&$!Dhypdb/modules/lpsolve_dev/lp_types.hPK!!BsPP$jhypdb/modules/lpsolve_dev/lp_utils.hPK!Nffthypdb/modules/pyrankagg/LICENSEPK!Y;A#hypdb/modules/pyrankagg/MANIFEST.inPK!Dnhypdb/modules/pyrankagg/READMEPK!S=44#vhypdb/modules/pyrankagg/__init__.pyPK! 66$hypdb/modules/pyrankagg/agreement.pyPK!S=447chypdb/modules/pyrankagg/build/lib/pyrankagg/__init__.pyPK! 668hypdb/modules/pyrankagg/build/lib/pyrankagg/agreement.pyPK!U2&&@xhypdb/modules/pyrankagg/build/lib/pyrankagg/linear_assignment.pyPK!Dhh6hypdb/modules/pyrankagg/build/lib/pyrankagg/metrics.pyPK!Xی6hypdb/modules/pyrankagg/build/lib/pyrankagg/rankagg.pyPK!=hypdb/modules/pyrankagg/build/lib/pyrankagg/tests/__init__.pyPK![ SLSL=hypdb/modules/pyrankagg/build/lib/pyrankagg/tests/runtests.pyPK!D8' E7"hypdb/modules/pyrankagg/build/lib/pyrankagg/tests/test_aggregation.pyPK!5SSAC"hypdb/modules/pyrankagg/build/lib/pyrankagg/tests/test_metrics.pyPK!8Soff&G"hypdb/modules/pyrankagg/kbutil/LICENSEPK!6! *KN"hypdb/modules/pyrankagg/kbutil/MANIFEST.inPK!V%N"hypdb/modules/pyrankagg/kbutil/READMEPK!B66*P"hypdb/modules/pyrankagg/kbutil/__init__.pyPK!ć~< < *Q"hypdb/modules/pyrankagg/kbutil/listutil.pyPK!++*["hypdb/modules/pyrankagg/kbutil/plotting.pyPK!@l^ &"hypdb/modules/pyrankagg/kbutil/rand.pyPK!xx'n"hypdb/modules/pyrankagg/kbutil/setup.pyPK!+I::,+"hypdb/modules/pyrankagg/kbutil/statistics.pyPK!U2&&,q"hypdb/modules/pyrankagg/linear_assignment.pyPK!Dhh""hypdb/modules/pyrankagg/metrics.pyPK!Xی"t"hypdb/modules/pyrankagg/rankagg.pyPK!5 @#hypdb/modules/pyrankagg/setup.pyPK!)}"#hypdb/modules/pyrankagg/tests/__init__.pyPK![ SLSL)"#hypdb/modules/pyrankagg/tests/runtests.pyPK!D8' 1^o&hypdb/modules/pyrankagg/tests/test_aggregation.pyPK!5SS-{&hypdb/modules/pyrankagg/tests/test_metrics.pyPK!'K&hypdb/modules/site-packages/__init__.pyPK!E  '&hypdb/modules/site-packages/lp_maker.pyPK!h 'ۈ&hypdb/modules/site-packages/lp_solve.pyPK!4e_6ړ&hypdb/modules/site-packages/lpsolve55-5.5.0.9.egg-infoPK!ntvv4'&hypdb/modules/site-packages/lpsolve55.cpython-34m.soPK!$ -hypdb/modules/statistics/__init__.pyPK!D`9R -hypdb/modules/statistics/cit.pyPK!F.JJ-.hypdb/modules/statistics/contingancy_table.pyPK!|..hypdb/utils/_init__.pyPK!tI  %.hypdb/utils/random_query_generator.pyPK!__K&.hypdb/utils/read_data.pyPK!?,,.hypdb/utils/util.pyPK!HW"TT6.hypdb-0.0.5.dist-info/WHEELPK!H#16.hypdb-0.0.5.dist-info/METADATAPK!HNQ h:.hypdb-0.0.5.dist-info/RECORDPKQQdE.