From 9f75d3e345c162a1f5d49fb39dbf9d3ba533efa5 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 23 Apr 2019 11:11:33 +0200 Subject: [PATCH] Updating to last version --- ajpastor/dd_functions/toDiffAlgebraic.py | 99 +- ajpastor/dd_functions/toDiffAlgebraic.py.Zb1982 | 1180 +++++++++++++++++++ ajpastor/dd_functions/toDiffAlgebraic.py.jd2153 | 1187 ++++++++++++++++++++ releases/diff_defined_functions.zip | Bin 144641 -> 169347 bytes releases/diff_defined_functions__0.6.zip | Bin 144641 -> 169347 bytes ...f_defined_functions__0.6__19.04.23_11:11:32.zip | Bin 0 -> 169347 bytes 6 files changed, 2465 insertions(+), 1 deletion(-) create mode 100644 ajpastor/dd_functions/toDiffAlgebraic.py.Zb1982 create mode 100644 ajpastor/dd_functions/toDiffAlgebraic.py.jd2153 create mode 100644 releases/old/diff_defined_functions__0.6__19.04.23_11:11:32.zip diff --git a/ajpastor/dd_functions/toDiffAlgebraic.py b/ajpastor/dd_functions/toDiffAlgebraic.py index 7ecfdbf..7eddad5 100644 --- a/ajpastor/dd_functions/toDiffAlgebraic.py +++ b/ajpastor/dd_functions/toDiffAlgebraic.py @@ -70,6 +70,13 @@ def infinite_derivative(element, times=1, var=x, _infinite=True): except AttributeError: return 0; + ##Simple call: parent is a Fraction Field + if(is_FractionField(parent)): + parent = parent.base(); + n = parent(element.numerator()); dn = infinite_derivative(n); + d = parent(element.denominator()); dd = infinite_derivative(d); + return (dn*d - n*dd)/d**2; + ## Simple call: not an InfinitePolynomialRing if(not is_InfinitePolynomialRing(parent)): try: @@ -1114,6 +1121,96 @@ def Exponential_polynomials(n, parent): prev = Exponential_polynomials(n-1,parent); return infinite_derivative(prev) + y[0]*prev; +@cached_function +def Logarithmic_polynomials(n, parent): + if(n < 0): + raise ValueError("No Logarithmic polynomial can be computed for non-positive index"); + elif(not(is_InfinitePolynomialRing(parent))): + return Logarithmic_polynomials(n, InfinitePolynomialRing(parent, "y")); + + y = parent.gens()[0]; + + if(n == 0): + return y[1]/y[0]; + else: + return infinite_derivative(Logarithmic_polynomials(n-1, parent)); + +def change_variable(poly, new_var): + parent = poly.parent(); + if(not (new_var in parent.fraction_field())): + raise TypeError("The new value must be in the same InfinitePolynomialRing"); + elif(not is_InfinitePolynomialRing(parent)): + raise TypeError("The parent must be an InfinitePolynomialRing"); + + gens = poly.polynomial().parent().gens(); + + index = [get_InfinitePolynomialRingGen(parent, v, True)[1] for v in gens]; m = max(index); + derivatives = [new_var]; + for i in range(m): + derivatives += [infinite_derivative(derivatives[-1])]; + to_plug = [derivatives[i] for i in index]; + + return parent.fraction_field()(poly.polynomial()(**{str(gens[i]) : to_plug[i] for i in range(len(gens))})); + +def is_Riccati(poly): + ''' + Method that checks if a non-linear differential equation is of Riccatti type + and returns the change of coordinates and the linear differential equation in case + we can. + ''' + poly = fromFinitePolynomial_toInfinitePolynomial(poly); + parent = poly.parent(); y = parent.gens()[0]; + var = poly.polynomial().parent().gens(); index = [get_InfinitePolynomialRingGen(parent, v, True)[1] for v in var]; + order = max(index); + + ## Checking the degree of y[0] is appropriate in the therm of y[order-1] + try: + if(not poly.degrees()[var.index(y[order-1])] == 1): + raise ValueError("The degree of the function in the equation is not valid"); + except: + raise TypeError("Error getting the degree of the function in the equation"); + + C = poly.coefficient(y[order-1]*y[0]); + ## Simple case: no element inside or is not in the base field + if(C == 0 or (not C in parent.base())): + return False, poly; + + ## The coefficient is in the appropriate place + try: + if(C.derivative(x) != 0): + new_eq = change_variable(poly, y[0]/C)*C; + print "Recursion in Raccati, new equation: %s" %new_eq; + return is_Riccati(new_eq); + except: + # Impossible to compute the derivative -- Assuming zero + pass; + + ## Computing the constant + C = C/(order+1); + + to_plug = [Logarithmic_polynomials(i, parent)/C for i in index]; + + new_poly = poly.polynomial()(**{str(var[i]): to_plug[i] for i in range(len(var))}); + + if(is_FractionField(new_poly.parent())): + new_poly = new_poly.numerator(); + if(is_InfinitePolynomialRing(new_poly.parent())): + new_poly = new_poly.polynomial(); + + var = new_poly.parent().gens(); min_degree = {v:new_poly.degree() for v in var}; + for m in new_poly.monomials(): + for v in var: + d = m.degree(v); + if(d < min_degree[v]): + min_degree[v] = d; + gcd = prod([v**min_degree[v] for v in var], new_poly.parent().one()); + new_poly = new_poly.parent()(new_poly/gcd); + + if(new_poly.degree() == 1): + return True, new_poly; + + return False, new_poly; + ################################################################################################### ### Private functions ################################################################################################### @@ -1123,7 +1220,7 @@ def __dprint(obj, _debug): #################################################################################################### #### PACKAGE ENVIRONMENT VARIABLES #################################################################################################### -__all__ = ["is_InfinitePolynomialRing", "get_InfinitePolynomialRingGen", "infinite_derivative", "diffalg_reduction", "toDifferentiallyAlgebraic_Below", "diff_to_diffalg", "inverse_DA", "func_inverse_DA", "guess_DA_DDfinite", "guess_homogeneous_DNfinite", "FaaDiBruno_polynomials", "Exponential_polynomials"]; +__all__ = ["is_InfinitePolynomialRing", "get_InfinitePolynomialRingGen", "infinite_derivative", "diffalg_reduction", "toDifferentiallyAlgebraic_Below", "diff_to_diffalg", "inverse_DA", "func_inverse_DA", "guess_DA_DDfinite", "guess_homogeneous_DNfinite", "FaaDiBruno_polynomials", "Exponential_polynomials", "Logarithmic_polynomials", "is_Riccati", "change_variable"]; # Extra functions for debugging def simplify_coefficients(base, coeffs, derivatives, _debug=True): diff --git a/ajpastor/dd_functions/toDiffAlgebraic.py.Zb1982 b/ajpastor/dd_functions/toDiffAlgebraic.py.Zb1982 new file mode 100644 index 0000000..a22b666 --- /dev/null +++ b/ajpastor/dd_functions/toDiffAlgebraic.py.Zb1982 @@ -0,0 +1,1180 @@ + +from sage.all_cmdline import * # import sage library + +from sage.graphs.digraph import DiGraph; + +from sage.rings.polynomial.polynomial_ring import is_PolynomialRing; +from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing; +from sage.rings.fraction_field import is_FractionField; + +from ajpastor.dd_functions.ddFunction import *; +from ajpastor.dd_functions.ddExamples import *; +from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing; + +from ajpastor.misc.matrix import matrix_of_dMovement; +from ajpastor.misc.matrix import differential_movement; + +################################################################################ +### +### Utilities functions for InfinitePolynomialRings +### +################################################################################ +def is_InfinitePolynomialRing(parent): + from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing_dense as dense; + from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing_sparse as sparse; + + return isinstance(parent, dense) or isinstance(parent, sparse); + +def get_InfinitePolynomialRingGen(parent, var, with_number = False): + for gen in parent.gens(): + spl = str(var).split(repr(gen)[:-1]); + if(len(spl) == 2): + if(with_number): + return (gen, int(spl[1])); + else: + return gen; + return None; + +#### TODO: Review this function +def infinite_derivative(element, times=1, var=x, _infinite=True): + ''' + Method that takes an element and compute its times-th derivative + with respect to the variable given by var. + + If the element is not in a InfinitePolynomialRing then the method + 'derivative' of the object will be called. Otherwise this method + returns the derivative following the rules: + - The coefficients of the polynomial ring are differentiated using + a recursive call to this method (usually this leads to a call of the + method '.derivative' of that coefficient). + - Any variable "#_n" appearing in the InfinitePolynomialRing has + as derivative the variable "#_{n+1}", i.e., the same name but with + one higher index. + ''' + ## Checking the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + if(not ((times in ZZ) and times >=0)): + raise ValueError("The argument 'times' must be a non-negative integer"); + elif(times > 1): # Recursive call + return infinite_derivative(infinite_derivative(element, times-1)) + elif(times == 0): # Empty call + return element; + + ## Call with times = 1 + try: + parent = element.parent(); + except AttributeError: + return 0; + + ## Simple call: not an InfinitePolynomialRing + if(not is_InfinitePolynomialRing(parent)): + try: + try: + return element.derivative(var); + except Exception: + return element.derivative(); + except AttributeError: + return parent.zero(); + + ## IPR call + ## Symbolic case? + if(sage.symbolic.ring.is_SymbolicExpressionRing(parent.base())): + raise TypeError("Base ring for the InfinitePolynomialRing not valid (found SymbolicRing)"); + ## Zero case + if(element == 0): + return 0; + ### Monomial case + if(element.is_monomial()): + ## Case of degree 1 (add one to the index of the variable) + if(len(element.variables()) == 1 and element.degree() == 1): + g,n = get_InfinitePolynomialRingGen(parent, element, True); + return r_method(g[n+1]); + ## Case of higher degree + else: + # Computing the variables in the monomial and their degrees (in order) + variables = element.variables(); + degrees = [element.degree(v) for v in variables]; + variables = [parent(v) for v in variables] + ## Computing the common factor + com_factor = prod([variables[i]**(degrees[i]-1) for i in range(len(degrees))]); + ## Computing the derivative of each variable + der_variables = [infinite_derivative(parent(v)) for v in variables]; + + ## Computing the particular part for each summand + each_sum = []; + for i in range(len(variables)): + if(degrees[i] > 0): + part_prod = prod([variables[j] for j in range(len(variables)) if j != i]); + each_sum += [degrees[i]*infinite_derivative(parent(variables[i]))*part_prod]; + + ## Computing the final result + return r_method(com_factor*sum(each_sum)); + ### Non-monomial case + else: + coefficients = element.coefficients(); + monomials = [parent(el) for el in element.monomials()]; + return r_method(sum([infinite_derivative(coefficients[i])*monomials[i] + coefficients[i]*infinite_derivative(monomials[i]) for i in range(len(monomials))])); + +################################################################################ +### +### Changes from and to InfinitePolynomialRings and MultivariatePolynomialRings +### +################################################################################ +def fromInfinityPolynomial_toFinitePolynomial(poly): + if(not is_InfinitePolynomialRing(poly.parent())): + return poly; + + gens = poly.variables(); + base = poly.parent().base(); + + parent = PolynomialRing(base, gens); + return parent(str(poly)); + +def fromFinitePolynomial_toInfinitePolynomial(poly): + parent = poly.parent(); + if(is_InfinitePolynomialRing(poly) and (not is_MPolynomialRing(parent))): + return poly; + + + names = [str(el) for el in poly.parent().gens()]; + pos = names[0].rfind("_"); + if(pos == -1): + return poly; + prefix = names[0][:pos]; + if(not all(el.find(prefix) == 0 for el in names)): + return poly; + R = InfinitePolynomialRing(parent.base(), prefix); + return R(poly); + +################################################################################ +### +### Methods for computing Diff. Algebraic equations with simpler coefficients +### +################################################################################ +def diffalg_reduction(poly, _infinite=False, _debug=False): + ''' + Method that recieves a polynomial 'poly' with variables y_0,...,y_m with coefficients in some ring DD(R) and reduce it to a polynomial + 'result' with coefficients in R where, for any function f(x) such that poly(f) == 0, result(f) == 0. + + The algorithm works as follows: + 1 - Collect all the coefficients and their derivatives + 2 - Perform the simplification to each pair of coefficients + 3 - Perform the simplification for the last derivatives of the remaining coefficients --> gens + 4 - Build the final derivation matrix for 'gens' + 5 - Create a vector v for represent 'poly' w.r.t. 'gens' + 6 - Build a square matrix --> M = (v | v' | ... | v^(n)) + 7 - Return det(M) + + INPUT: + - poly: a polynomial with variables y_0,...,y_m. Also an infinite polynomial with variable y_* is valid. + - _infinite: if True the result polynomial will be an infinite polynomial. Otherwise, a finite variable polynomial will be returned. + - _debug: if True, the steps of the algorithm will be printed. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ### Preprocessing the input poly + parent, poly, dR = __check_input(poly, _debug); + + if(not is_DDRing(dR)): + raise TypeError("diffalg_reduction: polynomial is not over a DDRing"); + + R = dR.base(); + + ## Step 1: collecting function and derivatives + __dprint("---- DEBUGGING PRINTING FOR diffalg_reduction", _debug); + __dprint("R: %s" %R, _debug); + __dprint("-- Starting step 1", _debug); + coeffs = poly.coefficients(); # List of original coefficients + __dprint("Coefficients: %s" %("["+reduce(lambda p,q : p+", "+q, [repr(coeff) for coeff in coeffs])+"]"), _debug); + + ocoeffs = coeffs; # Extra variable with the same list + monomials = poly.monomials(); # List of monomials + l_of_derivatives = [[f.derivative(times=i) for i in range(f.getOrder())] for f in coeffs]; # List of derivatives for each coefficient + + ## Step 2: simplification of coefficients + __dprint("-- Starting step 2", _debug); + graph = __simplify_coefficients(R, coeffs, l_of_derivatives, _debug); + maximal_elements = __digraph_roots(graph, _debug); + + ## Detecting case: all coefficients are already simpler + if(len(maximal_elements) == 1 and maximal_elements[0] == -1 and len(graph.outgoing_edges(-1)) == len(graph.edges())): + __dprint("Detected simplicity: returning the same polynomial over the basic ring", _debug); + return r_method(InfinitePolynomialRing(R, names=["y"])(poly)); + + # Reducing the considered coefficients + coeffs = [coeffs[i] for i in maximal_elements if i != (-1)]; + l_of_derivatives = [l_of_derivatives[i] for i in maximal_elements if i != (-1)]; + + ## Step 3: simplification with the derivatives + __dprint("-- Starting step 3", _debug); + drelations = __simplify_derivatives(l_of_derivatives, _debug); + + ## Building the vector of final generators + gens = []; + if(-1 in maximal_elements): + gens = [1]; + gens = sum([l_of_derivatives[i][:drelations[i][0]] for i in range(len(coeffs))], gens); + S = len(gens); + __dprint("Resulting vector of generators: %s" %gens, _debug); + + ## Step 4: build the derivation matrix + __dprint("-- Starting step 4", _debug); + C = __build_derivation_matrix(gens, coeffs, drelations, _debug); + cR = InfinitePolynomialRing(C.base_ring(), names=["y"]); + + ## Step 5: build the vector v + __dprint("-- Starting step 5", _debug); + v = __build_vector(ocoeffs, monomials, graph, drelations, cR, _debug); + + ## Step 6: build the square matrix M = (v, v',...) + __dprint("-- Starting step 6", _debug); + __dprint("Computing derivatives from the vector (step 5) using the matrix (step 4)", _debug); + derivative = infinite_derivative; + M = matrix_of_dMovement(C, v, derivative, S); + + __dprint("Vector of generators:\n\t%s" %gens, _debug); + __dprint("Final matrix (vector in rows):\n\t%s" %(str(M.transpose()).replace('\n', '\n\t')), _debug); + __dprint("Returning the determinant", _debug); + __dprint("---- DEBUGGING PRINTING FOR diffalg_reduction (finished)", _debug); + return r_method(M.determinant()); + +################################################################################ +################################################################################ +### Some private methods for diffalg_reduction +################################################################################ +################################################################################ + +def __check_input(poly, _debug=False): + ''' + Method that check and cast the polynomial input accordingly to our standards. + + The element 'poly' must be a polynomial with variables y_0,...,y_m with coefficients in some ring + ''' + parent = poly.parent(); + if(not is_InfinitePolynomialRing(parent)): + if(not is_MPolynomialRing(parent)): + if(not is_PolynomialRing(parent)): + raise TypeError("__check_input: the input is not a valid polynomial. Obtained something in %s" %parent); + if(not str(parent.gens()[0]).startswith("y_")): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + parent = InfinitePolynomialRing(parent.base(), "y"); + else: + gens = list(parent.gens()); + to_delete = []; + for gen in gens: + if(str(gen).startswith("y_")): + to_delete += [gen]; + if(len(to_delete) == 0): + raise TypeError("__check_input: the input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + for gen in to_delete: + gens.remove(gen); + parent = InfinitePolynomialRing(PolynomialRing(parent.base(), gens), "y"); + else: + if(parent.ngens() > 1 or repr(parent.gen()) != "y_*"): + raise TypeError("__check_input: the input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + + poly = parent(poly); + dR = parent.base(); + + return (parent, poly, dR); + +def __simplify_coefficients(base, coeffs, derivatives, _debug=False): + ''' + Method that get the relations for the coefficients within their derivatives. The list 'coeffs' is the list to simplify + and ;derivatives' is a list of lists with the derivatives of each element of 'coeffs' that we will consider. + + It returns a pair (graph, relations) where: + - graph: a forest of the points of minimal depth with all the relations + - relations: a dictionary which tells for each i < j, how the ith coefficient is related with the jth coefficient + (see __find_relation to know how that relation is expressed). + ''' + # Checking the input + n = len(coeffs); + if(len(derivatives) < n): + raise ValueError("__simplify_coefficients: error in size of the input 'derivatives'"); + + E = range(n); + R = []; + + # Checking the simplest cases (coeff[i] in R) + simpler = []; + for i in range(n): + if(coeffs[i] in base): + if((-1) not in E): + E += [-1]; + R += [(-1,i,(0,0,coeffs[i]))]; + simpler += [i]; + + __dprint("Simpler coefficiets (related with -1): %s" %simpler, _debug); + # Starting the comparison + for i in range(n): + for j in range(i+1, n): + # Checking (i,j) + if(not(j in simpler)): + rel = __find_relation(coeffs[j], derivatives[i], _debug); + if(not(rel is None)): + R += [(i,j,rel)]; + continue; + # Checking (j,i) + if(not(i in simpler)): + rel = __find_relation(coeffs[i], derivatives[j], _debug); + if(not(rel is None)): + R += [(j,i,rel)]; + + # Checking if the basic case will be used because of the relations + if((-1) not in E and any(e[2][1][1] != 0 for e in R)): + E += [-1]; + + # Building the graph and returning + __dprint("All relations: %s" %R, _debug); + graph = DiGraph([E,R]); + __dprint("Edges: %s" %graph.edges(), _debug); + + # Deleting spurious relations and returning + return __min_span_tree(graph, _debug); + +def __simplify_derivatives(derivatives, _debug=False): + ''' + Method to get the relations for the derivatives of the coefficients. The argument 'derivatives' contains a list of lists for which + one we will see if the last elements have relations with the firsts. + + It returns a list of tuples 'res' where 'res[i][0] = k' if the kth fucntion in 'derivatives[i]' is the first element on the list + with relations with the previous elements and 'res[i][1]' is the relation found. + If no relation is found, a tuple (None,None) is added to the list. + ''' + res = []; + for i in range(len(derivatives)): + to_add = (None,None); + for k in range(len(derivatives[i])-1,0,-1): + relation = __find_relation(derivatives[i][k], derivatives[i][:k-1], _debug); + if(not (relation is None)): + to_add = (k,relation); + break; + res += [to_add]; + + __dprint("Found relations with derivatives: %s" %res, _debug); + return res; + +def __find_relation(g,df, _debug=False): + ''' + Method that get the relation between g and the list df. + + It returns a tuple (k,res) where: + - k: the first index which we found a relation + - res: the relation (see __find_linear_relation to see how such relation is expressed). + + Then the following statement is always True: + g == df[k]*res[0] + res[1] + ''' + __dprint("** Checking relations between %s and %s" %(repr(g), df), _debug); + for k in range(len(df)): + res = __find_linear_relation(g,df[k]); + if(not (res is None)): + __dprint("Found relation:\n\t(%s) == [%s]*(%s) + [%s]" %(repr(g),repr(res[0]), repr(df[k]), repr(res[1])), _debug); + __dprint("*************************", _debug); + return (k,res); + __dprint("Nothing found\n*************************", _debug); + + return None; + +def __find_linear_relation(f,g): + ''' + This method receives two DDFunctions and return two constants (c,d) such that f = cg+d. + None is return if those constants do not exist. + ''' + if(not (is_DDFunction(f) and is_DDFunction(g))): + raise TypeError("find_linear_relation: The functions are not DDFunctions"); + + ## Simplest case: some of the functions are constants is a constant + if(f.is_constant): + return (f.parent().zero(), f(0)); + elif(g.is_constant): + return None; + + try: + of = 1; og = 1; + while(f.getSequenceElement(of) == 0): of += 1; + while(g.getSequenceElement(og) == 0): og += 1; + + if(of == og): + c = f.getSequenceElement(of)/g.getSequenceElement(og); + d = f(0) - c*g(0); + + if(f == c*g + d): + return (c,d); + except Exception: + pass; + + return None; + +def __min_span_tree(digraph, _debug=False): + ''' + Method that computes a forest from a directed graph containing all vertices and having the minimal depth. + + It is computed with a breadth first search. + ''' + to_search = __digraph_roots(digraph, _debug); + i = 0; + done = []; + edges = []; + while(i < len(to_search)): + v = to_search[i]; + if(not (v in done)): + for e in digraph.outgoing_edges(v): + if(not(e[1] in to_search)): + to_search += [e[1]]; + edges += [e]; + done += [v]; + i += 1; + return DiGraph([digraph.vertices(),edges]); + +def __digraph_roots(digraph, _debug=False): + ''' + Method that computes the roots of a directed graph. We consider a vertex v to be a root if there + are not edges (v,w) in the graph. + ''' + return [v for v in digraph.vertices() if digraph.in_degree(v) == 0]; + +def __build_derivation_matrix(gens, coeffs, drelations, _debug=False): + ''' + Method to build a derivation matrix 'C' for the vector of generators 'gen'. + + All the information about the coefficients and their relations are given + by the arguments 'coeffs' (list of basic elements for 'gens') and + 'drelations' (relations between elements in 'coeffs' and the last derivative + on 'gens'). + + It could be that gens[0] == 1. This element must be treated in a specific + way collecting all the relations on 'drelations'. + ''' + __dprint("Building derivation matrix for %s" %gens, _debug); + + rows = []; # Variable for the rows of the matrix M + + constant = (gens[0] == 1); # Flag variable for gens[0] == 1 + coeff_order = []; # Collecting the real order of each coefficient in the vector space + for i in range(len(coeffs)): + if(drelations[i][0] is None): + coeff_order += [coeffs[i].getOrder()]; + else: + coeff_order += [drelations[i][0]]; + coeff_index = [0]; # Variable for the index of coeff[i] in gens + if(constant): coeff_index[0] = 1; + for i in range(1, len(coeffs)): coeff_index += [coeff_index[-1]+coeff_order[i-1]]; + + __dprint("Is there constant: %s" %constant, _debug); + __dprint("Orders: %s\nIndices: %s" %(coeff_order, coeff_index), _debug); + + ## Considering the case that gens[0] == -1 + if(constant): + new_row = [0]; + for i in range(len(coeffs)): + new_row += [0 for j in range(coeff_order[i])]; + if(not (drelations[i][1] is None)): + new_row[-1] = drelations[i][1][1][1]; + rows += [new_row]; + + ## Now we loop through all the coefficients in coeffs + for i in range(len(coeffs)): + com = coeffs[i].equation.companion(); + for j in range(coeff_order[i]): + ## Building the jth row for coeff[i] + new_row = [0 for k in range(coeff_index[i])]; # First columns for the row + + ## Middle columns for the row + new_row += [com[j][k] for k in range(coeff_order[i]-1)]; + if((not (drelations[i][0] is None)) and (drelations[i][1][0] == j)): + new_row += [drelations[i][1][1][0]]; + else: + new_row += [com[j][coeff_order[i]-1]]; + + new_row += [0 for k in range(coeff_index[i]+coeff_order[i], len(gens))]; # Last columns for the row + + ## Adding the resulting row + rows += [new_row]; + + rows = Matrix(rows); + + __dprint("** Matrix:\n%s\n*******" %rows, _debug); + + return rows; + +def __build_vector(coeffs, monomials, graph, drelations, cR, _debug=False): + ''' + This method builds a vector that represent the polynomial generated by + 'coeffs' and 'monomials' using the relations contained in 'graph' + and 'drelations' w.r.t. the vector 'gens'. + + The output vector v satisfies: + sum(coeffs[i]*monomials[i]) == sum(v[j]*gens[j]) + ''' + # Computing important data for each coefficient + maximal_elements = [el for el in __digraph_roots(graph) if el != -1]; + coeff_order = []; + for i in range(len(coeffs)): + if(i in maximal_elements and (not (drelations[maximal_elements.index(i)][0] is None))): + coeff_order += [drelations[maximal_elements.index(i)][0]]; + else: + coeff_order += [coeffs[i].getOrder()]; + constant = (-1 in graph.vertices()); + + __dprint("Is there constant: %s" %constant, _debug); + + # Computing vectors and companion matrices for each element + vectors = [vector(cR, [monomials[i]] + [0 for i in range(coeff_order[i]-1)]) for i in range(len(coeffs))]; + trans = []; + for i in range(len(coeffs)): + if(i in maximal_elements and (not (drelations[maximal_elements.index(i)][0] is None))): + relation = drelations[maximal_elements.index(i)]; + C = []; + for j in range(relation[0]): + new_row = [el for el in coeffs[i].equation.companion()[j][:relation[0]-1]] + [0]; + if(j == relation[1][0]): + new_row[-1] = relation[1][1][0]; + C += [new_row]; + C = Matrix(C); + trans += [(drelations[maximal_elements.index(i)][1][1][1], C)]; + else: + trans += [(0, coeffs[i].equation.companion())]; + + if(_debug): + print "--- Transitions to nodes:"; + for i in range(len(trans)): + print "+++ %s --> Cosntant: %s; Matrix:\n%s" %(i, trans[i][0], trans[i][1]); + print "-------------------------"; + + const_val = 0; + # Doing a Tree Transversal in POstorder in the graph to pull up the vectors + # Case for -1 + if(constant): + maximal_elements = [-1] + maximal_elements; + # const_val = sum(cR(coeffs[e[1]])*monomials[coeffs[e[1]]] for e in graph.outgoing_edges(-1)); + stack = copy(maximal_elements); stack.reverse(); + + # Rest of the graph + ready = []; + while(len(stack) > 0): + current = stack[-1]; + if(current in ready): + __dprint("Visiting node %s" %current, _debug); + if(not (current in maximal_elements)): + # Visit the node: pull-up the vector + edge = graph.incoming_edges(current)[0]; + cu_vector = vectors[current]; + + ## Constant case; reducing to the constant term + if(edge[0] == -1): + __dprint("** Reducing node %d to constant" %(current), _debug); + __dprint("\t- Current vector: %s" %(cu_vector), _debug); + __dprint("\t- Prev. constant: %s" %const_val, _debug); + const_val += sum(cu_vector[i]*cR(coeffs[current].derivative(times=i)) for i in range(len(cu_vector))); + __dprint("\t- New constant: %s" %const_val, _debug); + + ## General case + else: + de_vector = vectors[edge[0]]; + relation = edge[2]; + C = trans[edge[0]][1]; + + __dprint("** Reducing node %d to %d" %(current, edge[0]), _debug); + __dprint("\t- Current vector: %s" %(cu_vector), _debug); + __dprint("\t- Destiny vector: %s" %(de_vector), _debug); + __dprint("\t- Relation: %s" %(str(relation)), _debug); + __dprint("\t- Matrix:\n\t\t%s" %(str(C).replace('\n','\n\t\t')), _debug); + __dprint("\t- Prev. constant: %s" %const_val, _debug); + + # Building vectors for all the required derivatives + ivectors = [vector(cR, [0 for i in range(relation[0])] + [1] + [0 for i in range(relation[0]+1,coeff_order[edge[0]])])]; + extra_cons = [relation[1][1]]; + + for i in range(len(cu_vector)): + extra_cons += [ivectors[-1][-1]*trans[edge[0]][0]]; + ivectors += [differential_movement(C, ivectors[-1], infinite_derivative)]; + + vectors[edge[0]] = sum([vector(cR,[cu_vector[i]*ivectors[i][j] for j in range(len(ivectors[i]))]) for i in range(len(cu_vector))], de_vector); + const_val += sum([cu_vector[i]*extra_cons[i] for i in range(len(cu_vector))]); + + __dprint("\t- New vector: %s" %vectors[edge[0]], _debug); + __dprint("\t- New constant: %s" %const_val, _debug); + __dprint("*************************", _debug); + + # Getting out the element of the stack + stack.pop(); + else: + # Add the children and visit them + ready += [current]; + for e in graph.outgoing_edges(current): + stack.append(e[1]); + + final_vector = []; + for i in maximal_elements: + if(i == -1): + final_vector += [const_val]; + else: + final_vector += [el for el in vectors[i]]; + + final_vector = vector(cR, final_vector); + __dprint("Vector: %s" %final_vector, _debug); + + return vector(final_vector); + + +################################################################################ +################################################################################ +################################################################################ + +def toDifferentiallyAlgebraic_Below(poly, _infinite=False, _debug=False): + ''' + Method that receives a polynomial with variables y_0,...,y_m with coefficients in some ring DD(R) and reduce it to a polynomial + with coefficients in R. + + The optional input '_debug' allow the user to print extra information as the matrix that the determinant is computed. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ### Preprocessing the input + parent = poly.parent(); + if(not is_InfinitePolynomialRing(parent)): + if(not is_MPolynomialRing(parent)): + if(not is_PolynomialRing(parent)): + raise TypeError("The input is not a valid polynomial. Obtained something in %s" %parent); + if(not str(parent.gens()[0]).startswith("y_")): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + parent = InfinitePolynomialRing(parent.base(), "y"); + else: + gens = list(parent.gens()); + to_delete = []; + for gen in gens: + if(str(gen).startswith("y_")): + to_delete += [gen]; + if(len(to_delete) == 0): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + for gen in to_delete: + gens.remove(gen); + parent = InfinitePolynomialRing(PolynomialRing(parent.base(), gens), "y"); + else: + if(parent.ngens() > 1 or repr(parent.gen()) != "y_*"): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + + poly = parent(poly); + + ### Now poly is in a InfinitePolynomialRing with one generator "y_*" and some base ring. + if(not isinstance(parent.base(), DDRing)): + print "The base ring is not a DDRing. Returning the original polynomial (reached the bottom)"; + return r_method(poly); + + up_ddring = parent.base() + dw_ddring = up_ddring.base(); + goal_ring = InfinitePolynomialRing(dw_ddring, "y"); + + coefficients = poly.coefficients(); + monomials = poly.monomials(); + + ## Arraging the coefficients and organize the vector-space notation + dict_to_derivatives = {}; + dict_to_vectors = {}; + S = 0; + for i in range(len(coefficients)): + coeff = coefficients[i]; monomial = goal_ring(str(monomials[i])); + if(coeff in dw_ddring): + if(1 not in dict_to_vectors): + S += 1; + dict_to_vectors[1] = goal_ring.zero(); + dict_to_vectors[1] += dw_ddring(coeff)*monomial; + else: + used = False; + for el in dict_to_derivatives: + try: + index = dict_to_derivatives[el].index(coeff); + dict_to_vectors[el][index] += monomial; + used = True; + break; + except ValueError: + pass; + if(not used): + list_of_derivatives = [coeff]; + for j in range(coeff.getOrder()-1): + list_of_derivatives += [list_of_derivatives[-1].derivative()]; + dict_to_derivatives[coeff] = list_of_derivatives; + dict_to_vectors[coeff] = [monomial] + [0 for j in range(coeff.getOrder()-1)]; + S += coeff.getOrder(); + + rows = []; + for el in dict_to_vectors: + if(el == 1): + row = [dict_to_vectors[el]]; + for i in range(S-1): + row += [infinite_derivative(row[-1])]; + rows += [row]; + else: + C = el.equation.companion(); + C = Matrix(goal_ring.base(),[[goal_ring.base()(row_el) for row_el in row] for row in C]); + rows += [row for row in matrix_of_dMovement(C, vector(goal_ring, dict_to_vectors[el]), infinite_derivative, S)]; + + M = Matrix(rows); + if(_debug): print M; + return r_method(M.determinant().numerator()); + +def diff_to_diffalg(func, _infinite=False, _debug=False): + ''' + Method that compute an differentially algebraic equation for the obect func. + This objet may be any element in QQ(x) or an element in some DDRing. In the first case + the equation returned is the simple "y_0 - func". In the latter, we compute the differential + equation using the linear differential representation of the obect. + + The result is always a polynomial with variables "y_*" where the number in the index + represent the derivative. + + The optional argument _debug allows the user to see during execution more data of the computation. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ## Computations + try: + parent = func.parent(); + except AttributeError: + return r_method(PolynomialRing(QQ,"y_0")("y_0 + %s" %func)); + + if(isinstance(parent, DDRing)): + R = InfinitePolynomialRing(parent.base(), "y"); + p = sum([R("y_%d" %i)*func[i] for i in range(func.getOrder()+1)], R.zero()); + for i in range(parent.depth()-1): + p = toDifferentiallyAlgebraic_Below(p, _infinite=True, _debug=_debug); + return r_method(p); + else: + R = PolynomialRing(PolynomialRing(QQ,x).fraction_field, "y_0"); + return r_method(R.gens()[0] - func); + +################################################################################ +### +### Methods for computing Diff. Algebraic equation for inverses +### +### - Multiplicative inverse from DA equation +### - Functional inverse from Dn-finite equation +### +################################################################################ +def inverse_DA(poly, vars=None, _infinite=False): + ''' + Method that computes the DA equation for the multiplicative inverse + of the solutions of a DA equation. + + We assume that the variables given by vars are the variables representing + the solution, namely vars[i+1] = vars[i].derivative(). + If vars is not provided, we take all the variables from the polynomial + that is given. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ## Checking that poly is a polynomial + + parent = poly.parent(); + if(is_FractionField(parent)): + parent = parent.base(); + if(is_InfinitePolynomialRing(parent)): + poly = fromInfinityPolynomial_toFinitePolynomial(poly); + return inverse_DA(poly, vars, _infinite=_infinite); + if(not (is_PolynomialRing(parent) or is_MPolynomialRing(parent))): + raise TypeError("No polynomial is given"); + poly = parent(poly); + + ## Getting the list of variables + if(vars is None): + g = list(poly.parent().gens()); g.reverse(); + else: + if(any(v not in poly.parent().gens())): + raise TypeError("The variables given are not in the polynomial ring"); + g = vars; + + ## Computing the derivative of the inverse using Faa di Bruno's formula + derivatives = [1/g[0]] + [sum((falling_factorial(-1, k)/g[0]**(k+1))*bell_polynomial(n,k)(*g[1:n-k+2]) for k in range(1,n+1)) for n in range(1,len(g +))]; + + ## Computing the final equation + return r_method(poly(**{str(g[i]): derivatives[i] for i in range(len(g))}).numerator()); + +def func_inverse_DA(func, _inifnite=False, _debug=False): + ''' + TODO: Add documentation + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ## Computations + equation = fromFinitePolynomial_toInfinitePolynomial(diff_to_diffalg(func, _debug=_debug)); + + if(_debug): print equation; + + parent = equation.parent(); + y = parent.gens()[0]; + + n = len(equation.variables()); + + quot = [FaaDiBruno_polynomials(i, parent)[0]/FaaDiBruno_polynomials(i,parent)[1] for i in range(n)]; + coeffs = [el(**{str(parent.base().gens()[0]) : y[0]}) for el in equation.coefficients()]; + monomials = [el(**{str(y[j]) : quot[j] for j in range(n)}) for el in equation.monomials()]; + + if(_debug): + print monomials; + print coeffs; + + sol = sum(monomials[i]*coeffs[i] for i in range(len(monomials))); + + if(_debug): print sol; + if(hasattr(sol, "numerator")): + return parent(sol.numerator()); + return r_method(parent(sol)); + + +################################################################################ +### +### Methods for compute Dn-finite equations from DA-equations +### +################################################################################ +def guess_Dnfinite(poly, init): + ## TODO: Method not public + res = guess_homogeneous_DNfinite(poly, init); + if(is_DDFunction(res)): + return res; + return guess_DA_DDfinite(poly, init); + +def guess_DA_DDfinite(poly, init=[], bS=None, bd = None, all=True): + ''' + Method that tries to compute a DD-finite differential equation + for a DA-function with constant coefficients. + + It just tries all the possibilities. It uses the Composition class + to get the possibilities of the orders for the coefficients. + + INPUT: + - poly: polynomial with the differential equation we want to mimic with DD-finite elements + - init: initial values of the solution of poly + - bS: bound to the sum of orders in the DD-finite equation + - db: bound to the order of the DD-finite equation + - all: compute all the posibles equations + ''' + poly = fromInfinityPolynomial_toFinitePolynomial(poly); + + if(not poly.is_homogeneous()): + raise TypeError("We require a homogeneous polynomial"); + + if(bS is None): + S = poly.degree(); + else: + S = bS; + if(bd is None): + d = S - poly.parent().ngens() + 2; + else: + d = bd; + + compositions = Compositions(S, length = d+1); + coeffs = [["a_%d_%d" %(i,j) for j in range(S)] for i in range(d+1)]; + cInit = [["i_%d_%d" %(i,j) for j in range(S-1)] for i in range(d+1)]; + R = ParametrizedDDRing(DFinite, sum(coeffs, [])+sum(cInit,[])); + R2 = R.to_depth(2); + coeffs = [[R.parameter(coeffs[i][j]) for j in range(S)] for i in range(d+1)]; + cInit = [[R.parameter(cInit[i][j]) for j in range(S-1)] for i in range(d+1)]; + sols = []; + + for c in compositions: + ## Building the parametrized guess + e = [R.element([coeffs[i][j] for j in range(c[i])] + [1],cInit[i]) for i in range(d+1)]; + f = R2.element(e); + if(len(init) > 0): + try: + f = f.change_init_values([init[i] for i in range(min(len(init), f.equation.jp_value+1))]); + except ValueError: + continue; + + ## Computing the DA equation + poly2 = diff_to_diffalg(f); + + ############################################### + ### Comparing the algebraic equations + ## Getting a possible constant difference + m = poly.monomials(); + m2 = poly2.monomials(); + eqs = []; + C = None; + for mon in m2: + c2 = poly2.coefficient(mon); + if(poly2.parent().base()(poly2.coefficient(mon)).is_constant()): + C = poly.coefficient(poly.parent()(mon))/c2; + break; + if(C is None): + C = 1; + elif(C == 0): + continue; + + ### Building all equations from the algebraic equation + for mon in m2: + c2 = poly2.coefficient(mon); c = poly.coefficient(poly.parent()(mon)); + eqs += [C*c2 - c]; + + ################################################## + ### Comparing the initial values + for i in range(min(len(init), f.equation.jp_value+1),len(init)): + try: + eqs += [f.getInitialValue(i) - init[i]]; + except TypeError: + break; ## Case when no initial value can be computed + + ################################################## + ### Solving the system (groebner basis) + P = R.base_field.base(); + fEqs = []; + for el in eqs: + if(el.parent().is_field()): + fEqs += [P(str(el.numerator()))]; + else: + fEqs += [P(str(el))]; + + gb = ideal(fEqs).groebner_basis(); + if(1 not in gb): + sols += [(f,gb)]; + if(not all): + break; + + + if(len(sols) > 0 and not all): + return sols[0]; + + return sols; + +def guess_homogeneous_DNfinite(poly, init): + ''' + Method that tries to compute a Dn-finite differential equation + for a DA-function defined from an homogeneous equation. + + This method simplifies the equation supposing that the solution + is of the form y(x) = exp(int(u(x))), getting a differential equation + for u(x) of less order. + + If we end up with a linear equation, then we can return a Dn-finite function + where n depends on how many iterations we needed. + + If the final algebraic equation is not linear, then we return this + last equation together with the number of iterations done. + + INPUT: + - poly: polynomial with the differential equation we want to mimic with DD-finite elements + - init: initial values of the solution of poly (must be enough). + ''' + new_poly, depth = simplify_homogeneous(poly); + parent = new_poly.parent(); base = parent.base(); y = parent.gens()[0]; + + order = max(get_InfinitePolynomialRingGen(parent, v, True)[1] for v in new_poly.variables()); + + if(new_poly.degree() == 1 and new_poly.is_homogeneous()): ## We can build something + coeffs = []; + for i in range(order+1): + if(y[i] in new_poly.variables()): + coeffs += new_poly.coefficients()[new_poly.monomials().index(y[i])]; + else: + coeffs += [0]; + + inhom = new_poly.constant_coefficient(); + if(is_DDRing(base)): + base_field = base.base_field; + base = base.to_depth(base.depth()+1); + else: + base_field = base.fraction_field(); + base = DDRing(PolynomialRing(base_field, 'x')); + + ## We can build a D(depth+1)-finite function + deep_init = build_initial_from_homogeneous(tuple(init), order, depth, base_field); + + res = base.element(coeffs, deep_init, inhomogeneous=inhom); + for i in range(depth): + res = Exp(res.integrate(0)); + return res; + + else: + return (new_poly, depth); + + +@cached_function +def build_initial_from_homogeneous(init, n, depth, base): + ## Checking we have enough data + if(len(init) < n+depth): + raise TypeError("Not enought initial data was provided (required %d)" %(n+depth)); + elif(len(init) > n+depth): + return build_initial_from_homogeneous(tuple(list(init)[:n+depth]), n, depth, base); + + ## Base case with depth = 0 + if(depth == 0): + return init[:n]; + + ## Casting the input to the desired ring + init = [base(el) for el in init]; + + ## Checking the initial condition init[0] + if(init[0] == 0): + raise ValueError("Initial condition is zero. Impossible to compute a solution of the form e(int(u(x)))"); + + ## Computing the initial conditions for depth "depth-1" + new_init = [init[1]/init[0]]; + + parent = Exponential_polynomials(1,base).parent(); y = parent.gens()[0]; + + for i in range(1,n+depth-1): + poly = fromInfinityPolynomial_toFinitePolynomial(-(Exponential_polynomials(i+1, parent) - y[i])); + new_init += [base(poly(**{str(y[j]) : new_init[j] for j in range(i)})) + init[i+1]/init[0]]; + + ## Returning the recurive call with one less depth + return build_initial_from_homogeneous(tuple(new_init), n, depth-1, base); + +@cached_function +def simplify_homogeneous(poly, _stop_linear=True): + ''' + Given an homogeneous differential polynomial 'poly', we reduce the order of the equation by 1 + using the change of variables y(x) = exp(int(u(x))). + + This leads to a differentially algebraic equation of order 1 less than 'poly'. If we obtain a + new homogeneous equation, we can iterate. The return of this function is this final result toether + with the number of steps performed. + ''' + poly = fromFinitePolynomial_toInfinitePolynomial(poly); + parent = poly.parent(); y = parent.gens()[0]; + + if(not(poly.is_homogeneous()) or (_stop_linear and poly.degree() == 1)): + return (poly,0); + + d = {str(y[0]) : parent.one()}; + for v in poly.variables(): + if(v != y[0]): + d[str(v)] = Exponential_polynomials(get_InfinitePolynomialRingGen(parent, v, True)[1], parent); + + new_poly = poly(**d); + result,n = simplify_homogeneous(new_poly); + + return (result, n+1); + +################################################################################################### +### Polynomial functions +################################################################################################### +@cached_function +def FaaDiBruno_polynomials(n, parent): + if(n < 0): + raise ValueError("No Faa Di Bruno polynomial can be computed for negative index"); + elif(not(is_InfinitePolynomialRing(parent))): + if((not(is_PolynomialRing(parent))) and (not(is_MPolynomialRing(parent)))): + raise TypeError("The parent ring is not valid: needed polynomial rings or InfinitePolynomialRing"); + return FaaDiBruno_polynomials(n, InfinitePolynomialRing(parent, "y")); + + if(parent.base().ngens() == 0 or parent.base().gens()[0] == 1): + raise TypeError("Needed a inner variable in the coefficient ring"); + + + x = parent.base().gens()[0]; + y = parent.gens()[0]; + if(n == 0): + return (parent(parent.base().gens()[0]), parent.one()); + if(n == 1): + return (parent.one(), y[1]); + else: + prev = [FaaDiBruno_polynomials(k, parent) for k in range(n)]; + ele = -sum(prev[k][0]*bell_polynomial(n,k)(**{"x%d" %i : y[i+1] for i in range(n-k+1)})/prev[k][1] for k in range(1,n))/(y[1]**n); + return (ele.numerator(), ele.denominator()); + +@cached_function +def Exponential_polynomials(n, parent): + if(n <= 0): + raise ValueError("No Exponential polynomial can be computed for non-positive index"); + elif(not(is_InfinitePolynomialRing(parent))): + return Exponential_polynomials(n, InfinitePolynomialRing(parent, "y")); + + y = parent.gens()[0]; + + if(n == 1): + return y[0]; + else: + prev = Exponential_polynomials(n-1,parent); + return infinite_derivative(prev) + y[0]*prev; + +@cached_function +def Logarithmic_polynomials(n, parent): + if(n < 0): + raise ValueError("No Logarithmic polynomial can be computed for non-positive index"); + elif(not(is_InfinitePolynomialRing(parent))): + return Logarithmic_polynomials(n, InfinitePolynomialRing(parent, "y")); + + y = parent.gens()[0]; + + if(n == 0): + return y[1]/y[0]; + else: + return infinite_derivative(Logarithmic_polynomials(n-1, parent)); + +def is_Riccati(poly): + ''' + Method that checks if a non-linear differential equation is of Riccatti type + and returns the change of coordinates and the linear differential equation in case + we can. + ''' + poly = fromFinitePolynomial_toInfinitePolynomial(poly); + parent = poly.parent(); y = parent.gens()[0]; + + var = poly.variables(); index = [get_InfinitePolynomialRingGen(parent, v, True) for v in var]; + to_plug = [Logarithmic_polynomials(i, parent) for i in index]; + + new_poly = poly(**{str(var[i]): to_plug[i] for i in range(len(var))}); + + if(new_poly.degree() <= 1): + return new_poly, y[1]/y[0]; + + return None; + +################################################################################################### +### Private functions +################################################################################################### +def __dprint(obj, _debug): + if(_debug): print obj; + +#################################################################################################### +#### PACKAGE ENVIRONMENT VARIABLES +#################################################################################################### +__all__ = ["is_InfinitePolynomialRing", "get_InfinitePolynomialRingGen", "infinite_derivative", "diffalg_reduction", "toDifferentiallyAlgebraic_Below", "diff_to_diffalg", "inverse_DA", "func_inverse_DA", "guess_DA_DDfinite", "guess_homogeneous_DNfinite", "FaaDiBruno_polynomials", "Exponential_polynomials", "Logarithmic_polynomials", "is_Riccati"]; + +# Extra functions for debugging +def simplify_coefficients(base, coeffs, derivatives, _debug=True): + return __simplify_coefficients(base,coeffs,derivatives,_debug); + +def simplify_derivatives(derivatives, _debug=True): + return __simplify_derivatives(derivatives, _debug); + +def find_relation(g,df, _debug=True): + return __find_relation(g,df,_debug); + +def find_linear_relation(f,g): + return __find_linear_relation(g,df); + +def build_derivation_matrix(gens, coeffs, drelations, _debug=True): + return __build_derivation_matrix(gens, coeffs, drelations, _debug); + +def build_vector(coeffs, monomials, graph, drelations, cR, _debug=True): + return __build_vector(coeffs, monomials, graph, drelations, cR, _debug); + +__all__ += ["simplify_coefficients", "simplify_derivatives", "find_relation", "find_linear_relation", "build_derivation_matrix", "build_vector"]; diff --git a/ajpastor/dd_functions/toDiffAlgebraic.py.jd2153 b/ajpastor/dd_functions/toDiffAlgebraic.py.jd2153 new file mode 100644 index 0000000..ec1c85d --- /dev/null +++ b/ajpastor/dd_functions/toDiffAlgebraic.py.jd2153 @@ -0,0 +1,1187 @@ + +from sage.all_cmdline import * # import sage library + +from sage.graphs.digraph import DiGraph; + +from sage.rings.polynomial.polynomial_ring import is_PolynomialRing; +from sage.rings.polynomial.multi_polynomial_ring import is_MPolynomialRing; +from sage.rings.fraction_field import is_FractionField; + +from ajpastor.dd_functions.ddFunction import *; +from ajpastor.dd_functions.ddExamples import *; +from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing; + +from ajpastor.misc.matrix import matrix_of_dMovement; +from ajpastor.misc.matrix import differential_movement; + +################################################################################ +### +### Utilities functions for InfinitePolynomialRings +### +################################################################################ +def is_InfinitePolynomialRing(parent): + from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing_dense as dense; + from sage.rings.polynomial.infinite_polynomial_ring import InfinitePolynomialRing_sparse as sparse; + + return isinstance(parent, dense) or isinstance(parent, sparse); + +def get_InfinitePolynomialRingGen(parent, var, with_number = False): + for gen in parent.gens(): + spl = str(var).split(repr(gen)[:-1]); + if(len(spl) == 2): + if(with_number): + return (gen, int(spl[1])); + else: + return gen; + return None; + +#### TODO: Review this function +def infinite_derivative(element, times=1, var=x, _infinite=True): + ''' + Method that takes an element and compute its times-th derivative + with respect to the variable given by var. + + If the element is not in a InfinitePolynomialRing then the method + 'derivative' of the object will be called. Otherwise this method + returns the derivative following the rules: + - The coefficients of the polynomial ring are differentiated using + a recursive call to this method (usually this leads to a call of the + method '.derivative' of that coefficient). + - Any variable "#_n" appearing in the InfinitePolynomialRing has + as derivative the variable "#_{n+1}", i.e., the same name but with + one higher index. + ''' + ## Checking the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + if(not ((times in ZZ) and times >=0)): + raise ValueError("The argument 'times' must be a non-negative integer"); + elif(times > 1): # Recursive call + return infinite_derivative(infinite_derivative(element, times-1)) + elif(times == 0): # Empty call + return element; + + ## Call with times = 1 + try: + parent = element.parent(); + except AttributeError: + return 0; + + ##Simple call: parent is a Fraction Field + if(is_FractionField(parent)): + parent = parent.base(); + n = parent(element.numerator()); dn = infinite_derivative(n); + d = parent(element.denominator()); dd = infinite_derivative(d); + return (n*dd - dn*d)/d**2; + + ## Simple call: not an InfinitePolynomialRing + if(not is_InfinitePolynomialRing(parent)): + try: + try: + return element.derivative(var); + except Exception: + return element.derivative(); + except AttributeError: + return parent.zero(); + + ## IPR call + ## Symbolic case? + if(sage.symbolic.ring.is_SymbolicExpressionRing(parent.base())): + raise TypeError("Base ring for the InfinitePolynomialRing not valid (found SymbolicRing)"); + ## Zero case + if(element == 0): + return 0; + ### Monomial case + if(element.is_monomial()): + ## Case of degree 1 (add one to the index of the variable) + if(len(element.variables()) == 1 and element.degree() == 1): + g,n = get_InfinitePolynomialRingGen(parent, element, True); + return r_method(g[n+1]); + ## Case of higher degree + else: + # Computing the variables in the monomial and their degrees (in order) + variables = element.variables(); + degrees = [element.degree(v) for v in variables]; + variables = [parent(v) for v in variables] + ## Computing the common factor + com_factor = prod([variables[i]**(degrees[i]-1) for i in range(len(degrees))]); + ## Computing the derivative of each variable + der_variables = [infinite_derivative(parent(v)) for v in variables]; + + ## Computing the particular part for each summand + each_sum = []; + for i in range(len(variables)): + if(degrees[i] > 0): + part_prod = prod([variables[j] for j in range(len(variables)) if j != i]); + each_sum += [degrees[i]*infinite_derivative(parent(variables[i]))*part_prod]; + + ## Computing the final result + return r_method(com_factor*sum(each_sum)); + ### Non-monomial case + else: + coefficients = element.coefficients(); + monomials = [parent(el) for el in element.monomials()]; + return r_method(sum([infinite_derivative(coefficients[i])*monomials[i] + coefficients[i]*infinite_derivative(monomials[i]) for i in range(len(monomials))])); + +################################################################################ +### +### Changes from and to InfinitePolynomialRings and MultivariatePolynomialRings +### +################################################################################ +def fromInfinityPolynomial_toFinitePolynomial(poly): + if(not is_InfinitePolynomialRing(poly.parent())): + return poly; + + gens = poly.variables(); + base = poly.parent().base(); + + parent = PolynomialRing(base, gens); + return parent(str(poly)); + +def fromFinitePolynomial_toInfinitePolynomial(poly): + parent = poly.parent(); + if(is_InfinitePolynomialRing(poly) and (not is_MPolynomialRing(parent))): + return poly; + + + names = [str(el) for el in poly.parent().gens()]; + pos = names[0].rfind("_"); + if(pos == -1): + return poly; + prefix = names[0][:pos]; + if(not all(el.find(prefix) == 0 for el in names)): + return poly; + R = InfinitePolynomialRing(parent.base(), prefix); + return R(poly); + +################################################################################ +### +### Methods for computing Diff. Algebraic equations with simpler coefficients +### +################################################################################ +def diffalg_reduction(poly, _infinite=False, _debug=False): + ''' + Method that recieves a polynomial 'poly' with variables y_0,...,y_m with coefficients in some ring DD(R) and reduce it to a polynomial + 'result' with coefficients in R where, for any function f(x) such that poly(f) == 0, result(f) == 0. + + The algorithm works as follows: + 1 - Collect all the coefficients and their derivatives + 2 - Perform the simplification to each pair of coefficients + 3 - Perform the simplification for the last derivatives of the remaining coefficients --> gens + 4 - Build the final derivation matrix for 'gens' + 5 - Create a vector v for represent 'poly' w.r.t. 'gens' + 6 - Build a square matrix --> M = (v | v' | ... | v^(n)) + 7 - Return det(M) + + INPUT: + - poly: a polynomial with variables y_0,...,y_m. Also an infinite polynomial with variable y_* is valid. + - _infinite: if True the result polynomial will be an infinite polynomial. Otherwise, a finite variable polynomial will be returned. + - _debug: if True, the steps of the algorithm will be printed. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ### Preprocessing the input poly + parent, poly, dR = __check_input(poly, _debug); + + if(not is_DDRing(dR)): + raise TypeError("diffalg_reduction: polynomial is not over a DDRing"); + + R = dR.base(); + + ## Step 1: collecting function and derivatives + __dprint("---- DEBUGGING PRINTING FOR diffalg_reduction", _debug); + __dprint("R: %s" %R, _debug); + __dprint("-- Starting step 1", _debug); + coeffs = poly.coefficients(); # List of original coefficients + __dprint("Coefficients: %s" %("["+reduce(lambda p,q : p+", "+q, [repr(coeff) for coeff in coeffs])+"]"), _debug); + + ocoeffs = coeffs; # Extra variable with the same list + monomials = poly.monomials(); # List of monomials + l_of_derivatives = [[f.derivative(times=i) for i in range(f.getOrder())] for f in coeffs]; # List of derivatives for each coefficient + + ## Step 2: simplification of coefficients + __dprint("-- Starting step 2", _debug); + graph = __simplify_coefficients(R, coeffs, l_of_derivatives, _debug); + maximal_elements = __digraph_roots(graph, _debug); + + ## Detecting case: all coefficients are already simpler + if(len(maximal_elements) == 1 and maximal_elements[0] == -1 and len(graph.outgoing_edges(-1)) == len(graph.edges())): + __dprint("Detected simplicity: returning the same polynomial over the basic ring", _debug); + return r_method(InfinitePolynomialRing(R, names=["y"])(poly)); + + # Reducing the considered coefficients + coeffs = [coeffs[i] for i in maximal_elements if i != (-1)]; + l_of_derivatives = [l_of_derivatives[i] for i in maximal_elements if i != (-1)]; + + ## Step 3: simplification with the derivatives + __dprint("-- Starting step 3", _debug); + drelations = __simplify_derivatives(l_of_derivatives, _debug); + + ## Building the vector of final generators + gens = []; + if(-1 in maximal_elements): + gens = [1]; + gens = sum([l_of_derivatives[i][:drelations[i][0]] for i in range(len(coeffs))], gens); + S = len(gens); + __dprint("Resulting vector of generators: %s" %gens, _debug); + + ## Step 4: build the derivation matrix + __dprint("-- Starting step 4", _debug); + C = __build_derivation_matrix(gens, coeffs, drelations, _debug); + cR = InfinitePolynomialRing(C.base_ring(), names=["y"]); + + ## Step 5: build the vector v + __dprint("-- Starting step 5", _debug); + v = __build_vector(ocoeffs, monomials, graph, drelations, cR, _debug); + + ## Step 6: build the square matrix M = (v, v',...) + __dprint("-- Starting step 6", _debug); + __dprint("Computing derivatives from the vector (step 5) using the matrix (step 4)", _debug); + derivative = infinite_derivative; + M = matrix_of_dMovement(C, v, derivative, S); + + __dprint("Vector of generators:\n\t%s" %gens, _debug); + __dprint("Final matrix (vector in rows):\n\t%s" %(str(M.transpose()).replace('\n', '\n\t')), _debug); + __dprint("Returning the determinant", _debug); + __dprint("---- DEBUGGING PRINTING FOR diffalg_reduction (finished)", _debug); + return r_method(M.determinant()); + +################################################################################ +################################################################################ +### Some private methods for diffalg_reduction +################################################################################ +################################################################################ + +def __check_input(poly, _debug=False): + ''' + Method that check and cast the polynomial input accordingly to our standards. + + The element 'poly' must be a polynomial with variables y_0,...,y_m with coefficients in some ring + ''' + parent = poly.parent(); + if(not is_InfinitePolynomialRing(parent)): + if(not is_MPolynomialRing(parent)): + if(not is_PolynomialRing(parent)): + raise TypeError("__check_input: the input is not a valid polynomial. Obtained something in %s" %parent); + if(not str(parent.gens()[0]).startswith("y_")): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + parent = InfinitePolynomialRing(parent.base(), "y"); + else: + gens = list(parent.gens()); + to_delete = []; + for gen in gens: + if(str(gen).startswith("y_")): + to_delete += [gen]; + if(len(to_delete) == 0): + raise TypeError("__check_input: the input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + for gen in to_delete: + gens.remove(gen); + parent = InfinitePolynomialRing(PolynomialRing(parent.base(), gens), "y"); + else: + if(parent.ngens() > 1 or repr(parent.gen()) != "y_*"): + raise TypeError("__check_input: the input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + + poly = parent(poly); + dR = parent.base(); + + return (parent, poly, dR); + +def __simplify_coefficients(base, coeffs, derivatives, _debug=False): + ''' + Method that get the relations for the coefficients within their derivatives. The list 'coeffs' is the list to simplify + and ;derivatives' is a list of lists with the derivatives of each element of 'coeffs' that we will consider. + + It returns a pair (graph, relations) where: + - graph: a forest of the points of minimal depth with all the relations + - relations: a dictionary which tells for each i < j, how the ith coefficient is related with the jth coefficient + (see __find_relation to know how that relation is expressed). + ''' + # Checking the input + n = len(coeffs); + if(len(derivatives) < n): + raise ValueError("__simplify_coefficients: error in size of the input 'derivatives'"); + + E = range(n); + R = []; + + # Checking the simplest cases (coeff[i] in R) + simpler = []; + for i in range(n): + if(coeffs[i] in base): + if((-1) not in E): + E += [-1]; + R += [(-1,i,(0,0,coeffs[i]))]; + simpler += [i]; + + __dprint("Simpler coefficiets (related with -1): %s" %simpler, _debug); + # Starting the comparison + for i in range(n): + for j in range(i+1, n): + # Checking (i,j) + if(not(j in simpler)): + rel = __find_relation(coeffs[j], derivatives[i], _debug); + if(not(rel is None)): + R += [(i,j,rel)]; + continue; + # Checking (j,i) + if(not(i in simpler)): + rel = __find_relation(coeffs[i], derivatives[j], _debug); + if(not(rel is None)): + R += [(j,i,rel)]; + + # Checking if the basic case will be used because of the relations + if((-1) not in E and any(e[2][1][1] != 0 for e in R)): + E += [-1]; + + # Building the graph and returning + __dprint("All relations: %s" %R, _debug); + graph = DiGraph([E,R]); + __dprint("Edges: %s" %graph.edges(), _debug); + + # Deleting spurious relations and returning + return __min_span_tree(graph, _debug); + +def __simplify_derivatives(derivatives, _debug=False): + ''' + Method to get the relations for the derivatives of the coefficients. The argument 'derivatives' contains a list of lists for which + one we will see if the last elements have relations with the firsts. + + It returns a list of tuples 'res' where 'res[i][0] = k' if the kth fucntion in 'derivatives[i]' is the first element on the list + with relations with the previous elements and 'res[i][1]' is the relation found. + If no relation is found, a tuple (None,None) is added to the list. + ''' + res = []; + for i in range(len(derivatives)): + to_add = (None,None); + for k in range(len(derivatives[i])-1,0,-1): + relation = __find_relation(derivatives[i][k], derivatives[i][:k-1], _debug); + if(not (relation is None)): + to_add = (k,relation); + break; + res += [to_add]; + + __dprint("Found relations with derivatives: %s" %res, _debug); + return res; + +def __find_relation(g,df, _debug=False): + ''' + Method that get the relation between g and the list df. + + It returns a tuple (k,res) where: + - k: the first index which we found a relation + - res: the relation (see __find_linear_relation to see how such relation is expressed). + + Then the following statement is always True: + g == df[k]*res[0] + res[1] + ''' + __dprint("** Checking relations between %s and %s" %(repr(g), df), _debug); + for k in range(len(df)): + res = __find_linear_relation(g,df[k]); + if(not (res is None)): + __dprint("Found relation:\n\t(%s) == [%s]*(%s) + [%s]" %(repr(g),repr(res[0]), repr(df[k]), repr(res[1])), _debug); + __dprint("*************************", _debug); + return (k,res); + __dprint("Nothing found\n*************************", _debug); + + return None; + +def __find_linear_relation(f,g): + ''' + This method receives two DDFunctions and return two constants (c,d) such that f = cg+d. + None is return if those constants do not exist. + ''' + if(not (is_DDFunction(f) and is_DDFunction(g))): + raise TypeError("find_linear_relation: The functions are not DDFunctions"); + + ## Simplest case: some of the functions are constants is a constant + if(f.is_constant): + return (f.parent().zero(), f(0)); + elif(g.is_constant): + return None; + + try: + of = 1; og = 1; + while(f.getSequenceElement(of) == 0): of += 1; + while(g.getSequenceElement(og) == 0): og += 1; + + if(of == og): + c = f.getSequenceElement(of)/g.getSequenceElement(og); + d = f(0) - c*g(0); + + if(f == c*g + d): + return (c,d); + except Exception: + pass; + + return None; + +def __min_span_tree(digraph, _debug=False): + ''' + Method that computes a forest from a directed graph containing all vertices and having the minimal depth. + + It is computed with a breadth first search. + ''' + to_search = __digraph_roots(digraph, _debug); + i = 0; + done = []; + edges = []; + while(i < len(to_search)): + v = to_search[i]; + if(not (v in done)): + for e in digraph.outgoing_edges(v): + if(not(e[1] in to_search)): + to_search += [e[1]]; + edges += [e]; + done += [v]; + i += 1; + return DiGraph([digraph.vertices(),edges]); + +def __digraph_roots(digraph, _debug=False): + ''' + Method that computes the roots of a directed graph. We consider a vertex v to be a root if there + are not edges (v,w) in the graph. + ''' + return [v for v in digraph.vertices() if digraph.in_degree(v) == 0]; + +def __build_derivation_matrix(gens, coeffs, drelations, _debug=False): + ''' + Method to build a derivation matrix 'C' for the vector of generators 'gen'. + + All the information about the coefficients and their relations are given + by the arguments 'coeffs' (list of basic elements for 'gens') and + 'drelations' (relations between elements in 'coeffs' and the last derivative + on 'gens'). + + It could be that gens[0] == 1. This element must be treated in a specific + way collecting all the relations on 'drelations'. + ''' + __dprint("Building derivation matrix for %s" %gens, _debug); + + rows = []; # Variable for the rows of the matrix M + + constant = (gens[0] == 1); # Flag variable for gens[0] == 1 + coeff_order = []; # Collecting the real order of each coefficient in the vector space + for i in range(len(coeffs)): + if(drelations[i][0] is None): + coeff_order += [coeffs[i].getOrder()]; + else: + coeff_order += [drelations[i][0]]; + coeff_index = [0]; # Variable for the index of coeff[i] in gens + if(constant): coeff_index[0] = 1; + for i in range(1, len(coeffs)): coeff_index += [coeff_index[-1]+coeff_order[i-1]]; + + __dprint("Is there constant: %s" %constant, _debug); + __dprint("Orders: %s\nIndices: %s" %(coeff_order, coeff_index), _debug); + + ## Considering the case that gens[0] == -1 + if(constant): + new_row = [0]; + for i in range(len(coeffs)): + new_row += [0 for j in range(coeff_order[i])]; + if(not (drelations[i][1] is None)): + new_row[-1] = drelations[i][1][1][1]; + rows += [new_row]; + + ## Now we loop through all the coefficients in coeffs + for i in range(len(coeffs)): + com = coeffs[i].equation.companion(); + for j in range(coeff_order[i]): + ## Building the jth row for coeff[i] + new_row = [0 for k in range(coeff_index[i])]; # First columns for the row + + ## Middle columns for the row + new_row += [com[j][k] for k in range(coeff_order[i]-1)]; + if((not (drelations[i][0] is None)) and (drelations[i][1][0] == j)): + new_row += [drelations[i][1][1][0]]; + else: + new_row += [com[j][coeff_order[i]-1]]; + + new_row += [0 for k in range(coeff_index[i]+coeff_order[i], len(gens))]; # Last columns for the row + + ## Adding the resulting row + rows += [new_row]; + + rows = Matrix(rows); + + __dprint("** Matrix:\n%s\n*******" %rows, _debug); + + return rows; + +def __build_vector(coeffs, monomials, graph, drelations, cR, _debug=False): + ''' + This method builds a vector that represent the polynomial generated by + 'coeffs' and 'monomials' using the relations contained in 'graph' + and 'drelations' w.r.t. the vector 'gens'. + + The output vector v satisfies: + sum(coeffs[i]*monomials[i]) == sum(v[j]*gens[j]) + ''' + # Computing important data for each coefficient + maximal_elements = [el for el in __digraph_roots(graph) if el != -1]; + coeff_order = []; + for i in range(len(coeffs)): + if(i in maximal_elements and (not (drelations[maximal_elements.index(i)][0] is None))): + coeff_order += [drelations[maximal_elements.index(i)][0]]; + else: + coeff_order += [coeffs[i].getOrder()]; + constant = (-1 in graph.vertices()); + + __dprint("Is there constant: %s" %constant, _debug); + + # Computing vectors and companion matrices for each element + vectors = [vector(cR, [monomials[i]] + [0 for i in range(coeff_order[i]-1)]) for i in range(len(coeffs))]; + trans = []; + for i in range(len(coeffs)): + if(i in maximal_elements and (not (drelations[maximal_elements.index(i)][0] is None))): + relation = drelations[maximal_elements.index(i)]; + C = []; + for j in range(relation[0]): + new_row = [el for el in coeffs[i].equation.companion()[j][:relation[0]-1]] + [0]; + if(j == relation[1][0]): + new_row[-1] = relation[1][1][0]; + C += [new_row]; + C = Matrix(C); + trans += [(drelations[maximal_elements.index(i)][1][1][1], C)]; + else: + trans += [(0, coeffs[i].equation.companion())]; + + if(_debug): + print "--- Transitions to nodes:"; + for i in range(len(trans)): + print "+++ %s --> Cosntant: %s; Matrix:\n%s" %(i, trans[i][0], trans[i][1]); + print "-------------------------"; + + const_val = 0; + # Doing a Tree Transversal in POstorder in the graph to pull up the vectors + # Case for -1 + if(constant): + maximal_elements = [-1] + maximal_elements; + # const_val = sum(cR(coeffs[e[1]])*monomials[coeffs[e[1]]] for e in graph.outgoing_edges(-1)); + stack = copy(maximal_elements); stack.reverse(); + + # Rest of the graph + ready = []; + while(len(stack) > 0): + current = stack[-1]; + if(current in ready): + __dprint("Visiting node %s" %current, _debug); + if(not (current in maximal_elements)): + # Visit the node: pull-up the vector + edge = graph.incoming_edges(current)[0]; + cu_vector = vectors[current]; + + ## Constant case; reducing to the constant term + if(edge[0] == -1): + __dprint("** Reducing node %d to constant" %(current), _debug); + __dprint("\t- Current vector: %s" %(cu_vector), _debug); + __dprint("\t- Prev. constant: %s" %const_val, _debug); + const_val += sum(cu_vector[i]*cR(coeffs[current].derivative(times=i)) for i in range(len(cu_vector))); + __dprint("\t- New constant: %s" %const_val, _debug); + + ## General case + else: + de_vector = vectors[edge[0]]; + relation = edge[2]; + C = trans[edge[0]][1]; + + __dprint("** Reducing node %d to %d" %(current, edge[0]), _debug); + __dprint("\t- Current vector: %s" %(cu_vector), _debug); + __dprint("\t- Destiny vector: %s" %(de_vector), _debug); + __dprint("\t- Relation: %s" %(str(relation)), _debug); + __dprint("\t- Matrix:\n\t\t%s" %(str(C).replace('\n','\n\t\t')), _debug); + __dprint("\t- Prev. constant: %s" %const_val, _debug); + + # Building vectors for all the required derivatives + ivectors = [vector(cR, [0 for i in range(relation[0])] + [1] + [0 for i in range(relation[0]+1,coeff_order[edge[0]])])]; + extra_cons = [relation[1][1]]; + + for i in range(len(cu_vector)): + extra_cons += [ivectors[-1][-1]*trans[edge[0]][0]]; + ivectors += [differential_movement(C, ivectors[-1], infinite_derivative)]; + + vectors[edge[0]] = sum([vector(cR,[cu_vector[i]*ivectors[i][j] for j in range(len(ivectors[i]))]) for i in range(len(cu_vector))], de_vector); + const_val += sum([cu_vector[i]*extra_cons[i] for i in range(len(cu_vector))]); + + __dprint("\t- New vector: %s" %vectors[edge[0]], _debug); + __dprint("\t- New constant: %s" %const_val, _debug); + __dprint("*************************", _debug); + + # Getting out the element of the stack + stack.pop(); + else: + # Add the children and visit them + ready += [current]; + for e in graph.outgoing_edges(current): + stack.append(e[1]); + + final_vector = []; + for i in maximal_elements: + if(i == -1): + final_vector += [const_val]; + else: + final_vector += [el for el in vectors[i]]; + + final_vector = vector(cR, final_vector); + __dprint("Vector: %s" %final_vector, _debug); + + return vector(final_vector); + + +################################################################################ +################################################################################ +################################################################################ + +def toDifferentiallyAlgebraic_Below(poly, _infinite=False, _debug=False): + ''' + Method that receives a polynomial with variables y_0,...,y_m with coefficients in some ring DD(R) and reduce it to a polynomial + with coefficients in R. + + The optional input '_debug' allow the user to print extra information as the matrix that the determinant is computed. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ### Preprocessing the input + parent = poly.parent(); + if(not is_InfinitePolynomialRing(parent)): + if(not is_MPolynomialRing(parent)): + if(not is_PolynomialRing(parent)): + raise TypeError("The input is not a valid polynomial. Obtained something in %s" %parent); + if(not str(parent.gens()[0]).startswith("y_")): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + parent = InfinitePolynomialRing(parent.base(), "y"); + else: + gens = list(parent.gens()); + to_delete = []; + for gen in gens: + if(str(gen).startswith("y_")): + to_delete += [gen]; + if(len(to_delete) == 0): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + for gen in to_delete: + gens.remove(gen); + parent = InfinitePolynomialRing(PolynomialRing(parent.base(), gens), "y"); + else: + if(parent.ngens() > 1 or repr(parent.gen()) != "y_*"): + raise TypeError("The input is not a valid polynomial. Obtained %s but wanted something with variables y_*" %poly); + + poly = parent(poly); + + ### Now poly is in a InfinitePolynomialRing with one generator "y_*" and some base ring. + if(not isinstance(parent.base(), DDRing)): + print "The base ring is not a DDRing. Returning the original polynomial (reached the bottom)"; + return r_method(poly); + + up_ddring = parent.base() + dw_ddring = up_ddring.base(); + goal_ring = InfinitePolynomialRing(dw_ddring, "y"); + + coefficients = poly.coefficients(); + monomials = poly.monomials(); + + ## Arraging the coefficients and organize the vector-space notation + dict_to_derivatives = {}; + dict_to_vectors = {}; + S = 0; + for i in range(len(coefficients)): + coeff = coefficients[i]; monomial = goal_ring(str(monomials[i])); + if(coeff in dw_ddring): + if(1 not in dict_to_vectors): + S += 1; + dict_to_vectors[1] = goal_ring.zero(); + dict_to_vectors[1] += dw_ddring(coeff)*monomial; + else: + used = False; + for el in dict_to_derivatives: + try: + index = dict_to_derivatives[el].index(coeff); + dict_to_vectors[el][index] += monomial; + used = True; + break; + except ValueError: + pass; + if(not used): + list_of_derivatives = [coeff]; + for j in range(coeff.getOrder()-1): + list_of_derivatives += [list_of_derivatives[-1].derivative()]; + dict_to_derivatives[coeff] = list_of_derivatives; + dict_to_vectors[coeff] = [monomial] + [0 for j in range(coeff.getOrder()-1)]; + S += coeff.getOrder(); + + rows = []; + for el in dict_to_vectors: + if(el == 1): + row = [dict_to_vectors[el]]; + for i in range(S-1): + row += [infinite_derivative(row[-1])]; + rows += [row]; + else: + C = el.equation.companion(); + C = Matrix(goal_ring.base(),[[goal_ring.base()(row_el) for row_el in row] for row in C]); + rows += [row for row in matrix_of_dMovement(C, vector(goal_ring, dict_to_vectors[el]), infinite_derivative, S)]; + + M = Matrix(rows); + if(_debug): print M; + return r_method(M.determinant().numerator()); + +def diff_to_diffalg(func, _infinite=False, _debug=False): + ''' + Method that compute an differentially algebraic equation for the obect func. + This objet may be any element in QQ(x) or an element in some DDRing. In the first case + the equation returned is the simple "y_0 - func". In the latter, we compute the differential + equation using the linear differential representation of the obect. + + The result is always a polynomial with variables "y_*" where the number in the index + represent the derivative. + + The optional argument _debug allows the user to see during execution more data of the computation. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ## Computations + try: + parent = func.parent(); + except AttributeError: + return r_method(PolynomialRing(QQ,"y_0")("y_0 + %s" %func)); + + if(isinstance(parent, DDRing)): + R = InfinitePolynomialRing(parent.base(), "y"); + p = sum([R("y_%d" %i)*func[i] for i in range(func.getOrder()+1)], R.zero()); + for i in range(parent.depth()-1): + p = toDifferentiallyAlgebraic_Below(p, _infinite=True, _debug=_debug); + return r_method(p); + else: + R = PolynomialRing(PolynomialRing(QQ,x).fraction_field, "y_0"); + return r_method(R.gens()[0] - func); + +################################################################################ +### +### Methods for computing Diff. Algebraic equation for inverses +### +### - Multiplicative inverse from DA equation +### - Functional inverse from Dn-finite equation +### +################################################################################ +def inverse_DA(poly, vars=None, _infinite=False): + ''' + Method that computes the DA equation for the multiplicative inverse + of the solutions of a DA equation. + + We assume that the variables given by vars are the variables representing + the solution, namely vars[i+1] = vars[i].derivative(). + If vars is not provided, we take all the variables from the polynomial + that is given. + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ## Checking that poly is a polynomial + + parent = poly.parent(); + if(is_FractionField(parent)): + parent = parent.base(); + if(is_InfinitePolynomialRing(parent)): + poly = fromInfinityPolynomial_toFinitePolynomial(poly); + return inverse_DA(poly, vars, _infinite=_infinite); + if(not (is_PolynomialRing(parent) or is_MPolynomialRing(parent))): + raise TypeError("No polynomial is given"); + poly = parent(poly); + + ## Getting the list of variables + if(vars is None): + g = list(poly.parent().gens()); g.reverse(); + else: + if(any(v not in poly.parent().gens())): + raise TypeError("The variables given are not in the polynomial ring"); + g = vars; + + ## Computing the derivative of the inverse using Faa di Bruno's formula + derivatives = [1/g[0]] + [sum((falling_factorial(-1, k)/g[0]**(k+1))*bell_polynomial(n,k)(*g[1:n-k+2]) for k in range(1,n+1)) for n in range(1,len(g +))]; + + ## Computing the final equation + return r_method(poly(**{str(g[i]): derivatives[i] for i in range(len(g))}).numerator()); + +def func_inverse_DA(func, _inifnite=False, _debug=False): + ''' + TODO: Add documentation + ''' + ## Processing the input _infinite + if(_infinite): + r_method = fromFinitePolynomial_toInfinitePolynomial; + else: + r_method = fromInfinityPolynomial_toFinitePolynomial; + + ## Computations + equation = fromFinitePolynomial_toInfinitePolynomial(diff_to_diffalg(func, _debug=_debug)); + + if(_debug): print equation; + + parent = equation.parent(); + y = parent.gens()[0]; + + n = len(equation.variables()); + + quot = [FaaDiBruno_polynomials(i, parent)[0]/FaaDiBruno_polynomials(i,parent)[1] for i in range(n)]; + coeffs = [el(**{str(parent.base().gens()[0]) : y[0]}) for el in equation.coefficients()]; + monomials = [el(**{str(y[j]) : quot[j] for j in range(n)}) for el in equation.monomials()]; + + if(_debug): + print monomials; + print coeffs; + + sol = sum(monomials[i]*coeffs[i] for i in range(len(monomials))); + + if(_debug): print sol; + if(hasattr(sol, "numerator")): + return parent(sol.numerator()); + return r_method(parent(sol)); + + +################################################################################ +### +### Methods for compute Dn-finite equations from DA-equations +### +################################################################################ +def guess_Dnfinite(poly, init): + ## TODO: Method not public + res = guess_homogeneous_DNfinite(poly, init); + if(is_DDFunction(res)): + return res; + return guess_DA_DDfinite(poly, init); + +def guess_DA_DDfinite(poly, init=[], bS=None, bd = None, all=True): + ''' + Method that tries to compute a DD-finite differential equation + for a DA-function with constant coefficients. + + It just tries all the possibilities. It uses the Composition class + to get the possibilities of the orders for the coefficients. + + INPUT: + - poly: polynomial with the differential equation we want to mimic with DD-finite elements + - init: initial values of the solution of poly + - bS: bound to the sum of orders in the DD-finite equation + - db: bound to the order of the DD-finite equation + - all: compute all the posibles equations + ''' + poly = fromInfinityPolynomial_toFinitePolynomial(poly); + + if(not poly.is_homogeneous()): + raise TypeError("We require a homogeneous polynomial"); + + if(bS is None): + S = poly.degree(); + else: + S = bS; + if(bd is None): + d = S - poly.parent().ngens() + 2; + else: + d = bd; + + compositions = Compositions(S, length = d+1); + coeffs = [["a_%d_%d" %(i,j) for j in range(S)] for i in range(d+1)]; + cInit = [["i_%d_%d" %(i,j) for j in range(S-1)] for i in range(d+1)]; + R = ParametrizedDDRing(DFinite, sum(coeffs, [])+sum(cInit,[])); + R2 = R.to_depth(2); + coeffs = [[R.parameter(coeffs[i][j]) for j in range(S)] for i in range(d+1)]; + cInit = [[R.parameter(cInit[i][j]) for j in range(S-1)] for i in range(d+1)]; + sols = []; + + for c in compositions: + ## Building the parametrized guess + e = [R.element([coeffs[i][j] for j in range(c[i])] + [1],cInit[i]) for i in range(d+1)]; + f = R2.element(e); + if(len(init) > 0): + try: + f = f.change_init_values([init[i] for i in range(min(len(init), f.equation.jp_value+1))]); + except ValueError: + continue; + + ## Computing the DA equation + poly2 = diff_to_diffalg(f); + + ############################################### + ### Comparing the algebraic equations + ## Getting a possible constant difference + m = poly.monomials(); + m2 = poly2.monomials(); + eqs = []; + C = None; + for mon in m2: + c2 = poly2.coefficient(mon); + if(poly2.parent().base()(poly2.coefficient(mon)).is_constant()): + C = poly.coefficient(poly.parent()(mon))/c2; + break; + if(C is None): + C = 1; + elif(C == 0): + continue; + + ### Building all equations from the algebraic equation + for mon in m2: + c2 = poly2.coefficient(mon); c = poly.coefficient(poly.parent()(mon)); + eqs += [C*c2 - c]; + + ################################################## + ### Comparing the initial values + for i in range(min(len(init), f.equation.jp_value+1),len(init)): + try: + eqs += [f.getInitialValue(i) - init[i]]; + except TypeError: + break; ## Case when no initial value can be computed + + ################################################## + ### Solving the system (groebner basis) + P = R.base_field.base(); + fEqs = []; + for el in eqs: + if(el.parent().is_field()): + fEqs += [P(str(el.numerator()))]; + else: + fEqs += [P(str(el))]; + + gb = ideal(fEqs).groebner_basis(); + if(1 not in gb): + sols += [(f,gb)]; + if(not all): + break; + + + if(len(sols) > 0 and not all): + return sols[0]; + + return sols; + +def guess_homogeneous_DNfinite(poly, init): + ''' + Method that tries to compute a Dn-finite differential equation + for a DA-function defined from an homogeneous equation. + + This method simplifies the equation supposing that the solution + is of the form y(x) = exp(int(u(x))), getting a differential equation + for u(x) of less order. + + If we end up with a linear equation, then we can return a Dn-finite function + where n depends on how many iterations we needed. + + If the final algebraic equation is not linear, then we return this + last equation together with the number of iterations done. + + INPUT: + - poly: polynomial with the differential equation we want to mimic with DD-finite elements + - init: initial values of the solution of poly (must be enough). + ''' + new_poly, depth = simplify_homogeneous(poly); + parent = new_poly.parent(); base = parent.base(); y = parent.gens()[0]; + + order = max(get_InfinitePolynomialRingGen(parent, v, True)[1] for v in new_poly.variables()); + + if(new_poly.degree() == 1 and new_poly.is_homogeneous()): ## We can build something + coeffs = []; + for i in range(order+1): + if(y[i] in new_poly.variables()): + coeffs += new_poly.coefficients()[new_poly.monomials().index(y[i])]; + else: + coeffs += [0]; + + inhom = new_poly.constant_coefficient(); + if(is_DDRing(base)): + base_field = base.base_field; + base = base.to_depth(base.depth()+1); + else: + base_field = base.fraction_field(); + base = DDRing(PolynomialRing(base_field, 'x')); + + ## We can build a D(depth+1)-finite function + deep_init = build_initial_from_homogeneous(tuple(init), order, depth, base_field); + + res = base.element(coeffs, deep_init, inhomogeneous=inhom); + for i in range(depth): + res = Exp(res.integrate(0)); + return res; + + else: + return (new_poly, depth); + + +@cached_function +def build_initial_from_homogeneous(init, n, depth, base): + ## Checking we have enough data + if(len(init) < n+depth): + raise TypeError("Not enought initial data was provided (required %d)" %(n+depth)); + elif(len(init) > n+depth): + return build_initial_from_homogeneous(tuple(list(init)[:n+depth]), n, depth, base); + + ## Base case with depth = 0 + if(depth == 0): + return init[:n]; + + ## Casting the input to the desired ring + init = [base(el) for el in init]; + + ## Checking the initial condition init[0] + if(init[0] == 0): + raise ValueError("Initial condition is zero. Impossible to compute a solution of the form e(int(u(x)))"); + + ## Computing the initial conditions for depth "depth-1" + new_init = [init[1]/init[0]]; + + parent = Exponential_polynomials(1,base).parent(); y = parent.gens()[0]; + + for i in range(1,n+depth-1): + poly = fromInfinityPolynomial_toFinitePolynomial(-(Exponential_polynomials(i+1, parent) - y[i])); + new_init += [base(poly(**{str(y[j]) : new_init[j] for j in range(i)})) + init[i+1]/init[0]]; + + ## Returning the recurive call with one less depth + return build_initial_from_homogeneous(tuple(new_init), n, depth-1, base); + +@cached_function +def simplify_homogeneous(poly, _stop_linear=True): + ''' + Given an homogeneous differential polynomial 'poly', we reduce the order of the equation by 1 + using the change of variables y(x) = exp(int(u(x))). + + This leads to a differentially algebraic equation of order 1 less than 'poly'. If we obtain a + new homogeneous equation, we can iterate. The return of this function is this final result toether + with the number of steps performed. + ''' + poly = fromFinitePolynomial_toInfinitePolynomial(poly); + parent = poly.parent(); y = parent.gens()[0]; + + if(not(poly.is_homogeneous()) or (_stop_linear and poly.degree() == 1)): + return (poly,0); + + d = {str(y[0]) : parent.one()}; + for v in poly.variables(): + if(v != y[0]): + d[str(v)] = Exponential_polynomials(get_InfinitePolynomialRingGen(parent, v, True)[1], parent); + + new_poly = poly(**d); + result,n = simplify_homogeneous(new_poly); + + return (result, n+1); + +################################################################################################### +### Polynomial functions +################################################################################################### +@cached_function +def FaaDiBruno_polynomials(n, parent): + if(n < 0): + raise ValueError("No Faa Di Bruno polynomial can be computed for negative index"); + elif(not(is_InfinitePolynomialRing(parent))): + if((not(is_PolynomialRing(parent))) and (not(is_MPolynomialRing(parent)))): + raise TypeError("The parent ring is not valid: needed polynomial rings or InfinitePolynomialRing"); + return FaaDiBruno_polynomials(n, InfinitePolynomialRing(parent, "y")); + + if(parent.base().ngens() == 0 or parent.base().gens()[0] == 1): + raise TypeError("Needed a inner variable in the coefficient ring"); + + + x = parent.base().gens()[0]; + y = parent.gens()[0]; + if(n == 0): + return (parent(parent.base().gens()[0]), parent.one()); + if(n == 1): + return (parent.one(), y[1]); + else: + prev = [FaaDiBruno_polynomials(k, parent) for k in range(n)]; + ele = -sum(prev[k][0]*bell_polynomial(n,k)(**{"x%d" %i : y[i+1] for i in range(n-k+1)})/prev[k][1] for k in range(1,n))/(y[1]**n); + return (ele.numerator(), ele.denominator()); + +@cached_function +def Exponential_polynomials(n, parent): + if(n <= 0): + raise ValueError("No Exponential polynomial can be computed for non-positive index"); + elif(not(is_InfinitePolynomialRing(parent))): + return Exponential_polynomials(n, InfinitePolynomialRing(parent, "y")); + + y = parent.gens()[0]; + + if(n == 1): + return y[0]; + else: + prev = Exponential_polynomials(n-1,parent); + return infinite_derivative(prev) + y[0]*prev; + +@cached_function +def Logarithmic_polynomials(n, parent): + if(n < 0): + raise ValueError("No Logarithmic polynomial can be computed for non-positive index"); + elif(not(is_InfinitePolynomialRing(parent))): + return Logarithmic_polynomials(n, InfinitePolynomialRing(parent, "y")); + + y = parent.gens()[0]; + + if(n == 0): + return y[1]/y[0]; + else: + return infinite_derivative(Logarithmic_polynomials(n-1, parent)); + +def is_Riccati(poly): + ''' + Method that checks if a non-linear differential equation is of Riccatti type + and returns the change of coordinates and the linear differential equation in case + we can. + ''' + poly = fromFinitePolynomial_toInfinitePolynomial(poly); + parent = poly.parent(); y = parent.gens()[0]; + + var = poly.variables(); index = [get_InfinitePolynomialRingGen(parent, v, True) for v in var]; + to_plug = [Logarithmic_polynomials(i, parent) for i in index]; + + new_poly = poly(**{str(var[i]): to_plug[i] for i in range(len(var))}); + + if(new_poly.degree() <= 1): + return new_poly, y[1]/y[0]; + + return None; + +################################################################################################### +### Private functions +################################################################################################### +def __dprint(obj, _debug): + if(_debug): print obj; + +#################################################################################################### +#### PACKAGE ENVIRONMENT VARIABLES +#################################################################################################### +__all__ = ["is_InfinitePolynomialRing", "get_InfinitePolynomialRingGen", "infinite_derivative", "diffalg_reduction", "toDifferentiallyAlgebraic_Below", "diff_to_diffalg", "inverse_DA", "func_inverse_DA", "guess_DA_DDfinite", "guess_homogeneous_DNfinite", "FaaDiBruno_polynomials", "Exponential_polynomials", "Logarithmic_polynomials", "is_Riccati"]; + +# Extra functions for debugging +def simplify_coefficients(base, coeffs, derivatives, _debug=True): + return __simplify_coefficients(base,coeffs,derivatives,_debug); + +def simplify_derivatives(derivatives, _debug=True): + return __simplify_derivatives(derivatives, _debug); + +def find_relation(g,df, _debug=True): + return __find_relation(g,df,_debug); + +def find_linear_relation(f,g): + return __find_linear_relation(g,df); + +def build_derivation_matrix(gens, coeffs, drelations, _debug=True): + return __build_derivation_matrix(gens, coeffs, drelations, _debug); + +def build_vector(coeffs, monomials, graph, drelations, cR, _debug=True): + return __build_vector(coeffs, monomials, graph, drelations, cR, _debug); + +__all__ += ["simplify_coefficients", "simplify_derivatives", "find_relation", "find_linear_relation", "build_derivation_matrix", "build_vector"]; diff --git a/releases/diff_defined_functions.zip b/releases/diff_defined_functions.zip index 5bcb93b509037a0979d254d079ae8924f3224b8c..4835a967a9bc6ffd93b167b95eb7e824b40040b1 100644 GIT binary patch delta 36466 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�uf~^mr)D&VHZ#{0M+8 zl0m0yz+s8x`N&}0vf-sKQ-jYzp2mY>joWp4*p)ZYhL=x9QJhH*5e*qdurdoabspXv zvoki}1O|zs`uQOyaB4r(0*aM!ymR6L(z3ljl(a#s-cudyBOpsEe}UMubMgo`2IjS0JaU0hb)=R-X1cve>*#2are0_OFH zP3^v_GI2=Z@%;s_rdL9Unja?A`&Mj*G)QkL7YWY&Hmf!d`gA{;SR_;?v^{Tw1U%?F z0MF-F7K%eA#2vc$-F}7$#Q-SS(!qOvc{kMo`_%K5&WEj=BkZ%z2mY~Z0q8|%#i$s0 zH`n-DCGy_ivud>u(U&+;S;=QB(QAAl#yHf}JVgEuhX|H|OKeIfzLcj5%|um5QTEN` zDDd@n80R3!5;eY z&e!aMY;Sn$$n5Cw@B@N=jhYp?*MzF#@J1ylWnc2F2j%sWA~5|Hftas|q4O->r3N*0 zzx9Q998>;!LP>wE1SrQO^Oa^QwCdzV>rsx9TGzTMMVA>;f20BJ{Zy7`+0+}%YFdOm z*nSxl)`$GKCE9sKy^wF~9GrvQ+H(i{^LB?}CK^w*+||If^8pAcyxz3?IR!~}=|z0(1 zBk*pE^(@CY;x1L4pziN8UKX{TNeqAHL#&i1{;d}(L2OqF|rzM8S{dqnbC?6du?=k zqjPN)u9y5Cn)Ai7OwTD43^HNSivc}Tk(tfBv95iX7_J4vzrHc;CvORx9e}ofKjQu_CwFj>t!xy)$$22C=A{RPHeh&v%7=F_p)D_T1OCESd7 z{gKj<9v+Zw+T)%h)U>1I8F05KM zWYvsaONVBxqR;RdR+MLxU(~xJ|5^8y&HUCwC=npQm8hq@%jK=nSQQQd?iVn)u=5cv zf}K#B$IA-@hf8f^nb$C$TdY-T^5dI2p;wuRDX5%tx?~Dw%d}@=Tri90c{31``7M}z zBZ{*|Ft81VqZiX8yMAE2y6I%(-1z4B0u4F)X8(59ZaXR#9O64yg5!~!`j~e?$!1(; z@e!cjoyd#js?CfS&Z#n@(>5|1STB^5QLbGCo?RMavmy-=E!OE3Ez2KdQQs35`=bTK zPXe3zwrE%|jmNUYxP_qHz&#hni#$T&?N^*f+zi`@`>5UW&H^4#QD}jo_MF`z6Mr7* zgn|eX6|-*`o&=ylS|P0hxt3T7Pbt}TO5c|);>9#b$Odx0w>3KB3H~=1q_@aR$_Ns?Q$h?4U z=ygikKJ3!GmRDrma}^~{8@$top$F?o`Emuk8*j87UH6g;Bit1Drk-YGdaDej-< zi8FRLwK|`y;%a_a>Co3>98@`4K~g40804w*Qw+1eL?b4Ca<1;0S$;sd%Y11I{E4+>DLhb!QQTkwjF1^Kv}lKG5cuI#qQb>S zd}b*U2(fr_a`EUnzZX^rF6Z0VIeErRrynJv42GyD|Evl6G^Iq8q0zq;@-e!gHS^Hs zw&Xao4J}BUQB@L7^9ZfFQr>-6$nvrVl(s{%yVpq!Lj%C=j+qSz&pr3+7`Q^ZA3z^A z2OZykxVBJF7H16^55glE$iEXt-|WLlPOG)h&b5~1uD@a}YN@TjKxt}TzRP<)rb`C_ zzVN`r9aO%Z1kUM0M0IMZ7pNbL9DX-HYFKtd@zhHHqROy?Q6lG(Gf%PqoksS#L{%6- z8jKG1<_(wtnFK1_sR=kJq#?8t~?J^8Bqt{1@t3<#6Xzmiyfu3btmuzBRc zo35Wy+Z1=2+y2)iK2Gl^W?qeAvoB8!5qB-Kq(Kr*3dLKB1BGgC`9~)L&x3W)&@#S@ z`*21tO8N)|KMJ4Yuq`^b%0hqjcH{6%`~d*Fb@hcxt5!+iT>8PxJscwH;E(^ziQ>eJ z1OiRJC+6GGnD(oG-{w>lze#I*7ZRyeHdw8a8VF~BtuW^9EW)9YP#BWCY=sXLAK$!Ob(8~u zy=g+O7{=?uSU!qh_YS;vxpOrpRpbMZs@SpKFVR)gV$)R5M2WRIKIDnXL-pF%yoym< zy9E+-dgilIMY6xB$iKfPM|FJKye9z~KvU=R?|4<=H+hSs@BUh_B?&HSMT7T27VQ67UW^rRBCtXirmYsDzuiKrh@10 zq~^NVPvWy$tg&jee}oA5!4GuyCw38-L=Vb=yO?C3-1|zUeY|m~iaP<8?>9534r3=m z7>=#B_PAM$d0Ahmbp0U4o8kqg#nawH@s}WTP*Az+!-C@R!3+14?S23`i7Tork9udH z;uIg^ti5CfF*N{K9=u2;Y($*Rs=$vpTMTLAf!h{E?JMt-V2ZIn9z9-Lw6J)CN#VGi z;^43Jj}(jZv!?6M4o)#^VB9 zCdJxY@+b%@9r2uwRBr&%K}W1B>9A)L+NQa+MGrO;_RCWpwyeo~V6f9FoTK9I_dj*G z$HE~MEc|n))K{r9`uCwHK~rynRAFSw4iNRz*+HB}Ba7Pc@`qu-0t(#k*+`uk(1H1n@bmPj&o`@{f6+ZGxUZ=sDJR z&7dIPw^+e{ct`gE`S$JKnt8f+Qwdr!9lgOYF)_n%Xf*0&Wh$Nl#VRq2)hm(J;;k1y|tUIIuy1G z1A>MVlvCd96E4^ zxzO0`&Jc@Sg3okryp2zbIQmp+Po7BNn>2D4$DhRBnwarV-zIgGz>!|(cFFUEbtf6C zVDL!;Q@J1jb)Z&Z)!c9Ev>zPQG@DX249jqDUa-5Iy;k*0vHREBV&thj*a0B^E2%nu zDOBM-wtZbnHgYW$TRR32AK_aUgW%n{sbMP4pW*yoMYoF?WzgF>IE^t#$w0aVkw{!E z$!Ews0jwzwW6osWni3+{1@K6oaSL>(_KiYFv}{=b6pJ4(o=k0zJ(YHiq*@`)F7cpm z3$~BZ5H8iRF;1EKg~yhzd{l)#%;_?8P>$y(+0hKarlqK7BCm55Ilz5=6s0rr2xkf} zsGSKGvLfXS70xi#WGWvXd@qE=2B?165nr{l8r_TWcdwCz_lKU3L4M(4laAq5{P56W zWLRN<5mNHsbenAhaDr*+1=CS&v;Nt=L+CrS==qtKjFxfZs<5Wp(r?Y}pa&Z}!NHJs zrwS3Eh$FA|UrbiXE9?gFfw5aLJd+5+x(@dy_mEy?e}a4T+hV?-D7%}3>>KyvCybUL zR=g%Sba`pr(R!9W&s4vkg+U*vP?|vyi~I%wHe>xdW_HoiN3VlVsYQs@O=*2@pd8@J z_F!&NTYO`3`8#$Ii^;|n3`+eGXma8h~BRvXFSPHYGi z38o003AQAp+_9*W12bpuS#Xl~(sFCgP12$1kfx(W+@hf8)Rfk2*?@| z%n61fWUVM-60M$g&cT*^*dI3D6ThpoL;^SxA>?AwuP3)re4ZKcI3FA?p|7e6iesNP zuiA%z{A9vd-J);I!q(2p67ib8R~c*pUoz6v{8@(lmcPH6>|K+BRaF$wb`Hcclnq~w z)g3&E{L5->%S@aR@6T;OgIDHt52@X!Wz#<|C@>AqPdgZ8*!j5qYD}Jp%(G2-9!E5@ z<5g2s6dDn5OWWa4$AOk?>{m=`IKB@IG$E)9c)vk(nghA1Y}dChp#A%Lwj<5~y_}te zMz38iXh*=Ou+T<&SBd#leO;@aBUio@x~hc<>iRqA9plnHts6B=?+_U9E?DhtA4Clk zQnV_X{^~r#aK%38-JR941kd}(Vqp`lyHl^^=^hTf8+EWUqgQ#J2PTpr5R}CE0C%Wd z_4sxVd61cL$z8s)aK1hD-DeTNu#b+tL$pd3x|>U*5_?m3ZQ`2h@Rk`5=ly5@NZ5oj z+bgOHFR&4x-HifdM352z>ix5L#4bY}ot#8o)=q1QPe3m0-CG!J@bOXVFD0E-2bS$) zLO<2IDQlq%=n@MGP*3}1lP70|NZS3jVtSO|t)~8MAg?;QhwX2wSbJ0eO=}nKUeIyk zl|l4~iODB&`nes-?d(|bkn7rwPI(hDM7>pS*%SeXsZM1@oBa z+;RKvu1^mggF?TU-FL&n0zDz^K^wgd*&i#t0jPWAJy@L>^` z-r}TnXM0yH{{B8e?l!iq3=~6`_6r7{dI$o?Lwunj0|=J&NwRIRR|-qORkcD1GaLFB zKi-7_D=cUX{jubIXy8u2pWJ|KK4%jO5GT$fg$>Icr>Q4IZv-+9?+vvLU{-!`We}A? zc;W|4^4mLkE;{lZI?lE8RW_wy{wI@R@P2j<4Rt{^=2xvHjFv3%Pd@O*$h9?Cx9@Pi zWd)Fq$~1HaEe#u>w_4Z)T+6HaMjp?GdTwFm-x{91VOhlE-HZb)W2Sejb&RQ|uCYNH z{@`}90?!zy6*aI6<1uYbRQ@bbR zIpahu%Ue_Rz}`*<3~}B4%=^=34HA9MWsuZuC=7YbeSK|~%513xI{ zR}_t}vuLf~^ZA7F%~8;bDW&jq>dka%`#)8^WOZ`e&)9<*5ziS#09`}q<)g2H_iY_l zOBy}Bd@;4>-C`|~5M=4y21z`1a$;eDf_W%%{?~!b!R8+qy8N%x%S%Ut)k7#RZ!7AQ6OoHz6Hl(>J(*@qsbZ zU%7#qfg#eVd4P$40E!?RYW8wcAl}@5EApaujj}); z$$5{{3frW*=Tz&-N-xI}24;gm=nWQO;au4#|<Y$a4>~$E zd2P-%1Gr0ZORl>Gde<@Qt;RSh*f=S)8bNVT`Z??dEkTw?u(9qVy_@V@=A&yxtN__f z&(hQsSF+Cx#P}T3=zOIYJ|Slm%$iAbDAZlPEO_v-apPygK*rB0N>GYQM3`5V-qcM!n z!CO6=KGg2@6kx?Z<|!`}^Vz$4$69FXTocunPQ(Ws1>ktSm<*baVQVM}he;IU*nZ1K_e-bb4`@v_m`Nq2$hV`_FSSO=uXypql zxpo2jc=2IOQ$X+ar?RvQl3s@%BY?;Zp_Xm;!UFPf7QXmYUrIitGI8k4*NTKZ&TVp~ znfV#4>F(>(d^a}&M8yPl8lWdkA4fi` zRi{!m@naRVFSSFgmiH*5W%>qx|5ca<-ifEUph?OsX8#g0-B=J93wSHtTM$?QaQI*# zg3)WS_ZOGa34U4XQhUSmHxO7}O%|zmq0Am1+ z3&MzAd2BFl>yRC1r=yq6V(nB*r;4Gm3zADWb@U5!M~Mu^-S2zXp#DOb^|y@@EW?Y9 zSd?|%1wj(r31W{%GIQJ-(%@}8wjQcD4!ok(~S^p}_k+vSHebthUK?J$6k~`v=OMilhhyL$@*`pEe&juoc3dGd^=St*2<~K@IzO zcgXf4KRwRQrJr85WWb>=pLHGOgvaYGZ~l=1xeQH-KD>X_F9CDtKPlbI{Svvdoc&nx zN$JclHXdzPEEMf1L1Q1PfMH}d^dgl_y`6%Lb5%@Z?xvYGAmJe(`&3r-4#xDazPM`T zqxJbxNqIG1VM1fkr~0E{YHYIs1GE8#8%zB|Uw02VQm*EQh7SF&!g^SQXTmCOsGt{f zZMnWE8RNTeVbY#LNx?ZO$Pnz=$#lP=9^*4_r@gkg!qEhdc=qIIfJxM6N6B;7k6^4( z1e|VPQqo`H?g)?K(Dn1=PpuI;N@N;{>z^*Tb4!^T`ymAZ$nafz-m1K%U9mbJ_p$g^S%yz%B{Jltik7>&6E%i)Q+iia6(8>?_7kI&QoQbL!Q zQshDdXTFs8V<=M8`Qq0)#qYgKhq|k z_t*3dfngFGYj;HoTq9~FyrhkXn_mM_!;1EvvOj8>&u?7+K3@4|EO4`-&~5`a0IWT* z(~RLv-1T$4tl69)-=`o;Lyte!nx9RdGLew!>G_x-dQr{zb5Mv^3!taRmiX>Q!SY{~ zW_y$L`=MV2lOg71{^i7~^JL=4&b|=}!f=IC&`dx;BQroiRR5b3qXGUZVk(6yy?@&O zqlkb1Rm6?^x9_xXIaw^!Q&G9U+i5=EcYfGfOuA*utxn8p)QpxFiOZPNCE_GC9`0oS z`TYS(2#=IMtoCk7G=F@MI$hNFzepS`leV!h}kAcGk_;hISw#S$NN{1fnV z%knQVcKHnoD<1u;Q{gh)qG-2UL6dWaiuNp;!B4|CTrmE}L?_khjHNm~!KAfz3GBUF z(5>rEQD!%*1H-|HQ#16WbB|@Tv|u$SK|MmXcCNx!5e;P%iJ@81iOusbc7Zj0X~EjX zvYHF!GC_5|!~chgIc_gcL%nZbSB8wW*_IYq>@I&L z*G~M4iF+z<9)1|K3Y-M$XftOYv!{rQrIqbAof^JB%Kaw%T}uD=HMZX~Q#i(4eP`)j zV(qhY-0U6hoMhX)TgFK!so0|4wx~`ZJ(-R%n@=V?q8Crn@Z%j2I&W))g{AoYpC-<2 zyTrjzQcaQ1PFvE0KTqh&5o6j5Oy5>;o(^z~JMr3LmEJopt@KD=9Xji^bf7r)_R3vb zkbdIP2O?t+p5Nqybe)W_iP_ggt!jI-(txd4YIcJwNJ9Ri+iaiJbb}*LzF+u0NF9U` z9HBE1x>TY8L@Fp0rGq4R(>vZ9L@fxfiwgY|mol{!W(&;6^Pbnmz95(?^w&-8z~Lmj zI~#hn*dr8Af7egklf0HU*2G=vrHG`fi|%Tszj@#?oZlpruxpskP8P*kOI94RERxOl ztyuF`^6>D0w|97WDVr?FY>wT0!bo%1k$}PTohh;cwCL67B1zf}&A)DCk8{`o9kdI_ zXQ>N-OQ8!*BS(_-7#uC&$)qhjg9>10(wt0<#6(@17moc{`IS@74;D8f`?HDc3%*1@ zdc$6gdHv#p^p~q49mawifxPhe$p+O2!S2c{I2|gEDI(IGyeJTzT*25#QKu%B*fWk< zIPcsiU;)yTx#nS`Is;=qTcX%l(@~5TYh2s;j$^Kfy}GIclmT3p?85;dYiaio{D+5Iifom7@d@$VBsYKU@83aQsYEM&!=+!Fr7~R$ z0Oy_Nc03g=n`8gXIWLZY^5e(uU1?Xz0=E@8*9^Qs8t-$Yk~X8DZ7bffO+mT8rr78o zQ~dtFO|gDl5Nq7BBHmw9jBu{5E4UtL5(sjOmVqqzuPJ_1$L+BeJ_hML9N>FU=0ZY! z{(AoeS&<%mmKq9o%aqUoM8`_St}I(Ur(s8JrX22i{FyqPdP@ z{Wbi?k@IjVATq0=Ad3W04b6^?1YDT`#UrK~2rT>9cbu{YX2Aop7AYha840bzCm~+p zdO*6V0?f9vVvvNc6H@hJi{yNXvqz2!fBHlC!Lxu`LVtqcu^#{cbC)zPjthsL_cx2R zuy||X$8IfDWq0)xf657X7wK@HqtvF6;Yt~NzOBGjx&jFz3)Re4f6x*VXk=CS!isAp z6(+R?{yyB^DUAjxS*g|m-CC4C+!Axa5&GjWuP&l*T8j>14$d!&s9wgInp7RQxxP{A zO*ln>oF5<%@HF)R@X9@1Fh(mEI;B!dfe-}|mvy8sMKR1>rauQMC`j`5lG58m0pmb< z#8qs|L3GL#Q24=7ovhY*h;(fki8?n%Bwq?b$5UfQQTzkCxwumVei66@jJ;>s#4w&= zswBI6UML&NQxFTT9t{Pu1l+iz4vVi%5ocAJ?IrB5D&Fh@{L6|D|FYt!vC#iivG+f! z7`W>{ReWc9RKy5xC2>u(1DJL6$Vg2ubb8b zUGE1)IU`X86N*^}xu9kg#cM8KjqREjqI-T45`BN2pFde5cA6pM*y6YflSs2LK?zu` z1M_5|dNmm| z52VB-SHT0L=hL-5D>!FLYh@5_iL^8|I!II4qB926Df zUn$HZ^Tawrpf&ZvG!P_eP2{A<0fXY5Tk&_*BxbC5T8x`OVEyfec&84Y&@urTMViO19{3R&Wsdj0EF|0aLMf`9^YXu*=rH-qjyl{6y&?yoD3 zNp5O-OTvUEj*63eN!XCUB2O#oGWJYg;6Iz3$IeM;_GMz&umoU$B6HX%xm937vF9;s zBcz(G_DQ-|Cd!&K*I8S_bt5iU!IJF>;>*@YFx_K9ycqd?lRt-P~;Rn z7ccf+j`IZqu+f(*gVO$-b+d^$!ZpIY*M9;Ocj>=@iiI2gQPiVYEqW&e+E3aLO>4W) z9-e(1+42Cq8?ju+#1xa!XHL~mkxb3gLaC<0YJj6xxvC|9c@+bu=iaeUx@3GV>1?vn zDhF_bB%z4K`W0u3fIP*}wTbRsW)xREM7j?=JT-1p!cEo4lXi$ej`fW;fOiE%RY`s$1@^+ytuc&`($3p{A=S;X-^^BY*5B!*Ep^w5cWjDPy&uk3U!@5L7 z1pCBwkN_O|T1)h2W2w-cE5rc1@3I*A?T#*uYNofwnZ7OWuP@e~~`;11GJ-$jVv?$l{Mm@J$ef0>&mb3YQIhhp7 zW9dwfTXI;8jbK*b+TN=!k^-pKq3xVH5I}oAgRgQqKw8}{5dF(<#LBV$706Z`F=$Jv zJ6Rvzp}{+Z6iawR#WTyEQxmH8k9I#ORA3sZ) zjIQHE9YHf>jRirJWA3S4?Wm04ieH^W=spBPq&~+U##-Y$?N-(R&HMif)XmJ=^JN+t9wR1 z&#i0#Q`x7fy9{Hb85O-uVSX0%T@d>nPvA;!+lTUk7=N%T)7 zCgrHR5l^lLfPIo1?(t`lwZ0^lZ)U06swV?^k8$l6KF8>(@=X|hEn7LNZqBM=>{`A0 zhu(Uwki7c0@`x4i`)Vz#o#f!1MwtE2A`Cprakp#?@}DK>Nwraaq%TD}0tg4vxZo`Q z=*_`q%S1K~j`RPAK<=~RGGn0sM!7_)I{=owj;ASNGLt&(4Vk(RF4ph-DzcEJ!oz7) z8H_vP6w-1&PXag_I%rv28k0eOe-}xUDieWeoJl25SC|+}0n~g7;bj>Y@C=AW*2FdL zFObK}^^_&(68g$Zxoo&STGEa3vj^MFVxw_i)7qr*Iq|B}8`vaT>h+ZbGuq>xAKNj* zN*o?&!MkR`>Ear#@rNpsF;$Q+PT<9O_TXl5F4W_Eb3kQdmM@4-v%lMFmg4W2+t97P zb|6M))IpuheGmwL$;_|^P%we^I zlO5kM%;zR0UwOP%1d219^aj`?elFaI&f6D|cL z+iba(e2&icvX%k3g*%+j5dEikC{QvLr>=-%DofES+I5qy>^cCTaE{E#e+{zKF@cF- zl(Vnmrqunbo+4!3rM|RkoZtuEyvdNRON%VAl8C+uBbFSO_jFbSZ-@Z;Hi+4woI|6I zP+p>8r*-V}ix9M4v%WmU4)e$GkeATUoMf#{!Kac%a{jQ%ArmY@IK;5BO0xSX>yic$ zC-mmN-OubXfY4cksAW4~?q?jxsW#PIP0de`lYnw`__KRmiHYc5niqs{gj`Qlbj+dn zNWm~B-+M`lzX-WP?iiNkF1NIR^6W5mNZdFB#9y>d7!2wX9P#d{62m$P=$JU=5K{x$Xz-j~Wr@fP70C^0B0g*ll}{_0<6u36g|mj*wQ?-)&c9~LTBb%?729j8HxI<1ZTWme#X5H9&S}_Kpw4mX>_`><&sL< z6>`h9D~>Y7lE^3*j{1Sgz-5L~Ksc!YQP|xGkEs6B8~tgc-&{fY2ESeeo*AQ@ z5)rLRlWWs{c$I-3BC~7qRy>v&Qhj6v@cmWDDm;25SxwvjDP(QPhg+leTgc^Xd$-K| z)7HLgrtkX&`nxa!jS5B638zcbuvVKkQGJ1a?Yc|8p44nr_=xrmAd2p z>;s7f{~R1%bNE*w3!Z(3xJQogD6^f*-n5~ALPmV}(-Fe!GYC6<=~fE^0NWNr9c?cH z5vKia0yEMjt*`2??k}5W7WE%MJtCkT^2!RsOU4w37#3JiEPGSSn_?yFi$|)tRMS5x zFo7DQn(Mw)C6O$H3hGH?VMc{WSZ;>iPe{!R6S+v>2Tt<)d)RCho;I05W}HNStl&3@ z>YfuY;BE0b%l|LN?y)_Lx6#*dY&CY$B#qfPjcwajV|!w&v28nzlg2h0H@1ytr~N(T?0Pm7HRjXOzGY88%WM6{mP)q!vSE`L>`eX- zwvBR3gjLX)Sl);pVx1@u2n2TLhx$l*Z1~|lVFKJa#CFkELNicg?)z4@z$W89wRM_U zg@RhDDideS#_g{RxF~1FOR5-38p~)mgI)ou_5?bRgr9Br$QrxtWdeSzc;9DmcFU^x z2g{gD`icvzjY|^au&wp2Wo%a=5yGMQkRb5gb>=$>DNCb`Oouot2*r~kAI6PC=;?PA z_LIo)x^>*He|)EzQ${n(1p+KJ_@}TP<#G?9iPwT+VsmxU^T&s>uIMGNjKrW5St=Hc z<{TGGW7YfzVDwgpC&Choh9**?TEC=$`8J~5(0pyN&L|pGB0H3T0pkpoi_Jf%W*Z92 zt31X`sQIFtW}g1xEA?pc9*XvOmOJBC+b{3Dn5fU?r)eVGfjBtRQCo4_z$zl-iTul>4Kd;f&F*`JjL>A3a>yEcQB(sM zJTFpDhl9Gkb~DY7WY|=!a4#g$w&_Janr|O#XyeJZxx~6uUK%yZ;Tfqet46M$XCc;* zRL(^O#r+^wslqyd1!kZ`OTiJ5#VUTAdurG^H9H{@zaI>xghK@^Rt!lI8G|?s8pu6_ z`cUhXl!xNUDLnZ87;vLSkTmeY=85r{%56&1J*b?KaSDvBEXROupxiZ=UphS&;cBjJ zvpk6OowFLdgZ8 zgq{t@N_>E$RX1}j{s}z=JC62Y4UO$n?wo*|qBJT<3xPgTb!?0tjT0(Kn?F*(@7P|0 zoycziVTZN;^?+L=1s4nbUDVhm%ypi@!dFU>pKniQwh5?FRPOLTvjC6gwl&ChV2R)hv!96%vf+vDc<46VvZPTRZ}hfbSKB7SPU3m&B5tr0 zLx@^>J9imp201s#ulb#~Kv!rr4#T1{9rsq&%)U;s|;hM5Hh1nsVH;z0g$>x^a}o7+%!K@ud?=-a62T?v33BhtZ!n^W^ku zM*+ild{}aPCNYudM0Q5HW~=5H=!RU7IkYXD=%JnR|N!f@w!WSEoNG!2yM+Z%rOPFcAm@7M1 zD_Wg^VYqbglUZyGH!51RVI+ty@`w=*iS=Y>1Sn%2sLBnJXg>5hH}}DZVsZtbY?4iq zT84Q<$q;;SKKU{?T^cA9V*!x}e02(k<-QFpxr--;Ppe7{hik;xjZz8XKcug-x{Y5I zb$m;4tc*QVPmQm=!HuB}dY~b(@B-(_n4caW@6pPFxq45Shphi3%z5t#v(bCPTqd!_ z#7Kz3!zBlPhh*-7J|||^Vhw7Nyql$&j0-#Gc1ki|kIp4dq)IJq_5vtj{nBk8Kj$k( z{)qb+ZH4?zTh>P$!8*u4oAw;FoFqFd6FWCYz9*SySAMxpdFo=oXX;dRtO@miJ(YOe zpg{AHV&(vcaS@E!^Go*_3?JfB;m^G0eL9(?*;#&^=~p8fIom7`3O3gkUq@rdl{v4= znS^Y8&|fgKWa2t}E$Av?G%SiP;{NR$fYn2)v z9+=V~Byks-(lB7ne9fhdQx?3fNHDl^5xys3H+|x4896S)WEfG`81f59@_WIYfAaPO zGF-T>YUXdiKq$>NHr)L9r(h;az!!gXjvnLVdN$@bEO2e@%2Q{J$I?%JZiomE;-dL( z!}zLDn1S6_vt}MADvEhg$Y(5PPd5x*59D&aJlIOx`AS*hjSLFH;38V zHWxz+-2YU zW%l=e8AjhF^7{*=12c0fLWW>yz-_v$t;0fMb$L@|QrMEy#Wl@iZ=J48UF7ne1LxGr z$$BTi`YF>G`C3wMZAmH~Dzt#Rae8yL4P}H+a+j@WFF^^vqwLtpCdSe;w@`&gPKw*Y zHgo(L{UjvcW>U?7JOGwXAvNKGh>z%tZ6%gam%D9m|1%pC2AjK+%*C4(bJ)BR+| zk^=eOAq3QSu_Wm&W#$7N4X=_(EKeR-yRmyRHPksQ6p(2H@qU`EpqLvEN~y1=Q@SQ5%4uctycVQsR3@@^cK3OT zk6RUselxRzg|vT=&uTBMQ_3if+|JQboLNvB%-D}wkoYS_lo%zb8RfccpZLvLWZ*I& zKtOzf-=Q(FW(-Q9YR-mZR`@4ho_)`k^GE|j{>hgu-}7ao3d9)uu=jjf+(|lNsv|`T z5)-1t>3Uq`JixIK{BORT@+V&|7)L}ppubc4lP~kX=gWq0v=oY0|IU|T0JRp3>KoD* z?<3C_vh_MZUoTGF#WiIi?;!I4QH(KNcnmw#!rQ3E!^PyDLfo|!;m^L8r zHLxCYz%A~=!Uy_Cy(bhj+J#wk1bF6kov% z7&>>HRlDL1ozQ$*KwLr*=7l*zZ?=yvomjJmDx~-!uj8eUY+`$LQ}cNgme8Cc>%2tO z509)U5R6KQp3WVPB6^^Q!$CR^o*eCNhb5W@8adzWt0Mlj+@sTYhzxZ*H#RAz3=$%~ zobChAB~Tp&H;0C!|AW0{hU+2YtM>TFz48^`n|o+MdwiepwC6|={5XewsFRG+zU)mE z-StCTh&EB5FkAGZX)gi!fzs!+QY|Ndg1KGP75g&dw%NtvRV`fV@aM~s?D2lK zb3U4!tOS#SQwW-YsQ1tP@^!|KK4pK}Wv}3elSIFdmIwKlJ71CtN4=fnBPwo2SFs9l zvobmqc|G*&$6(`0Jtrv@WTy7clo1R>mvet z3)VKff$bYv$cC-wQC5_FuV<)`vUZ*NAlrs9C&ItaERQkkBXF9Fv_F=&w$jvblU^V|TpheJmy`vFC$6hOE8&@m7)QujB5q~ouZ$K|fh`Tkxv=e^g>j!U^KGlXR`uE@LaGLO;Xs4Feg z3O68czfV?Yth^;1CV!Q+9TMZZbqBbDAbR42>eIyAp{=FoytV-KpTF%*DPK(5m3WTR zBFHx-5PV{Xg7SM#@lWQpCI19sL$)WgT%d0|aDia;p_j#FmG4 zDv?{ChGltYiCxZz^V*;jYJi}52ZLx@vQcE$&a|3X{6MW#;+fB8m7g@dVgS>AHT=V z?SJED{fP(oWg3H7#6tdl=$^bounL;5kxS@xvfkUkX1)_fkJs(TzEvsp%X|jITOFX2 zZw8Khj8Y0(z06#Lwnw@6%EjDyGj9>0lRK{q<`l^_19#(h-^N~@oYw8rtAdlvBkKG| z+)Zt-4l-xm(oisPfEP#F<-KkGsY9qjuy;8$6PG#X-=Nxd@kz!ftd^t_NwFN>tY-j^ zF1!m!JMbVjR*)LIj$WL&efD*~(ADy$Zb{%(**y9aH+THPT+{$Tt=hN`U#$qr=@q@p zOaAx?o<_%P;&+z@)zCoS4~wn)1U-Xw!=@$#7Bjt_7}uF$cAPJWRL-poVH*?#!y$GJ zXLg{D{eRo$`uDckVXx2`?#FxEoMmLRjjm)Ws7@b|3@l;U8`C{T*F!&gJS%qi z;P_;}kx}9C6-(OMH{&H`KzKg_Go#1`J@5+At*-1yi4i!mWo)IriD;?TtVlsJSx|YU z+Sw@J9!%ap5rr=D-m~o4EHBeyn-Nt>NKf4G&Q~vn!Z&B+c*-hc zmSlSMB058UCsrtOYzCU<^l6rU+GBFv4bZE`;79L9#xT?LkfQNqw*bXNz2qEW!@Hq@ zb*Zc9K<2d-Nj&@IU)JAJGhI1?Zb02~&CnB#7P)9m!SJ+)A#ffMYiT~pu>5*i7Rp8kmuzOj`!Q-K$)$ejr|U^O z^qSZA*`K0TIyX~CeZ;Qcu!=#d-40>V`tEubaqh|yQJFt{E0+^+I6Qd4W4ku~P3t|} z_*pWlXR$)9d1E$Ss%&$~;#h8UQXOABkedhxtf8(C;57p%~-St6yC%mb32k7T4F<4$v#N}`?wVH4! zS|WB8cM(lq(Zy>dX&HWA7htsT4)Yd&Ic}fO_z;r?_wX_Bw|#K|y-|hBQz2MX+bQPzKoY$I(^v zqVK%;;Wtju39d=ZB{R6KN-^AeY6sl~Fk+5*#0N2$nhll1K08m6Ko5tAIL39}7*0qBQb4h~HU7PcS z2UGg^@khm=lSRhf1^2JfzF{VZv|7d3gc}MtLkqh_4mU_$gwW#h!IjG&Gsvp;NGU>cBPLCzA-hHfF6ImKaJ75ndXS3^hB~Wf z=3LtCp|((YaTJtd&GcR6<=y6O(J3$~|G>cON~q#&|y44Ot(nq$u~2auzt ze|QupK+Sn9JlpOFU0y8^LVEC}#dl7~sT^Xf4OU(hwOICo^e3tQ=K2tZ(bwvsy(%T% zd*AR(cdWDKj<%4;l*f={EUM|MhJ$Ps%p651?i1>fuGxgIlQ-qBfA1kX7h&K(0GJ0P~x^Wx4x9HegkOeK(gMX5lP~$a6tn*}$ZNFv|NZy@;^m6{fOQ z!lHSphFk>m_&hafCf2VTepk*yXza@~EnAqHL@G3x(_@YKXiEdsw}iLr#wP=&+SR#V=#WKuD=Yh zTw}=gdJCPDdTycpV5%OqprGvy>LwH-^d6)4>bhxr!63|#Z8#wQjnNx^RjLfN`>xK6 zV@B=W@}7;8c3;vJEgu80R|GFc`)JuJc{zey^P3@*XGRGZlf&?cCpC_TP?Y%+S0n>I zh)^cUj6DfMh1EbPhkt>fvLs$Po-woc7Ri`d(@)H9bBOLruOjMu_tCfG3tU!wyw;nN zAWN(RQm0VDI4{Oe0c1-NBnSNjrC%c_&%!JqLNs~V*t?0~+BN~@x6(9lQghp+{+sep zbkOr`mRUTHo6#{R-_&1aUeoMrcturM_ugNzEfMVRlruv2c1JJ;Rp1Dz8VJ9&)2OnF zFYX{cpY=sunoycf$8DafomQ&(7fK{QV!D^@KTBxzvB7#qfyuA!B^|~{YWHs&wK#7P z>0CnOwGf@cYySpdu$3B1#=$!UB3CY>Q%k7e^c-pva-DVSB2Y5j!x+X?aEYHWk2y_T z4mh8BIK^AJJdl6(WeTv0Nngb=6mias-w`n7;>G#691tGt)TL~3iZ(qp;YSK*YXl@u z6!bX>Qta)T;;R=SbkOBt9*iFG-K`%C)L#^1U~f>WUyA~($DO5_GcrWocXxcV5TZ~Q zDJmB#FdK1otK9K7L^p1Ag;C(YbERAd zL*|&=r8=z@pk}Wrqfgn z?(i60#3V7n!M%(hQ}zBW$}OX|dAC?2rM{l$wx60Gv#3!!G#iz1VZ z&gaR0 zIC>>Rd9vtn?GoeW)$rs)@nguOX8T&gC%5(O)O%Tg{p?(<`ofoO27&9Qa^X<-aLs<| z%VIm}&x}sSFWq@ru{hq#5j?fGTTTIFmtJB5rJ%DtVrcB62y;IC#@|OY_l+IQp7mz( zx(5=__7b=eX7lT~aoSI6_%k0JpwkQnr5sn7pU}^vTbaP(j^Q@8W`5RVX`N!qXv{h? zkc<)nsai!}dNgp<;W6tkbq;hX_j!Whm=hk+{d)Z;wl3H7HrktMo1ICB@!ebtvgR#>gWJ0!|hQY4+%a5 ze(qZDzF=xUSSz1>dp&BqK6p7r#!BAk@^<_U+zH+EmXAiLZTvobd94l@G>)UkjEDU^ zk*P~w2d;W3N(T=Q!Q$mr0d_{w;4Kmk!o3<-F1m;Y`n>ATI~3K`UcVNY4>(QoA_R$S zt<>})ZrpGPUZ})`e#DPj?bFM8SO*ojK5=)FE$tfjkpD8lADMDJyJqM_5+|=Rt=5SM z6b6}0s6^0-HQrIgBi5i(!Vd3%Ib5QMY*Dbc7uKKoRDb#{?uA=m#LAP4LB)UU%Z z9-RojCT8ry|B=w`ruI{pj!&b^*xM<;Jr&R1=mhG94=W`ri=nNni70)=x;q`sYn|EQ4#O1`25a>V{Es=GJV^(Jo!lu1O8;lJ(0nckT4DRa zz${djxXTi*@SQ;q?)}dUx~3r$C&%Z%47v+dx%NEu|1ebT8Tcks@j6UxbiHCXhg zd1p|2dY@%3y*DOj(x#_Bt>&pa|2XK;pARCWsP8xY4Cw4dk2)=a-PUn5EtoOLaC}*#( zpVwg?gMWGt;ITHgCed{3=tta{wN)ZyH0UC%dOBqn*gDca2p;MJ6me6&Thx9oG_1wyD1^ml5tg8aL6Gf;jO3Kz=9QR;CpL za7m?Ag_(Cb8uCRWp+1jRb9!-7>URCSJfyeIyr|b?VWFQwN9lK(a=pawCJz)Tg}?g+ zcc%0(+z}EIDW&srEWL;8#3#NdM=jd$CJ+xC64CmyvqQK1V{Z*(2PUCTm}Z>n&t&2b zFBsD42N5y5WLPGoc@;p|!KlQIBVQLv8e*)#7FE}&@D0s%G3IG&Fzg(<$*k$FGG$y* z-KYe_Hh~+}ii9i~F@AoFxhK@2mO`2bvPPz8jEE;Y)#9j@f>`l%x)o^b9E{*sN6>?W zZxu{|dNLL3Tg4i5IkK}0OumxA7xm`bniWUblH}Xlz0*V730+biC&33DIljVa;bh)d`D#`L=m5W-(@OL6GW@jR<&yC; z14}cLf^MK^kvmOwbiNhRd5#VB$-ooqXAvTC0p3lCMi>=;8Au*KS@?;|$2`si+WZwn zUYxY|?ZWQAw+ks|JP7~ZF8K9Zp{Sr*IX{1}_n^g$I8YT|;Kwm{g55LO!K zjuY775P#NLL~M!*l^Vfy%6D6<_;o4Ds~t*fTO&>mKbl0~Tehyh^bwsAMCc2S$C`(Z z&57GtM@oXHLX&2gv?M7fHcx8+0?5V2Xu!0bCu3W%Vag1!Lar5F(#QAy zdlh>e6nd7Tm1d7I%~y<`7mGSfw>qE{jA;ndHKHxG&-soVw4N*a{Y{u5j@hXbDk86*wvba~Udx}ZeRpW#BT z7s_!JkQV+vT(Ifc0qczK*G%gHUl7umNWMd@N|ped!Ti| zYKLVtXOvXy^097^%~SW^(Q=omh#rNsf1~B2_i8SE->TAgt^dvoKDh8MM6!pXu(XC!#TXtMA_okWnjC^dQ1?yZV<% znC7do4Ls^{3G?-e_x5ZY-{%F)%!kxIUXuutk>bn@L8M`~2!e#irEvS6$ z@CVqMo<4;0Cbf~e2BpAZ&%*r%yx+9ZdvI$=Z_|UHExI-6Oujw3)6e?8 z9FJ~z-reIBHK}{w7DRZ-*t6#$AQvfwq7v?Gx$yAqf=Us%Y}z+!f(#&IYiF67 zGJ8OWN1|Za{)<`uZ?fDU@!w>*E#oFBxEZZFTR4)yE(0cZT7GvD5!*I-v#JSO^bK5D z7uNf>Ac2WwCl-tvZH1U%NL}Lcr|G*KAmEK+9Kt6r5NR6`{DU(* zBKWq3;0eUXR&yc`%2b)o>3v$Dg@Sb{bn})M0{Q}4)LZ?=PLFmx{XzlqJ#OnGmNoFg zR=e%>c=npjxAcpf>^FytMtgR%eHA-~sMt-$Q6=>J9TS;!^j$2gdC@jgTJ6E-G6R7L zr=H;<+wZKHu(F`ux9bgrzNC;vcHcfK=rbz#jjC24wAD!DZdO=EHtlA*?LN1r8E$Ur zF&SDsY(qLjJg`h*6;Lsw%!rRH;$r|y#-ID`P6H(^d!+hyO`{qcCMG3%cGa|mxCp-a zj6ti?aVR6_7}kjku5OQiG<;N9Z2d8W9%;|Q1%<<37nvuj>7NI49kgg1H~W3iGvp#{ zf}!*Ax_Lvl^O?;9aDF@k_i?{oQ&EFFbyu#@uZqr39@o9ODr<&daa_y8gZ~cvofbf( zFtPF!Q+RxMtp)i2>g}<5OPmw zzM|=rq!SpcJS*^ra5%{=mw5b>wUbYn=b_%(6YtA{9jue?{^F*IlY*pNgN}w8-*p9< zv-uC7QmzMv|1JwESD0S`5SKl-f&2mom8ydWUFI70m2<{Wh;`qadG}=Zc>GRSff|K_ ztDSNqz1*OiO-y?CUB@tK`W~t>5L9*rCJE8yo{Y--?EcL2^|%X z$j*==-kWpn2FtQsc0l?r;Omz;N?QTvJv{3#mbC)Es}{N8EuN}@ZtY~uf2IXBf2IY= z%OXgfR*~@7>Jyl;lLXNHGny{^JC=b(#9A?ln$vM{9Pz`HsIm`WfhgER=Acj8LUEJu zv^NjnjLJK58PWG_p6p?lx3q}@=e=HyOh4+V^tnaWO+GTO4P4p%10al!<-zKq%=@qv)No39Yfs!s>M3`wqWXk8AFXFn zYh3z&0W1x6bbrPLkM5T^PIM-WGY4r(LwRrBp^X3~VE+7lMb%pfP1jY(8J&XQ`%GAn zz^~S3Ax8TVQ{7P zY`)9SIR!*1GQ}!U9!O{@WhI)6ABr&cG&0$B#U&V0%H2Z7b=?)e8;DVkANED(+&W&f zS|xU(xKKbUBm#=|Y5bkd#|SG-j_ry0>7^Br6fh1erXpeF7C{x|b*$56?E-&Ru=pU~mjPJcbo&9xs!lHi&Zsc)GT zynN=qa}p$8BGP}-E+A=+6k^PT zT210PDHXc~kiyG@7*VE*J*;Cp3PUr6a8#xCC7%U&I|`PtL}R7m2l~#qq`o*$YBx}$ zR}g$A7obM-Wu8CaxC&b?SIDe^S;6}PG{d&0 zkWY(zWq+{NEXd-9!=YRF%|08RTq&VAvBMP-{k|=raIg*$J1m6>KJ+6I+@er%%vDV6 zIT39BFr^LpBd}37i^&d$`x?Pu4^o3&qr)#4UYi3o0y07kW11*0#==RBNAk?s`LkkF zH)sH^rMFd^0sU(j-bddEyJ@F9;Ig}?g&`O8Cro8$DLaVnPy#=rU`LK8u~>?3!ic9z zXJsvzv1L5Y5CoU1&3MnL!QHm_re~dKco!@WzJo3@haBhS0X)AH*Scnz4pR{7QCy^d zkFQZ*MVN62W0AjU<`Zr4kEZSYkMeoZ3cS?qe>N3=?vAbGvVlMbtu$2u%Gdd77Yz3*tGVJmqw?-R4cdtFs z_HGS(c0KHzC8{Ayc#19`NIF^%17YYHVXAuFxM>L^sQ{6E^C1Oc^Tw(O%QZ&CbrJQS zSn;qWw5yk@vYOJFw^&GCS^*(O*?>+w+=F*3i}O(DnarHR z7rj-S{JmZ7HNr4shicrZZvIMphl`0&!Lc$xljT)%x*6g@HOkUo;=Z_@lg1lm!kYnq z&N=5TdPayZcipL+=B2&n)m!W$Cgxm#?Iu*PV-g6Rt(3!Fu39T@_2REvUm$7Qk5ED! zrqKA3fIKFc-H`iZ8({(OlgiNqZa5M}c(AqTEfuTW^-r@lG~%8WG0?MpZ3?R4!}!Ty zg~=O5tB^i8jote}tFoa?oEcvq^f+e=(j2Qbrp|ODEM^uaZ+`TN&5T7P`!o{!q_1Bm?w@@{*^GU<3C0h` zKC$I3Vd4^UN@r@qCaSFdphGluoqfg8BvS|i7Gk&wA0{`@-IoC)+V0c?X1ozS#p6R-EljbRG%dorr>*WAee>p z;~kb>%cP>k@_p&2N@F3%0{h3EP#plB9t@Z`^o(aKUkHO1TmNP^F`+yPnONs82bi(D z*`lRB^FH<0G>S2W#S~RePC32XZ^e)-Y~5t8?!xX0qmfvL9FzgccRc}2&%}1|iLv## z2{7)f` z;KT6-U7uDALZw9JOr*3CHmTd)4Srx)mPpi1i8gZQm`Ao1Pu-x!68_K{nySV)U>*^7 z$NKcUc20m4vHX_fw(eMYh(>_r2NrU>qg4@A6SGbJS@a$V3LV7jfQOA%$l)QrgbS)a zf7mbP9mb~!8HYTp<5o!06VNDtT+_5KZREPt1g;8mG7kGv=qcsEIv=%QUr4@d5ZQ&# zu=#k&*9UHP>I_mO)p=Wbc5++}b|zxBLJ^iggILVlj*aomhSDJ9Y7*KHoL9FT#zDcb zt|KsY4Gi8^>e;LlsEkHo0D@R<`pT+K39kG33REzeO8@vX0$R+2h5Stp}EB(9#-yu0+k@!mNv z9S!kbX(w`UGZh748a(Usu%ch;!ATX%GYD6yJ8ixviH-!NGddxlTE@w&#Aq_`JemeLRt?;lQhku2(!3CI z*Vv;pcUI;4%DHPEoF6|VugI6;>|1dtyV|zQcbqQm6q7W5|2DdzH)XqC|Ii#m! z2jjjCz0(-<>uU7CR4YM@HKaEXkGMVUiVt(G2PZnE)RH~RTINeF5mP~JNf`!8Rn@|E z+r=J3JjB}#Crmi7UhuN*HKPR+(x9!Br?e-s@no@IIpy}jNjttzfpG;rN7623jB@Rn zPU5auK@e07iU#K5HV!fYRItm|_X|}7_h7xLi}E%%cmX!h*R79Dvj#}!-L+8k@k)=C zp0*N@f2-fx#=L_It^HPZWblDkm2OI)>kDrVL429(cWnc}IevM}lrt6><2Az9+i#gy z;38VCZZL7cNs$EYN=zc&4TUl}{M||I_#zZ$s1V|im#qFCWWMhT>Q^PmeQfCMt8qq* z{_G0wdCPXaI&P<>sFY19>1(Y2|8R8Rzv$>h|LEv#6zmxz=&#V57vAqWy6wA;&am{Z zqx*{gqoe!IC}m6groOfc~EzoX&7n!zc~8jUmP8H*U>{b|5qKI?LTyMg+Dra z?H?We4~|au2S-2t&p7(&9~|B2f5p+Qr`65garDQ3;pjlaKRUX#>${Gg?*#q7>gcxR z|I*P3@$onR;^^gnaCEf)0Y{Jdi=&79gQJT$>HaqyU1FXyvv*h#`0qM;)6-ua-EHdM zI{M7Nb@YLMbo4(sI?p?fF5@b980N)S0jW5|Nv-h9tsj-Kl*;7muPPP3D(PZO()PYD z@K&u=Dum1(F7b!4X-7Pt2?Wn{x?ei^CkmAi9dng|$ci>nJ>SNukAnPh?V%-~j#$~8 zrC03_?8J&u;|OCuDCa7q6uIy#KTF6%$SjTs2Q7zR50nY!IALiV-o~$sy1of#H3~Kv znYawhd|j>rXM3(?mdu3j4SX9^EE%> zMqctX+&naxBJ4SA0#C?Hg0|GPB%9i5j8~3PG$-|5Dq+mLbkzy;yp-kkktGu3zM^|1 zJh9{a{gJf+4bI15+C;UVmxqRFj6c`E+G8ZQDN$3P7w=i3S&M09IETS;AkE@^R{-6- z!T?$i3IOG#_sT>bF)R7^Z&1a!+~>Z&Z=CPYb~MvNF<#Xh!zA5#!Cy8>-e?bZAWno7vSn@g^NLXNuaB;t$;{ z7JiQX(jch)^`NQ8d}W*C=?t&X{6*)?@l#c6hQ@}neT}d$r`9!(v2m}lM=k(HmN8>4 z)d=#ZmuESO2`#+-DcdURR<{k3q8|e?IzQ@V-FHSNOfgkkUtE}XeOz72Z+R!OsEz+DjwP65%?X`CP1-3pRDMZ!s+MC5a z?P?)C3vmX4s396E;Y&9q43n`eaRWmDbmNRP8*!p`(2(Z3OhLhL51J=AvTG2BV&KYz z)qnQnPHB5wpJV&^fmX1kV-WPkyy;OSfOA3g{rH5Hn~mj4%-!Z`cLDNy71n+;_hCJXh}^oawZHshjeWX;*iS#VY#QCv zj&Ej9wkI96CO5@=zX~y&;voS*8Y-QwgkGxY=dwm^{z2h@Q1(?dGH$Hcw;T*NbOKae zPpAcwuUgV10D4h1y0?C2<4Yx84OOTEX^GP69;fNkiH%S~7J`uTrQcdY2i**5l!kjZ zcxB({O0vopR4J7y|5bw2Xclc~zCEKKzT;GoF&fUWMTR_*jp*c}F-JHcXV{vQ{vNGk zVliWmlD&=Ce^N#AJe?b>=7R_3UfQTbg#7#l0QMQPo}PqN0frm7vhGZ0~%W zVU@{T>1^v9n>{CVFhZf}&~yrNo1%93c0!8lSBOpGKOX^2s{P!e*i@9fI$1^qVUA|e zJ*PfhHAYaY_C{?@`sM;;b$7yXEsIy5Mt?z=DmLaQXI>uQ`Eylt@n3Sg%IaU@Hn;if z)_)PVk^Uua)06%cw;%ssaXaL%xSjluxDEUxZY%v2x8?qmxDEVoF+h48&> zXn`gmh7)v`>|4b8=+V|*$B5%@>9P`c2I@lJy{$!$kQA>LE@Yw6HEfp*05>x42|H*h zMQm0o!e)y?#Pp)0q&8?5f%P}+)hx(8s3A|2Z~I7M7EamnwXd%agtRfnZ>qGIXe%+_ zrO)Ht0A50Z?D*vY{2Gf=#X zu{?N?`Gx@}>5p@-G=&TZZyWq5O1uP*_{sdz{r3o0Iu+lY^;2^9*4sH{u(#uS$%R=C z*8TU*=>9{E!>s4(^xX(jO;bFr?!*^Wat*vVl|`{%Y0EFNZZRl)RWw%S2uc_2Ij}?I zk^#>c3FtxOoo93fqmf)*TFWvjPiG%%r!vk<$eJ?n2*mIn?g5JZBvU-4t*=PzYa-AK z-B9f7pe!dQ!~vDkKV+P2{qF`Rj)ZZAlzKLLbI(}o8M~JhebDu=mylNn(c5p_ztDi% zWZHDxzfcpjix|VQ^=36bfa>K=(+}plUyZgPU$eq= z4!6XCjd=8&hXX~vjp%tJO2p}I-fi;xz>v@>S!|o7#xH-9MkwF&R*)9I0i=Htb~N;P z+o1igB{=?LJHTu`>Jcbc4{&6MW5YEw-+O6PXb%dIF;s|dM2!loZv2stTS_9!J@ zt|vN+o_u(Z*wHrgx2gU2=R;5&84UVkIz#7?Umq{U%Tq3dHI};-MMe!_tGE)I z3+BTjbeSKnQht*(Kx^AudcC0m>7%^X^DD>O2T2oB%IW6(4#UTvO0P$Rjjb1?Fzf2)`;CsC z1a`<(jf=%d$un(m+FCGDYr1$A_UX{Xzg{|2PfU3rGT9tZI^b|L)DPKQ7v9FD1(*iN zWzqCzAK|Vs<-U&gINYiHc4J6yA2XSXjg|%OSudSuroCXqR*;ezRZ(SY!I9_}to?+0 z+AAjbQ|J3PgsaX9c#>CR>ttRnSUM$;4%nNrqQ{S3=V?G3SPL2@B9%IiT<+n9Bcno> zvp(=Q4Vm4ofQHIFZ=N3TNxODZO90|MBjY13;&h}BW@Q!Fj|G@aB2>dCmL+}i+2qP zMU--fdAdq;U*lHR7!y})6ep<4xR_PlmS5h{AWnZjj+5ZmlhbpaMQJ}l za(62yyKKry@h6NA6^2ry_WxnuwpT`JKebZf{ep;Rn5>@ zP}_*HlRQ!?H-v5}p8SgUD^CG~&uB}V(&R%NDCbnSa^HV9WUHX@l9q$#D^2E}ykNE} z?tmevSEM4a>W~X3FU`l2r`!1)=gI|x5;QYO{W5tF=Sulgv6H-4>~rrGd!uyepNieS z-_V9OqQee3l0hp`Ztp(-84uFmu+6(&Wig}JX@iAz7;rf4p^LqA*3Yk*7= z4Uh|%0Q?brypX_BanQ#y0ILmAoGdu6Pnf7(00d zW8b((*lCuOZ<5b9ym)I@e$MZX?OP(!T#|aFh+N~!M15(l!}qZTV^JTb+CC1a{+6rT z;kRo_PGE}rnELbO?Q9Y!sAkdmw5$ZrJ-Y4mp@Tg)0H#fSR_D=&s>wPzBcI{?cjJ`e zCbqkG=~IHat}kc9C4q(FxQdBCFM!qC-Ds?0xV7QS?=SCK|CeHq9jai$mWU)uSypc? zcENP_4K+JI0-KnUrf{O#ezVk2v+u|g?K_#A@4o&z=f)}dwdKoC)U>;Cqo)o5Z1}m; z;(cWfQ-^Q4<)?ma1*|rQ9q;KcXy@4*8utb%Uj4j6vG-rMMJRS-%DsyS#lE>DegDf{ z$Xf?kss&tFxAaK**dY@=p{5T%u4gfQ_Re^Xlxt^pr*im@8;Ys}(>`LZILHlw#hEOlw3}=p{^?{yqs1o(Pv%zky^v!DlC{EFSArPedEk{TiC4ld?ZcX zq(v*J-0IHmC#K5?#hyE>SX5>2U;I}8ij6|*v{!Ds!z#s2NHFQOyP=Zh-O%j$D9CA6 zxM|OEV<)S0x34jn{g=YEM~s3feRoYb!6J-(TV|yD9Ta0fl`RNzF8{ez)3G!`$i1nA zOLwe)+^*F$9FzAq2L+NR79 z`cFZ38ttW&7L3Sdg*}U3TDjbr(sGYK6unPBJ9@e41x$cOip((n*;sxn=dF(9?(mtc z(PX~+BiB;A@b-=o&Ec$Z|IQDGRNuZf29!a8eVmC^-8^S-USoQby@T3Vz{Ea+9K(9% z=5QeXSa&5Go7Sl@YxFpNObFc{U>^Vhbg269;s_Xhi&Jx!jCDmU( zUa(2--T7shVVFvBt(v^fNeS5aLFrgBHLEZC{0`zLONCEw(|Zit{Gys!C(VCQ&3V%- z;@I~tm+(%lKPp5p_A|E#YlNz-E>{F&Ph)S-<`*wig*>QO>#jeZ)Whf|b&Ztx9(S|} zGlS*vQOD#PUhOyqLwqb2I@-MIv@yi0!~vqcOlsqwm^ecS?HUqz zlU-qN{ZODfE}anD9g)rd<*?mXl36?Z{(a-^&y}4L3Y?3>8vb|?(kJ6IPhe^%-b|S2 zn@fLYn=a1Mhzh$E8OyB9BaQQ4-FrHbbk(A))0!)&oNWtESu|YxUb$Qi=XYV|qHSb^ z;FfWJY1QJ<^b!_Fz1uoHiTRM~4S4p~WXhzVmuDU$JBDzto_VBVF^P1@yJ znZfeoD7lt5>Mk9TgGzBz@7{?ruf?-`4rHZj>OeGfWES$%1aiZwnHgG~5?Wz(7 zZzRzuTNV&e7g$09wO9tR2!^SE-76kXRlqY08p2{SSi&MDz}pmHE($9Cq5vy^4lq*% z7tvZ@sscTns8)#41Z4PXJ&><3SPwqpP*qhEFjrM|K&}YY1l`!b1u{IW1C+l}vvoi| zKvh#+V6-B9rUO-&qYJzh!UK}+axdEjj3NMcaU%k7LpeRL5&otJ6y<3FK1_z8f#ZI0 zG3*{%5mF2CG`OS-sK8|jQuTn9+CR>%7bA&@E(~&C|JNgP41Bl~`M(Wfr;HPwV83GV zLJv@}x@=U`f)pB1SNjJ@{(nZ~;r|&Sb^T42BXx<$@)c848e*!W2%rZI_+l&QVCB(+ zG@y^pUO^v_u^kKm^N>xILMMeTFuE22`rvykg^7w9ut*t`6yRfP?Z3#Ad=}b>MaeaKa{fthR15fFoA&$ZG4VIFN_h zOvIEQwAvNVL=r&sYKun#c*xZN6lkgg)s>Tt&A?>_)*u(-f*{xz*#qdNi KF;5OacJM#cz1NWd delta 11803 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 o$xQ@k0(uBj9ufg^0CP{z} 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�uf~^mr)D&VHZ#{0M+8 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 KF;5OacJM#cz1NWd delta 11803 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 literal 0 HcmV?d00001 -- 2.1.4