From cee5c22d807951021fe63e0ea668387e9af1ba39 Mon Sep 17 00:00:00 2001 From: shiv-666 Date: Wed, 9 Mar 2022 03:53:57 -0500 Subject: [PATCH 01/63] Reformulate nonlinear constraints correctly for CHR Manually replaces nonlinear constraints in model with changed constraints when applying convex hull reformulation. Ensures that a model is given at least two constraints. --- src/macro.jl | 5 ++++- src/reformulate.jl | 51 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/macro.jl b/src/macro.jl index 676b28d..66b1090 100644 --- a/src/macro.jl +++ b/src/macro.jl @@ -5,6 +5,9 @@ macro disjunction(args...) reformulation = filter(i -> i.args[1] == :reformulation, kw_args) if !isempty(reformulation) reformulation = reformulation[1].args[2] + if length(pos_args[2:end]) < 2 + throw(DomainError(args, "At least 2 constraints expected")) + end else throw(UndefKeywordError(:reformulation)) end @@ -18,7 +21,7 @@ macro disjunction(args...) #get args m = esc(pos_args[1]) disj = [esc(a) for a in pos_args[2:end]] - + #build disjunction :(add_disjunction($m, $(disj...), reformulation = $reformulation, M = $M, eps = $eps, name = $name)) end diff --git a/src/reformulate.jl b/src/reformulate.jl index a051473..0c5e111 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -66,6 +66,7 @@ function BMR(m, constr, bin_var, i, j, k, M) end function apply_interval_arithmetic(ref) + #convert constraints into Expr to replace variables with interval sets and determine bounds if ref isa NonlinearConstraintRef ref_str = string(ref) @assert length(findall(r"[<>]", ref_str)) <= 1 "$ref must be one of the following: GreaterThan, LessThan, or EqualTo." @@ -79,16 +80,20 @@ function apply_interval_arithmetic(ref) ref_type = fieldnames(typeof(ref_obj.set))[1] ref_rhs = normalized_rhs(ref) end + ref_func_expr = Meta.parse(ref_func) + #create a map of variables to their bounds + interval_map = Dict() vars = all_variables(ref.model) #get all variable names for var in vars ub = has_upper_bound(var) ? upper_bound(var) : (is_binary(var) ? 1 : Inf) lb = has_lower_bound(var) ? lower_bound(var) : (is_binary(var) ? 0 : Inf) - ref_func = replace(ref_func, "$var" => "($lb..$ub)") + interval_map[string(var)] = lb..ub end - func_bounds = eval(Meta.parse(ref_func)) + ref_func_expr = replace_vars!(ref_func_expr, interval_map) + #get bounds on the entire expression + func_bounds = eval(ref_func_expr) if ref_type == :lower M = func_bounds.lo - ref_rhs - else M = func_bounds.hi - ref_rhs end @@ -207,27 +212,28 @@ function nl_perspective_function(ref, bin_var_ref, i, j, k, eps) #operator (not the symbol). #This is done to later replace the symbolic variables with JuMP variables, #without messing with the math operators. - pers_func_expr = Base.remove_linenums!(build_function(op(pers_func,rhs))).args[2].args[1] + pers_func_expr = Base.remove_linenums!(build_function(pers_func)).args[2].args[1] #replace symbolic variables by their JuMP variables replace_JuMPvars!(pers_func_expr, m) #replace the math operators by symbols replace_operators!(pers_func_expr) - #add the constraint - add_NL_constraint(m, pers_func_expr) - - #NOTE: the NLconstraint defined by `ref` needs to be deleted. However, this - # is not currently possible: https://github.com/jump-dev/JuMP.jl/issues/2355. - # As of today (5/12/21), JuMP is behind on its support for nonlinear systems. - + # determine bounds of original constraint + upper_b = (op == >=) ? Inf : rhs + lower_b = (op == <=) ? -Inf : rhs + # replace NL constraint currently in the model with the reformulated one + new = JuMP._NonlinearConstraint(JuMP._NonlinearExprData(m, pers_func_expr), + lower_b, upper_b) + m.nlp_data.nlconstr[ref.index.value] = new + #NOTE: the new NLconstraint cannot be assigned a name (not an option in add_NL_constraint) # pers_func_name = Symbol("perspective_func_$(disj_name)$(j)$(k)") end function replace_JuMPvars!(expr, model) - if expr isa Symbol + if expr isa Symbol #replace symbolic variables with JuMP variables return variable_by_name(model, string(expr)) - elseif expr isa Expr + elseif expr isa Expr #run recursion for i in eachindex(expr.args) expr.args[i] = replace_JuMPvars!(expr.args[i], model) end @@ -236,16 +242,31 @@ function replace_JuMPvars!(expr, model) end function replace_operators!(expr) - if expr isa Expr + if expr isa Expr #run recursion for i in eachindex(expr.args) expr.args[i] = replace_operators!(expr.args[i]) end - elseif !isa(expr, Symbol) && !isa(expr, Number) && !isa(expr, VariableRef) + elseif expr isa Function #replace Function with its symbol return Symbol(expr) end expr end +function replace_vars!(expr, intervals) + if string(expr) in keys(intervals) #check if expression is one of the model variables in the intervals dict + return intervals[string(expr)] #replace expression with interval + elseif expr isa Expr + if length(expr.args) == 1 #run recursive relation on the leaf node on expression tree + expr.args[i] = replace_vars!(expr.args[i], intervals) + else #run recursive relation on each internal node of the expression tree, but skip the first element, which will always be the operator (this will avoid issues if the user creates a model variable called exp) + for i in 2:length(expr.args) + expr.args[i] = replace_vars!(expr.args[i], intervals) + end + end + end + expr +end + function add_disaggregated_constr(m, disj, vars) for var in vars d_vars = [] From 01afcae6f69da5f53072e9d71c04c66531e66397 Mon Sep 17 00:00:00 2001 From: shiv-666 Date: Thu, 21 Apr 2022 18:41:57 -0400 Subject: [PATCH 02/63] Create linear_constraint_tests.jl Simple unit tests for functionality, BMR constraint correctness, CHR constraint correctness. Robustness tests for attempts to use package without enough constraints, using CHR without defined variable bounds, using BMR without defined variable bounds or M value, empty constraints on one side of disjunction. --- test/linear_constraint_tests.jl | 136 ++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 test/linear_constraint_tests.jl diff --git a/test/linear_constraint_tests.jl b/test/linear_constraint_tests.jl new file mode 100644 index 0000000..9432b3e --- /dev/null +++ b/test/linear_constraint_tests.jl @@ -0,0 +1,136 @@ +using Test +using JuMP +using DisjunctiveProgramming + +@testset "linear constraints" begin + + function minimal() + m = Model() + @variable(m, -1<=x<=10) + + @constraint(m, con1, x<=3) + @constraint(m, con2, 0<=x) + @constraint(m, con3, x<=9) + @constraint(m, con4, 5<=x) + + @disjunction(m,(con1,con2),con3,con4,reformulation=:CHR,name=:y) + + @test true + end + + function simple_example(reform) + m = Model() + @variable(m, -10<=x<=10) + @constraint(m, con1, x<=-1) + @constraint(m, con2, 1<=x) + + if (reform == :BMR) + @disjunction(m, con1, con2, reformulation=:BMR, name=:y) + elseif (reform == :CHR) + @disjunction(m, con1, con2, reformulation=:CHR, name=:y) + end + return m + end + + function robustness() + unreg = m -> unregister(m, :original_model_variables) + + function fresh_model() + m = Model() + @variable(m, -10<=x<=10) + @constraint(m, con1, x<=-1) + @constraint(m, con2, 1<=x) + return m, con1, con2 + end + + # not enough constraints + m = fresh_model()[1] + # @test_throws DomainError @disjunction(m, (con1, con2), reformulation=:BMR, name=:y) + unreg(m) + # @test_throws DomainError @disjunction(m, con1, reformulation=:BMR, name=:y) + + # Big-M reformulation without variable bounds defined + # should only work if user specifies M value + m = Model() + @variable(m, x) + @constraint(m, con1, x<=-1) + @constraint(m, con2, 1<=x) + @test @disjunction(m, con1, con2, reformulation=:BMR, name=:y, M=11) == nothing + unreg(m) + @test_throws ErrorException @disjunction(m, con1, con2, reformulation=:BMR, name=:y) + + # CHR reformulation without variable bounds defined should fail + m = Model() + @variable(m, x) + @constraint(m, con1, x<=-1) + @constraint(m, con2, 1<=x) + @test_throws AssertionError @disjunction(m, con1, con2, reformulation=:CHR, name=:y) + + # empty constraints on one side of disjunction + m, con1, con2 = fresh_model() + @test @disjunction(m, con1, nothing, reformulation=:BMR, name=:y) == nothing + m, con1, con2 = fresh_model() + @test @disjunction(m, nothing, con2, reformulation=:CHR, name=:z) == nothing + m, con1, con2 = fresh_model() + @test @disjunction(m, (con1, con2), nothing, reformulation=:BMR, name=:y) == nothing + + end + + function model_BMR_valid(m) + # Expecting to see following constraints: + # x <= -1 + 11 * (1 - y1) + # -x <= -1 + 11 * (1 - y2) + # y1 + y2 = 1 + # -10<=x<=10 + cons = (L -> all_constraints(m, L...)).(list_of_constraint_types(m)) + @test sum(length.(cons)) == 5 + 2 # add 2 for y1/y2 binary statements + + con_strings = replace.(constraints_string(REPLMode, m), "[" => "", + "]" => "", "+ y" => "+y", " y" => "* y", + "con1 :" => "", "con2 :" => "") + cons_actual = Meta.parse.(con_strings[1:5]) + cons_expected = [:(y1 + y2 == 1), :(x + 11 * y1 <= 10), + :(-x + 11 * y2 <= 10), :(x >= -10), :(x <= 10)] + matches = sum(map(i->isequal(i[1], i[2]), + Base.product(cons_expected, cons_actual))) + @test matches == length(cons_actual) + end + + function model_CHR_valid(m) + # Expecting to see following constraints: + # x_y1 <= -1 * y1 + # -x_y2 <= -1 * y2 + # y1 + y2 = 1 + # x = x_y1 + x_y2 + # -10 * y1 <= x_y1 <= 10 * y1 + # -10 * y2 <= x_y2 <= 10 * y2 + # -10 <= x <= 10 + # -10 <= x_y1 <= 10 + # -10 <= x_y2 <= 10 + cons = (L -> all_constraints(m, L...)).(list_of_constraint_types(m)) + @test sum(length.(cons)) == 14 + 2 # add 2 for y1/y2 binary statements + + con_strings = replace.(constraints_string(REPLMode, m), "[" => "", + "]" => "", "+ y" => "+y", " y" => "* y", + "con1 :" => "", "con2 :" => "") + println.(con_strings) + cons_expected = [:(y1 + y2 == 1), :(x - x_1 - x_2 == 0), :(x >= -10), + :(x_1 + y1 <= 0), :(-x_2 + y2 <= 0), :(x <= 10), + :(x_1 >= -10), :(x_1 <= 10), :(x_2 >= -10), :(x_2 <= 10), + :(-10 * y1 - x_1 <= 0), :(-10 * y1 + x_1 <= 0), + :(-10 * y2 - x_2 <= 0), :(-10 * y2 + x_2 <= 0)] + cons_actual = Meta.parse.(con_strings[1:14]) + matches = sum(map(i->isequal(i[1], i[2]), + Base.product(cons_expected, cons_actual))) + @test matches == length(cons_actual) + end + + robustness() + + m1 = simple_example(:BMR) + model_BMR_valid(m1) + + m2 = simple_example(:CHR) + model_CHR_valid(m2) + +end \ No newline at end of file From e0cc38fff90324ac3df8b068a331f36f992be478 Mon Sep 17 00:00:00 2001 From: shiv-666 Date: Thu, 21 Apr 2022 18:50:07 -0400 Subject: [PATCH 03/63] Revert "Merge branch 'master' of https://github.com/shivankj11/DisjunctiveProgramming.jl" This reverts commit b60b7eb842da56852888ce71c73fa745b05e6f25, reversing changes made to 01afcae6f69da5f53072e9d71c04c66531e66397. --- src/macro.jl | 27 ---- src/reformulate.jl | 369 ++++++++++----------------------------------- 2 files changed, 78 insertions(+), 318 deletions(-) delete mode 100644 src/macro.jl diff --git a/src/macro.jl b/src/macro.jl deleted file mode 100644 index 66b1090..0000000 --- a/src/macro.jl +++ /dev/null @@ -1,27 +0,0 @@ -macro disjunction(args...) - pos_args, kw_args, _ = Containers._extract_kw_args(args) - - #get kw_args - reformulation = filter(i -> i.args[1] == :reformulation, kw_args) - if !isempty(reformulation) - reformulation = reformulation[1].args[2] - if length(pos_args[2:end]) < 2 - throw(DomainError(args, "At least 2 constraints expected")) - end - else - throw(UndefKeywordError(:reformulation)) - end - M = filter(i -> i.args[1] == :M, kw_args) - M = !isempty(M) ? esc(M[1].args[2]) : :(missing) - eps = filter(i -> i.args[1] == :eps, kw_args) - eps = !isempty(eps) ? esc(eps[1].args[2]) : :(1e-6) - name = filter(i -> i.args[1] == :name, kw_args) - name = !isempty(name) ? esc(name[1].args[2]) : :(missing) - - #get args - m = esc(pos_args[1]) - disj = [esc(a) for a in pos_args[2:end]] - - #build disjunction - :(add_disjunction($m, $(disj...), reformulation = $reformulation, M = $M, eps = $eps, name = $name)) -end diff --git a/src/reformulate.jl b/src/reformulate.jl index 0c5e111..7b682f9 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -1,35 +1,95 @@ -function reformulate(m, disj, bin_var, reformulation, param) +function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) + #check disj + disj = check_disjunction!(m, disj) + #get original variable refs and variable names vars = setdiff(all_variables(m), m[bin_var]) - @expression(m, original_model_variables, vars) + var_names = unique(Symbol.([split("$var","[")[1] for var in vars])) + if !in(:gdp_variable_refs, keys(object_dictionary(m))) + @expression(m, gdp_variable_refs, vars) + end + if !in(:gdp_variable_names, keys(object_dictionary(m))) + @expression(m, gdp_variable_names, var_names) + end + #run reformulation + if reformulation == :convex_hull + disaggregate_variables(m, disj, bin_var) + sum_disaggregated_variables(m, disj, bin_var) + end + reformulate(disj, bin_var, reformulation, param) + + #show new constraints as a Dict + new_constraints = Dict{Symbol,Any}( + Symbol(bin_var,"[$i]") => disj[i] for i in eachindex(disj) + ) + new_constraints[Symbol(bin_var,"_XOR")] = constraint_by_name(m, "XOR(disj_$bin_var)") + for var in vars + agg_con_name = "$(var)_$(bin_var)_aggregation" + agg_con = constraint_by_name(m, agg_con_name) + if !isnothing(agg_con) + new_constraints[Symbol(agg_con_name)] = agg_con + end + end + return new_constraints + + #remove model.optimize_hook ? + + # return m[bin_var] +end + +function check_disjunction!(m, disj) + disj_new = [] #create a new array where the disjunction will be copied to so that we can split constraints that use an Interval set + for constr in disj + if constr isa Tuple #NOTE: Make it so that it must be bundled in a Tuple (not Array), to avoid confusing it with a Variable Array + constr_list = [] + for constr_j in constr + if constr_j isa Tuple #if using a begin..end block, a tuple of constraints is created (loop through these) + for constr_jk in constr_j + push!(constr_list, check_constraint!(m, constr_jk)) + end + else + push!(constr_list, check_constraint!(m, constr_j)) + end + end + push!(disj_new, Tuple(constr_list)) + elseif constr isa Union{ConstraintRef, Array, Containers.DenseAxisArray, Containers.SparseAxisArray} + push!(disj_new, check_constraint!(m, constr)) + end + end + + return disj_new +end + +function reformulate(disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) - if constr isa Vector || constr isa Tuple + if constr isa Tuple #NOTE: Make it so that it must be bundled in a Tuple (not Array), to avoid confusing it with a Variable Array for (j,constr_j) in enumerate(constr) - init_reformulation(m, constr_j, bin_var, reformulation, param, i, j) + apply_reformulation(constr_j, bin_var, reformulation, param, i, j) end - elseif constr isa ConstraintRef || typeof(constr) <: Array || constr isa JuMP.Containers.DenseAxisArray - init_reformulation(m, constr, bin_var, reformulation, param, i) + elseif constr isa Union{ConstraintRef, Array, Containers.DenseAxisArray, Containers.SparseAxisArray} + apply_reformulation(constr, bin_var, reformulation, param, i) end end - if reformulation == :CHR - add_disaggregated_constr(m, disj, vars) - end end -function init_reformulation(m, constr, bin_var, reformulation, param, i, j = missing) +function apply_reformulation(constr, bin_var, reformulation, param, i, j = missing) param = get_reform_param(param, i, j) #M or eps if constr isa ConstraintRef - eval(:($reformulation($m, $constr, $bin_var, $i, $j, missing, $param))) - elseif typeof(constr) <: Array - for k in Iterators.product([1:s for s in size(constr)]...) - eval(:($reformulation($m, $constr, $bin_var, $i, $j, $k, $param))) - end - elseif constr isa JuMP.Containers.DenseAxisArray - for k in Iterators.product([s for s in constr.axes]...) - eval(:($reformulation($m, $constr, $M, $bin_var, $i, $j, $k, $param))) + call_reformulation(reformulation, constr, bin_var, i, missing, param) + elseif constr isa Union{Array, Containers.DenseAxisArray, Containers.SparseAxisArray} + for k in eachindex(constr) + call_reformulation(reformulation, constr, bin_var, i, k, param) end end end +function call_reformulation(reformulation, constr, bin_var, i, k, param) + if reformulation == :big_m + big_m_reformulation!!(constr, bin_var, i, k, param) + elseif reformulation == :convex_hull + convex_hull_reformulation!!(constr, bin_var, i, k, param) + end +end + function get_reform_param(param, i, j) if param isa Number || ismissing(param) param = param @@ -47,276 +107,3 @@ function get_reform_param(param, i, j) error("Invalid param parameter provided for disjunct $i.") end end - -function BMR(m, constr, bin_var, i, j, k, M) - if ismissing(k) - @assert is_valid(m,constr) "$constr is not a valid constraint in the model." - ref = constr - else - @assert is_valid(m,constr[k...]) "$constr is not a valid constraint in the model." - ref = constr[k...] - end - if ismissing(M) - M = apply_interval_arithmetic(ref) - @warn "No M value passed for $ref. M = $M was inferred from the variable bounds." - end - add_to_function_constant(ref, -M) - bin_var_ref = variable_by_name(ref.model, string(bin_var[i])) - set_normalized_coefficient(ref, bin_var_ref , M) -end - -function apply_interval_arithmetic(ref) - #convert constraints into Expr to replace variables with interval sets and determine bounds - if ref isa NonlinearConstraintRef - ref_str = string(ref) - @assert length(findall(r"[<>]", ref_str)) <= 1 "$ref must be one of the following: GreaterThan, LessThan, or EqualTo." - ref_func = replace(split(ref_str, r"[=<>]")[1], " " => "") - ref_type = occursin(">", ref_str) ? :lower : :upper - ref_rhs = 0 #Could be calculated with: parse(Float64,split(ref_str, " ")[end]). NOTE: @NLconstraint will always have a 0 RHS. - elseif ref isa ConstraintRef - ref_obj = constraint_object(ref) - @assert ref_obj.set isa MOI.LessThan || ref_obj.set isa MOI.GreaterThan || ref_obj.set isa MOI.EqualTo "$ref must be one the following: GreaterThan, LessThan, or EqualTo." - ref_func = string(ref_obj.func) - ref_type = fieldnames(typeof(ref_obj.set))[1] - ref_rhs = normalized_rhs(ref) - end - ref_func_expr = Meta.parse(ref_func) - #create a map of variables to their bounds - interval_map = Dict() - vars = all_variables(ref.model) #get all variable names - for var in vars - ub = has_upper_bound(var) ? upper_bound(var) : (is_binary(var) ? 1 : Inf) - lb = has_lower_bound(var) ? lower_bound(var) : (is_binary(var) ? 0 : Inf) - interval_map[string(var)] = lb..ub - end - ref_func_expr = replace_vars!(ref_func_expr, interval_map) - #get bounds on the entire expression - func_bounds = eval(ref_func_expr) - if ref_type == :lower - M = func_bounds.lo - ref_rhs - else - M = func_bounds.hi - ref_rhs - end - if isinf(M) - error("M parameter for $ref cannot be infered due to lack of variable bounds.") - else - return M - end -end - -function CHR(m, constr, bin_var, i, j, k, eps) - if ismissing(k) - if constr isa NonlinearConstraintRef #NOTE: CAN'T CHECK IF NL CONSTR IS VALID - # @assert constr in keys(object_dictionary(m)) "$constr is not a named reference in the model." - elseif constr isa ConstraintRef - @assert is_valid(m,constr) "$constr is not a valid constraint in the model." - end - ref = constr - else - if constr isa NonlinearConstraintRef #NOTE: CAN'T CHECK IF NL CONSTR IS VALID - # @assert constr in keys(object_dictionary(m)) "$constr is not a named reference in the model." - elseif constr isa ConstraintRef - @assert is_valid(m,constr[k...]) "$constr is not a valid constraint in the model." - end - ref = constr[k...] - end - bin_var_ref = variable_by_name(ref.model, string(bin_var[i])) - for var in m[:original_model_variables] - #get bounds for disaggregated variable - @assert has_upper_bound(var) || is_binary(var) "Variable $var does not have an upper bound." - @assert has_lower_bound(var) || is_binary(var) "Variable $var does not have a lower bound." - UB = is_binary(var) ? 1 : upper_bound(var) - LB = is_binary(var) ? 0 : lower_bound(var) - #create disaggregated variable - var_i = Symbol("$(var)_$i") - if !(var_i in keys(object_dictionary(m))) - eval(:(@variable($m, $LB <= $var_i <= $UB))) - eval(:(@constraint($m, $LB * $bin_var_ref <= $var_i))) - eval(:(@constraint($m, $var_i <= $UB * $bin_var_ref))) - is_binary(var) && set_binary(m[var_i]) - end - end - #create convex hull constraint - if ref isa NonlinearConstraintRef - nl_perspective_function(ref, bin_var_ref, i, j, k, eps) - elseif ref isa ConstraintRef - lin_perspective_function(ref, bin_var_ref, i, j, k, eps) - end -end - -function lin_perspective_function(ref, bin_var_ref, i, j, k, eps) - #check constraint type - ref_obj = constraint_object(ref) - @assert ref_obj.set isa MOI.LessThan || ref_obj.set isa MOI.GreaterThan || ref_obj.set isa MOI.EqualTo "$ref must be one the following: GreaterThan, LessThan, or EqualTo." - for var in ref.model[:original_model_variables] - #check var is present in the constraint - coeff = normalized_coefficient(ref,var) - iszero(coeff) && continue - #modify constraint using convex hull - rhs = normalized_rhs(ref) #get rhs - var_i_ref = variable_by_name(ref.model, "$(var)_$i") - set_normalized_rhs(ref,0) #set rhs to 0 - set_normalized_coefficient(ref, var, 0) #remove original variable - set_normalized_coefficient(ref, var_i_ref, coeff) #add disaggregated variable - set_normalized_coefficient(ref, bin_var_ref, -rhs) #add binary variable - end -end - -function nl_perspective_function(ref, bin_var_ref, i, j, k, eps) - #extract info - m = ref.model - disj_name = replace("$(bin_var_ref)", "_binary" => "") - vars = m[:original_model_variables] - j = ismissing(j) ? "" : "_$j" - k = ismissing(k) ? "" : "_$k" - - #check function has a single comparrison operator (<=, >=, ==) - ref_str = string(ref) - @assert length(findall(r"[<>]", ref_str)) <= 1 "$ref must be one of the following: GreaterThan, LessThan, or EqualTo." - - #create symbolic variables (using Symbolics.jl v0.1.25) - sym_vars = [] - for var in vars - var_sym = Symbol(var) - push!(sym_vars, eval(:(Symbolics.@variables($var_sym)))[1]) - end - ϵ = eps #epsilon parameter for perspective function (See Furman, Sawaya, Grossmann [2020] perspecive function) - λ = Num(Symbolics.Sym{Float64}(Symbol(bin_var_ref))) - FSG1 = Num(Symbolics.Sym{Float64}(gensym())) #this will become: [(1-ϵ)⋅λ + ϵ] (See Furman, Sawaya, Grossmann [2020] perspecive function) - FSG2 = Num(Symbolics.Sym{Float64}(gensym())) #this will become: ϵ⋅(1-λ) (See Furman, Sawaya, Grossmann [2020] perspecive function) - - #convert ref_str into an Expr and extract comparrison operator (<=, >=, ==), - #constraint function, and RHS - ref_sym = Meta.parse(ref_str) - ref_expr = ref_sym.args - op = eval(ref_expr[1]) #comparrison operator - rhs = ref_expr[3] #RHS of constraint - gx = eval(ref_expr[2]) #convert the LHS of the constraint into a Symbolic function - - #use symbolic substitution to obtain the following expression: - #[(1-ϵ)⋅λ + ϵ]⋅g(v/[(1-ϵ)⋅λ + ϵ]) - ϵ⋅g(0)⋅(1-λ) <= 0 - #first term - g1 = FSG1*substitute(gx, Dict(var => var/FSG1 for var in sym_vars)) - #second term - g2 = FSG2*substitute(gx, Dict(var => 0 for var in sym_vars)) - #create perspective function and simplify - pers_func = simplify(g1 - g2, expand = true) - #replace FSG expressions & simplify - pers_func = substitute(pers_func, Dict(FSG1 => (1-ϵ)*λ+ϵ, - FSG2 => ϵ*(1-λ))) - pers_func = simplify(pers_func) - - #convert pers_func to Expr - #use build_function from Symbolics.jl to convert pers_func into an Expr - #where any operators (i.e. exp, *, <=) are replaced by the actual - #operator (not the symbol). - #This is done to later replace the symbolic variables with JuMP variables, - #without messing with the math operators. - pers_func_expr = Base.remove_linenums!(build_function(pers_func)).args[2].args[1] - - #replace symbolic variables by their JuMP variables - replace_JuMPvars!(pers_func_expr, m) - #replace the math operators by symbols - replace_operators!(pers_func_expr) - # determine bounds of original constraint - upper_b = (op == >=) ? Inf : rhs - lower_b = (op == <=) ? -Inf : rhs - # replace NL constraint currently in the model with the reformulated one - new = JuMP._NonlinearConstraint(JuMP._NonlinearExprData(m, pers_func_expr), - lower_b, upper_b) - m.nlp_data.nlconstr[ref.index.value] = new - - #NOTE: the new NLconstraint cannot be assigned a name (not an option in add_NL_constraint) - # pers_func_name = Symbol("perspective_func_$(disj_name)$(j)$(k)") -end - -function replace_JuMPvars!(expr, model) - if expr isa Symbol #replace symbolic variables with JuMP variables - return variable_by_name(model, string(expr)) - elseif expr isa Expr #run recursion - for i in eachindex(expr.args) - expr.args[i] = replace_JuMPvars!(expr.args[i], model) - end - end - expr -end - -function replace_operators!(expr) - if expr isa Expr #run recursion - for i in eachindex(expr.args) - expr.args[i] = replace_operators!(expr.args[i]) - end - elseif expr isa Function #replace Function with its symbol - return Symbol(expr) - end - expr -end - -function replace_vars!(expr, intervals) - if string(expr) in keys(intervals) #check if expression is one of the model variables in the intervals dict - return intervals[string(expr)] #replace expression with interval - elseif expr isa Expr - if length(expr.args) == 1 #run recursive relation on the leaf node on expression tree - expr.args[i] = replace_vars!(expr.args[i], intervals) - else #run recursive relation on each internal node of the expression tree, but skip the first element, which will always be the operator (this will avoid issues if the user creates a model variable called exp) - for i in 2:length(expr.args) - expr.args[i] = replace_vars!(expr.args[i], intervals) - end - end - end - expr -end - -function add_disaggregated_constr(m, disj, vars) - for var in vars - d_vars = [] - for i in 1:length(disj) - var_i = Symbol("$(var)_$i") - var_i in keys(object_dictionary(m)) && push!(d_vars, m[var_i]) - end - !isempty(d_vars) && eval(:(@constraint($m, $var == sum($d_vars)))) - end -end - -################################################################################ -### DEPRECATED ### -################################################################################ -function infer_BigM(ref) - constr_set = constraint_object(ref).set - set_fields = fieldnames(typeof(constr_set)) - @assert length(set_fields) == 1 "A reformulation cannot be done on constraint $ref because it is not one of the following GreaterThan, LessThan, or EqualTo." - @assert :value in set_fields || :lower in set_fields || :upper in set_fields "$ref must be one the following: GreaterThan, LessThan, or EqualTo." - vars = all_variables(ref.model) #get all variable names - M = 0 #initialize M - for var in vars - coeff = normalized_coefficient(ref,var) - iszero(coeff) && continue - has_bounds = (has_lower_bound(var), has_upper_bound(var)) - if coeff > 0 - if :lower in set_fields && has_bounds[1] - bound = lower_bound(var) - elseif :upper in set_fields || :value in set_fields && has_bounds[2] - bound = upper_bound(var) - else - error("M parameter cannot be infered due to lack of variable bounds for variable $var.") - end - M += coeff*bound - elseif coeff < 0 - if :lower in set_fields && has_bounds[2] - bound = upper_bound(var) - elseif :upper in set_fields || :value in set_fields && has_bounds[1] - bound = lower_bound(var) - else - error("M parameter cannot be infered due to lack of variable bounds for variable $var.") - end - M += coeff*bound - end - end - if :lower in set_fields - M -= constr_set.lower - elseif :upper in set_fields - M -= constr_set.upper - elseif :value in set_fields - M -= constr_set.value - end -end From c1256dd3f1ccac44e5127b2f033796844dbdf435 Mon Sep 17 00:00:00 2001 From: Shivank Joshi <89424061+shivankj11@users.noreply.github.com> Date: Thu, 21 Apr 2022 18:51:55 -0400 Subject: [PATCH 04/63] Update linear_constraint_tests.jl --- test/linear_constraint_tests.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/linear_constraint_tests.jl b/test/linear_constraint_tests.jl index 9432b3e..2e40c5d 100644 --- a/test/linear_constraint_tests.jl +++ b/test/linear_constraint_tests.jl @@ -1,6 +1,7 @@ using Test using JuMP using DisjunctiveProgramming +using Symbolics @testset "linear constraints" begin @@ -133,4 +134,4 @@ using DisjunctiveProgramming m2 = simple_example(:CHR) model_CHR_valid(m2) -end \ No newline at end of file +end From cbe4c33345b0fbddca6ac2c4a34e726ceec8ebb6 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Fri, 24 Jun 2022 16:33:39 +1200 Subject: [PATCH 05/63] Use more restrictive JuMP compat bounds --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 8b64b1c..2ee84e7 100644 --- a/Project.toml +++ b/Project.toml @@ -11,7 +11,7 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] IntervalArithmetic = "0.20" -JuMP = "1" +JuMP = "1.0.0 - 1.1.1" Suppressor = "0.2" Symbolics = "4" julia = "1" From d42d32cd1bb3be713d7801bcb130572b94112459 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Wed, 24 Aug 2022 14:27:48 -0500 Subject: [PATCH 06/63] Add files via upload --- logo.png | Bin 0 -> 437330 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 logo.png diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..625a4f1da2f9264743d2486bf5baaabbdc0ee68f GIT binary patch literal 437330 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�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%0AX8}e8-&O-Zo#LGq}K%)f29ZT>Tu^|Uk< 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
    4qr7lcZo=3>U`oHPA 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�RBcu8C0#IHq9;(2@%E1IPmxd~rAi&6) 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

    T(nWPWxu^9jKW`o+X=L^4_`nC5N36>gwQ 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%0DahSk+SfbvkF<; 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

    ?&$)x+A&A80+hrA>KTGx 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%0Aj$LJp^RDm1`NnnQrU-&b(0sagJJmI&Vv z0|w(qM{9E-7Tz}7BMH;ntR~sFC#%?}nNT1$K1ZpZQ}fET)i%Jag~4LG?HdFW4M%us zj&0fSTg->^7-4fvbmq{&I2X)oCEErZ^sP!k6>YidyZ;e?4Ta3}jq#pe_!Rf?a&s#< zqN%HG`f8HMuBg$F$Pxgv)_mM852`GzrGr__9FdyyHq98weu>KiS^FdU9nEsXblWJw zUi%#y-5=J!zHQBNOY;de*t^Zsp1##d3PdRN z@G9Tz#Y}zf0+u!}H2;XneRI^pr!QSV_K_?=P@|^9Oa7nBTN}p`GEHJ2;y^>I?#HXfiF6bh)RTbB3u5(E zlS6}MN~%lc@8%nWjNf@8peQ&Q7!2l}7OB!+?~Z<7-xus{(+NT1 z-NPVJ8UYxJ6ldMScqHLwcK|Ky*}<*=iby+xQzyX*VHA_~MREbFoA!UQ4u1+CTc;8ptsRc>pZounBfZTK1#0W!5hSJwJ7`&# z

    >mV>j(ZF_d+{+S9wWBhnnZU3huLA(&x?vTnzMUvTs&(9QU~{(6hd&c<)K+8n<} zJQE`-Q!oB*K`vy9wz3;)6Kq4jgp{@1pZMKa!ZwMC%*O4sL{Hl!mieb_b9LjiXJxa-FPGu$3sry&!G&7I*l)hA zTIBO`%xW06Pg_lsHFxhRYLgs*Ls$-$znIT9h$vMkVsaltb3 z+Z@7<0@Pu^16dk*XoveZY4`mJkAWU#;o4cQ->$JSHa}7}4fr zrSvW@%&&`pCvu7+ir;e~KY*%c>sjFsU{PfsE%#Vk8)ap3a1WG)C zr3l+7&QjfQ$=?*v8)M;MmK(W~`YnH}m*S%GIi8Ab!^oAP!U9BA*fH!g)@%$)fhRZv zOlvg?+xJyh-9oWpzHY`2w*zd14@80dy>=^ZN3L-iXZfXPbW6qjZS%_67qqBi%39dl zc+#U4hxDI+z}cKrCRqN$%)XeE^|t#qSE{a0SlX~HPE{tkrU<1msCDqEZ`!ZWH-^Cw zF1aSH(dQ-~AEl<~=Lj905N0*q+4IM;O$Nqm7`qp0Y5;90uRC(H+s9ZP7s;glSZa$! zZp+cn9=NlZNi7W4e^i?-9*E1V$Mfp4%qBA`{^CPmM?SDXQrI_zyMfi^k)orFnmx3v z-@)_VjdF%xbx4+9#nlQB~>qaYSEy(Vsc zUy~+y5p2mB_)R){mioJ3`~%cSXkO-T!!V6mHkIa*bX%~I+(%PnYwtn~ADMBj20pw) zZ&Wb4T8bF!aOC@avO>MJjKUL_56VVRI9~qwgOyFL(LJ)viqF10ZkUJrrJqPE#4;D$uLYm3 zwVwR%sNY0yJs9$PhCxx|XX55hqJ0tRq4o_&^LY6SdtR_W!#l+FzHcdQnn7H{*gvuO_GMNd@ zo4E`8Os>85q{t^5vvjou*HP-5!q5j5E&YzHmII03TjuHvbz(tfDC>bP=^F7D(^eDQ z0tPI{G1|+_6nd5FgWg5GN5LjQ1#8g-9(3`I`RYQn>bJhbd6S?FkC1LY@gmd) zf+B(S;}jP~beq#?ML0m>h(50&mu{!n=vS>@j;Q0Mg)TqyY*=UdzTzWU=s*J==9TN2 z9Y%W>pLiR(b3O=`^G(n}qY=y!*D!DJF7`>#@*Eo5EvrMN^TbT?P=kjG@x1j5_0r_! z*$cPjqQ}-%oBi}g!~4P-$WE|W^KNF+(ds1qg!Wy%YTHa!+)WVKrw5j6RvQ)?YM^^b z`T2Q7cBt%!kn9W<{1&pe?1#e^P263e?>03;bKJbvJK-R63Dn<_k>)rh3Cl#>%#ihm zL;5CJf5K){5Tqew_Fm%{(62aKpMxHnMap?tB(zyNf?UWZU0OOuQ0lUJ1SD1{NB{Ln z9j3IEs%p&uh{TVaZ#C+Lio*SLdL{-|$(!{vSa5Q2edtEqY$QQ#*!T15fv2me7fTk`=%@qZ9e1 zrV_HLM0_rhA4n*m=!3E7Nr=pasPV{e=gNQpy_a;d>EWPK9YVbn;pl#v4|=`)syuf$ zL?fB+tjcGrQFXI5DzzoD>tJ7OkM8-Jaxucn{OF!U8~5=8#s>Oo6(yK@i?Y32!0AVO9<{p>31 z-`qGh;LtGHqp@Kl_-MVIM(U|bSC-%d>-X{U{hmH0^;-=+eL;srP4vIv=qc8g^Mu+D zP$cfnoNqPhl@s);y)oK&eDdYW??z1f2#OM(DXQobLa6a_BtjpcZJ2-{F^>s%H$twdwR-esw>dsIW+93e72Q2j{I_N4am6i9e5ax!f?ka#L<)FSAn&=JJ-aMW z78xiTP1h^ux2+m=8VhC{+gw*F8V{p*t&P3_0k%~{Lw+uE$IhX@IySzEAI#$ZK=xUZ zO~rq=MQ%(;_GF?z`;Y8|#g?kCZ+dew?5?x%#koVui?JJv>Gqfjdy7XG*N#&<#3NP- zsxpUyY%kmnjXV7BxgYzZi1#Mbto6hA;QD>ovoTV-A`#T!)tH&;D(7utkluLB!Plu- zYaOR`zn-KY@`~x+pWDrx*{*LlnQA?%F9widmqppNZbqDCG#!F1CJg{?5nQyi9@u+q zoReic@!Ds{Bfo^FS^c^(Y+cI`Bh$TLp1q(L(+|fzB~NGuB8Pz&!md&zB5Y#x`2OaQ z%Pszsjww-!Y)mSChF711o7NVaC-Sq-q=wLhdz&qCW+DAd9<{uM)rb-{;yVypHDh;r zo7SYegbmOE)Q$w{*%tL@yk_H-@=XG>fY!fx&l|G(_ioz9}E z?n1IDn##C2uzc-_lxki|r$h(+r%r5yB*Qfzi?C;}={-j{cysVC#KRWnlfbM_7HxI}#J$J=xuY#RZzC2S`1Is$XlfbDxz?j?g7 z2mHKKn_*udzN-veo7C7thC{)SVS!_x^U$A5D=fx zR1Yz!Y>d7I;+$wIS3EVPuae4z0RJ7p;Ls8_I)A1N1*OQ%Z6|O;Y81x_XV0wQ3rG%0 zMSU85b2guueQUJR;!|8uB5;i10emPjOyr?f>!`bFJ132R7DCD=9n#I#kFESVxGA#l z9I?BjvN)ZoF{7xrTf<;ES9xX#lzf$un@jGUJdgz>KUAyY2wld4Fxft@3%B|A z3qmj4F2X|h9vtwz!iXoCHm!!HlLp}Wx8D_hkrREnX*^NTm?-{{Sc(u~fSjs4bEXir z0c7+QTqA1M{YB!gGp(=WAK1Tn0$8AGUNxHWP~%>wx8%Eu_`6Ti^sHgx#c}(e*}e}z zKX?pOaMd@C$qzzTN{KX%uofH#H;YyCS_YpJ>zfD zHoXdj;e^8)3%ZkBAY{W8WTCnQ6E&9MA9mz1Bc9Qrd*HJhEqYG>&E7evUd5(et-hrM zGi{UWNX+-EObR|PjJnep_cdkh zjC`@J^_WgBubs8q?EqA3gAC>Mo36v0`*|6wpI?2}NDvZ%`fMt?)#{1CC@TT0ZZvhF zIi{pEaJ}@Z9bZU^|0#G5xh*&Ne9wnPM^#@Lp6I-BJf+9J-L*O~>qBlXxq$gd0>sMi&`V#I6(&}dUH z4^mb^V&M8D(iMLgE(^6}gVuS}Du|CDYd4Wl6I<9wDv+Jg)4_gZdt6>;=UhQ!ps*>h zxbG`v+P2IQT`MlampYQf9B^8$W|Da89;X$0=Q|*AY@8@hKmv;SK zZ0&Wh{@M4t%F8dVH$2+GfC9BN6`ja~*UwhinvkH#V&?o^cEiTnuWY`3COHg%x@I#F#WH2~R!>_D=~Tk4#~=yi0U4k7 zjt688Y3r%USWo`vv8^tL>_V4cmp|^kCPe;>x6Qr7Wu)K}xxvpErMDVp=)lhjrw5NN zq;yaSf9X@UKEK~qJFnqdx@E7me1_abk87)-T_rsxC4L)5P#qJ+$_4~;H(RfW1#NG_ zN|}B71n44Xp&W+-w8LAEPE-VF*XSRI-o40%mo|=SGT)P&e}O!yofy%6Y&GN=1InbN zk=o9Ln{JL|A6Nt-cnAJCZD0{GLrz&8^6!LyWn*~Xco0$CNX5)iExH&5=MZ~7pWqL2 zLxsU2h&vke*w5=3w@xuNN2=v!k%9-2gHGu5KRW}pCam>&)48eXxxH9DZ74NiDE*vfQ#Bauw9qYC32Ard(={2pt2wv8 ziSGiwn$UT|m%mTLSTXh2a0vDZ@9=dcT>R;O`)Ei|5v=I|rgv?AKiE(SC5p-a7P1L< zGTRDj|0dUl%j7 z(a*2V?cPh~VkzOQv5h9-oOO>|u1%Q2OaMPJe_|nh_=mK?2qcfygI8AS$usp*nP*mjVBo!owx6E0d(AFIR)2Q5$Dhm!x>6$aU^s+S#_*6|sSpo+Q zOnuSyOcbzSD!>D-B8?Bl`R}`MTj*nzyf)o6a_Z2*8-PMovHZ!yyFcgGoeIUar~bD- z&1m}(VulpYnf0iV!nc?B zuy&ZRc3>YG&0fPdjzT~dsRnH0AabWcZQE!fd?>lWN9MZ^vl4DOlYX3qpSYGZ2lD06 z4|&t_cOjfB%h7!l&U;=QYJpMn%_Xckg*d~7uIBZvKW;vWSxyvxr9+?qy`CbdSCF=) z4E|UKOwu^r3atI|5phogQC}nEDjG!~uW6*lh^TNeRF8Fc>AURrOpZsvrMY4mlq>qI zd!kGFz6GmG;dL}qzj`yMPy1wp{ek5(YVvrjNNVi>x-S!lIFFtHg_m9p8 zZ~%pGl$RE$xEhb*wg=RMv?sTNyK%lqg&5+KGN(T68)^<=+(6eRNr>Oipzd%VKYKIn zZ9PyT=EL99KNX-fFIw-RINk)1bZPQh9w!g5Tbz3!Sv0n@es>4D^dNcuV>-l)gOBCl z-Ff$mA-ELTkK`6~_3^!^@6{y^?Mk>-?#eNQN?YaE0Aw}-ETwb14f=&y#r zej85szJz{Hi;$D__Qzd-okR)0s))X_;!%WM?^EqvYoY2^UUxK{LH7q&*=M(CqY3wY zBTCeZ+Knep$(5yZa1)gP$IU~bwcRl5>n z$g2@zU2_*tKZXtiut^}qr$e|@Z&R5H@3Uz_pfGdGJwnnAbgi-frP07BcgiJWW6$Rm zpkrl@0q!YsA|Fm#{9udW|Cfl-sHDutYY}?zJab#73HM0p^SG7`~JW0y`5NU=$n&*ztE{xi-V#A zHVPDz-Of+-bm({r9}kgUG39y^A=_S&vZ7)Q5_f>sP)4CVJRW7TQl6*@VZ$ZCO)a~- z5SS8@O0_-j%QGu9?R79~Aj{Lvg#Iaf$_y20XySrPg{m%WHEBW<3nHQm7J^yuVVU~z zKKVSdY3sm-M%;CzT%vQI<_$Hct?Ls_5Ng0CRnup0x>%1%TVFO|hv;CTGI`_`5lZJ- z|3gQllBDNAN`ULhHFb(BI$Hq9F z{hbC2q#b=+2EOiIQ2!<5?M`$ds0=RVhkl!1!y@cHsx?L4pl_|wevAyTEF?TB}0#MovRE{ZY zi6M!OrQGaAS5XIWr-LZXqR8{o0|HZ$LFW|8-}B!32J_pIko_6^ zc@XvkS)hR-1vH>h2tHbKsb$d<5Ex`keikv9nDP0i&lrZR!jqBDWFCC@?vy#(EfQ#WV zRcKt!YRL-C4maw-R-C&@&}ftBw?)d-G)%x)!|v`fuy@!0 zc0I>-J9O}EJ-{osI{;SQSN{JKuU8MfU+&HoSN`WG9H+oEeD>#IQ_-QTlV_Iju^IbY zoLi)PY&2HShykq+O$f{rgTA`yd$pC0R|QbMdT&cF`>-#=ZLuAdX$b{hJ?GSih45_k z1>GUx@rY~zO(O0VKGieYPlJDMD&twBMUUt;tQiOz8$y?3s#tgut@DYf96*Ii!jxR$ z_;sVWp;y5@koIQ|SOBW-!U6hKKlq6crJr+%!!6Da!|L?YJSD@P*=vidmHx;H@@ofA z_U~!?p>go)jz=Z?L4Fc!bwH*RV&FMc6s3kYiBnhrg6~9inTorGXMLqd|J_vHq%No` zjj7M{llZpp+Ed5vY4ZS+vt&Adn)(eYr|l^lo}(Pvyrv;F4IRqrMZb?pIelkG&9|a2 z4~;ANy`TN$lg&^2oaT^s4m(Rpi|@a)F*Ar5b5|x58S?e_1@Rj#CCiq%i+}Uy5SZ+e zm#e2A*H@Rqz1-ua(y+Si)uJ));GTiEZ-RTECH3?NiUAJ51qRlRs5K4@PcDe(7ZRBH zI@F}2R6ENC&sr0AWIk-jY3oi)JwzC|0P+B|bG1AC=PfB2`KZwwbgtBdu^JWNrC`R| zj_nTBz#B{1ce*xaqj8x{iIaev04E zM{u`($+sNlb>4CnN;~bj$KQ!%eF2$|lZVoFi|1xDvVJpEn12C?%CH;LSG4l_p09$- zKxs+mvnRxZLJp*)IA*VEksA&Oxw_Vc9I!~Bnc9^IMGLE0MM{G2k7km}Ogy?Aar?Z< zrP|Kvi^KBQ%ZS%N1?*f=1E!=TFbinnm1;ORIIBvuH+ncERjmZ)c(4cJ}CB$<=rPb z1=M=7zzGQiEAJ|?#_4Ght(j(RZi|)pe=fqUz95VUF4&vKi}kS4kCUf?emT#5IC7*vUvCaFKZtX{aZ@ey=#8vDGMlhere9zEn8NM)iS$XN{!%NJopS~viLpi+3LD@(3 z;$4YQEfx~3tO+hqBatUPF}znN2b=x0I@US?lgHZR2OmvcRn(2?$jga=YT0NuRrq!k zQl46{&(VK0HGpvljk2zbcNnOGGL_5Fs2n?xQ-H=BsVBs9*ub42FdgaB)q`9jQ`GOs zd4Hy>!JBX=q|4}*qc=T9FDJh={&BY};aUrBbUBZqn06%r422Lc`{>M!7XbV0N}CW# zv>1Z)(9JiN($=+9YcX~-HvwjDzdHQ&3^*QNG*lu!Z6hA`z%&#jI}9`~Lm1hd8y}4D zVBEV8qUz2a4)W3r00zs)W-b8#2?*udB*$$zXDP%zhO&17w@C>;p|C%}RhTGYNNS{w znvM=pAS9F_Vn3go=FIpUPqf4O3cRKv13g5ogP^Z|4I`#*>G1^|#Ve(2Jkl5_>9oWn z6v3@-VUk`ZE1t%U$0{`ZINMC^q$*68k(OFPt_jHrK>7&~t<}=MzuHw# zJ*NSX$dr6eSYGq&Mw66$i>MAc48+=Dp?nw%Zs%+K7PI8no#A%+KK`5@$25+58mpwO zZhe3KM9tEcwm&D*h8_TR;PnCcYbbT;vCXL!tyLoB5o4mNJjATOIyZk|xzpI{*! zs3$K~76ihqWPKrA21;(xLa=Ta5LwxazOe(_R2AUY)8T>O9X9aB@1TDL=5}zfQpSBTVMQn+>!ea2fg*9WOnv z%|RM|=^(Me^9>jm|9aHAW9d?iUO#dau8)(toD>ERY8n_69!C{-DilL0qb2(S{jX0D zA(I0>Nfhpeh%F$pIrsUHAd)y02s}|O4eSD>xcI}qQoBHgGR_g(qu~>oWLT z2tG$N#)KL`cVHF?)zrbaXPk^e(O5XEtl{{QShn@n992>u1sV?KQ zH|Nc}IR=34`J3xcxdyi!z)G7{=|o|q)q!%pR$dHPqkZechvWa}q$nR>1tGaT{)y}d z_JoAIM<^Y~6~oUJ=T8Zr^bd3E$^>r?AZytVqjSJyE;^)I^O=iAzcj{)F`!q%VFE+gwFq(;KT-6ZIS!f1o@*)ToL;z; zP&p(V^PVVz<{{hS(9nPw;YJf3^&~@1jTH-AJA6a%V%kL3f+y`7G7+}XSHGWh_4pDD z=2vquXZfD<+|LIO-f;7<|EyZ!Dqc#@efqg>WzaVf?uwTlAxw+Ua3e5ikq|04K%&19 zJzv;m5-&B8#-^^kLF6{El!H-^SyIPB)opjg@8uD!7hvWp7rw?ztbz4`lezREe;8|0 zml8o-b4I=ovv^m1SHOH%$m1O-&tR2FI22>?S^mI=ZB$f@2t-IIN5ya1W8GD_z(3Uxk6NV`)BbiQ zZ2nZs%rPkWsB?VjZfiuJMoJQt?@PaUV{(j#oHIYN}b$261h zmSR9XV>9PhnvHtgcIUgF(&7kBG}6ucy<9&CY<~t<=@T9htwhC>JxY$i8i1w=2G$_| z`b9U^K{wG$ONwCYJc*!0Th%RLkca;{F@2Z4HADNZP$2Zoe;Xgdj<9fEGCX54^OM)7 zbo4;FCUjGkXfP>rJ_l|XyxV)-BR=bsAI!>^Sv?5*z~`lO3!Gca18aoi>LwA6>E3Qx zw?-q>$MJB8^!*P?sS>{L%E@=FzP5RzFS4o21+t3M){~Yd2zg+YHz2#gom4$|)%)|1 z8?d%l{VAzv;yV>#r{0Q|RA883Kou$WufA#JV zo&{;N5W6e|^+6;xxwh_+-=dXCPCvDCh#M+dHm2&{E)cIkljP<$xZs~R;^67I_!SA>3U$VYhuL?jE=$KD=A>?d7u8sZico_e>wQV^GQ+GP1O7Agw$$j=cW-k>UT~h>|$eD7CcIBqP2~D3sN>-H2x#vrQf#9_*3iyv(dW*QWRdI zy47SJR3~up97R+u#iW{b(H-eO2-i&e+EJmsw#}6DF`z%M1f!=tGkL3S%^4aLwpP7F zC4pHA;yIL!r^!P|0tWlj?nFFZ7W)p5kd7)&?d#UFjb>Lj1(i6`COzAr2p2#M~Tftz8d*Oe_0oF|i?fn@V1OYxj8Of17M~u~sD;A!z#S|Wr{f!W= zDXUN|;OvvyF1FjMBB=mtwTZSe?$*UK{-uU=EqtGNDS0P;i z4glDV=4>na4SEz{n-ruijL{9zh}at7q7wsQNh;LJJ4S{O0~{u`FjO}z*BV&0O~qQ38+;39kZ%%TlV;Tq>tmP`R}{3E0HU-3TL=; zlS>+B(_3WP-EN)4cv}!WoEx6ot<{3g)M(na&t*F~yZ3_MUX=ixo$4OJ+Nw~43`Y_a zfI$%!=VR=Vl{gKK)c!~9Wga;P6gRX3A=atR1!3nxR_ENKyKxXFkA=pBI{1q(v%Qe# zarehKzCOT8n9WBxsgY))c;J@QrWtTN@@Hv1RS60S@>ZjW-0_%XaDIM33GB2Pl>q2Y zWdSs_kgf&BKpZnUuvKm8bP@#c*0$DqbyNMsUv$w8Ktq@i6G!fAmkI(QX1sa`_NuRg z+Emsea5SLAM4}XRZ-0KUk-#_F0ikBbIo0#H^yMvk0sxA~;7$8fGvqLKr6)q<4?4|p z#x&bFyV_2y?{{vyJ-soF#d2o=N%27&cz*KQ-1v)|mhaioIx4}7S??i{d417i;J58k z(~Kd|#)qtAKLBy*bov_b=aQ@o?|v<4f4`VbmjX z#-ox~TYjG|0oLcw2)EIotfg0hNH7*a0uy?SI9I~FPQEy6ISk5t7ymjdoJmh!ne=Mo z$X*RXNPSZS!molfu7!;DSWO?o-68=r$>ckB89frcL=v?v6Nv03Og&XFz(prYi;k}R zD9D}T5yR|0;`JaJY@dHMLc@Z5LNWc#2xd|zSD(D*6ZdZJQqM+jWR41|Nls&C+f}ya z#$p3FBel8d2&jwp!Smvf)??5Z(&fK-H{&5*2@65d>a%|h-ny6N4@>f}+n#jceBatC z)d~;}>$mLr$H*}6JH{s8n15H)R7~a_r6fnBX()AqyZJOjrg7l%9?FsQEgPn(YY30n zmf~?sd1ywhUiRuQ>I%>p7(#fvyD}l1g+)b2vmXu~YmmR=J?dArjWpTmvo~CF;9aH( zFuRjz`&9@%i+%l)DfHP7$l3#Pl>z%731KK;YK2O+nP>pEvL!J5qjXF{2~+GXnawq4 z+tbJCYvjV;vEZH5NjXMd8DPa5r)8Is@Z64Y8})%K-Owv0na}IYcK0bvNfsmmiShS` zJ0?Ucs0H_f)M(w8{JxB;&1c990BB|@G>1@$w;^aCm?R1Sk$VE)99BOsP@c{8j35W^ zy5-up|J~OLB~lK?Ph%ZS?*iQCntp^wdfn8Tg{NmWdRnh~l(S@+Io zxdrsByNVN9+W_?i19c5Yuj?=F?QD8I5W8Fr3StFF$)O+}DBN*9uH+vq7UBvF0T%3p zzD~xdYR`-}cc?76$F&giW^FbWVtXzim>p^jh4>z1Nd~wVstX|fxN9>(71;T&4T6xN z8Szc5*gY4`p!9ca(lf>PMRKR_h zH@ujg;xB~Z8|L4kXbHY=p1YOf(hT`_D@jfFU?}FC>?TmXTw;uwT zW)k$}0XUbk9Fa`k6Fm$PkB5Xht8MA{ z6uIAZ?{J|61R&ysEmzqSbGU%I>#28J&%J56Fd;k2Tg#P>kuYY47<*^VY_D!qh<>k7 zOkTH0fsWl~MY7%K0t7(MA!5!4gw~s*Z0vd4(bHO?&+9H_=LHB9rb=+M7~2O8C}0c% z;>L-yG~r80zxN;ulG#BW5SZw7DNlCoGWdqkdH6P9-6L{Pi``sWgHsx#IgRxNRE|pM zwl#BY=|S(ywYS2?E|1F`Pg3Y3ktPpRA%G{|07U00@{kbR5M5|o^fhG-n*C60cFt(; zQ&iH$Q!f@aA;FtnqpwELxC(uF80vKDDIV;d(-+k=~F(i7`#awFuNwRk~XNtEkjQrF^ z@ts=ru>cqjh#-Ht9&FuW-s`ok<(jCqOxP;b#n8d3Zb!n>xJA2C_bBn~!7K{N$0{qFkJby+( zlOHgUd+zmSVo(t6-J7Mp>y&}3dBJ@RbA1mQo%~@hN9IQ=eue{b8$PpRY`H>dI48`n z7&wL-oaD^(KGM4cpboulmyC#51A2T=BrZ){E%9fW)0WM<)91_+A+#C`AsXt!WUB+~ z_>*!Mwy71SqT(|TtoJefTmteK54!{FBmd31$1d50s2w-8#o9w@fGs$PBH(l#bVBSH zz>Qp*$NlM%pstAaX5VQSc!<@pXCWfA@ic(aAn_d_A(Absxf>;8DjM@(bd8o&9+$IH znXd`3FoojD&(rA=FGUkbJFTv&cF$`(q6FnodOQkr*f?xxwEV zf-zd4>fR|hJ`MabBnI+X*FTdlW-ZUB(Kq2IJxEqnPTgtuaw zO~kD3Fv3*QLZl&MSC`)RhsM79Q(CW4)zo?uQtCUomldC18I1(d&WqUn5(zX?B*~1UW zOKq?CH%MGz+5J}oLLp5eh@nWMEEh@$8>!J9R1K*gI>Eg8E8PsFKX&X;lf`u=Z^I$wad>A) zPRIxP!r=1D$|zXBco(JfKK>mhkh_r-w2il;oxxe^{oilh=S ze7qI=<3k9~J<*ZB`~G?I5+qKPhHv^WiQ%87>%`ndNqFXJn^zf-)&+f}I_{_RPRbGO zFe7WaB(JfOET^dD*)Hs=jye?sTS1}0X5Q^E22rGJx zz&say@ut123GOFG1WC%f25V{%M+!-yffUB%0e7-v{fJ82l3?+uas}WzyJ^A0^&f-3 z2s(xyoCN%v6&#75!&?S^)U!=FENi4WgKUkj&gdnNzS zd++thByo2P-x8Y-C~$no-intWq|l^v()8~68xNbT?q-{71UbYGJk`XlujvQz(KK;e-9k7VETPNl+7BBOotcxLwl-*qXiPKh}AAsBs3qisPq zO~TyTR<}Wqpt12?pktF~^_GV)m;mqU5Oqg0F2nJ1dgIO1D`wXD+t*#-d$62cU!?rn z`s(eVIT7<`;dbwcUo4Xk!Y6oV|CTDg?CX;flGcB)OWLBm{X&2dGzhivdH>*{+SD^A zEdzS*R1Ls)^}1DE^y%2X7QiUzUvM7(!VN2Y=ZhU+jud`y(<}H-U9b8wDZj_;Jp#hP z-31MylEQ=4Eqjkvr$)SLSLn^#hQ1v>nd(z|IK(_-A@aK{ss?nGOGJ&3iUSU*33}aT z{XRXdEdz;@inHc7al!&Op%Fx3A~!9Nm(~m4GRibwMQXkgJpdgYjbIi{Vxx(`TjEE2 zAwUVSG38JTVGUm(tQQK}(~cf^IDmxCzvHDfI*6<X-VjccIzzR#g6OZ;KbfRP?%(QH;(gz@o2ew9S9>jP5QkJGCyW zHtp{BE)7OmVtgVv$ot^MaXHTTPmZ+RN8@g*h8@y=sxYaMWp=b6%%(&pBw}E+#jW<@ z&MV*cSYdm%N7SMeL<`fjgq9MeG7!Meyn8-8-4Y9~<=h7Sp|8g_-)7lAQ6+$P2!1SF za|zRIJK`TCd13id!6kkGmkPW zd!y|;?B~45zW5)xUzs0#jEg5fHAR#=akA`i!E9M`^MAZEu!e zN4n=4|H+^J^=J3T3hP5dyrEwqYu6!_N-c1btV@uV3583T7NdCFpQ@&*DmumHR|%sA zwZ-F=O@ogUOPzuwh*-3q@si zA7N!^DB#WrGHn0_XLu)|IlE#Vwmv~sKA{;P?AF3&k**Fqz|M&))+J#Ni#;4If9?TA z`}(x>Dbf}2I0pQWiL<2bGK@R5ImZetEVzceC7{@9El6E;)db=1Uha%x2G~?K+@`bnf8BQAJ{M$ zRO*Z8l^UlX$IT3C@hO(YIJub+H{y?a`Ohm`RF0bT>7swgz7sUb5pRS!Lp1`>I24$7 zQ#){+S{>+Vof@eMnE=N#yJ%6^R|0ZjCH(uMdc58e$qk4H z{Vl(*-fb0tX@8?-2}pekcu_4b;J^DCnU1~$>bNm@8WcTT(AO~|lXB=1p)-<=>>Bo1uaD^le+EB^T=uxCTdb@g7AZwZkohjhtkk&0@S4>PVjyK8B% z!QUS2?jF%STBx*Ary{tdKkEVRSJ;l(&Wd(S;4ak7*~4A1Cuw)b@1_OKl?UyBUA0`I zXYSmwj`*ll{>uUF%it97Qh=&a;aMbI1KXT@dAh!EMJ6Qm$dApH7hlu#(Q}n1`mVvZFZtn>>W3*t;djo>L`^D0O`uXEI zef}GOJRX^va%v?yQJ^jdFxRz%BpDmq-$Oj-OpJ=SFMvTy(OxS zXAk`1^;J@;UcKE((?>DI3H_&&<%TCXlPjlQ$X9Ug*@1!9Kqn>r0e8fSFSLCnf8Sdf zFaN-Mt9R9r=&HS+YV=5fKUuMzGc12+*7<}yDw(YJ>BM)rcTCo9M~*vc3l>B=fNRW> z!^_YJkb83h1`;~>^N%>ejEA__R%BxdXU8TxpojEZbSZE^OG7%J&l!J_jJ;@4gt(pU zze#&&Q&r$k+F*5C);q1WX^%5nhC-0hLb{SSZ8mfS+=uvR z(AzLHZYMaw1N}XuS&fC}?^B{YW{VAq7<6%(fVgNOIp3hJl2dgV{fd9ue^b&*rHfeL z!T(c&8}0M zF$FnPi#$Vd#4B0de^a>r3sy{8t-N1;c)n5lgo3JGy+JK?p3poD8Ef>AZSR+((t;S}EMRH-rK329^#9l1wMI2{ zW#Qo4Wd~cVLWF`^kZO4}vAoJ7YO#(of)6mf0!R#4Lj=qa9tn@yb~#8eRx1I6;OJP< zpb%4ngpitQIm_!MfLV!S?b3%01%>0=DoyGl;yKdG!_wM`cbN1Q$oPECI z^e`ej=`?<5PbqO3d#?~I|%533+rA}l3tU+T1N7u zAu6|6jY|p$=Qs7?i-4PCf3!juA-n;sIHufrySoPIe0O@!`m>*cu}_$_1McF1d8_W( zF@H^f8D*&k)fatBU=S6|z%*1fJ!iZ{`O3I|$)>Vb+d(&7om_aRi0(HrQAE2gxhqB9 zphR2hxcf|(_2C)-G=XM$I~D+AX#nxEb@wz4j?=8EKA>P?hffZCvk^pbiMmLLu-&QbSuxPL{gx<4`a4t~Y#pKi>UtT)9 z^!(P>%bQ>$JmjRK<^I90n>i~63sUL6Y4pQeqn7>IHsu3x;SP|*f!AWR@gU?=7U^I9 zKKOB}e{YQQ*H7lEE&^EYQ`xTd%6psjq}bY3fLDh9qudWsp%yevKahiVk__RB_$w2< zFYU3atvzzGdOyWBSX{>fYoUU8z$)kS#*PDc!2(K!NvtqBFgY?ppT$%O{*kje@`FLV zct?cNL^!Jj`IO*l(Y2%oN}StuD_F;0e7iDuz$G7rsN?R%5n8#AEeU`|jd4+x*H)-w z%{eU-Qc;aW(I9C;TaB(I2g)Oj(jP%weo$;R%nI^;gNGGm7#BmN;)#J5c~8nRqdtg! znGvvynNz0Nd}!~k?_s6lE1tLcb;Sp28Rr&B?$qHtR}6|h7QLI7a5){e^W1BEd|?v3 z7bkit$v%x`tqsK1q;3ve1jN-sfKOr6$ zAQ3rs3YDz{xGJWsD;;LWS?a@US30Zi>p9ZE0DmE+9Di7?>`KF9lmhEx0+*qMpv~=P za^#gj>B$NZZ6U3L;PjBeJN&{5u-JkPJBfq|bTQ=OAp~f1#mE%gQAlS#fHWRVB7Cl2F^IlvUDmhlNlJ6hPdUNx#rBx;* zI@dOhF;JPJ8e)EQV-p72hKC}Eqx4Ql#wo>fqc1hPpE14`lCs&C8_L>kPhNgvw?loz zg{i~aJU-Ywf+-^JcAs=K1O8F+~9!gh*PT?P3)kLDJv+4oo0j?B`-6-_pq0Q_Y2 z@uJeWw>~g|wj5@rjWZ3|>2qcR&^h?hlG4ys$G@EVYILeKrr61Fk6m;|x(89&H12AW zQ^rUc@-|!pwjXT89po+@yiGn9&*z0q$DkqpqT`KW>ClE?|DuJEr;$k~I$!&CPdS7} zI7DAgsqk_-w`BGC5T`4it44MdlL3XaQ|R)>m<{Xt8gQIrw%YA45A5u}(z|#n=<=o+JrWiBxqC%>4RO*+T3ZW---?(%-wjueYH#7bO6C4ELqRwRl*|KaakksCNi$ z_EWZ{1@XdrYscJG)Jnx@+H4yjeAAVV2bw}0K&pV=ZyKvnoUJ^MI&lS8-^-8@X-zwM-%2NSj5Nfo8ul|@w6{^Qf7=qPeV zeX2`o_~=s52PCBu$VINJhg(id;H|Q_7VFov@B2c4^GM5YgdxS+Bj_4j1%;*4s%dPTlP;;SO3x-i5qYEZ z`w*8H!Chl3HTwl)9IQkoOq}J!kbMVB%^PZ7m!5#}sk6`Sk7^xE(&3h#TYtALb|~rZ z%}DwTCj2yJvgMak1J%(FGF-7%GWPqUE~}X8Dim?f8+O^jOhl$uxX~*W{b?=D_q~wK zRx;F7K$kl()qRUM$7w|*kEMyZX*d`R+Y0DB(>LlFomv{|>l0(%f;aatBpsu{eqk0n z*8Z&}70Tn0Erg8jr4Z?F6D@~uWZ##e`V|I1uNzxBFbfhatVfozs>it;M$5fX*%R~0 zU%Q29@<0xGF3;`Sl{lY_HB3%?YQ?!=zy~dGVyc}Me#0c}hhfuKGYM=rSg?5XX+dKf zCdkx`c}2Wyc_~HyXcvg`?lko#*w0Yn%yR6(Tsue!>XBd?=yU_Gzp_xqw!OJztXo+{ zaA3C7TUoyeb4qT*0(FxvNnHs6c=DgsXK^cgl{?sV8xW|I)qBD*eKK6Ro^w$s&c!xz%+t#P)b zbrY zfw zOk#BM`NbvuLla>$K>}xa8+H64#;Aw;#PfG%w(j^(Iot1c>EbDcJU=+<4ZJ7=ICEfkS5{p87Q znhCIR6{CT*077JN7)1jU`~r)@Vv=DFBd>aT4G#!rOc>5#DAH@#TQKtw9@av(u*nuK z*`gUaZOdMG|84C*oza|hHPjs8`d-kKD-Bm>UBBf<=^eon6t$t)* Date: Wed, 24 Aug 2022 15:28:18 -0400 Subject: [PATCH 07/63] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 141ba40..05e690b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # DisjunctiveProgramming.jl Generalized Disjunctive Programming extension to JuMP +![](logo.png) + ## Installation ```julia From a118804afb67ec1a9c896ebde01c3cc4e8e2dd60 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Wed, 24 Aug 2022 14:32:04 -0500 Subject: [PATCH 08/63] Add files via upload --- logo.png | Bin 437330 -> 443931 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/logo.png b/logo.png index 625a4f1da2f9264743d2486bf5baaabbdc0ee68f..5e2b3b39a92828c50075dab9d68a912265108a34 100644 GIT binary patch literal 443931 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�~TB4u? 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 r~$& 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%0AGpxb(bac%Xg^du|m~^kxs*tZTjwLi|Qbq)T=d5 z_C*S=$eK7&yB!pq6{SHEAn%?u?$&+ zuGXllqpu}?_JkV82T)&mvvQ#2D&U$QN@w<3x$kJjb)!G+@RB%5i z2GET7)!Xcq5KZTLqCb)A<>B?fo``jxhzlhIm~Rk_rpk^bgfKVD%VPKjw$z(y@y%Wq zoOqg;qo+&Yq#HD4?-a5v=_570Av(J)GxN75iR2XJkJW{RE&vL=PK|p2B8%G&`+r2{Ptd{pDGq$Vt4v` zOzvHW>0kJ8uTjit2pZVT-_x~GJpP-bkrfPoq<53Kt<`B;Iwa~X+N1h(`$uqmS+0@A zsWn;`Ogyb7z~7{A|JWtL6%kf8?7B&O!JAR%&^WF9H$wD}KCQZMx^z&h`drz0gw>@R z4)&!E_tAlCQx}SrzWq#Q;Z{4<5vpQF3|pTqr%b;db@iu#-=AiZC7|Y;EW`N0+{~K? zHOyh`{c+Yh_Y7=ecnzzLRx`gw$|8sMw0lxx0uyr2Um9$M%njrmC+ zlOtoJrD9(MPoj5)a_*QfgVR%6Y*s~CoZW}cKa1^0U`O>!`Qx^n@mV%37fLx8UUb8e zVkDbOJnA>Td;@_|lfN)(+18k37kJO`eo-8;BO^Y3W(H14ud^s<^|A50Eb(hnh)ukoEaZB>7Ej>%`9HV32^kNb&3<BdMwCm99RV-&hr}R0Yefnq>j7V` z%wz&H`fK%;`O!aah)1$- z<-I*G4Sv`QlDp=sl_F`G)wU8MrYFGO^{aI$h1v7mq1w{fi5Jb0P@;={%|@9yz9wKx zjI3D7a6#T%oLnzwo~@EWw^rCaq)r(sPS}U_DrYn_SJ!$Ta^{6iPO3CvHf*2bc zV|!6Wmdjr~N!H|mGzpF^4s@Wn$`!PJUsS_Dd=P3HrjD@qgkN>9F&sG01`k49e8q_kQ|hyuA?GI^}0d(s>j0?@{?qcfW#(>B`DobkV2 zy>hnral=TC>fFlaQwbO{eZGR6^AOg}qLBN>gs#7;M#Dad<*qz% zx`|VpX!18w4kS*43eO5$DM3W=S%-%}DIa&%v)4hP3=fo{4!sKbVo~>p@992E+I}+9 zU&bw{f51=IuXoa@p_{;H!(g&nbmtk8Nh($Qksqv`Z>g@!@1_}+@2!$Pa{U2!7*}!U z#)0?K%djojw804UHHYR-6KjrE(b>#PbJ|p;^B(5o0WMg5@=3yB*qpVbQ5g7XKm03g z4AAgsMNS9@8#NJ_N3^t0;%+A&M(=bn)r;73IPPkJpL??W+Fq>YnQ?{|7o9(gPRK2Y zv^R!w9_RAf_Kto!IRv&5)v>@ff_#q+uC>izt$z|aZ#{2C+!vN0Kd}A+JoPg{L_;7g z$GtQ%gfA*B4*CQXGyW?M$2bxn9k?cJso85zjLdob_1(*MYxqdf54ubvPEI;|9+Du-9OLszP$v*&sf%%}ZMqEVqhrq{8XX)C_)tO|7_UAT9xVfyu2tImSsK+zy2 zoP`cfe?+htaY#I3q%uY7tr1If79G$AX>yJ|lAC!wZFfXq`|SKJPlMD1PbGK2U7zp@ znYNLY*2>Xnkqpc4dsN)jg1ziUTqvzGNLqG>!6RNAH7qgv5y;0Wv0D(|v?a1OwHXH= z4fzofKm22@?KhAanLr9w)@8ToOiBXY9K}S#>WCfGPb?#F+%%G12y zjNgoX?6n!gDr&-bonkA)>NWm(Zud85z;NG;2)qiEzv%Q@2oD3)Bu4qqr`wUrEo6`O z1^x9ejn0rRAYin>`RkCfi>tEdOw--!NImG^>hUr0Nm|jmYx33jR3N(|%}`;Hn#Uwd z!U8SCqp`pPqp^Q;WTeOJ&UL^+s`Ag7=QKav;IuW~_>8p_aHjoA4p9Yp7eAh(vsOdX z%5~%%8YTD~mqhXE$f{TvisxZ#BK7x#^Ig<;%=Nghup7@o?Ivx|czB8{4@cG}#U@7I zO%v!P&hrgF>=7JC*1$I^i;X^PTr;jWjU3xv7@F7gT)ns-b0y!OlBYM9qIT83_8+2* zTW;+P<6HMS61rElU$-pjyM3K}0>`Nl+tWWc3^o^}ZIAO{qsYpwbK+~1KKL1CU=Sj> zM^;~^pJ5)2P)|v<)3HZ{4s29Q-18k1tSkc-)$dakYyeu#kK;~_y~ENAPnZatV2fj3 zD97l?8OZk4+AjQWan1j~#Wm1NObzNWP!5P8rF$suRBfXhoj5sTmh%^8AOY`5+JZx{YV(I+=MSa# z0OREL@+*U4wXx8cwp+9H4k?2|3DWg_>gj&?=416D&-PrrM zX)$X!&ok3!JgCyzK_8O3wWEUcmx+&LgtF3ila^F z5as$nGoib%5{OWa7)9Z$EGy>OR+Ioq;pi^aT&xeI_t{X027f?QHl&2>*A?62r`BdR z$0jljMr8}2_`*Qk3z?q(+W6@(`tDLw7n+n$?dNA4VzhZPrkkIHibf=eBxSxi_|Hee zdkK7dKH}=jAvIU-$Ad?E6KYUA@To|I@6J$qO9lc4c;6S0Vt+zh;W+_JV9Vh0=UI92 zYhc3oYg`ullUx^Q_15kyz+^9P;Iplgx5`=}S*DsN*D#oT`6`-s>jUSbK4})=?hjvk zOn=gO{T!Tz98eu3%&s8a$vb6H@hi#L~sceh4r4YdKLfDzOUEcRjx!~kwG~kM!>^bzNL2;s{v6mfz z375%%!-0;qBhGYsJ$+E0`(>T7F0G6QbkIl7;x=tZD!Ts}MByPNN8Z_p>;zj+Ga~>RvDSy=dTZo zJVNHmyQ9H`#wwxwtyq;&(4Gq7+gT>aw0U!NA~oO8ir&- z1|h<`p|q;41si<@6|}~(#XQFYODxUAd-~1Emp?WW1^l1?*227Hg!LQ&dKp;A&Sm@= z3VE2kbvN!4uSAO)6r+gmPO%OttU`UN!Th-9mn0ajxiv*Fm>xlVN};Yr63{!SOK&5(ERAXN(|qU%uL!!~d3x)+^JJH}h}F1nI!%`niz(p(0_(bc%b zQrJrH=GLC43&+l|=pSXhfvejZdQt1eQTliy*eJ&t^}M6cGq9W$`nTgO!?=pD4SmB0 znL%@Kh_s@XrHU^x@UP%2tM>M1Tu^T$#ww06feRh+P!~`Qj|-z-{~=GmHxU%K=b?Yl zI89oCxdAmQ^N-vhFBDw5>3iouq-S&_sCD1xtMFXw%MuQN)3~YdgtUSaB936e@j~TR?^6I%G$41IiU#Jg#1(0np{G&Pox#DNpKE7k5zX25qXaDh*Mwt zoolG~Mcx0MRB~dJe~y8C{=b&G+F2K23VJzl5`~>EI`kl~Ps`n*HD0jw!-p(fPsr3t z3eeX78&FatxB{EbJ0v&wnj48eI6246s@nJEYzfK~Rf?w&Ent5ecxw@bT7gI}k?eg6 z?+MYde3X^#VCzyOWiXQmIk5h8Zpz)=tP4V5k`O**?c^h?4SZb9d%+b6?C)Ej%nTmT z+`cv(KFfqJe`J=C4PChAZSKfkqx@q;f}D+5zZaK+K2&t0m_Iw>vcJbtzLJXj%gBrSYZ-gRjIcP@ z($k)gk)GABgAr;1wpzA&lGW3X08_7w%-VHV3rv*%{cKSIVxP}u&L)I*Om@7#cAyGC z&*68Pc6EDAsesVGt2S&F3?@~Kvj{#qF~azvsX0OhH9bdV6Bnud$pAa;hS!X@wMe;u z5u4liU*H9$yYc+aHO=CeZY8I!U>@OCqmEb;H4%bW4()}y#R|T_u(5V6rHOu2 z;wqqmpKVlV5x*`ilsm5CS4^@pnG7Xcr zXIzjLFE+N-5W_K!6 zWLs`kr7_-Z3~a%mQ0Q$?>dFD;rBE%iVpyQ=eN7k2tS}m7!%isS8GG=^2MZ02l}T$4 z)Tev+uGm$r*SpG>axx^@?S3cZCs*lzJwmsM!u3xDr(L?SCk2&@kv_SCTQ|~uwL!UV zY$ut!L~sqRNR3UljG?L}4uvk4PScZ-lWW{EESrB7XoE4{7f&!;?>hhd)BRb2)wyN{ zoa-HTmK|>kBdQc&QK#jv+X*8&&A5rr+*QA#_vslf zw?GHpngr5@Rd*W;Y1mV4=^@)OZ)>?eCyIm~p-T0pCwDQu2SR(bU;UrtI5cHa`qwIu@;BdK3((Vjr@Yf!5N1q#!hv1R8+wT6D`*(c+Eww|q`|8i zw$GY~icA5&T!X(as(-89wX@j?I9r!Gym{e~O`dfOym(;eHNnKcIK%pB{}A0co}R__ zcI{8YO_LY3U6kz(mc#>in|?{zS(mYFul9D%qpcXudRs&ci-mJm8mCw52kVeHNhFR039CMPhY=9n8eaeJPW}C%1MZ4p!F7T>QgPxf zAJ&ExcH+2 zXfhHkX5JQN9<)C&VYsHA2#0k{hji8{*|$-xH7^t5!t7A-bE;feNcFVLW>Wg!JE=@d zj?w*E^w!A9mqYf59w{A(oyN3xK^Dq6*L(ZS7ynV09F{7IVrh$y0an16`?YAc`2UM$ zeAl8`?aumjU5olRnGH4W8~=5D8H&)q6G^}-7}~JXwd6z{>g61TB`kSs5FZDGpLo|) z`c4MzAytXr`1*c6vOb*&5q5kpABWPNM7fXQ49q$5d5(0bJ zc*CBQm=@KiFN^rNv5}Bm?`S^mElL(O=DV9Q{*^N35Vfcnr{Oqlgin$K(7vcd7z{jr zMEA*2Y+DJt5bu0A#t>}kjtF;kkz0+H1XFQUS_$D|DZQr5qCUzOvrRvp0G(UWC~FYx z203w~7Ek7!dCp@$DkvNSGg@oo*&SV=WI(_Tyva|O^vAWY682%sIWecEdHxQu>p(1E zw$11OOC>T++mp&Cnx1e^e>$%X9yt|Vszcrn=+=>SDD8ORU-0iKW%~MMiCRnXL!d8S zZ+-AQK?L^I#!%vO-<`!Ig-05rAWkKy_oKxy&X@!+_>*?&s zu8PkDU#!VipLVl|-MRRZv}_%Ni*lt;ij5%!{_+x}7{|W_J$SYDlL#&H&(5I>d4E=o zA%IEya&W{UCY782RT5ZhwvD_I&QE{}n-c5H_1IwR7uK;`G70l61N2Ad*)zvK;P+b35HEQ#Vm(%e#6 z$*`71dF)Yf#EA453dS;{f^Y6IEsa|@jUMcoz*}ZHyhCE*7lr)pEUL?pLhKHTX@;54 zvp)xRxYVuXD5TiWFV(5^-abIasu&XdCBbY1!DY@?LY%TC?z<5~cDwxf1NVn}OvW$$ zi#Nx_+#>&##G2!#YU>D``BJCm+z#~(ld>Z{**Wd4O9)8lRtTdQH2S#l3NgXo3bpU-1A=zyDw>ER)6YMu3)6@c>8Tb`{Dl zXVhm8vL0?Mj0}e5p4sl{#g}#4OLI(psqOkJc1ee`Ggq?bFbVeLlq}QGYjAl(yqL7G za*U&Y$25YTjwZ~$o+&^{=%oPmyF%lvQEJKSL+uH(P1gfu z);71;?_A#Ucy(&&1|(^Itq#{|5A-nNvDF&0?%ddUNEUFDId@>c>`g<^#WmI6;qiS2vEZk)x8*)9yc`~c{)u`0E)1Uw zbz;9zu|}tF0270ToCEgMk>kVm%Q-#I9L1h}EMt88H%Y#to4^jO5vVvky%zSgL>s>B zpCu>lQ*oDnDlKXf&2>+=_np~P=$};DMR7IW$oh~I9G4!`D&-GooUhRaay>@EH-j``vMeqj9Jn`n`}=Q(n@WG3KnFghKW2^Hnb^rZ3OESM&$`%W9I;4 z8cTs_xLVJ2NTTI3vz8D1sV`BWD4uEckNr~PqocUXJ!5aOkvnkzt&+O2)8ue(3X*Er zv}e{$TT}NIi)l}}SU2Q9brE>Q0|-hjpxVRp&(#lsp@S*Zq_c5~BPLOAT3jO|vqRR# zqVfs#d*{xgmsxaCONO^3Z9PmGaOilx2-bD@_b(b+nP#aJZnCGt|dM!8&i;u9sf~yCpPL3UhLJ4D)z#OU^^5NxQf=w z7Y5!8G;{oeSU<74hFEX8NIa0Jb+>p6ar-Y-?dLr+fII0ZGpV_9nkV=klzE$ogFhed zX~k6du8&-I05E@KVDoG;ud#);5v4$!S-U5W=5~urjZ*XId^WX6|JdV73+A+sKtt8*p%pZ6&-;r(QcvA!Tug3wN z;Ux-nG5?n_ZM&0}fr?qj4^baMX1KOcxr_(Xz}T^2lCl}9Y;O~w(PWqqqY#yusCdCg zr-`i0&Z}@Om$V}i-Gr~NDI0#hn&d4qUOmna1h~JAbtR|wHGg(}8uv&SFd;f2Y5hX} z2K)dAFpTRHHttg(dx8^#iskqT`EvqBE8}`@chPU&^cDqN&VCUOw~DI_(54x5ZXqR( z^!cvY;iWiXxeXuWDIjj859b+V0+j(Jq$dmz?+SO*iey)_HZJEAe>(*(?{R6+gD$I3+t_V13n)@`E zm6m?yj=Uozfp9`@NX2&Bb!B6f_li*aTS8O8g0xrBKnMY@#f4*(odr;=UEHpv4(5B!7Y8+4}%r2EkN&_wM6pBK$BEP{)Kd01HsRU-gMg*&-rv zv;rmVLjChWVuOS|jN~AUmI%8Qq)U)ah#}`N7gVwDtMcZTPv6(3TRe$5QEQFz%ww$% zO~Fck7WQC@$?bkv5@WX)ayd#-$ZQS;O7*_a&tMcRk~Oo16yHbNdkAqby!=M+;_^M# zdP-u`97f!z2NB11%}k`n;#^mizvRKh{fqzJx)Ir}&e5pS>zi;}0(iDyU(GWIG3~Sx zVfd7`sPSg4%g5N8HjAhs4B-SFIJ@G3Ku>6yIi5{72VkMRIKAPNimk)QY(AafJqQzB zMXuHBR8nEsz$(_>b;gTd6>{&tCH%0$086BW(G@sYYWvVmv`)}85-J8O@J?=-%R4)U zKxD^f+BPN#pPAnd4?w*lZar5H(;Bs(qKuSY1~uN!2wv>WCamCtfE#HMc~zuN9%NSh zR*XS#SgVDnhByOWqDpS%Rm_nbv5YBspyCyp{OK%K&!x#&a_VVO!R%Yi_j-*Zv!I^$ zSLT4z{(1swUZ+Res_&6kEb^FtS zcMw*2nY6m>umrsU7ziQ}EWOMxTqu3iv-t*4Y*(6K zC>Yw+K4ow9%6#yHPLL%aoMkm`d#F~A6f0Xf)(IEiEK!@Fb-V$8J>RYpcG7no&xQ^= z9Gv^SI*B-{DKvFyu-ycF_-2jEp=>FT(>^^>4!5qGLILZf+hrI|5aM23>B+DMX6#vI z9kLw8@K$jR|D6V3iZl3S44CPjShjbvE?7h&_8-B{i77`Do?(PqxxkJ7JbGi&03mX| zv#P3Ml8pAW3DUPM)|j11s_>M9&j01#PAVM2U$exouNFOPD^Hwrpx7sdE7XHgZiQ_C z$M{VyJSr@GhVpo=rgz!T9jSO(aqbNhld@N|Z}d!FB$k+8_Emw?UV=v&uUkgslF2N- zh3a~?`l23B2r`>0ebv=N89n{JPP z5B!uT;?JD0lEAMg4n|u@xOi(i<}9OMT!Pt#B3)e1p?fY*V-caAu@Iy&6$*4BzGu}2 z9B>c2i8yIi|H^SAK^Pq2hHk1Bbph1o;y}rD~{Qt;l-Ph!_iTMW)B0QzpqCj;t7kj&Aly0AB#FFs+xX7QPu@GU= zhkL|5#;9HL>0B19I`W|3n8~}O5 zTE1TY>JwkMQV>b*&0xXGwN%A&nRscKoF;uMj_{PXfmCOjPlYK@gu+i*#Z?spGl|jnga{N1{9RyC*uOv$Cg#)?zzzs&iaD2Wz9nf48Opr7h|EH>Wrs5b zNR2*sANKeXrUgx|;q*VM%5k25sWRfd91>Z0xBPhpg93}!DiOFtc>gCAJ{uNoW5VV< zr6i;C#+SF}x1r@cX4l7pC{LQlhe;<-(0{PUm{=D;-n?K=U8+(tJx?sPk~~*9k1L*{ zPS+aIvg5B4Z8Bf-J6D&W0wtK9x*|4vjBY;@@%05_3ogHh66a;+?@z~IZ>;#n;X(va z@$fueaL`7%Zf15bhnE?6XYB2@4B5zZ)p@{+V&Kp^7dHM_n)qV<9tYKR3g#y2NsuQ2 zxOUTK|M6Rht?!5315LHLo$r0$t0UjAZV?(WYthq8 z^6ONyw48J|N;GFMNv=#oruVfz+`M(-Gc#AY_g)Ao`r)2DO4CGgzr4o(^|9halM61( z$@!(Q%)rbZ@z+Lz_udH#CJEf1KP)2Yz|5&oJkk%r5~Qtd&;lpCp%g=^S2qIIVV}&j zvJ-5xI}f}?w<6pgaQ1YcJS@&0s`6~(>ZZW3wJtq}+y~1ayvh@l%2r?JKVG3ZFA>R+ z5DAx@C&Rc4U?ryrS7d=J_^qv;Z{xNac|8+p|GdrO67;eDnSK zr|wHz+Cb1nw6)WKTLU*ze_OcmlcL$Wip58{#8$iEuFGpo%NSq?o%t11;U)I=r3TUg zOo1_k>(^d&K73bCiGL*QKoanIw%(VrKDK{p@%K#p@CslN!au>Gm#k&V5(xtGL=@B~ z+q_OMk;3l4ZCiR>h=qPgU{umsr!fqW)vMK7#j^oLEtqPu%8c%a+5A1HK1An;xh0sL zXA&!@af(iJ(s&F%&2pd)+~k7u5>Ks!jq+!MhxOI^10OTGr3SZvW+W{QdVO z4j46Bo@;`SJ^5Qji&*lv^CitZ_bC9vC7I|(@@`QxwOisJsSBbTaTkR}^H<@%zW=2I zAR#d*akdo*^Z!s6lfw7Bc&cRgT_69U<^#H}?*a}55&6Imm-aH3^{b` zkTNtwC^f*)@1N)Wj^67#@q_~}9cJ%)uY0ZEdUzI*?>>)A2sp4(16E9L4fD6JeNk>h zB3&GH^dQpq$Q&yw(m@+v%ja@o()}1ZO@kIFkc_3d)1ZQzWqzt-|^E;@kFSEXNt7a zX%}l4FdmE?mTDrh?P|#)1%Rs4Nd3b>U%K*@gjW3h&V!~g`2Tv>UjDBP#~MbHOO87u zwv*EUtxdxh-^e`&F<2q*gEa++IN2^iv-;G;;m|;* zk|`4@0@ix5N)eKr3I|Bl?A6Fzj$A#uN zA9w~D{BdGT9FOIuf)(<^AZXH)+fmQ1(?R>aAT&+t?~x{7{b=A^QItjlbr>NbE* z14UqQ|Flrzjq>*`Qu81SD0A48_c$w&jiVx5$U0mMHt$NQzN|d<8?M;YQ4KNtq-q!7 z0XV8ZBo|il!Lrz%6an`Tu_mQvsYIv^d6) zPtXb7XQKuVcT-$z?*N~{Q$&rWz~zgDFCV8&fSu=S0mPQzi}EPjVE8P-ttwr?>G5Gh z-B)yOLIvHZ+av7AV-krCoNrG*fat_h9IMhzH-yjF!5)kJ;f}N{8=*Md`Z~C(g~V67 z15D!P30(3@0UPf;EdWD#^2&W2vIk)+WK&?L;O0j`*Z~Qj zQvZa&Pv)jm>ZL**F(oUHlYc~J1Tn@3^UM>Ij$idq9Wbc1T)2^*uA*`%LO9|l0!fR1IC~&3;Fk`P?ZuqW{O*6n zx&Z(8_g>7KL%XhTJ7rVT+H@_rYPyBleY?9;7c8^fqkyQ*FesT1TvV_ZUDR&153Qi5 zRiqEhp)5&UzXHCdw6S8lL@-QvpE@(bc6LN^9Q;^w70W-ITxd&&^$C_g&`)q!*_NZ~ zM|glyXL^(p859K{60^jqokYApK&w}c{hXt8jSIKVE)JMjJvV5|JX-~e>`D&HHsPN+ zSMdQC@@_;RWr`almd-$)eASOWXtVf8^+=-ttsYxyiecypa(YFo3s-jV5&i}`gcm*5 z-Qw}>G42V%=~|`|du!Upk8~+YxVoItiSeh`=L3nG70<6o(tT~=^yB5g>%Ty!J-TF3 z)9bq+U1E_pbI9o&nD#|2d3IbU8MR9{+K-zzm)9HfX8yh&Xp%0iO53YnM$bi0@Qed@ z!|tp>U^1)GZEdP*$lX;PLH92DQ)|;eNx=wKlfX$)B$-Kb$=6|cH4L)9mT^aq7~9DvoQ*UAADN=^g7_XDpsL3bzZGRTV_^OpIvarIW(KZBx)_`u& zKMNMTnR^zNGY9O_YXo2MaG69)@*!WK`v4U zZ=i%kslUWW63LZSmq+qcp-t>B^}dq<-JY3;l9D1wbCFjXI=o2lb6kRl&AP3aD4(1a zj76y}hYiAObp-(QOtR~K$MslQ3l2xLaK;2B}6v$Am0f) zC(=}brp2nAcr|qBipmdOsfH|m3V;8OXeHM0l$og9Eze;r$I+M?z z>3Ogq#9D9E;L+V3MWn9)UmGDR$N8`(bbn-Qbg6NIX1y!Ji)K0ahBuOdYDi#JW|Aea zn|x$jkI~19UtIYMi|YoOQMHEfCEY9{M@6liY5x_K)$Xd3yz!?EHyn*l7lp1|?%*Ne zrJqUcnO|7z(@or{){vw~iK_yhY2!ewNf>M0v%iq*KZj+fTzC(~ATJgaMHKEc&%V8W zxxKg@q@b`UCo=sOiGjqTSxdKPH=__60xqh5fQo=|FQ^7|A!S-PqzOM?mF-(Unb zKLBKn(g-3?K%~^whKH+>EM<3%9x90V0Fj=_ZDK1RC-Lm%NMx4*r)j!#cr3pRf^;r0 zpKB&6-kG%El3rXcA0AO?wb?&6%BsR! z7#yz^_CWhg$IBA2ho!!T(fa-XqvL3lE)q0lfiOo>bo7`OOx9AOB<9V6Coqqya8Q2e zK$mc@9Ww2PwOOiO=0>mS^%YmPy9WJsuHqg04B=HP9=Sew@hV(TW&$S<3oc2fC~e(7 zEJd$Y1G)2k6ZVd1gK_)OUx8cT8RRX+a`gtfa5x6l+GygW4T9KU=WRLQiN=h>*@>^@!~BHQpb5`3H>O0T&bj@PXmN{68LDGHN5 zKEZ-4h^ zUXi6EwsIh#lVx+`f0VC8uJ{P?G|?#-o)V(wMeBD^S2{=+)UnHRr5MXb`!xbKWzeJt z9*z|*ihvC_8lf9{(B7xf>SiP5z>EHBEk6?Kx=@pvt6HEBr zg%^q5u&R@cDS2VCEVc8(Y=m_5O6V-$Dhu3#7X&qcQ=gv46tGJ zPFZJdd&CLaR2=}E&)s=Y_ucg&9L2baEvXsSIdC_E?@L|b+k|Lns4kTGxjREyWQQ3r zxXbxx%zcWI+Hqw29kFQa0@?kww6tq7ckt1?nXjQBU1_<1p@f3_bnYE998vy&gUnTS znD<(8nmgd}{+$&WI5ly`DY#oK=49erYx+?vW0&U>BAV1@)Os)jRN_GA;Z)3C4{Vy0 zj*7?!B4!Bw=~x4AusEsrdCyE^XT~S!cBWrO-reNg8COqh4514%W*bFyJI9~I<;RYP zRRdnwFtN4?{Tj#S=|pKtdEu_)o`D(wlX6qhNlPRCl_2R7QlU!4_SK8h)7QHPQX`Gf zIeFG;Kwj_4CxUiJAbHg7G0_-mjOEI3BbUAkA|$Tp3iZ)C*Om;So4}d&w%-y=2M@RI zZ>p2M>Hk7*I-i+ttI0m9re=m@$uD9_478;w;Q2T+eQ;a9617WWv?@{%6U9;QE3*q% zbzGX-p8LN#oV5#|IFJ`rdi-?M@&l5 zH$3C$UjS4$FzN})U@gp%#cTMiWl4P}uK35U#0~5$?tpF*DsuCmt+hs><8nJYj^H^@ zi0qENRhQaMWc)^xiu^8?z0a(MNU0SkO}dHKLd6m+$%r(5wSD!+YW`}9tlp*9BFVoK zDdvXaODfaQuhQ&kvm**q0d8o-%ILPy3xGD6M|y9S6|$I3CYyA-J05R_#0cjO^*Lc3%Ga+TjDN}rD~mGQh!+G1{GygL<$^h*)|ma z1yZPzv+o9bZlAVFyO}U&(*5>#Qi06Ufx?#cgtryZoGF0k<56?k2K`+)7K*PwX2ji` zZuN;TPHxP<*Y}p7HJm#<;7%cw?`5(S3%(^RIDFY{6kHw3_NWul#1=Yf%@)~L51vCe zS=1N7mITjZSxq6tUdr21>qIJ#vj)kIcv zPbN#0*A)M-fqMg@+o@z;_EveK1#BHK0x`wdHsf-H>Xo^p!B!Z<8f)c*gGDk0YRiKWrt=!X&KQYy_SlhM(0qpqA*VEf z@-j%Eoz6?rd_cdrIy7%g0~zI!)RkGX+x%AVDgvwM`vI4gIN-t40druZ3a4nhoPb@! zTb(OUU&i7HYBv?}^B3Jqv83*eTcJmGZEkW?k7&9V$#0i77m2ciU`in5?}y#_L@8Ov zMdzW3FA&es8!$Y6MBVn8Vw9lUK@XIQ!*)2UtW7LcOx-7d%7|+xtG!G0Q}+76_DvG6i9!P5Nr;P-js5N-;0Dl(?^5<1F70Nga#*v} z?54_ZTw$;WYw|>?pw>lc3nmS&RGpvGnNtyi+xC?uNhj1{PuausIwAq^Pbj!xKfY6_ zWYDdg*R7c_E~fn#Q(g3Z9}CEYLWBvKd;_(v(7@s6|8!J%IHZ%}g9(N*e3EvzhtkiE zpx{;CtewJgN{lujGZi((LO3K6815F7ha=ZDOE7ARQUN5gl{!$r zFMK_Yb37Ec@7r=-V@)?|D1E8^8UWw=AejD7i!;tFETDUmL8(YrFx$Ng)s@cuIztY)SbR+5cmfy+ z6jn6+4)?1rvcvP_vo(yi52wO)b&YgM0G6w~k)C@Pht&`B^BGTe4RX>_nl~Dav=- zZ&uFYkj=siv_RLLM|>&TJ++}`J>TSVZv4hi?yH_Y;AzcDV>i57mFV<^DcQ)M3@Iw8 z=)4+Xo$YiYRS%NK`6)LxP@I1Gtm+u=_(_9;xO=J@ zTUIppN{(qLVjD?}w@V;CGSQ<3Q{zgPrSEgfe!loQ^`5~bxYGJ$k6!|x(L`XeStx)z z@W}Bv_}HmTjYN6+73i(R713XP4$1OxMz56u`X$923MX=Lvi3@pyqh@t_+r*oGPN2{ zWLf^@nBB~AdbE!|1)W?V?{O=+e8rS%SM9!`^?T&`*&mpKe3f0ZCV-%L;!KjR8EpF7 zhUFiz^+3tLLEEbj9v+7AMZ4d&14RF_K%&bHlw%WI*ZWpSsez$)_eQN7fV)jQj7omB z%_}+J0Ejw6a z03LQX{{%@Q*?q`l%A640)hpc%=wCP86YCLH!1ZxX=7)wiZ8MMe$b@D-Ir8AJeyLvK zlV86G{dKqV$A(FwKnESN!Hv_G_m9my5ae_XT=$PnivGf~hmH1WWR2baw4f1n@WCF0{uSPTO zE)ls>s~M_M=rWL~{I1QEiMuO)(~bwSiECNFz_gfu(z4<3Yj6A#KF#FncT$ zFGUH9_p=u$E+9!LE*~fcvIR;X-|XmMG%bGoQF@=>dH=Mjx(x=YLuU?sn*4|%l)31! zak2uY>ZS_|GhqQ^41K)#ND#9!I)Fb&W;31hm;-2RnSD}3oeR0sZ?GMdh8t2=&8kD)?>k?$$Rvo#|K4FGm zAU>A2C-O#s$tFL<_DBSs{V*#%WseI2X0zCfB*_{y&A$v_(~UMNPcPFMcc7E@>mOOK z%0|G8aPq+F^vn?c8}drnHn5k(B-xbfnGQ15`%`!u_ib1 zN|m%=n;z4`p^C{niKGbg-k|#kFok0Tx()QC5Z!&jl>1s-I@Lf~y#+o5F zJ8a9O@}ewIrpntAa~t+^1?yD;%vy3v)@C}Z?t!yu|0=nmO3H@_0+7KR2sad8hEjw& zvdHokQd1xLqT}pFc_^S!%BizP%v|1H!0AZQKitG&WltxmDn?Y39G`}2I1LOr5I^4j z{y3ySSKp&Fl7^pN1yf>0Tc>XXes|tHy3^7389NrJI5q<@v%q6)Z5?)rj6`u#8b{-$z^?-bjE5q}C66zQEsE zZ;2tunzDD2MeF$b{JP_c$PP=Ns;x!3)>`xdZ}0=j41V1MQs3F|s>vW)H(Z+b#hVHs zp86{awBp3l#jrRcedJ-H;59^)nfHL?m{;2Xz|;ZDKI%kTP2DlU$FiXBifF@vdm{Tk z%HqKIYW86o5xBR(9hPWLwKjFK`TVX@%G*Pxb+8B4iwAz=5s)G1{M5%to0Ver*pEi* zSOdpVj9;q`*Es8@7^x%4wd>7|b1Cgq|L0--BdKPE?`unSx|-uOW+yf+C~7;envf4H ztvzB(1vbukn)>4`gyIQn2=mPcdwyAoyQEEo{$)JV<)j=^It?6{K=3}XUuSz!(g05H zM}eIPe^&?kP0 z7z%BBAk^EDSJ-Hzq1rgV+Ws@)bB~@smK>Pqh`2}##O?>!!*i{2B?M#qGw#%yD-3?M zHltrX4p>f0(@oo|*M_sTNSTJpzfY?+>I}ZN%u+)$7hUD(#8u4q4!m>}4DI~&U`&T9KtPZ!F`-fif-jPugb zL>YPCF~4Q#%NlPQCDvc?`qsIjA=NH}wzpjcQWhRGX2IiVIK!AZMe1cNgZXyH>UrZ5 zA1lh$`+$EJ>?u%p2f@c9rmLf4qYLJIKdDHNgk6_>Bj7VE6PE8U5Gx&HpkqP_jtroA z^Urd4+Tb1vKat2|Ti{nZVBLSyO2dcM2E8i!8l5|!q(z`WUe{?Z*HIMUKYwvj$F*s~ z>u1L+`g|W%O2pgr6n4K2zw`?n6#x?)+Tg}w!MDHy8OlamAjb6>ENs2O_g!R?J^Zt+ z$tWPpOR<#ggZ=pQotWk6bSB^<;H4`%!pZoVe{h{u$ue+_ zg6reFt1@W;{ZY;hZ%@2~d8XSHw|68odH|K;<)`062!PcW@)7lw2G`T}A`F+j{pUI= zlLmdO3{-zJE<*f%xgHFRi@-;&dfrF>#jF@=SUrfd1%qe8}2CG$V*-~ zC^-x|&tprv7x}v(vaoC5O1@p|vHTYasB!tgU$}juaHi~ouc=;6Z3@O~(z?QluWk;| z3jcnfq#>komg7_XQhjS~O55VqZEVJQ$PeDF*6MPhCCfVQ$g``0bJY~ZR0iJqT#pd98|YT^^sm#sBPe{(cCd$6d9mgv08qAk*x&Dc9GW=Ixo8gqW240 zle#jczJAtzQsJ^PpKZ#@Gvg=Z@2D*%+l`$marUvqHkgKzj(UVlhq8}>^!bG!_aN0082stR)Nt^S=_icPKCYd|sZ-jh{P#sKXn zA!S8l3$J{>*ClCZ^DZ7lXYU7^E6Bw@FJKs&Q1uDcz;#ib7Z6JwgWqh6C}%5aV99hM zWL?T+MaXE{l8<7rUjz4sY8*$53L)~M+D}sFN!VhSp&L+M5Es)jBSJ$MiN*Pz-fp6o zkmh+QS2>WfgHuXULuYWlwZA6ci?#$OY-Zb*!v3%@xTr$@=Eft>ca2OQf z;)fvWGxS)mI`>;fLysTK*1N`PR^0Fc3bCsANz1-7?_T_6AABI}`Vb%xhbCY4;_w{& zGOvlt0aGcjf`{{2Xue8mQ}@nOFo9x6^XgmE`vLi3NX7eu%Anmd=Pl%n*>+UGqa6pN z-X^N2H*sfp?wEEZJ+4vVTm$>ylUIRh_H$R_87H~28WS+tj5FBzC)*fHHYnqU!I}1(_p4ArL-lXY zZRuw>lFe2tW03JK?oi}`dU{frrLmhfjNE;k_hpEf;H%CvR?i#CM#cdPMCDQ5oUp=8 zcYI?lrCVdjz6~IHkM7m(3Kp!2Y*;W?5ePl;%}cIIs@^Ygax%XV1_=4Uc6M{goF_k6 zGY(5V32i*S!aXs}>PO^#_cJizBt7w#;0ZY|e>Cp)M9LkFm`x@8MEdee7Pmw6*y53o z^0-0X;2`Fq>KWVM`xe#v_UiQN&B-q&N`_Xkcw&6I9;$cQqL;wouj7y@D6sH@ z6J~dpEJwa9fcpgw{3J8}hjrljf}IHUOPwlBiZ?Z#(k#^JG%@0L$szl^`|9HA%a!3S z+&{;+&4>@1;ekw4C2AM7GALUJZq8+!*}3uPnLk-3!h6QA`B3P$PMez-+T+U?pvMx$ zw^*W!wg+WpTnSJL{aOOCrlg)T-{R*Bo@v%#wRZ)B1R z4{m|tEC65VaR>N&#N%(5&LgaKHiO7baAur+!jHV}N7_Mm6*2*Wfyd$a-9#eqn4n$e zI<;&7sHRSGpPaK~ryfG&?(<^C`Lo|o@x>0Vqbfb)A>Bc>Cm5|rf>YF9F}s>yH@R4>cYsFLE73sNpcO81*vq43HNLHbaR?L^ zm<0g+X;r}2`38P*Jl#y;C%6#npqkMqIeW`^GP$k82nVLYIM;CB&!vMgu>$lKBkn!F z{wisZlYPs3Y4SwpAZ+kc|4>Z)p8{N+6|AzxGfQRNcnZ)?^v2I}9(Y?ulz&$nojaoesX%Bn0Uw8m4*(rWD!&ZgV?5mnA(IF3)7lr*+mGwxrpw~~ z%H+4(?-|W{^I?FR_Z_hU&|LtW-MCRoMm^Rp9rqfU@!vAed$8zA>R)C89olfuY${Wa zsqiG>-KP^BNBcbndeNxkoWkQu_c(`qv}W7&fxzc9sFCq17F?Vv zJnxS|+kQypSc$ckzu>ag{M0~Y(57!X0*DZ?<$@e;B4lnXK3|r^_x->9$N619>SOuG!c+?8Tmq4tbb55i zgg*i`entm~Zn+64W+QMmOOaI~**~5ueqlyMKzOm=qY{O%JH~o;UO5($IhQ3E{79eWqW;k#XJmp0ByW+Zd0Dd?Px0;u&#n9-Wwv z7ZlIqUSJu@m`iYh#%&Jv2MkU;V9q{eHSE@7EtE2+=F($0QdaROY)6c?!DR#Id7P6V z3iT_0wfNcK@K+4bC6urZdy!4L3|{EL=SxNND_a$4a%G$a!t9^&^Ux?`UH@c?Z(qXM9BYRFji65!f%*Jkpu7+CA#H;&}eGo^l8`yGNoK_?`gIP66^7m)dFf=_WO++HuqJ z9^F^xk!?%qcfxD8z}BeTy&~iuH7N7x+rp1~5!k`fNr|w86wfyAWLmBgY`)1+nuVWS z%*HkR24268tCFE4g*j_@6@KXw#?2WeM6_;u*~F=LK&6wnmhnc@h6-qB?FIB5Nwk%e zy)Xp-9Z$pPw2}(`I+%T=*UG_T?U#XIE(h_8!isi=i%PfU2g zhFMB4b_Y1kIo$%z^@~{{ku>q14goG4F+!3NUe|mzfo%b+t*h)yT2>Hv#sBXpUk0Y| z9&Dlxty%+}?-dz+Os_H!i8eZf#U;7)O4xp8a$~l|-9R<#5AaaTYPXnh$1k$I@Bg zAgkp4+k;LRdNR0l{p zIdHPUhudcavjbQq0y2$t7wq>LA*(OI3@!I)BH+Ac9A=t*=#!Ah4RTO#sCnVNm=!OO z56v-wT+!8Ld|aC4@+6Fi@)CkyT_uGj1P zMVbZ*V3omX47Vr%?8wh2KA<8TwcU!aelBL)JMJVOXBG_bkwHcTelx4Q`*Y!+LFA5h zEa|GLSib7iim_j+Mz`Tu0QB>p8I3QZkm>UDgY=8bhr_f65bYYZ1xV(5=P^(C{h5U+ zWuhkbcuAXHo6U~%4k{_%=FT}Q-7IrkrF>jWb)oT+C>S-b#cfJh*X#8AeUbyk!+W*cBFE}ozmA}I1{#jh@tly!v%BbcLejpbJE+#YCX0Cy zRa))xBrH%ApMaMKeP7{Y*b~0_aG#bZOY{fVKk<@@Al}O#W3Vw-sHwB{)2x)US3D?G z8znp_Oq9xtHTK?UfWmx=%fipO57Kdl(qAc;Sl!|V)4j=l!$NC}<0 z3)XQ5N4h3CLb!v?P@3CDOCMKQ{>wG--k+ z1$#G zOc`)5zAsPu_qJkIbmi3YpAVDHz`FMe*iO8Bh7w*Rj^}D#xllZ3Fm4Kd4)RW_i{OnY z&J6^d88c#OP~)NX+xO-_0xP(sdb92&MWdMs^2q;U`sM(;;xa6qtBRIT-w#IBPs^r- zk#X#kWM%W=S^I6s62v>&1h)4Q7gq&?uJr`8ItuN}<#CbB21oe7?>Z%hl|_J!J6F>5 z@jm~kkd&ZbZ_ zQ%G?vY&l5=B-mHTs(Vj*oadI-v?$DFGmfaZBsJ z2u^Ivj#~1tjGo_;D`aY5F zHRL?_8~{yG2^thY8V`r^@zNqQ`S^9AV~fXS&xO8nby;84 zad82;4-f~|2ibrWr03jm3~kw!yUG_@9mEs%e{}w?Wwgw$sg#E@5~)7tx{^@SgT)u& z*u`=pb9bEJ%J&X0n1rblP0Od5l!;BdU%lzYl5DY}a8vRnFlDc`VXn`MCexfFJ9^G^ z`G$(lgp(m`Bai*!I)EE##dVNIhdRqAg2sy?;CJ|_#{^I@UQ^w+S5fm|A*y)@i%oB- zuPQN6+y3qACpO1U3G11Ej3k!8g>F(*@;LH)p?53*iErYd?=iD4OGfQRlp2Jyk>0wM zm$~~tmqN0*8MMLxR#NR#YCD!e_+Q>OqtOBW{+ZQ;co7rPQq1p>K|iTxldZp64Eg!c zxyk%jgpuA`XBzhRL#L9ffERf?Yv+@8@R{)Xpa4zZBEIrfh=ntK(p%`ms2$}chw|zX z?bB|h#v6Q4^!o^8I*wy3Kd#4-+iNY^M`JSvI#F^7*-diW&Px+*-X`}nS ztuo}k%Kq)vkmGCUHfEe)KnFM$FnCgK8PSF6K1%t-{}uk@?pPyKIEZMdiF25XfMHfP z_B7P7Wji>11J8q~Q0OOQTakfikLPtZ2HAjp#Qre1g-BwEKSsu|3_Z@UJZCFssK5eW z6K>dxj5CIyDj#L?%oL38nC%r9^rwlVoL7v{aa5GlQOM>9&{Oa(THC=NsEtk_P}(iB zPEgKF`B?v{xuo6cBr=0RXW+z`EIF?H{dVXd)w*x^so!-O4{F7Jz(7HosSzIfd@rro z@~+RDA-R^?IDn0Rf8!2g&NbjOI!(f*KyM7El^CObB7;ZWIPxw8ZR{$n z(JUe8a}TzXnT4Z(x<7Upi~1N76#w!;Avby$Nu&?0aW(3u`5n__^z@%8H){wX3nYQV zr?`V2M!SS>*Vaiiahhnwo~w{IM0Pt0H4&FN9TV6;h%r;5U+OjGca@>gjOL)(mp=YV zvuaX*76kaHX2sGb`fKMs6Lx;*^Y1>QKGnsu*Y;AFB;5YQBYlgU^?1v20-OR;)hz1b z{fx$?qw%|vzdo}F7ei^cTFR;2r}g~?c}BRszt4`vi1Z6s3oI*HH6U`w0cbMZ|8$&+ zd!<0SEJg(3aGE7m7rCQay%bYVN#u^C&TOd38~-jS4Pa8Cfm-5!Z{MS2kp@i^exgqQ zR??V>^Vr&Z+NUBDZx!u?Meg;2~O zJ!bjn4OV$}%6=5vM{}QF+RCMXC{hDdU?t@Vk^;P%fA2gHuV>f-H?YxBzfV_PCJaQxWS;t#-#w2o|l%pb?Y1yr@WW1<@19PKMCSq6B8#SCW=BJs7$~&!y5d z!g|bb<1H=rbCT{QARA(m>E1`uE2E+m1RIwA^O#Vz(7t*045e*I-wj?6&Z)#U;`H-0 zo4$MeDQvmnQUcTI^e~3;ZFK{1eha@^g57lBWtt2fr%n`NA(Xi^s;Ix(q*%No;$3>5 ze%Cfpoh*n6?VC@GLS8>em^)^Sr$R|H!t*6Nl5`7dlmB7S@Jmlg^^EHZ(af;$r-RnH z53qfHXh#dJ3M=l*wzSh6;@qof(;`|nL!2LsY_peNp-YYp9rIJ+{aWOvaW%;1F@@KKq}3b8c9d_ zt^t9Lv)>Yj9RiD-j|hZ68O*l*k{bh_6W$q+QVRV2WUP!9bae}V#;Yi&ZnBj0!XMPO z^fJYnkB!i_Nv0i+KoYenyN8@U5?+}!E&=SBx375?(1Z{}_&$A^OCjIdN6W^;AurTz zJGGn)qs7NgyAyX#X{+vMctVEOe`Z7=Y07uKHBi4jz#;Px-!P4Ti!BqrOjyn{YOcg$ z@i(wJHw|(JW8d9UsuwP)li%YJzPrL{twq^m0fskZipf!%p^lVH^|n$BewNvOhn*q= z#g8XGl8mg?X9fMln@#4G51g@rJ>jn|)wWo@Y6SvGuuzdYTQM)4u}aUvM!vsSk)W`h zk4}zXdE)HIWeM|t0yxIlatzFV@UP3yGJ$BZwM_qvw&;o^b9PEmlIghzhEC)rVjL?B zB54raj$+YdA2!oPLG}c1aAmadr`VWd1`&Vi4ci+8CEwG_Crylf-vn*V48YI9AM?S_ z?^!R8sRDoa>;UgV)j^$CI(=XNvNfmP4qIwZ9+Hmwac<5>rOWw}AAZGGV@2><4d^9B z)JlI>wbB38EAE(lMu%9fxVBrMgL#tQeqtJ2bb8XJr6XnYTr)c6r*!RY#o9+8ureQ1 zMSN-Jl1%**Fd4Oc>K|ndYKE2yv49(zGO$j2y!b^nCnb-`$0(I9%x~y%X=~5_T6mCP z@=&znTG{olVi(UQo&6_R0FIgqv2&-oq{&u}OXo#V%a;e%>D^4TkeLiM`p5te(UgvE z5M=W)P^2Dw{odjcEpQOO;av zIBm;w63u~M_C3E`Bfq=Zktw(0$#ibpE%WpnG4;DJ{#o^QLm0!+IB17ODgxNcEZ9S9 zA8PMUUu8l7185x2$`LI|O~UR>My2iKa*ym?t#kHT#;IfTY(GUKQs13{L5S?H>mK84 zH}3_jbWBHx^axGY~@siw$u8Ud5o0^g`@g{BO2}Zqh1O0Kmck2z;P5QyBhyi= zRC?dXuuMA2>$wgi0~|)mmngIHkjvOsO$3#)qslrb?Sd3q9 z_vewZkZRcsP@9NsFY8-zys@To6iiZqq<8i}1;E0Gt0o;OjcIWZj}?Hl1&zyi6}j7O zylf5vbz@<9jLpgA&)aRD3?1N;Kel$~j=KPUIX$xpK2}V=c=SaKB)0zNi5(EDmlGdj z5e2NXTZh1`p(qlsF7IoWis$wZmPiQ^vTtN1E%jKh$S_c~dJ)c(ZPDr9&M1 z!eO{>16+^MfhCc+`!=dl1ADhl1Yxg(PV<$fJ6&0Vmm~aCs~_(4OgtUHUVLiP!pntO z*qB&9y3J#bH24w>DHLkP*69bGKKNF7+q!AvjkMTn1;;L4?DuUJ@a66_=puiG?Q`(J{4bt5uy?CXYh?DmVXB zBB64~4TjXDId(?sX-JdBXteCD+A@8W7F-V20B0uR$tK2f!r?DM$N+4)Zv`&W`YWmlcG zo2|Xi@7)2me3=zb8k>pIYNIzqP^oRSLqJB9XX0&qtD~TB*o8o~qiN}>(44VA)9mp& z-ats8++IEC9QY~bp~A|LOt#K{E28*|j1AiI8~R3{L9zg{rhvWryp)AFLrY{tV>O32;DUjftQ@Qt-#85gC>~yh zo{Zj2wEmzlbB)}Jb>NxlZ^Hk*#~C6{u?zv;S2zdMw-jaP<~$O+IeisEU9} zDJUJ%ph(K-5&>xer8}j&TckHqa)hKoca3fs-5rC`F}iu5eShyc*SXF=0N1rWyPy01 zB*5?80M7ou$F%T##Z%G4-Jong9_g*~|7sqa-`@?oH}Oo`>p8`3@hM)%pEMApYzh=_ zOn*2@J53tMa%lqMuO@v@AEi}?R3+ei`b?MAByH-OKDra3$-Ef56Cr zVQs_h!Ncy7i05hRV4T^iC#nV#+&*Bd-EjwG&`eG`1dRS;hN1ZP8p%Y@#EBDcg1Fe;c0PMrZStpqC_D z4$%i9e?kg;AiUr2%yv4aB5D~TOvaMQnoS9KI7meTQVNpmB1c|WlscM2+SW7%msz^h zWzPIJ4m`1j5L9g$j!*Apxi{OcY>9B_R~W#gk;uVmtxN*Z3&Vdwj9lKAir(Tgn3X*b zfr{alkJEtMjarvV+4LR&)0n8d|59?$4=?7g`p=M@N_*Op_@vaFXkX1^cPV*gm_+HW zE4$B_B>_cuJUfa4C99X3{?+I4H#&P z|I<|fK!bQ@c*Deb0Zi5VSMgXmSsToL{**1_0Qf(LtUxn~>D9lgZup{@ciLvvM%MC< zciM|NQO;Kx!W^@BH{w7matZ<8g=qYl$jD5-u8OD<=z}I)K8kh7ty$e#FG;Z2nEwFs zSqXn|JPj5?S6J2y*8|n{ik<}e5&`T*H<^wiNjgg+w9-GRlT6QbzAVCTPe$xYMX;Js zi)K=FaphK6Yf(kgK>H`27o5M$q9=`%h>9ObR#sK8T1J;arQ3hhKY8J{)%=JkX-s_m z^SHrU@Vr&OituEZ+w`@rF99vmdvwIJ2L*PkulAFl2u?LN+QaTXrQSOdH~asM)a*^0 zSFmNU!;SU!msj`u?#(-C3WOaVfzg))QGCo>pA?2$4o;^Gl+9EG0T28&0tfGl=FaGk z7Z{c7YZoYQj&W0yx3P1CKtTl%OKE;LW{B*t|6!!?jO95Hfo-x_NXhZzfitIJ#gpCE z#|s~@41b8oEX82g(h_N2;RY4h{5qL4ODwyG*kHhqJwS!-t+2V7d%Q{e_xb!F8Uv8h zh7D{mlA$rkky9Gk;$v-athdKdZaNq@1oIHe*nA-PC}Z>NZ3!$6C?W;w1d^s~-+R0m zwhtM{%8hsgpDIfu8S?C1r@fU%jvmT2R`j2O!c}8>grATvw4y5(PH<-X)|@tp0AXYU zRsmtnRA}{(ckGXZeJmr_2`etuAEB^eP?X<%p}>Pzd+6VJ;~uf7NFv-K9GT4z@#Y-D z)>y>>aib!qu@_7FX-a!H-$J2=O1rVVwkABot)dPj=A+g%{Z)D&TJnGJWdt^)QVyH& z{xkLu&U4Y^XNT%qv>FIT!uZ-r^u`0KH*qE|icDCq;od+*wLj=iH95#=@nolr{KAN! zrKCic!8revqd5^$W;%(9RUEk(!zqubcS!$H;LtKIC6~AD*)9MtM_z6W3u?BDaKF-}h|E>+J6eGU zQ)&%VlBqK~O^W{x(Mn3#)dZjNkeQM8iUOhGj$8b4Yv?ozil#6sS0R1X*_V+@Z8loD z=klUGYM?Mj6QLCBs~96y4CgRjAzfC_tp|oAgGD?aUaXeE_WsVeLz!cxXKMSa^ z!rFvPhOE-sk;9|j`9G>cKfjgn* zkqVFM!%#+yUL*Chx=1RFZVBhfc~YLMz>McZW`dgJ6-gY>iXM?)vJ6y@?KAL-dno4y z^KO7n#C4z@-EhI|@vg0x-qbnBRa10MhPcVsXg7BQWwZ5O5Ufm_(TDuXUDGLiOdYTj z$qm<%hh?U5LN&q_qP5hTBa9F8C9Qpp=0X_D2fOs%pd(C*l3sikQg2lC?u(E~by8X3 zA?S+zQR72*u(mK=^gF}rO*-HVX~iS~TR-?Wp-}J9Zv7ta9}AKka)Nti?w&+)G$juf ze9X7_fW5RzUE#&pGe=U@&FZ9J#^*uc7Icmldx_Z5H}yD4brMJRyh^9bhe=k~PSzK1 z*BTaziW~E970qEyd^Q%Qy~QLdjm19?_9m(mj&UAGX^Vn31ouy4ijx#wCs4R=Gur)R zfwlDVUqP|9d+g71$zK(E$M`ckQ&V4K7K_S0&b4Wq47?yf(Kh17lWPjdpFn#0uS;Ok z6lPU&0(d{;O}~S!&LVAj>1x{7yvy6+YHqb0w`=Dk#D>4i40un0*p~`FvFPAe%52=k z)ZZK{nRWuP-b7Ac*jMp%G?b_5=7LsCPn!tJM$SPS9nX zoC4$CL9f}wXId88e zHDMxvd|zE{SnmN3lPSlee`OPq0cB+gu6@EInN6j;L9@WQ-xUW~Mm-CcA~065prByp zEq5BH5og^YPnzm$;4W3(_{_cJI;Dpgc=oED#joH+{IrB(Uzw4NW&sNpwc!HuV*DRj zYA|G=)n*XTxP*DM|KuCDK9;~^p7n`Yc(Jd?xv_LP7e)fI{V(@W{msxA|0BPMf|e|M zAua+l?jxTlf#+g$Jd+H^k}}^4B@Id;ln!n7Wg%rr4zT%$Sj=}(ZSJt;z$$_u`k_2d zC5)E`txN&$C{ke1e3q_2e^Z4uGH`S)M*7z%to;%5lfXukE@#iCU8i@7$Mrv2_#g-g ztr+R#*GwF5N(Ymi0II%BuPX+#_ zT}d!fpVJ6BJ#`YJl+>4*f2;E#u}=z?L9`dR`p8J|sm3kD;pc%0brPiJ%b8>zFhK)| zP{;GM+X#l;L@5<%u$m{;&Qk;6?o*Ik23}xJ?I8_5P@3;9dKrw;Vf-lEna69o@;PlS zuI2awPRZhRymeI7x&YAXPh^pEKkYoR?K12bE8wO}(TCx=WM2Dv9r)>yu0+54qOUmi z^M=I@TkO}(Fc3y-5Mi4j*0VcYcrhgB#cX0IYDr-~6l0FU=Z&fMu+SDOduA0+ zYn@RwB&;lYx%RSTl%HDs73n|qR&=K@b4X{;iVG&7Bu_R5=;arq3&kxBP^F6khW441q@)z^zQ&$x_nY z`9^>obNt#zVdlc<9t!roaTuHCB|doo2yK5+6cX(|Z~A#5G}bQPq5v-s^TUqtZ+%Eu@Q)|w{&pxiT|$G+*(+`2gezeu)Zo#(oe zj4W|>*)P243q7Q_J+ za(+XIQ|{k!_xnW4@%6EOW%}gt4}k+hBzT3u|3Xr*WYpvS_S~R`W3;+^*9)&{#2nZ$ zEh}4jPYp*Ka%$h{cktL#nQ9Yekmd7Ey1K@eyMQ8BT(W*%3zlTnDn^}U5y0m@9mEKe zVjqcP4+jIkzw!;HQIsY@uZ!?37zCqw>qlQ$Dz^LE6!9hj$O~DB6+3RkJ{V9J3qL)=1Y#2)5WH*Hu`dp@Wo6t7du7h`~$`dtq~CNX14=oIgd< zM{*+PBVGd&6>$m+M+~~--^bIvpw)9>9O0_7SHCII^=W`NPm(~yr5!7U=F13EE{U!D zyGL^QV3{k(e5}7B#W6?ojZ=LqF$d_#<3(eUutmp;MiO5=)ti9d0z`5QpCp4$s^+2m||GDEAXAVF3uvD2>z;{ z8{1`YuL3DZaM#AR&8ulvuST~+_^A1?hePzS^EzzWaEr?sa^{}GP$zJA5loJ{?Z@I{*P9I>*3kNDIlWxZrL&FT9S{E|32yxkXz=J&8XB*V~U~v^>ia@fS#zqUIO%*5aROIr}_VevH=#e2zw45j+BK6-+V;j3&CHZZn* zkpt2zXY@2Hw`$)2Y76ALKfgg+{de%Qyzq4RWos%lMJq%Kn0jTnjeWrJC~mv1=y!Rb zDm4F63+xLQU3}8qk*Cwu?Fn!lKQDcumt|&+PjsA+HgH}pRIGt;k@mwgNdawZRAnYqPY8-DwD3=1$j3xs}#UABg zb6R6G8otY>-~4JTun3s+xkQH-%$?WhD*@zahR*xML_aQymgX>Nk2a|nn4ReR5W3C% z$VWZVU7&hZRCZ`hWYphOp3MW0-~V=go3h2xV@w^5H)l+ZjNX@;zh=njuFxBb75E<^ z1(QPnVI8iNzcl;^^wW8)8C*iu)x`-bID=1*a`&Rr_<(Wd}_wpiO;7}Q%o z|Ja~sK3o4hxCpTYO0N2%Mv(8LH>LX`y>;l+GDs@wugjO}+AhE*ZRyBSvJPZ>b@Q=gZV`^gu%BbP`rFy2K?nu`2qd>;AF_)NE=JDaxm5Sy|T zn2T^Bpv<_|a5cDzwBuVl5Q#>)+1z{jWBGAm3s~`099)4o?-+Q!Bvaevvw|NB3f-`Z zs01+SGR2mveP0f@-Fx~-Dm4Ewpdfj}zvHd>qhEXfD}gdrV9H z=7hgxeI!)jgfio4{;2a}xV|ZZBc<-+Am7_nWCQsjiQ{r9fs6DI>ICI77&aC6=hVNGzaTNX_(PUMw1yagJ%M$v4G3bX%p_z|@&}Y022rjj5x7W&b ztkv(IWRY&2%);r2oEAfdl~^=w;#9{9KgDJFCUm@Hct?e_?PJNJxV*l5D2#oCgLl+k8)UOYL2~LD4ddGYG)QSJM;7Npu8H4=En!> zKF_MBTcBD3N(N6MMsZ{u;5aE`AC+JERI#*wlA1gNQ&WjmG*p|w%1 z<<;`9dm<6qiSJJF^nDTm`)fw9QHSHiF1M3!_Y^nDY6or-A;37tJguA0)y8yA1$DiW zDx_1InZ}~_pq?Ztw$x6zrM+X|YsDHd&7Mz{j`w)@!-d9s|LhZLq0;(SczIQ;Ai@{M z2i1A!1Ejq~n=LCQ_u;u-qOIQBNK{m;fXi|_dnfkF-78M_xL2^3mCcaKtr^@MB~k3g z7_dR?3PRGis&|#g_Xt0kIO^nHJfmX5@61GdN?1XRJV}W|+R=OM$~YRD)emh(B2%|n z$=-HPH09A$jspb%QlU*CVfLd_E&^m;9C9onSh8#RCE2YL)=8b z(raevMb0xCX>7wuDipck$K93{Xe!6~aU*z>IV|uduA>@IFUR4_^2HEw{~0-h0p%1X zLI~Gi9%K^2EC(ntQvT}WRcLHRzjq8Hw^a4!xt2wG!eG%CV0(@S>;&a|P4*=)`Ac>$ z;!{tR+GF9ZI?j#To_k!8!Uvl4OaS9GcWlJ+x>M z`PJWsUDks0FT5Dh_sL?@>~i+BB2!%5`dnB?VK#P*$LM8h9wv^ol9GMaOteXddW$t1Gm6S={+93k(}uDo*~--3vjxdzn;Ss-NjQRP!>O0%6I@LYQ2O z$?`D+Y1g>MAPQOK7MbvrXLvRNX5}pD0A@bu7?9tdi4w=cv{(L>$NX&ghdjlWeP!20 z5%ZI(SM(FL+{)iMpH={tA+rJx>?0$Q<9(Z5jC&Fbk`KR@3}pyE#A32(O>GKImk-J+ zw2&tXkC>2Zg~dWDOhw*K$&vf#7x0#N+KRhas_$42NRnl2G90XO2ixp29sv#jDDgu} zQWZ6F#UkF9nAyVf#F-9lPtky66CDytpa@YJwMSMzxg~z8M(SB`5lqcFXoJsq+;Gs; zU{~=$@Bn(S=o7Mt2ud!ASc+_^d%NYEl3}vrce`T%1P4KsfeJm9v6q-%j_B+IHfI$$ zZlEm2jJIDi4)^T+g#a|t2Z&MO1x5ATXEkUc!sd3rZtXKz#U$@@mFYj@^ zu^x9k!0|R(=SKlmv?eI9> z@`THnY|0UYR22Xn#qo7ivFY?_tFmv@1??DzvypMBcRuDFpDC_gjgY<%@rCd%Xx&10 zDi9q!)>dCgYw`1qzMfIcNmBmy!PlFj?as$}tyxhnRlc!leG)lV7|3L$Ls8gZ<5yM6 zhyONFjVOPLcMT&<>ZeA-z(e;Mp{Q%&=^@FK`9lqGUA}y3n(J0VD(rR`(hb(X7grk5 zkReM@BL96;+pRtQz*y+)J2za;gxyUwZNhBmMO~d@sGqbWbiFM> zSr;2O|B@9b##g%R9P{JXIZZU{km8L+&L#xM@=Qx%sd1fklffG}-CmolF-d2p$G%ly zqnBPXTEpKd$KHM8eNweM=5DsPt~|GVu=7A`NOJVm)*~lLQCM_Im<578Hd^?o$2IB2 z#hv4v*<-u@5zlT{eH&;G*G9Tw)EyCy4{$rnZ)m&`10oK#GRkQJjwPWHp2-K?CKijmgLD!|kH@3E$ z4LU;7)y7lNipH&)nD#))weOG-eFr&<>}~4&`J*bFQi(Gc@<QMc=i#S zay(z7gu_C5zkl>*#E^dlbW;(xGT4I zGR^}w&;@j8mgRVWuUkrdfuD+x&O{}kib>d)swh>LY1ICeRrBS5ef}{AWC)02LLr0f z9{`1Mlc5SfSlL8m?g|TlPgX2l@~;Ah-hAQbG{*FENoZ7Ax3=$Wtfj0|f^asKg(MTy z+tLT%0wEy5ihheP^R`xBi0<05!zl~C5qY=+aIYr-6JBqRDT`6@lW5zcg3 z*qakQkyX);OR>Q}7AF{Xc6pT9A*}U#P3nTxCFD}(KRqfXhev=Xu>!oe!pK;;Gn4Zm z7!|C=_N-g;%N2Q9CboaKtXs-ytEQDzs!V3Dr!QifLwGy&m_43BsN28|(|1~dUAFuamxqt5b=^KWN>xg3-c^Dc!&hgQsh~!-x=y`}IgWAn#FlV}kpP*6Yi=SUR)7toVN7OfgRrE-}gdU){F z$a<1N#;O`OV#q{9-QY=1F-r;%o7|h4AQHh14d%YxxGc=fyuaDlO156E=4jZC;Vg@t z^Wn@_TD}zTs2e{m!ySb|H81#sprn+Yo2jJW&dp5Ho6b$su4yZaHKs05*oXz`OxuOX z>VqS<=FKeg^n<=}nuh)LhRn@=qTPhH zu{DeY35spkk^xOu?==}V*9TCI>ZQ=qr4k~8n=ATUrS|?Odye(;em(5TJeBj}dUCuw zdLp6ibdG7+I9=uZohI@~R%q)@@Nppn<;tJti&LBVydwbOsn|D+Ir~X9W~1zxQjb%& z|IE27zy~-In}LHlVF=)LV+Rh&1EzLFsKMUU#r^%|WMs%)S2N(RZ$ZCp7ckMdrsat3 z5}AlddhNPlT%swItyXYdwwF81zt2~12{bL6EUlxf;~P_7&mQLL4OVva-W3U0Bq>vv z8a0Z`$ueNxD}2GJ-ZU7B(j~b_MPl$p_v(}nP9+a&S0=9 zKzA%b!fhjmM6+WrugyFo*`eW0DsD_yU4eacQ#0RmG;>l!fA-Y3$d^f<1ZQaU=hsq6 z%LI28u4!IfX|UrN6kx;Rsz8a>En9+AFWlTjEnxCI5cd``N!l#4@#L4a{BvWja#o2$ z2p@88YIgJ>fwI&tf$~skQ8AE#;=W}M9{l_zE6az^haJ+Y;9(=-xR;X;H7kf)s6;}v zNO~S=$uIVN+WE+KX$DLA>;>rzbOs8U_wR~w@i0|PY-V1!4C{qWjlXz4h5s! zjTe7w5}D&VOx4C;hVgcL9!8U*^w*oKY%6!HamrrwIWNi%SoAaWDqZjpcZ&fYhxy6P z;f-}nJyzpB@0OpZ-GWjCa!sFOgN#rGw4)}x`ZzMk;6azF-YdR4_H8Qezk3DK@1uqf zKi*~Ww;;GK-#b0;d^GK_%VVu@(c2~Hr${R8qyXqdRDC`ZWl+AivTlpTe^cCv{Y(b= z2HNN4yu@gu(JM;a)y4k`yEN)>3`qGfoBrA2lU4CI{NaN7ZD!qT0wnV;^9*L}4tI6n z(sz<_sX<Qu`cO?DWgkjVCk?CWCY6J6TBvTq4 zm@`N2HzKvdH;3(8*YazCRg4dTqf~xnHHnKaYImPE_aZ0mQ~8HPu$CZLv9lWOtYsBt zJO*;#g^$+DW$SelQ_Hu@j;Oel23)+zM-P7dJ;`(p@-syg1-eSaJLwt_jbq<@XWG-b zYNh7vnqp-q9AqqkNW~-5%SvAaC6PAJVab!~c5YIDmD-o_bAmX_9hlq*5t*GmckwM7>rtQj z*{{6Kqi(labzW)lI zZ!9?Q5b)yh&9_POmK+-)@Lo45x=}h?|Y2!u}^&q(n;=6?4()Q+0q7n2*1DR0~h6>{~h}*PCR{ z4a>ORBFK->laIkzrSvQCwa@m zV%Q6?!UwDAFeq0V(15o^iM8LQ`vkCC?zsMnZhMT$=wL4Lt9e<;scTjozdWx8^YTLb zg?z{$6p|c|)VWTb!g>s~D9}F^CK7IBIRr|0`Ki1u;byXL9x2VfK8AcM`fcem$lZh1 z%iM7^o~R1m6J7%Rw*K!Wl!FgCYs75TD+)-A;YJrMc0>7=5hlWe z#*4nQFNmlZ_{C$Pq(1GRlhh?>T1)pF7KcHrqLc`FIOvC!}}0t$}A4S zvG9?37z&URRxaPHNZoFNrDzxwJlTgfL}1ap5hCry2|iCBhc>!C8MD`%YAr1s!Ci0^ z87v+5A3BscsJ5Aji~4PfJp4zV0ec#V;i@H^Fa3CuWSZ*$j&FLwt3s5qDG(w-zy@wm2nK|byk)XfL*g!^v30}9dAg#-FK1~yrf1#M`%iz? z#wq9d{RLgY165L|5 z*!#z-KcP0{UP(r(+y%XJ=a*lc2k;j>@ETYTSS6(OWDx^v;T+6O1wi9m?ZNbyh7W$) z7AdC%)0UbAouYdRr9H3@xRotF@MJW{xEYtM@+UUYzqscecXGo~M5{fke!1$+J zvGZKYWGiL;!X|vXVccT}boqr8t7ziFVGL8T&oKexPmSb7{eXR&2XUG;bEdZ`Fy9hL zy`Kfqf^CCaUr7%cmWGU2linEFaDvmnkN6rBoDiBHP%?$Qw5aDil+M3P-m@rWXWCn* zS2G}}h}(%i`QiQ=Ko#zVsocYTrj0@&Ch`+wh`c`iQ25zIvVSE{$h;W*z)s|nc2Qoft8ehjz4?z|;s#Sj36Jv320OPy+I*97 z5`e??hym5Vf_e;jjTR;0(y$*|mJ9-N>LYH}1XnssSLzWef8py|865xa<;pUBa*h(K zNlkw_v20s|ldMsZ_hhK!p@<0pK3A8OVu8+j|yp$sz-0IwcoN1tN#E-pf*t+IK=OdaaA=n9}{j zDfy;n@w=^$jbc&Rh;1(=g*Zs_7g0cV37RjDYU*bCi)(<~6J_bPMNs;5n+DfAuE2o*dVtPsB zcS@~zIG$%)p&D|o>jt9P9ON05yb<9U&2!*pF3f2{#G_u;MIf|)D4c8Ygrcj(BZZ{; z-B=c(7R8>QgBBivEw*VZbs-gctPTCoe5unPY!%sJFm!Y}nEF^_RoRN>0%F6?$Qjx= z@r2U0qWjfFg(Wb{ro2c%H`Lb&kUZ0T6?I5V$AdNnygz+n{KC7no(nkMxLD;CZ7l62 z;go6_or1`j4prcTGxN1o9{?io-m-=NEf1R3e;e+{b=CE?G+N5U6gEx2EdmeXj~&>- zg%a{NJpNv9mno_Qz!LqUrP3`pWEKc=k7Ze(iXEPElD`HE#7K89%|I@ZDAF15l6;1o17?$<9f7T1uVB7uOw)x zt25sD{$J!kA_Mn2HU5vs&P`oVplO0*B&$tG5J)~ezT?< zm?2~9Fr;4yY{iw1Hgx!*^?UhQh5iUfavBcYNbfLUv9*3WE3xEuqGOF{b|K@>zl{waC{JeIH>;=i zrqbgY%66P`2FA~0=gtK{oM$E2JbD3q#?(__k*4vx+xIl@Qm`$$Rj>NJOI6UkB#;o< z!vQ;NtG_cn_}zwO;Vu5JnM2;4Rs?$9(_G=FDKlMeW0!XXuo=9?Gn<_1YD)=MG`ZbJ zzJ|-m9E9h8HVl;p1c5poA0Rsoyz4yI%4ZdC>pRirMID#+29Yp6bg?~tY{T{-7o z&M|Cla@@a@(qvJ!9$u{;r!ZgL!(m*&t;Z58kh$z?IdpEUCpgJ7JjCu+izARBtWlkM z`dO{nOr0j;T75Ax`&2&?LcQ5+`Ttz0QD|O4yEold0qk%DV8^d2>N0qx08q|&DL4C6 z{9bYN1*Vx?PfJNYG&%hM5S35j2@{q#;hT2wB7-Zm?ZP9Ue&;LxLz==nX7=<02|V>v zGf9T<9BOR=99U+0OzPo=9DYmkp_IKeYZ-p^zCzSn2= z#qz~!t(A+jU{oaoK(xL+%WHj&hT+f|2#7_7MZ&!yu8ZYTcFCxhQ0Fnd8j?j?nft6c@G`w31N-=<2gX<4#W1Pa z3ADG+jyT1r4`@22_4r( zU<7sa{!T(S(x4>OTH7Go$twur(f*CJ;D1yBWnOucelecxO-lCzD~}^ZS$k~_;jWuj zTWS$-@{w-FP;xo&%)gH|OA=>E8Z)BbWxb^2dSp$mpf$BD7lge-frU^_L6y0Ya&X~W zhm*dbYE?J8_}Q|SDVUqCw_gxM)>l@BGkQ>5U(~#EupVzJ^dFgk8|QptW;0E? zZQo%tZMzC`A)ixZf9D-!r&iK(@Runxsv_}~{IB0ffg_2^qnE`$i|}lG2dpLiUe;Ym z2(IGKkgNyyJb;!=OS%ekKDd@z5#^9I2P-=ja19byBpUmc?9s_k$vOCQD#O$sNu^{5 z^}K`z`2Ja!AJ*N?MQWAMD^cu328VZN3G;XZ>Y%x$J2zt<{#*RKDUF8D@vt!Ekrk+2 zJ!|KmFHL~@RL1ws#fOr2(sir^@%KG8qiky)(n1Dfn5TpFzhrBznnyXlwW-I%U#5zO znsR_52Qm}h8(28R6o<8jxjqRZ+j)T{c@kFjH0Z5huy322*vYUYLY|tN3?HU>c9nDB zYEBZ^P_pT)xOoob^a&gQ9aVmbQ4Jr_xuQbdi3Rmw@s5hBkeqv<>0V^)GNET9)Bmns z(0q*6WU1dYYSaYTgbP2l>87m1Io576{EuwD{cB}8ivhVlUsEbv5k=4_W$j2u)dGSZD-XkN}3$ zgFc%~Xu=N=4UhyeXK1NaWBNyO3IzD5ZIG)5SpLvo$Q_`Yl{sVTqK!Z5`~xhgHr9+& zU)R>^BPe-*nRQE_@K3&be%1s6YTzb#s$4U1WXXGWy=9!ENfUAF*X~u4G`aRaeaH%0 zAMz)G+oE7OFTYEdt0qP@AVO-#@;i{^W5;m#IY2((!x5g{V|KLg7`=6&ZA03mXFn7k z&I&(Gxno+@u;v0TrPT3S?xz*9YaU$;fvy9jEZa-K_q3&pm62KZ{5#znDVzvr!(vJN zLJ}7W&r-V>JZtPm8TG=4TR%?PT-)o^jdz=nDPq=5lju=JvQWqr$8Nfl-gSxQJps&r z$>RwRu|2>QcwUohFYbB9PR0^o zTL*x&HQ@O4b20od?IoF?I{4+W_3ZP++nC~0U{bAdOCYHmCPu|wfv8_M_WePt?qDLe z1*t^g9iXaCzWeK&C3H62BfDxNHC4nXgIq2_`9wH|xe}+fI2a6_zE>)=;NQ6gw31h%Nr5otW&BVU!HkdG3h-F_&Eux|etmeYVAHC7s+oETGGbLQEOK8H_lbjK znfk58%5)9<-pnAEIkfPj)v)n6x(T`*0>(@}5OO$PSys?Ki)M2Fth~6*;o6`9G6Oa2 z8&4-S&Q z-%&&5*u!6&p(iOD6CQ?M%M%W6ml)O%*KTUcGxB?Bn7AY_7l!8(-e+fThAoZxZm7<5 zk_Zgj*Ut|($`RE4b;Zh~=a%1iit#R0mJHUO%M@CEZdaRM;ic~!8RsYmD)ETu$n#N#TLw5Oq!0Y1ch5 zQ@LVC7Ft1jwNFTv$)(7{Uxx2|qG^%g;g`aY!lgf%=aPKdSHE7cOD3Ingw}7C%g^L7 z&5%6g@lBl1XY3VR)hb92b(J96kr1J3n;FvQH^ z+hn}R5;F`hE^q#eL&NQf2lI)daY^2wbMR1)v#Z;au-A+P_S-ddOoAkPOlRW1-+>n3 zcS)8ObjU)jt`BC|SC9{QJ*DDx*UN}2#iRJY?ZM|ZWf z(Jv+k7#m@XPA?NT#X!V{f72FyU9fO{vT zufuj4cV;=?caXg*+EaGup>oDM1y2iGS3SK=A;sH|XPVRXO=p1zmAU6~-DE^f z-+85O?v69>g@Kc$P!y3rpIb!0(?^@bl(sge1jtqZ&K*VIcNi4w`;{Z}?6om<(nO`1 zNy_ybS2uE}lwKO+<}znENBf^I$h4PdSW97zBYA;~{(1ZibCH@=MPz?c7>L%|ua3|f z;ESo|JJ+8Fyz9&z;5xQ8-NTps9*%UVdC9caf(A1br>wfMBK#1t9$e z9g~+8$RzZ9jFA@lF)EY!$>U*$BOph>l<|qS4iMhX1_YG>v+atM%S>y47LO zV%abG5jn|+VNC+$%kANZrsA#mo-xaY)>@JmB&K;)Yt(I}$OQxrr!sIOR`@2HUwg<9AWon zBaKhA=e-4`<3(Y$~;kJk5x6+)yO;etd=e>ukMb zzTej6FQx~yoAZSaois_r4560WIqV;8S{7dkU<>f@(jA#^f1I|ql3E*Dd%b2mZR^Ch zie)DzWku#>$r7FU8dbCo(3a;>r^86-r4@h19=bkLeyOP{oi zBlvyBw=t{8iq0N50p_(-RGHs9g8;ui5>Ef5uSILzQuk}WfsEhqRF1$yLEGw*%*&Io zP#dD=I$%p0b5H6*Yq9~i>BjMFd%kp@h>b&dJzkOmdj+Yrk%jdP2BCAHwt3PG#>+Kh zeI2mpbfFV~Y-PZ5q=g8&ar`T(zf??QQP-URD>D@+=1j$0O6}Qr%HzHjyi1P@@N^Ds zex+wEczkS4#iR=+F z<-lA5?#S(FC2s;9=#m;9(62MMCAGSroU;KlNJb~B000*v2w(79P}EzjDN!{8---B7 zN2{JAc0fqwkGtv_!y2;4Gxs(%LG8Es<4Yz@pM-UFZa*F*Dv**OOwz!7zyl3dj%5QD z+-Q*oTxJ`5{uPU66vRFk@dkpz7_Xc=iURp#sWWccYB;6PTDwqOhrkaRffoUH)eEPj z!h5SxDQ4g6uD~nCsj*EG>)C^!wj-GO9pqeMmfN0t@?w{bh^^{+P$u%4XE8MUG%9`4 zD_V2_l}0iaNDRaw()^b$?(ko__@|MXRgX0r$4?e%j$Ht5C0JlMT3NS`?M|%6Im7nS zwF6@wZRJdm-0}ey*^-95w@jvj&m{x$F(MShPZ$XON)IJBfHSZyh53mdg+}?~tdgpA zufISK5$)UWR;Ho2){TF1rIFlEIAsV}GE~Dp(8OR11`bFapt!V^H$!(zO5RN+HMy8; zt<{s+nnR=lYafo74e%U@PQv_Xrs^Xe%|`+4@$d5;b9*G{}+}AoGLaeWl)p#`hIhLP`>K_VhZtAZPd8uN@I)6_Zc_$g>xMvQ{+vN(_J(6 z+))Qs2*6l3pjq~C)OPX{&^}kTMLYM+e(tAcFeRmb*MmFY;77MJ==KF$DZS8H46*}c zRMdJ$jL(4(@b!7#mzn$;gHQW)SR(ly#zhhz2}D2tA-Su z;MU=W%3$rs|CKLUB@82Xt_n=*_M!TLbIA|?u9r{!!y?4PNk{MiHMXO`bpJzF!7^)D?cSERALL!SF zC!q#cd1k2qCeTCiQ#8UISW^%r;uVpU%v7Y#o)dC$tjuChvdCwvxK)mVQ8WG4)(C=!F7)#fE6jj)2f;bOJnQ;@anOZ3I$wVfc-D~4e&j^ zr6_lz6_bcr+)k@T0L8GcWU~k8pyk|YSs3U*LE|rl6)SfV*ay7h8QR1;?EQmJ?2D{9 zHDJdZV)p{+2I25-b7T0Ji{|h-=bBK;b@^^XMy65JzUlE>$T{#riB%qOfwB5qMW_KT zuci9CBcDadU3XwL$p@~WB@YC|QFJ>rirKfdp`^Ctt*kzf%8KLMb%N%MfIt49f?}@{ zzdEaZTQZy%nm_M2QmfpS7Ci~9ED){eV#L4L%hnnjWxE%G?11-k9&2jSeeY`SOM9v* z&sE#|F_kq)Tuc8$c@!b^L_@?tM#*%uQS$x}xhI*)dFN`LLeQ<{xbvNwRJV(pNPIXqte1`fEk;S(M7zzLH zgz)&^gxI%vW$LYJ(7)%g3T)usdLv${&)X?Uv^ZyQU%GyL$X=^LI)m=c1a2!pEYW?D z$j)dwV;=WR{FuR%%unvQmB91j$AQ@?Bs4y@Wm|P{JaE|C@~lq*g-`ymlD;ridszp7 zjbp%GO4agdwmH=)ZbyE0@{CI6YUx|`O$ zMp+P7>{$kLIZ14x$IAqxny3kTF5(3~5GyL~nd)98*nnn_?bB%xtcq-Ce4jPw=M}nl zIV4=@yhmsu_8~D~t1IR3@w!ljNROoy=fnv}LVr90c6iYX{QD8{$eO>7BSsUw@sy8o zwb=LDQ4YH}4UxZNaUX8*@-XsHIF=%=BwQqLAUwBfw7p#d+S5(KEtEs6hI zm|!a&i!ucg3-2~4(f|S+1BT{@$z(AyuR}KYA<+c$Vk5Y1XK!-`EvSAko3!m^;Zyh~ zzqZI5A^y@QjH2S`WFbV+@_ATw2|Wf~)`K5a+0FU1@^g$~YRvd3> zMIn}1HeokV%8(6Qo(P9O-))^wQRsoAmp%qllsZL+edLd}M~KgxD}P({$oeDzQ$z^# z*|Iw67GMtLau+Y9p-A4o(0Qb1XxUvV_9<;vD7vU|_6$=w1UiSX%5n!;EWc*Ua3&|K z2$>u#wk&#_p%;iTMy}74eQIgVG#IximVwaQ@}jIdsuN!G2TwDBbIrJC_(-$f#2uo9%p2| zDP5LT1ZQdI7m&zX0rgu79q%cvG0a-8VKk4NA8<{CiK<13uLqE)Pf?w|#xR_kdaLAK z01>Jj?LG|G7f}*qjH^nTX;#W{3ZDc_0clRygX zVdHsLIiA=rWJ{0eX^{y#wkvSm2gOpiUfMt_h$l$CsRhCfzs@njH3b~$O6gD2auj*K zS@JYs(^yGUO#ym@-Jl`0KD|Z!F40+Y{3~by+u}DGLs40TnqKD+veZTf&TAYP7`Mw8 zQV6z(j)t+il5fpJ_*Dp(T`8d>;?vy@IywO+#pk!AQx?>I1sKsSo^6T+9lC%L^-N&a z3=#U9W4lXF^>S!i4n`QTV;o*+hHEwEO^68V1aA{Mm!0PHTjLqH7e%|T5GQZtohlDR zCN1}Z%z(a3VU)!6%A{eHKoa(0IYH}{;0N@KO!euGwr{ti1@)X=HxYU`NlAD zCkc`6fAax;D-05%AIqDaMb0qaG%GuXy~sBJLkm5W2L55elT$cqTW0&>OCaUGZX%oe zvKmaDqGAXY54FQ9@*;D+`+CHvG7dtUK~*J=$s`(a{yf==yCB}>gKBr%#X;Q=dL!x^ z>mfox=iM;G{WZx@@vGBq2)zmMh+pT}dqpNK28;bq&ue_&cDwbARhtK#Gm8pnP(dc0 zG@nTj7B0)1`LBH2OE>vzS^JgFmV*7>v7_9AZX&G_3DJn*@aN=X^nAhH0NcgASK`w| zk(|XvZR6#nab#zmB7=$>(j0gF)+wwSE5x zUMdu5Xb!)~#3?a*s#a3bbSJ6F-fCA8hB&2pvBG)S!Fi=i8@|r&)$Q7v=Ip;&qmApDBVx1h_7R^tHR? zXH^AP!`K3t6V`S8Hg5Z27-iBD=eE;tGk0~q1zCg`qhszS?_^L3t9oj$lfF^l(u+k z-*~S1+-Jx!1(ftCg>G9tF^s+e1IJY7uM$nF8a!6Xx0`tY$-^u&<&ii!-hxgaLw~&g zT0#)kh^joa(AQ&jTS?o%^(hyIeEsWTYB}??pXpmTy|Gzf%&uu4Un8(O9zSK#VHI&~ zn2*F7vT4A3>@wAZDj__bFO5$zgEbX68wXr>1jG^Ubg z1rC*HFB_bGblZpBA-wo{-|~|B#fKv#it`7ndDsO) z+KY~d(vj~d{x?O!=Anv>(iMUD*3r~q4Xkn{Gpk%VztA1jG0E(`w{{lMe?zz_sAG3S z&Pt8{2$08vco+oQJ<4fr8F1vG)X3_d&+5P+5S>xR;-W<>1Fdnq)8|$}_Zx`?Yj58Y zp2+lOI>+Ux6EA4;fc$lo`;?KyQna@ z7X&R#4Z!V~?cd_eRLP?wKWWM2obY0u z>slSit)Y#?rye+jHP(`8D*b7G=lyb zK*5tfdx;jSXI$M=)ae%14=~MJx5_Q1>)iU9zY@^$p{C|}I2>rRFFPJ9lAMoVsG4gc zEjEUH;@WNFM412BU|)7XpRfSo1LY*I`V8nfk(@RzJkS(Hr??5O3{oL(* zQy^M1=8EmW>cj4=#BdmZ%q)_j6btG>@v#_BzPyp>lvd2vRK?Eu=ltdfh;ok@qgbEm z5bQMhD4_o1!?AM-+kyDs{~H-kuKSA*t$%nzL#gfVYkk?mx~i}$MdRsmLi$%Zg^f$n zp{%bdiCc3H*9jSPw4t7lyY6}_FndvA71%@XuOfFR*zcUmMe6we8dVE4GleS;nhoCl zs?rvH{Gy>VNcTT0eJ`qNjMe&z;Zjk|%Q>G6@y1dKd*QeH%FtutQ!wz6&rp5~ueBS8KMh-NqL765wp)a%J@@+oZ zX~$*QE}rNmn6#y+F=(+5+dK@}K}5s+$ZLZa(g*PyUW0_uZ8yNN7^Cs-c1bX^JwOhv z-^bC%HU}RhW%9z_y3l+$^}Zk<Wey~ZA;KHbjJZVR3nhai_&@^4Q=t^*?Xkju>F1v2pm z?m8jH^9+OxjZegxX?K zWR%?Y29t0sDb*>eeteF30w#Z!q=z+|I)w*S>SH{C6?kE{;n6C2oD|r{f+q$D$*wx+wW?v3C5O@CG-`)2B)@=VRDkX$9iW{EO{>v zau-_Oo#6w<3K09bfV~fU6fpNyj^{+Gh}}!>6_~I7>>uk~;0nN0SdR==PbaXOB+_m7 ziYXm-UEg8EZZCm%da-E>8@EiJa^;<0gf)h4%0kJf?T&H|ErYmYcHGvKR2z=4*|UVT zoQ+p7+iC2(X8qvjW@$L*>3p8-c8mf!6=<*s6a*S(!EeSh>7$(`DwabHxqd#Amb+6p zZ^4>wFH|%XOHQv9{g8-MWq3;$kx=qHDDAhJ*Q!9pR*=AqEO_Bz@vsD&K<* zc?&p&!El+!rq5(@Suv|lo-yaICrFp4W02S`a9eOnqDW!ZnErX4<3zPiquE?xT+eq6 zLS#~=R{s+-J^m+EzJ z6W%!jj|>QOZ+})+We(&1&3^Y5K_Tq!tKS|PufNV^tTe;y?w>yVtnym-k`IFo)vi(F zY0+9!+}?Zg@Rfy{=_=tK{e+(D6G_ayy#rm@pQB&oGI)^DkYWPg3gA-lAnQK=w0|L{ zFp8*{Jlon-u&~<1yOS^g5_^vNW} z(Q=<;;*d|>`$5sTVvQ2=am+KJyLxL?E=el`Oo&^%;F)M!1811eQvzAhUfdrP!2DMgYB3PX(pVfI?8-olK)dj{ERTv_YMnR*WmOah62Zm#&qsHl zu49c|TH0Lo%wa)Bb57%2&P^7ri?_ejZFtsobGbA%Mi_+&E3G`mq*X{r@;mv?vZVYt zlDzmXnuYtCTEgum$A41_l5|dQiad+LEgXU($!|`{QGeU&HgqPWPhoaN4y}mgB9YuP zlbo`HprypzKgmGxeQkix-AIxeSQtBSOi?X-xM&qI>9*F^M}Lws+)zbbso85yCD;hY zc8Hco6w83hp!a4W4Tj{=ovw&msUk8JxzRXpU4EpmJusPKs$CVZwwo@JYSi>uQpsp7 zSi7H19LE*!>^eyFrh0>Pw3Cba&*zoFY*6Y|hOojSI|)RoV(4oVVB;EK7O+mA9P7F(N0CXf3PNyo$6a{#vZGp0&XId+rV~Oc>beCBKC#U`45;w zzhrQxOLPgg?F8G148F6cs=VjuNI&~4>$}HgZ*c7+ytiIGwAS}G3*$lj{I#q`Y0a9* z`L*{*Wcsao6Pw7A4*+R3e`QC=?#G*ZyHv`RY%i>>|0HDt2o(?s2;vbvn{4ls|e;< zSvuxRV-!(YzD3{*IeSOKOE^$B7r=+xF-<%jH;+865O>o1gE3<@kKLHX!5p@H8?1By ztbT;rc;A@((GJpuG=19jTIer|$}K&5hE#J-%8h1yXjp3w5)y3aP`d1>3Of%y;V(Rv zJFGCfMnQ$^%ZK9=uNwbvV8D2;EfDLg5;%nng0bulPje9}DS5G6OzUrb;^#?kGX)W?()lJa{IJzO571-YMH6 zFs$+zA80e_B{HQ!fpXnt)r55-Vrv-@(lIX`()pww07j`AL#L7*Wp$cj=eX?~_`PZ| zUM;kyp0ajSp9%ft%P|ai&h4GP;yaysjtQU=A@%z2y<>W7P6}Be(<|v5#+fm%M6%0*p5JuvS08b z603sPt+xgnfq(W{Fsi}Hdk-twm_vtgdGIRcae0F72OK!#L`in?l=VO$edp4(gi>Mq zHL&2AllBw6$3lQ<4z0q-KbmIYJbzWrJXDsR?8UeHto*@pDA+6-_PW_R`kKv)%g}sF z5$471y-C+avC+#58?KqWcu!8Psx4OE%)VcEhr{TGh@mjBEdt5JLD4nR{znZbutnvm z<~h%v6$5Z(a88Z&fL)u3;Bckn>KOFCyx%x?b2;DhL|}tif$)Y(*;DhcWnk4tL0Pm&zx6l~BNBzQWjVs^rfyH`L>|Rn| zY^y0Dh;2R92&r#+)>`sftBvVF%dIJ!IZwQ-ZH}PRuayE`9rfQFs_wGCPq$(>8A6Wf zbP=4=SH^D)7rS4sTbg4ci#gxe#c^o6dN6F~<|f~YSpTd2jqsp^)TX-T%uRp2Y%+T1 zQC8X9CwgN}PK&O@Lx$^McWO@e@e2|8%ZCYGML+ml3y8*~l3A&OH>3h)+Qt0715|k2m*z<&O2JV{@Wo&#(UcR?TOv za8&nGAL{U5#r$X%eam}p<;HZ8g58EMX3E0#qt+~7<=?>7w4r<~qsQk?bZ+fKYxK?K zPSFH}Umz04dc$T|M(gLwn%yTTPH)_GDbGrM3pGs>8f(~CTQVyhoKc;QPCx!$xnooN zlnUPCMgsX;1g%0^lyQkLWR>DWCUhO%U5lgI7)2i!xoQiu$@ zwt3rt3Sd95pmrEf^D*Y=Lg=i`QPyEkq;hnwn&RxTWb}l8!lYP^ z&3yk*Oo`?vbN==5|Ghg@darxNgoFkp)@6T@8j&P%P)VBpRe1~?d#CG!+xjniOYbo! zc*4a+s_vA5DhKhXmjo_nYuO?Ad#KfcW6wb5`{j3If{I@s-G15LDQ6lW==62qPO*CK zT_c+)loI!oYU!-bX!HZLEBKnv+^2Dr&9<@T zS3j2I@v7!!ft0k_028Y(#91Zlf=)ZYdzWqfEX;Vs+_Z@+_m2)SFr@Vleh2FIQ_#@q zGUK=c3!K)qwErZ$1?Gf0+bU;+D7J7!b!3W?0)#Lxk~dzd*5T#_gc@Z{mBZ)p1du-? z_M=^%`5zmc=w+MKy?%I+z&Zc$%G@jFdn0IU`BpY>c5oBXM-7haO@K(S=w3-(lobS$4F&=M;y_99L3172&xXs&l@$EE^e>P*bqrCn` zAZ0Wte!yKe0TZfwHY7~ph4FS_buc_reU3G*t*I{5y@p-io<_ zg|7?;uR1QDA5qjTr3^{K!NEnFFDcwLLA**&fIIySxp&U{I;Q1E0C+bC&ec2koe+jYGD zb`I-sp{O!)dJB&RfAr6QYkAMHcr3JxGJe}jXr{&GV|W3z{3tQGB-Sbh5Vn*P2&dM9#bkmzRbs6l$^%(NJ+|_+?sIlC+%|!j+Xz+1Z1McSB}J^no>yLWR;32yGP3du?ai-_mn z9}xA+MvT7rKa-d4RZ0V9&=dEQj1_?Qi16fXt{3iLAyBqb>shVBCV|??y{az*OUMEF zG3=n#i|0-y#DX@R#pFRk7Shd73-QVj;U_{>w zVvAdQ*iP%D{iYs+_;fYrN80M{jIygFrlGG2Fi&|$KSctTDV~gJ`y^6jw_6ZAQk5l3d!U1Vv8Y+sqW{XY+0j_ES zU%P5F%ukML^Q7h-lu2LpTccTtnLKoiI1U|Aum%?{wXKz5D6 z#|IF=bXB0I^}6c?g0G+&Zo${*(Ym!e z2!_oeU{tys0ud*OvL3|%XO`@{<@{>H}Mp~l0Wrt#^K;yp1%&+XQ|K%P{;&fn9d z$GUBtL!Z=?*5tGGd87Yjo-=_$9 z_-V{_8_LJiWtDxR(o6dmPAp+kceu9CZV5+pXq*oRI3mk6{qCZ#H}e{^Q;j+pth2UiPPIf*&Tt z&u?If3uf7R4daXZ-yDAq2QaTWw1Iclzcu-PjbV{7y6IC#e|}4|acxdXuT!*)Ai2xu z%r2OC?Ii1k^GloQJNPEQ$N#N?(FvH=*l0)XPJw3*H?)5VdsfK?M@3+bFDPOW=9pcz zqZGAqx@GUv-84l zD-#a;2Ae(e|DjSKxhOp-(-m$be>Vq{u|7d>TNsq#wPUEYkL)uE@2ayJ*mi}DsXhA4 zcB}N|$91&Vy1?Ewa0Y{S3^s`M3ScBC+gXq$hpa>$qleU*;{d}84l8KT#&vn}AnglN zgFj;V6MBhfKU}{@EiJjMISCLb+yIRaI5ad5;4chndj9-2gEL_>Tcgzz1vbK>O5#8w zZKI1LjOv^@;qJrT%R`o8l-ua2+9!K}*0KHyGTUTfatofR_-H1sD4nb=8yvyjfNi;| zP|UOMmkag&Z9Pz`<(6Fh$7mZ^JWKK%4P?Qtletg5)OFNU7ira&5u;{w((4oh7Wdr%L0pcoeR2;+j-wi9)ugC+{`n|chk&0d_2Ka6qc z2r4y?B(wrjo{Ily#-Wl=4w&7Qr`vhCNZ6*nN_!OJL?o8-8^6(?Q#YiG&G)9S#Q=*L zU(I(n-IQsgRQFPl*0Th<#!k;*LLzdE7i0YN3=lB9PW@U zx##cc!lmZ(uryvq^&CNBOv|aU+?^PPgvCf;RRt=mabxReJfJ&Xh1y@Sb4HyK;kXn< zLUn(aV{y;q*+;XG4O5g%7%vUFxWrA6F<$2beJ!&4LT>71uA_lK7peXNM^u-6^@fZy zfjNn;ru?}{!JVCvPvZp@GX}lXartJ`0J5AoFSxV3Bqp}Xy-jIZANjWXm{XwEzl4_oxFNRZ=&RsfM+ZjV znZ@-d<9hZ7*RPJpp7tcss}>wS3pyqyGYJJ+5oScR*r72QXrR8oTJf zS~4|PaI^}2@%IbDL0Umm#x#$}>DTxp{QTg^!&e@jUjPbJft;>XhI#cBQ2i&YNj82i zK0Lp(f*KBv*kA)d#WA=w3<#+wm&dcS9x52sY7=)1OZD$q9P2QeY;+tryPUUsE^>{S zl?i>=Xnds@C$L`(v(vzrnxdyE?Bn`-tGKFvV(AvwSihsq`^FXZRnh)vMVx-K-%M5; z$EN-~?-^Q>9Rqm^j?X^BK3Ef4~GVu4X}kXK?&dg4&Ri{DxGcMj7c>`GSYl= z?E@2IHC-J^D+mHr0Y)aG`F;t9n}(cU`G-JD&ralN<3U=6IthH+e1cf3%lmf=ZiAt*xr#E;or?(ed7FXT-W9y%`3V=mL=U) zGN{T~ZtM*j8_m80+X;~HTUK6}RBHV)^(TE}?<26MT&~jR!ptF>kD62+m^BxDdvhGC zdPS~sr3^J?_qE@S6D<3>=^{!5%HbLJJLI3l#~(+v@+$VHHc9lltJL++V)hJlj)Fuh z!eGRNBRLljaID#$#-zk#05^zL1R));9I}4Q+yx#Zu?m>bv+qcgnkJm7MaRE&r2!Q; zsH1#FM?!Ast#sL!iBcEmKO0MWKNkOZ_+6(#zHJNjQcs*c3=-sdt~Wof=6;aOvT2Jx zW2o^WJOorH=e5i!+P~>oT^0zFEQL#Ug&f@1j;M_{b&^LO_C173`?X+q1X;d+eY!c& z)XRVhoG_J2#J5BUf&pL)K$6FbC;!Esm-!AqKl?xiqs(6<-FzV^;r+qS zrC;}?IY~z5&^h`0%)Z$v zKcFBV5vyOi<*7!(87On;K1GaPmolIKs}6az@4jCiOvpbFyQnSV(0rHGL0u&&?}P;$ z@?ZEWH#6evK8wBYV?W6{Oc4Gsoa6O2`BSqbl`akV(hKB|W>D)1|o zG0Vk=(pfR`j4#G|8$MNhTXLTT*7WJu&b#%=9gm;wD2YrQ$!?Q5k>W@_1ZF z#@B0Cy+-XN8OvO&_TJst%V=Wq+HHjkPHDWhaVZq1gGX1;XLvA~=v;m-0f;k>1d1}T zNTlSDg|2HOx*iU20ZFC7qv+2ps`li`0pWQ7*Q@K!+LG^k^5fD6%2#quYe(wruDv$4 z6OYDl7ci6B$#GXv-7dz7Y8_PX_4q=@Hh&iTZp4=Ly&Hn-p4-JlJ+%W`Gqkp=R!z@C3UIy zJf*Gh-;zB%Af9ZYI%vT(;Xy?scoQa=b-krdN&Y;$Bnw`ZMaD>6tRt@9oD)wv31<22 z1LOKlyYs9Qd>3#0Cly-B@7*`bR&xE|0**yyM9?j8IfHd*Qf^nTBvTRU!CI`Mpe(vY z4nCHbCmrH%!9}IaXTs(NVeiym!Jc5pgJ565^}C|k+fTq&;Q~AcfeVjZ@XF~-*hZv9 z-uekXa*zR#cq#TU*6o+>SO=NQ4fOF`bLqC|NkiwM>Ml-fS+bf1$h|D)7dJRjQ#rXS zwowb${}qe$6*QHN)mz8TkeWm#$J{;Z;wWRH;6#qHLD$vl1wU%Xim5qpZYce$Hi+8+ zA4GCD)LT&97t9*u9MKP`g+HJ=zlvRWzR|)ME|Rg(safp;bI$AZ0^t~pfA;xCt4+a4 z(#A~`y^&9;WmH=P=Qnk`#=pG2C}|pdVXdCb`W-5ZI+PBbpTisM6p`;l;KnDzWtPYc zG_Y)fsiWQzfyML06LJ@V^@o=mJq@xQASNJl}|_rig+e^dyKR#L-~ zaT)XqIou2Q@GcS$B!8awV)imU_3klmCyz1coBN!Ua5lRTWAuNFR>bsH9G_N0t84EZzvX}16qFI9l1$>RY!414H}D{vC3tsIp4E+X>`!Cfr{x7;t8uvJx<5d zrR3AreY(LI*gwETRI}@=Vc9n7J-Cr~WX$Wh5>~X22LdZvJU}=Ll)FUUTGr;?&C{F6jFGgB`n+P)UUqxvLC6w50$w5US~{QK1&r_L|(ChAjc!W1jGj^1ECEI^MB@Wfnk#2+Nz z-*3FW+y;NJh!v3DTZfPxw#7RaL>(3`JXEZtI`IaRg;z8-zoI#fS;3KIp$9n8oDrtO zV!OQOSIbYkym+3Hv=0YXM~i;wVpwlw6nIJNpRGqI9wb7|Hlez4)9&+1lKtC`kHjgC z%W*2l`9;sYR|CjR6M|=f%M82rfzN&A7P0VlBRz}KRoYd4MLZI=H}y$Y$lt97ncKy6 zmK^8gQz}|kQDZ}QmTUC6e&1z-e7!#UQg8b>p+dSX(e&piPLR#9dn5Dp|LrGb#kMv- zJkcW{6t{(~t@-==jbX#@>?hK9B8;irzja|0S|t3)U#Y1^`mn$3<(KZZpPHC?U zVzetwn-X-^+I`FdnM(b`lAkC{RSn%KZs@f1p}-j@(eFWfir;)8MS_0o89$f!_1-@H zOQYer5cdl`|E{JUJ@X5FWZsib>05Txr%z=jtRBPk`!%hdw+TFD>-bTz)Icjrg4-M8*yGOeW-RUPsSqt7Jycm>m>%r%7H|B>F!RJTXFwj< zPAp7Q+ESdS7C%=>f1=vt{op#BOIxOkqJ*jK{$gj1$jzyH>wDh}_^!(Qx)zd9p1&5; zxzB#!(`tjtA3eS<^<1KKzLN*!?m-+(WUoU?<>>}EHrU0IgqWPXgG2RFEyl$UaO+!X zTUNu(0E+Bj&~~VrQCEbLZNW&aH$-sE?(R3jxbAEy4X@Nzr`pvcK|2%!Qy7|j$vgQS z8Q>5^`F&@mk=Cv+l^*@l1&_0a@vgs#$G46!LkSmj#a}$`vu$8`Xd2M@pX#D`0nFR2{Ph;m(sEFd)~)wXXQ9)U-|Za-k<%bUzMlFAa-WID*K{Fj!jJ zvbE!uI7U*l)&w>AcL`@6^BBQKt>kDGU}bXdH2cJ7%?uzPvv&GHRWl0Qr2j3}Tb2x5 zhqMBljkz7jLC4%hW^7L8z1O0)VODE0+uJ<*{{sHum8zH(>cx?xWTw56lwKRSyha?O z(LMS7F9J5h5BuoH`K^DTPgxo-MEmJKD zjlCDv$ZvEu=1xF0TgI2EOv7g}5=AMH^Y*Myd1p+Me}`QEW-qLX5!52&8=1s7)+^2O zR69TNsZN;u5mXZW$y|KB8GrH5zN*qI(1^Y9P(}!A5P^aQAp2Qj$BDn&qaV7%M!(?* z>E?`&Ll>G{kq!@iu`VChqjGLUt|6cCP|&>4B9mwwgd#xAX*V_N_Dh&;1O}5v@~tSt zUg{$1{WCee0>vGaN%j)~RwZ)Ka2b0UZ0oVU^u?Go;&P&}qrFndF;U+|v`|(Xa zQ7ynKiE|U*@8tvbkwsO6D`Z-Gn3?CSew7)IB{^bEux1B)k4%y@?j5VHf!l>o1WEl7 zVl%!U?$=>%)~3JD6^8BHwzZ=cO~C}qGs74YwJYzgZULZ06adUGhgTIiOf8j&oN0t7 z(dN)uQ9W1)0lwD7@!JJKcF@o%N>u|KcySCYxN%C`>;t&-s0R_MFWg1pQk_Il4n=<# z-~Q6;*w{foF1j)MFQ{)j+RO9+iSik!u}y zrc_OTnJB)mC7t|7=<((%2r@Of?i<8tLVroB5e<@_d{Vm1F{O@K<6ZY%xwu#nSL{%E z9#M9=;(oPKb@w)%)JDK%oA(2jP_BWd8+L8YBQjky^X+$g4CkYv=whMalTC#!oCPv% zn_J9iA3r~B7d}Dav#;A;eo;GPBX|Q($!BFRz7cgaq!FDcY_JCg>+BCab|G}aSy&ll zAQxuWU>CK~G#l!Amt&0d06`VXj^cMXqsj9>@$RP4uqI`w22xz=5%%6mGB5|3a4S3V zr(3%yZ-aC7h`7z!`;66SNLQkI1f*T7X1t3?1u|NirYMu$Eb-z${0(k3?P5hxpL9^q z#6!@&xThYJw_JOvWtzc%RkUqW8&)+A;bd#eU@d zus0oOp^0-6jO8+I9&2V-i+;taQb@4q|7)(1Zv%IxX1sB4+~#4`kg^nCJ_Lga6CxlWBH>5XgF3MArCQh+P*$z$SB-t}>!CPzNYFvO zcYEXT@0i|Wd!)gtt74YgeA~4e;9A}Vf;cJmQ^4T(gbc%al&H($_sH~dy-G8bR53c& zU3nHd9KStTfEkM)+y2hdkC|k0#6C~3Hbk(R{;8pVLZy#%laac)oR`+bYg-irr=_Kv zV*~fUS zVPd&@PdjeyMydR|v=suCQ1aCv-GIcz*yXF=W+Yu(>)s;^)UXiy?EAXSuVWInp^Lr> z1~>!A4J#OIf9Ce@C2p$y0H^xrNx>&QTo{+sPa<`>#pWgIFL$%7)-k@W~@l z)w+qRz8NcD_WYYsS=Y3oVe&#(hL` z?Ya3iOjzjl0>duD9@`1bMKCaVZdm647v1+ zKwYh_>nE4b3sEBb!5W%^Wp{w?C}}l2(bv9xT_tc_souxOo{k*Ohrq{p>@C{s;43za zSiZO1OLaf`yYRNhG^v;1RkpW0dajjF*sN8|txj9cvYY*|tfwqvI@VRadYYDpZ={6R@3JR5o66wCApCy-umn zR?pZqw89C%I*uFM4~0ikYu0RATOt=7 zOzQPoOAG*-JC6u<8NFxx_gEz;CwB&_r1_J%Y;0`t|6C|D*Zyd;XE4tW~J^oyWvchQ7HWL7dfOdCz6g)^!+ zbl%H3=5Y6Aud`of`QY0HNi+B+UvvUcV$HZudT_@aQa=rQ>Nom!B&ac5^`zamUlX+> z64iM-0hiaF*xo252@!9K7xWakj&Wdg*2=vA%zz@{CRh>krLHTV1!T_gvW!DfYedLC z=~c0#fSv>{HXnK1hwUHs#(lF_>v)XwQ!JyWG-%Zd7IaUS)3YhsIfD3*cBe%~N3tnU zns4Jj)UEM{cq-2O_>Z*BOj#8YX(?ux6sA=JIemADxUUGQ?&t~V9NdZC_86p#J-IE- zqHS}J#uMetEyOHJlCG$`7F)%F(h;uGx4S?x^OVxBy^+S&mLF6YiBNg#N1*QI~ zm83wNk1lfKv$wL}1_5$H=k^hS4f)gjm#37!?=xQNy#>p@7KL{vuk(O9?NZP{ce*Y| zj{zHv{cKRuto^L(@Nsk-_L!MX`M81LwA3vwom+cr$nR4Q%qN%42z*h3l%nIx*^4uB zWW;%-x-5Ck)xOJ&ii)T_kEz|W7Aj;pVNc+hn zxmVdmtstyVK>MoICJ+78NB4_@!<<8!AF+&1S4J8tb-bCKlUb+FfQZtfV=5l zI~hU*{jUD~L;1h|wS;z62S2jlV(4KcD(M_ugh~Q)0{`QMmKw@EIVhk13Ro#*UO)~*djnMbGIphD zjNBlj0@%1b=F^9|7Y}OvU8U@LYo#ZU1fYboq6$&Kfl<<&>}TQEWans%ZKvE1E%{bH z(_AJEctP(Aj?GfKO<#Z7cGVFa*fWM1Di(FQ|M2WigS6M}{!?Bb{?T6il3vCnsHKvS zcLH+GtM3m~7DDbZ^Hk5qciFzWSr}dvPxu?U3lctjLk}T6MhS8}FA`WNdUh7oA*2im zl&T^xe|*72f|~aNiy>zwysj1`?OqdYsEdk3vvg>v%6lF2+nbO6lN%Qlk<$T9y~^}W z#cQDphI7EsW(zdg0(HoF&JAxfO}uRNT0lLg+%BwsHn6OyPWC*yIPY0gUllm9Eegyy z=>2?|MgPOy&mcbG=}Nn`)(|qK3R3L(KNV_QGp0RkVCtZx&I0oc%OU>WCZL@20%wj}!gDh7TNIabvIeED5E~Gp$ z&@a2Yt1+0$J^ba3Lq(hW6bzs z@g$FH8E55jy2W5kE{vNl%zgF*UD4g}rns%Na;S{C$dBJ}dC?T-x5+1}HnXe4#e(Q& zCnXM?`fx>qUxVHwPh`4ab_ALq3xbfHKnhKuoGfkqFPv&!)hb^OTz;*0Azd!u_!{Hf zgoQoUNUs*?z)_-3>yDB7>q1*ccQwZWQwBtQ+pshaq1q9QQlPk=dFK>Q4y+L}^Gv`7 z#N))@f+U$ST*gk5GmeR~%cWbSbisbe{h%4?!hz`gei?q2<<;zZWEBYrc0DTVUj@ZL zWeKY}PX8~gKiHSfaWU+nJMa;$%|@XodqS$e6o@}33w9%!j<+v-t!X>eI@t@JEGf1a zbrRHpt6oW)n~@r4JhinM&UOb>8!z{}A@I5bKBaikRDOta?EmBGE#sn4yYKIVsEBmv z&>$(&HA;iDl!!<(G{O)P(jg)s-Catm(|;KDY46OoDZ2Xs{%$=t9{EkJ}iD>;j3D=Q$&t%x$0WL$SV~@c#r7^ z%Fv>yv>--QC>zBnM`szD6#eTS%KkJ&d(oTQD z+{Zn-2a3-`yS@v~gEunkF>D>b!?H-r&N5ad8z$>pbtd;aZ`r8en4Fxakehb-uf(CI zPJKrAP5C^0y(aw1*C_3cWa5q{Vm^h**`jH}rVxi}eFrw~V*Gz|W#xZ!Mb0WrpcJvo zoWJOtnw|C0_72~lvMN!-_1pNYPcma%9N+SHG(E($iz=x4=wc~GluWDG*f8$@DGDoD z+o4fsxo7*9cn&$br=JP`*I@VtqT_Z|;Rv9O4F*-1V7u1aMys5YI9B ze)OX%)UJ8sN8vx_%h{k?_fr{965b2autP{oz`Sfrg$=lqE%c^2GTwkt0y{wJV>TGI zsLek(@L5V*fu;uv@37Kt}YPar=y$YM73OJnIdWMjKg3=KX zdRq9h8i#&%5TEIm5M1`$&w{Kq)M|V`f$cO-U1G|(z)F}?61UWUgJA+bWzj`nMPrbk zl53rl(Ktb^op9obMte4?jEIDuR-kmez)oWB(7rw0`9sI-_vurUsLVe-6=#X97zP@= zqrsGTw_Aa)AQfsS94ENzm+mTmJ*HCb9Y{@rD3O6t+h z$+q6!5lYcJOjdlJjNL&$BSmuPO%GYh4-1usY;tR%tp(jx(#|%QsbMy*dSt4QTl`ji zjjU7kXt8;-x!A14=7##Z}c=PqRdHw5tJvB;SsiN6PYfpCvPZ$%#The)u`nz`kSO5ZmG=`?<(jffp zGCY~>v;gHC4gsqOf3ON|f3@-qjq*6h!8Ue(2{SV0(GF|oOJA3*stJs34Kx@HX>8p^ zrk%emr;^HV>HmW7e96eS2|^O_z-DsYM&!#Yaf+(*aQ&r)v+(di)F!1E&vZoU@#!V0 zo=a^Z!8WzJqPqwP>QwpQGfm&&{cU8ec-rad8Ffj~5p9`0S#{#!)e=(j9L9RP5Mz0Ror|J`Mf|G(Pds8}^yhAIN_|LrE@ z?C#GaaTgY32M?`8q?exud8lGop~W1pM#doTKMgS7nrnv21hTix*y4VC2j}>9k^v@z zrzFzdU??WcB?A%njyPS@fQ7H%o*b#Hbm$pruYlV}&vy*1IAkAv4mZHcce#-YFHu6! z)Y4rYoWgx^ zJDkziw{H*SGyeI}_t!sN+`jS8M?COw>BZ1W>Lbo-+wygcV^j&%RDpqXZ!_I_P*)qB z>4I(3*JU3e?KyZF4fsFU#+Zp9dA%$-ZpU0RwdY~_^xE*epNiy-*g>=mp;8YhR5q)b zSw}}>oflHbbj^?+xqUfPa&l=1H=3|a^2zaewQMtbxBSpEW$crrYhazZGgr*-PsOa` z=;u|F&(No(Kl5eL;;ho@yUYKKu&Y`J3EDYtjrPohA>R{~S1?gg03 z6vdK3=LV`QZo-Y0!}fFP!?D}9j5?bqNl;;>w?t7qcY8=Fy+*rx`S{NnU)q;%(eY9)w;m?6Ckp+`7JM;QeQv3!WdOC(`ka#YXw<9E23!?>&wP&Dz{#!eJh2lh)-5w&u|~$`mExk3 zO`yAe6`(3Tn+Keeax{z7z428p73S2!o6l~VG4`<4q;3}P&aU^ruehsMF*{3-A!7^Z z!ivzbSxh=~HB6~{wVaWol+`&U2%j>sHz3@06l83iPIN>~H?tP~EbPn@R7WFQ} z=J^kf&1}9SeG5ng?m@G6p;@1EUW>7=a%mq(IPrClm^E9NO(lSBqN1%a(YFxrvm6_v z7AkSZs$2o1!XS-z0rPAIS}4W<4{uVzS!hk4ZQPmd2KoQ(6L%{+$U~KK>gfsi=%UBo zr%&HEzws951<4}mx1J+g0@r_lEN`qq-f}GH58?9$pUITjPX<4@qO@%beCn;8$$IWn zKH-+B?mY#cZDnw_J$NL1w0qjNG}$4uRq=hE54T{X_b;nxBzhR@kfr0hEXpj<&_esw z&2OnVC6OmBpONGZS4)r<#iOr+gO{c=cZ~W!&wXOs%y0uh71Ne1m|lqbfp5Ro#OJ#k z8NN07*#E0kjLY&V{(?;)n7w8z&OQz7oUc~jJnD(Aj86FSdBA0N`35cQrj^ z?fv_Q&Oe0|p_6;qUY6RC+<;?c%v4nWGRV5POOf=p-MuQ7dtu!2fL#pyTID9l-e5*- zenu%PwcDG>C`Rys7yM9u_IbXHB!m#b9wLE|{@%}^_}?{95WL@yX(;5?0#h}HahKEi zViPjuz8u9?*c=4;9_4920H^c%jsXM!lE|S~u_n)bhE;GLcbXZ9esT*shaW=N_hul# z0!IG#QCi5{g2!qG#vmUGX%G~4=Pdi|K73>V4RBiwrclRtTB~R5mBZ%ZQY(kQT1=v> z70rxQ?0YB$R41oE%om90J~HTs2aHpWcFZ}>6_bwF;-j!jUKpykTbqjB{f~c+X)Rh% z`1u$NEw~prv##QY^CK(w1dvbajezTHVf?m%-tvz)(5q9XRNj_$^jyf4;7}P6vOXu4w}Nuv!G;(vL*NwwhrhTXazO*(nQRF9ICx$9O6Z!U*!XwF<|KkfA! zep7fHIpAb^#(A!kt3RO$m9$U9JQ zMs}%|@0VA899Ax$iC(JIsfaTgW8746wV(J56G(rt!j|ctji^=_kf~}aw%~ad$Kl)^ zX?2?L6RqrGov&3?cy4MC*Z%P)X!eZyIx+p3mxJ}?N}Rg=+sVUzYnMsZ?E%?_*I|+H zqVP1~-csYVvOb`p@(V|ravAbd^E}-5Vd&EF=~JV4aiR;E{5ZYA-dW`6$B#Ny-D{fp zsOyNC9jfKC#l%GGuQ<1`zA8`Zy1}9fbU;&Av}MrQ&s;w>nXQ zQfbL#4oKl&85n@gytUZ`xMcBplR>0ULb3qiVY(wNrmBlZ*{u7!jP!v~kR*|X4x_#; zc`#!Ikm~EBzi71hG7@nt!z8q6%nef=c-u+u>1Yr$iVqUeN=JoQhnpp8y&#DR+a+?Tw(Th z%HJ-vuP`kzMI3q)>9ag(1`y+q#6*@DM+Esn>gjgF4wwa0WQhFyW)+3{wUFf>LcrrzB?e#|9Z=!*)x=gjTe=savluDLfw`Mi8Dp_?tkW#k)$TAOaL zO$D|04BCbLT=duF3Y1~vJwPB<2$m!g`>kb=_>CLdosz-t-Q?r_Zp8J{J$pgDp3w+9 z<=}3+Ho-~JhpuV~BuNR{wVU+pc^RvPD~QF4=e)k&@8?knru1HZxKI+niyXa5xNL9% zJ$8Dzk*XtknC_yB6^#3KmiMoavgAEvee?j!wj4d%)a^~e_NVE zHe}^dG~;~jcTIhbcUIx6yF7*A5s@y>s}!w&pYZpvzUk-trqq(xq7j@z4QV!~NazJ7 zRXZy9`j>car8h($%^^o_52xyA-_2=@=jAIC`}pzGq4tu09~k|vvRDpW=F};PHHeI5 zaR&as#_GGMcAQg?NTj8$$FQ&xj7~q?d`=QCquXN#LuTzWwK1CG{LZpN=cU8-7Qm^g z^}He_>$fQt2n&AghdlnUq?eLlU^REVOE=#`ff)(FqOGonNbla}44`qIx(5XTR^Cuy-8Sx5!Vr;pM$ z;C6hl{C|Wq8s~YgE0(DCrx-N_qshc%O-MAu{;Xdx8khKZPb^q0638LNYfQ4(z<>6i zK1S56Dzf%tR%|-FnHQ2dZ2#v3({N<>{tRg^OO3qD>p6&BVWfTE(0W?Fm(=@%-oh12 zrC~C#nKvVenW*m*A3u;($D;-;>XfS0dpzZF8oDVDIV|%IQHA2zmAH7!~!y4msPDpTu zv7gpn@r zI8&!s+d9Phue1M(u;}Z-H5lxrR2onht=cUU(<`6{;@27gwafYfwS$WK=M14qwj|Pv zq+SGX&$lKa7H7G5z5E+U+_)^=)gNDJ)r&lz!;v%aAlg}OdOG_~MkILTpHKHe%j7+K z4p;D)Xu!Jbvn0Z?=bIFQu7$?7Tx~fNP{elw9*yn~ko%ifj3ihdop$W`xpix3xejCn zeMFi^PM@}%4b)Q5@$gB5D&8WiFK3EQE=`Gs^4kEasBUv>JYUwD;2^SPpT9c@cG<<_ z8#7oVn293oB2CrFV0NA#(uu}8Ry)J@ZCvsEI^#G5Yo*EPNhFJ!^}D%R-%&O<)!xwk zvmJ3~j3SwduZVkNbkXiadw-|7ItkI7!_9ZsC4`T!`hVlcD$B=pWoPo!#Pn|MQ#u-B zLvsn9*u&(O7&;EtZ+oPl!ELd0Gu2HTb)*;Nbh~W7k)Uy<;DyCht%r`&PP;yb_4OaE zgXxz@s45bf`uLG$WOG-7eJD9IWY8D;I zktxp#cmgY|s!b%k)|9=y8jmfkar$y1~`Hd!K5*CuPNWLXfm@YOdZ%SlH< zEh{kSfk$ehK1|K!u~@@eZsm2M|8(E`*S;jQT@GU_5VoztKaezAyaRcKi(l#{eFyF( zHnNjf)8||>=U1$T&r1Qm#HW(AhQ4UM4dj3o;6Km&uKzbq2FC*+4>Gp_w|%TG0m;*R zy7c(-`YT>`@j4i*^&lN^ojpDk0aB4>BixkK`+?stA|Zm#h?frdn@l9mwpHEn3}bJ? zUC@p1@~eI)GQ>Al3v&123U~CT?=ktI8S6jH{=z#nO9fA$<2L0a>9P=|NB?mukp}fM zpsdErV>u;X?CjZ{`kUb7FP`f3Pr& zL&WIz*g!Pmt3hy8dC>kV+i&wb`!CZ!_+~l%WCsQ`^VGlPtnC(1;m?dEbben~C4t=s zlN9#$(8nR0Ayji=cP&jdVC~iCH!;j+0xuy9X7O!6rjrIr5DR~K_RHLz~Girs>+;EW-A-i72C7w}EvflKbM8{JO%I3|#jxmfhLvg$e zQ&o=fSECshuCR$yj+MuABhyBek#*dA_E97h3;)y-e!lc^3AhZwcf^$XnPFv}s)V{H zr&q57IoX&KUySpmP2kg=ZWR9zNqmj4(Qu;e8@k7Aivbd~5mt6%W8_ERgB`VR88tP1 z9QGn41(fNkU8i^ub3C30H>c0sI7ekxy(RJP4GvBzKVcq(X(rnI4W-!<%P^gvgsJY0 z{g+kTX}iXyOqh4hPma=XJ2LReA}4CC`F&{f6-vu0(Fa_tE#NDpF^|H@`^NLaFQh8B zWek#YJ;>C6uYfTu{U})5{AyGX5qz0gC0S=1i_fBPGD-s-*q!D?<`H=>UVug9YD4no zK$6Yq{DV)f#K*`}3!;@zYvJ5pt-hoSh^Nn+=(CJkky@Xv;-&}W7gGv<6 zi0_int@l5!*Sw^{zDYvYIX7cdwJ^vK%>Um|3)e?&*=6V#?fS_AcX_Q;fUIVZF_HmE zpLXVaGK{}(oM&cGxw=t1naQvF5aX)=lIkUBg{(ZEu%(YrR`KLUT6Gz={1qlqKCH>_ zkCZrH%OO{eI!ir{H}tdWa-tgX;z!m|2&BQR8-efKZmq`VoYZ05q3S-U0dLH5{2+X` z29oCqnD8D5%YyotLU&Xj3dbCMLai+-?9<%Dd z-g^6Bh2QM5*ML9gZnVj3#w<{$oWUb9Y(!f9pdp}S{Bc8ZU~X19$9`CE8MI|h{J+ud zLPg2dVT~)J%?zuGyEcc`pn2*-pvZ0KB**CM5qDPi>}r?Om*2lqk=OKa5njM28A<(k zUD`7K+rQe$$trAluYDAkEj=2*1azgt*%awI1s@dS3MTu}ORGfW3iq_)83LL<beP&z3=x6Gt;P5Oft= z))Je_qxuy^W`D>(6Iy@bDCgQc99P`@e)Rn}l+ccxzgDpa`0HvkE6Mp|6N&Kxn>_OG zy*T?IB-PIcS@EVahIHi-z3B+k&GNdWpO`+mF;zl)(ewD=q0?4Q{{I|Pk<`^5=ZTet6V_%by{bGaiT%Ml5^ zHFK`|g$oBLl0~iTYc-iz2grP?qH`iaw4pqz%I?LfyjNdDp&E(bl<}?=H#p6#aKl{M z`$&0b_o#>hOZ*4eKtO54VId|K)!Er#AbamX?iJra`Q)rWqz7zJ zQ^~+=zfS^l?0Nt*1hIXXA?WhXnHFk}Jg0(V`zg>pZ{AXEwL8lgmuFt*-3(4{g_EWX z#v{*d?o>J2kl771{K(9Vm*B&ncM2lXYVeT-3xilr8V~u(J3_xTdrRy8d=s&wj;t`Pd*VcS z?%C@1+l9B9V{-|IyE%7T+Ms)0aK9j5K3u+u4i-gNk)^O@1d$+a(C8_UA90<+K8`z$ zq`H6P>k@LMn_SzLa?`yq3vM*)$;xIo=X~yhAP6k}WsL`=%W>{gx!7rhsp=B}GY5Eh zjDlG_$L=Vj)i8IQ`9;@T7r_|}gLOdk!$g6B>){{>`-!TTQ=F$pqBM!~l;vUi`DS3sBw6=G zWR8`riUq``uF=pV=U7#s;nz`iENQRBl2FXFCsXPMx^whL#pXwz@mc5)wb#;xFtaGlX7xR07o(Si^$eQ?f=*<b+;iC~xhmPhfu)c&m<;!%8Yv7Ar|X8^M{-|~@Ao0tv+iJM{UdwaV##uP6^RPIR& z{w)<3%G-CSVtsZQNnVm+MXVbu@!@3L*1vB;K3s=yT1%WQdUIGHN&CQMSXuJVM&HAI z(<`|-w5DX9D9&UZ{l+(13BvA?GZz+cbO~AZ0i_9Ki{jN-*ZMTKL*w$3A%7c0| zg4o~stnvzwS4?sj5Peu_vz2Y#G#BFzF_|6CZCZR3JIrc*piV*(u!uK9=PGER+|omj zx?6Q}H^VhtFH0J>UjVi%$a^f%KRtNt+E4YeY}vP!WAs3YxiPn6`{Z)~5LS9IhrQRX zU#oQ{LL9k2KE<<^D975~v6+2)(yg`dRy(~2tS!$$YK<$ysMHErZ~ zVlTL5S`O)8LnR8GQB#e|riATIh;fXS`ZsvuK+nr}fPJfOyFYj3p}~kWC%&1Ni8=IL zi%P_;d_>eaH#AZH?)V*5-$^|u;!-@1=7{;OXC(uxaJ1OvbuOpGwE`8EuaI zx>}wN_?O~fZ@Vv$W~h!Ci2n9YAG9_L3K=B2OcwGuo%L0-FG%}V8QzMSsw{c`ZQ493 zre7dz4qhLBr(2su|4cfrBnkPV#Q2dbb>PkFP6$gmD6<<9J5bs5ZMST=ovj4w*9&2o zdE))MW-Hd5R&A3MKJdI8hcXh36!MDu3Wt8NwBPE~Hgl`~W0E-;rhFq*4!iu)nCgx{ zqb{Lp5QIkfjY)mmi9SHA%FZhk2Ui6ez1(DW%{dN;B*rmM5;qq89{h@$u{&p8o$HQ| z6RKrz=W-5|k7Px*2o4^9s4O5MB4UTU;hdS!i=jffG4 zjjafS%B^8hU?A(c#y!w;Ir)|oNmYDN1hJULeiD}dS=e(M@fWxQvM>wBUME@4b=5j? z6R+FN&(v+agU@+~Nhb`;b~STQ@J&x8^7khTYecA7$>c{z&tG_< z!wK9h^ZgX$LyOv&pD}oH8|AxO%*8gqyCXBilnIc~E+%b1?8+XSZn$FoLko;ABCDGS z7a+GrwWb1@!_S9Dw0LjT~tfeRBgObN-7 z9S0JWP2N7Mj{S^DNiGJiG#8lkrDma={Q*#J`tx=g#f2F65Gaaf#*c||2 zk)3^Ang2wK?`ezWoj9emb|YRAR(&!h9C8;AVlO~HFVLCj#6WSiF-XU^Wb7P*#PMHu zjL79B?}@ZA;5iixlPv0cef%}<{(HQ3#Oh-ieyn$w9yL;W6FaSKwk)ZaG_5Zk7c~Cf zp@?M(G%xW2m9&$r{uj;$Xo`gk**;AE@xhOb@qI-p=Yv#69fWh_?HWp zn73f%-XB*KVShlYKN#S344FpSf z)aZ86UrWU%`b2SaZvb`81X~Mc-k3#+S0@udKd<&$${N6cYV1PDvX3#}ar=58X2M`k zT$g!LvSv(8rXeMubwSpZCglrWmEcg8=f?NtNiMjQqiCdGdQYSRZQ{am3VCb=7&7E( z4T9-h9o(Fu6fpB{aW1PN>m@2Bvmvz80QFWLv_yW%XGEwc>%I0U#IO|xm5b<@jBn;y z(j`|q)*xKN-FxE5;fzEz+hC%8J)WiRpBkyrAxbuNzi?46KXD6MbUe)Brq4Sn%Ktct z{G?_L9!Rl9T*@`6hxfdGK7-fZW;FWGU&Tc+F#Y2xL|+*h7;d~TVQR{E{_LG!k&M*X z6PJ6R+C_S?*ynl3Qva%<2XFD6%a@#uT8 zLKY@Fj{E68uTJ8bTzwTCQ~wr1x*WqXBEx|4J6Hg>D~U82>-4VjDI+U-FDX0nqc_lW z&s9vrEvCVsO7_r^G*Q>+&t4C|ZPfhmCl8G09dxhExtAI>J>L7n>XkeR9#A8}L+L^M z$OOr+5MVwt=eFo0?C*YdCvEtl)lh&3b>is>#u^LGFg4sLc>60v=wXdIXG5&nU;||U zFVA~FHZv!`D545qj*XV~^fO^pyH`STMgBanS-OCu5jaOfN1RP7icS=gdjcGM%(mUf z(I>ByqM#HlNmGB2_J{s#04Zo&(-qD`?H5uMWimD!%pNO75r@8OW`Pv)F^-*O-mEe8 z1OC{9LwQB}_OJy!9yE!gCA2#>IZC9h8d6{|3pxXcX5$Qh%fju zr7}Nf;wI?_VWm(U4gO$v2G`(KPL#w8TKzt6kVuXQNG?g+%ws+2XBf~DX}!diQWR_b z3s|g*jwKPoVmqn_)3W;!qO|QVUnV|yY(;=%Y!-|A5akA-STW+#$(7ZUpZdoW%L)UT zt@_mYKc$eBoBQhV^pa;h(v`0M^MTtRSB{d@8~S8e;C=*o&6uK;sZ@EO#4C#b^bg~n zW9ev8C}rAKzso#u8Z2!z)ZKR7m?^Pv^=bKP??)-;wTjwiwTets2->iJk~{bU$Vq0k-yh* zN4UDHLz_ucB1~P9SzD4hzAYk&CgdA_Jt);8UUo|KW_fCbigUaaoy;N=ZWeIr>pV@y zcJ92(V6}c|IrY{-^cSl~15J_=iC;}ymG>|U)P!fBF;gzae5ag2qRWr0l(dGw$M(9= zlB(u+vOHbD4YpV6XshIfYKS++zLJVtnV6vbt2cL6=EQxAJu}w9noM757+G}S#(W;;mbWDt_us_o`#d2Zw zac%E8cty zO!8*p|2CY)d_4MZ?>E|m-KVhkXrOUN!P{l(as+qsp*ROOV8*yzCr0&~AFyLIny&KB z=b;vmxt6#oy0cl#Pyh%}9aW=Nz?PW0&&x(P2!g|yKtM#(<9@L(BY|M`*h0Kets4d3 z!4kXK_sWVc3we|LHz(D7 z8Vxv(bLYx?58tr8*e z|66H>uK%qxxH#BWSjT_|p9}<;v!e+ZJq}+5H27ZJfLbbB(FbLb|5(X0_`~7L;^1xY z8lRORETjT5Iw||=Ya5a4K-wo)pe5k2>WgP|0RcLGK^Y6k(iekM}o6uQw@&OS8$UgrwaJ57vYoI~Xt7TP9LR z^{~~)Cs>jUVk4UbuNR5@Y8Neg^JS8a8WVg6H~h|7`)(!L_h;=LW!i4%l{+9ubw&VP z_B=x6JT^FU*>k(A6zJHZAZv^{$cJMVo1Ud4NJG=9R&1t>2J6WC?*8<0;F&Q%<>NIj z$vZu47%=Oh0S~+H=7l3(9z!LaxXbv zYRkp?u;Pv1a^xT|n!3~;Fu3J^6Sqy~HTul|`Udc$UifKJ#clpN{V|}|RlG)etyK4k zisnJXkIcYya;st|)do5~LKhlCh1I=W8@Zr&1A&QxtI)Qj$Ebo8k#CRi^;GqlJA>snO_E(rIa40m6f zQ6_))aC;RnB87c6ZA^PM{cZgtxkG5EhjS5;iOe_uuH@oA-*^?Oipz>6F_Z$5fEA3S zeV}nj40_ZX+-ehRn7q;JwMaSpfnO0TOn3cHwfR#R&EZMylVF~<{_HxUR>aHC`m#sz z+R;#L{k%9J#y%@K2OY=z&EFuHvSAe;RB79Us(zo9^E0a`K6Eo`$X%!dl(2Ol=sanP zGGZomqbdu9GsrK>%Mn?~m;^JxGsuoM(GtNF-sSX@V=Q#T*R^La zvicVC-$o5K6>wq{AM9FNFxx6!`tSlW;#IB_81?}3YMNZ06j*l*HRHaykMikcXY@^5 z=g|QW^^EmeWphJChO6ILg`6mT@#NoAn^)cCw**u2tZMu}k$qPs0?%cOkOT?11}T5{-Ui*rkPLJ2K;P?oS4FD!`qXui@@cO|eOD{R z|2s{Q>#_%m$UuQdiv{{b6TlCO$G|b$vOuWLurVJ8nDJPP+1J#YF|x5~dt2-96zK;# z&$X}LojFp>+H$`O=YD#=`9ta8@XrI9)&SWRjB}N*Bm#4uEWPfzIi+9L?|gr+H4TOP zZkd%-nogRg;su9{Fb>IyG5uoq;Jwdc@F~3IW)Sbx)M-$W%?*@>x zNd{86M4JCM(M0&|)-G_7-~Twp>)qoj`&6c)dV8UTT?q%CMB5 z$IT_B0Eux|l7wEQI&jB&ly?NY81NanB zRPQT@RIKt;9*%4Q7r9u5*LM|z557GSXOlYRMW7?Fzao%pXJu~c6kM#fE0!j5JG$)y zF4|p;V#NSph4r772)vU7OhaL&*e}9;($MaZ6j`KsA;N013bX>U(gL<9P(CAU-;bFr z#LEV+&cz$BTC2py^yA9UBeCS|O>HwPZqlylP$#D1nnJk=tUAqZQYCm}h>B{oW|8mwQ_?Al8Nq_|*_?Qhzn7 zq2x^F=h}cYHegm^F?(RF+8Z?1$VyRR{+UZQD6}qR)e`e=Txx41cNSQ9WxDOrXF=)n z8`GX_`i4KQM;_KCp&nP-PH)xxqI|$5eIYu_VuvT9j)L%N9+@Onx&DsJiF8zZ*yUxY z&hI1bI{hp}qFD&x7reFG)us8KFKo-Z2rIV);_I`ZTy>W=HLDmO)!Nd1Zq3)+sz|x( zQtwoukKR)?Qr$&vPBwo>i>S@jwgPHZk|d&c*4uH=49%HWHsf!A_Pj}8*!CtCLOR-3 zByDwMzgu&8%;R^aEK&pVX(2O~Q`j5uVnqjmnFFBo<$<6OrZ`s(Lh7Csa=G1j>_rvZ zXwLDe&c+U8iwrS~4)`+Buk%13ZOWy%NOhTISS)e_Ce}eRc`7 z(;ENif?V9nM)ESx|6YmUinitM@Z?xk7TKo|C=3_bIBR59@yNdrpV!?Cyc35Gn)%bb z6_hz_4n*ivy(6ZrI|>a_%?z{;@>N|;j8s-xl5ox9<`|B@7e9Tz=Q2($Emk~#FRCDg z=Kw${&l}!CDo=nK|Fpo2Gva1h^4iRhd-Z~}v%S+|#mNpKyWUAbS$IgT%SW^V>kk&~ z1m~8SQ~Z%^9udm7bVxs#3#L?I8S}sV9U#rprSCp?zdNp z99AZmSd0abj8b@9zgri7H_?=n+I>wDU6(E6vnWhtQQq482#@>EPn6*kKXBeMgz${$ zj8wJ-Wf;X56AM@O>UZ%ReqelsLDA()JZO219t?%$K^hF{!j)Xp5&S6N1p&p)M z>$2g<9ALxo5&B}DyeBqJG_-(;>p3QN+m?TC(;2|GqlOk~?V1kyOb0eAE}PhL)2BkT zyyf47YR6Ej%uaWnQ-k4EW14yAz<}@cvqz1MB-fpqlP>$KdZ`lJO@|}H7HT6*Ldb6^AL>7Bqzn3=>d8ZUA8(BQaQS)kc>49F zH7GR{18NnM2eJMmBE$du?c{1)Uf!WrE(-MiO#e9mQCD;UII*U>$wE?1;m;zxv1eX{ zhxsuLve+|$DfZ2tWCBM-xDWNh?@Sc@V{FKmzk}fZ9J*IR#iT_)l6SU% zdmR6I=jM86IpEc40tMV6cyyPeq(yI{;w4$)WOM2U`+1qdsD#XzPuJGHBaa6p?ILjKQP%-V2Q5m9wsz&AFHK zP_@@=j^H>+xcH~utE1&l*1)g%d+s)?2F~v&~!vT9^UNE`>M7B(;rsm$)perndEA}RS6gjl?SO=$htcxDVWTP zxssxqNPOG0AF7){D%|VCRHk`5Sm!V+A%*fXX8Zf3J<3ANvO*7xL-9@0ZzieDyV60r zD2hDk)foo)^>#rvxE0OcQ++s#duS)}nE z*1W&|N0m`}?}I6Cbt)rkb);-SyQs)E{d&UwE^UR1U*-XoU((K0{W);gY<{`{Iyw;kF5fYFgpT^dh? z);WZIrWTre|330@6ZOSpI6!xUIuODtvGTZF%_7$pI1&2PmPJgdYvo|RVY~v*ta=Hf z-sb3>Jr5D#9MQ?Pr6@%;054G_p#w(mg*AZ|v>XpIHog{CR^N{?TokQERum~6le`q( z#)s13kxE0I;mXKoUEwoRtCfnRmb_-BjmQAdLK{MFpuB9uyvUOw=dc2SH_9Tu<2EE> z2WrqY(|y+8+g#HN>iChO%<#DdVb}X1Y^uD4Bj)TCD-KJ!ULuv0Sk&ih1GuiM)_LU* zAue$z+IEL8GD0-`KA<^kqA%dRYNK+|2bJEfUKW>^Kv|#kry_J}M~RqW-_6YGn*nfO zJ!7tDhcyP`>xlRM5vF#=RtWu5vMwgWafSRAG3=}2?;6rYJbV^axI#M{QnZd)yktg& zl`Pl^a#PdMc0FpK=7_OINX}!v$kODp2(4(%H&aP&(d*4DW6OFh&`~5SvGkc~ysxZZ znm8)%lbl_yqjF^E#IX8O+jKJ(&v8HgjCaCDSTFgU-Ts!Uh?-bNQ;Q&LO*r(2QcH@y zo$t)wPw414oBxn@VDnORWKXE8e10Ld_vLk(s?$}5f~Bes*y_ppx(yi3aLRq|{%upe z!1r0Ky+7h^=!?WT`)xk-9_zLcfuU_*s&Uk%R=kVYT>Q^jg`lR;@rhiKYJr=KmSs1w06r^_u3R?qO%i9AqH)1Dj4Mq} z;Gav_!WzYNm|&g^K+bYC=(n4GDv#4fN~>#O^y`ywJ<=2OG%_A&JfWQpuS>pA;kB}> zzviA9uQ3_a>&FOVfc|ENOe5_7!8%4>aA+;y&Z_f7zLZ5GcuF&(>XS8s{9zdD;(#as zg%G2_^;HRDast1jekz+~(tLpM!NKXv`UXy=-{ygg=T?}Z#Y1#FcydEq8mr{wbY)4148(iDukymO zW$ku~1ti1RZOpIg@xrs0Ei0a(>A3~HL@gQX&qEAe5Pc|%_vs!y$fWW~J?Gl9E;?~v zw;{Ol#a2~^J6*uW4>8g3d?7iX8+Zm-$(U)vX-Z-reT1Z6fO|nAMg;?W3qx(*KIp{E zeOCQ|(F7!moBF31ahxoETlh-Wu)QN%q zyiKZ05ThEw!FUJa8t|Pd`zLM;K3kHP{Y`HX=CEN}@ z{W6TMbq#`V$t!Xz$C=lREYY-^KmZ3ZL|}AVZkD0|?G%wjY)-vpV{oL3i|RFq33vx1 z@3xCy(QRM7Xk4yT}8uq`_5dr|Cb&;|t z2jq2$U^6gRCJxpO?Np)|x zu<&iy1W#=KM>R6sr^>dRh=&O5Iy%QPiWGubA~S_WcjC`F1WoNNecd*8kB@hc7U9gX znsp?|~OV!@UT7vHp z%rf0W20E+zLq#`Kmle-IBHmSzjd`?)lXaeJia8i^Tm00jRAi6WZ0K)J+WkGjuG@l?!aaA6gZw{ve2UAp*lY@KMn$# zXUrVoV+iZc&s1CG1*_yBL8ET&w664DF?!toe{Oxod{->QAXL4vZf|1IN2nIetNFyf zmyQUp`r1$bO^ejaWEEl8Y1}*IEN=5QbF*t&(1Sjl>-JNMxmND>A|bxX_Va~HQNN)b z4;1*aCxcCD+{kx!XpIWz2=T_iEr(VC(@<+}t3Lbm7!NmlNKTtEvE6xiCAr_|gRn^W z91_ehhpBQ48J-tO*iQhqHOHadbeNn^VcU2xx%QM5vr{GIw|QrFlpie31+iRIVEo#v znO^oXNH)&A7G3aTQeI2s(;aeD5esh%_?Zz*vjT|g*UKd7wmfi@0hY_q)0aCT$;+ar z$y&fsm8_gzzk-^-z((n+Nbv08XC_P$T)G0scHMgWtrIU*XsrY7!~7J(Z&!G8c0S3S z1u2G){S8>dqpDu(bMHVhI^Cz?IxFve#>!4bpN*Q06DM6*0lz5^DApXOA{8le&o-yE zXPmH0B7<&&wlGyb_5^^{+;zNp;E@E*hZ45}78EQ~95@YuP^QG1BL3a3r9zoVYNq)G z{dwO`)%IKgg4OpLv_S#H*xyl|oxSXr-l-D2>{7~I)V-y}D+WW(!alaHKjSO_Td7Y?bSvIepQ(af&A4zt zU8v7}KQB89GVCf=6v*Q#7&QQVXW*xZ7rpkU2VHxTd z5ASn&MW~IX{lToZ(|Kdpb&dCw00?bNH_(RSki3UJ-b|DsvD3VdMq=R$P@iKnK z(VUU9KAP9rtC*3SUlOo2FyE&f8uz+`^7|%T#y{z1Rht-%JOf{UGErBI(&@bO6NlF2 zmo~)UUEA8RcQdI>_#M{H;$Es_Rs#yJAnw*bcPsLL0gpCeB5ysmz?*JP@4O^rAL8MO zQY7t;TSL0ZE5;fCS9h$k)_i`>nVzH+Td>SSZ9skfLk2nWX<#-`4wu|w3I0(?9sBwJ z7PrY{CRAZwT_heuE%LQ$L^v(2DFH|IE5gO*MmuK>xJSbIipZx-xZyGrg(Si}NP(R* z?L|>xfZ|GT5gh%5-^7jyvUG=v;mYZj6JBx^|2s*QYy9ONWAyj`$I`jSGyT7Byi%!% zL{4)^Le56!tW?M$l5#$74rvZKlT%VTj^wa87ojqTIiDrW*h~)1$e}idoXL6V_ul9G z`=|cw@yOh}U)OzI&x^v*Ba(3An{p3-g1lzMw}UwNoqzY5@jfp9LcC=W=ZH_HGlbmh z&aR)*2S#zxy}l~`$4f=Pd2-~GWMtgs)zH0m4)}?JS6ZpEW(2#X>~D=?y}ZFNb0vbI zYo&f@42I$zeyUw(G66Y}Q?Bc$V^-~DrKcW%sYOLLf3r4y-L)nFtp zKkQQ_QybELaEGs2GX$_i=)M(1*FC3OvGAD`gL!T~y$kfi8yXPCiVX-Xp2JBHAo#sVXjE&o89MFe|}ENJ45N5)X$$a?d43}wo(vv~5VH&yiiA(^^3M3?^(te5hNLMqQtrTRwYm~( zq(b%a7!NER6y+|1-?Hu7?r)KDVZSQWpl>ap_A^`f3p7U(#+phU`r20Vw`( z_pK*L<10#a-4YcrJLb9UP#6D-ywo)t?~{Y;bM|{?%Mp+x{;Ze`?v@$~vd5cFu7&P4 z_bEFYyDsnim^p&vMIl;$-0P+1`4QHN+QgI90I%SPF9{ot@fjBX@i|BQ@N(~$5IasU zl>^j33p=Ady#8p;@yK@gir4Sq^RuU# z`erNjXz&jE*fT*bl1~KF%ZrY(nxJ9u-N96~b%^PdGS*18!nrAuAcnP)UAcV+!X^j8 z;%Uv+IUb^V#lrg7nf2EyAE+M@48nq7(C4L}=R;~|Td4ft=>=0DChJ&i1^fb7xeU}- zAR~LW6EGISkz&A)-KOqrq=-rl6YZ;On(WqSh0?$5x%NcL#3vTA%5OtHle!H63^p8k z{A3sbEqas%Oujy$Q$bUBVRD(1JxmUfm)sZ+~&6=sWX{HFgRY!K#motBN zZ0%s9L00j-iV*#TYP?csn(}dc!O@@6#YXrnqbefFHB{udvhXe<)wJr4-j@f5Q#_e9 z4*)@p+3_M^*Z|caAMO+e%t4)|8wPWcS7<=sB`#E2jT6~2`1T)vsd0Z4^1XqT5CDu` zB*Urf5eoncoH^5)&>$t_E;60!Obp=#V5?mP=M{Q=oJOkm zzvD&;%YQkxtl64hsBNA0$5>@{E7gF??X472rks+?szH1u<>RMz)VVP%WnTmMpsW?~ z7(uYcvmSc&{uplKMYCeQocx|*J_Im2Yjq=LuqbjaKyf*=S0_%O8XM73#?7il=%~2c zUbBt;%1}Ci3IG#LH$G-DWT%pCDH6VU`$MA1lWGm7m8+zeb;3xo$HzZ8D@hSWV%;6)NHT(HYWP?=N!Ek2k$xl{c}M6h~DA-p0$Z`%UZTVSm_c_fco@B@LU0|OrXCMMK_+LZQ>Op+IU2;N^i&6(N zS3n&8`OGw&pw1t6An_kSufz1*#*+v2Y4h#wBqL;xp`efqO6uKKZ3~(fLyQmq41DCh#i~K0T5^MCwL|21KePoS=jP zW#gsPN<_z2-kPT{C401$KZn$R<((BehN9k0j;64Jq{nmNZta&zb)BT|v)?Z9{Lx8U zFGi&gyw_|0cXZeQtFUf=+eJr}`Vr}e-GO|5_i8ngIQYJh7`c;0IvkcA+RT4nQEg2$ zh`P3SzQgt2c9dpLFtC=LTC{@0&Ncati1&kiEo3NCy-pgPF3aVB}I)h_ycbEZl!KRlfw7SB$DsRiqLrn`W6*cVJV=YMMV7 zW}_x>3b~Emd~k2&nBN0)Ex2{U63@yb7RX-!hCO}&^kk_Ysj>u3ihEF`m$~6_a!xHD zYl_%MvERj`bD|xntURGq~#wmH`GuNytpgM8SSu;~REq6LLg6VRwV8x7EN`TcTh)FQ2MG8`73eCW}Ac|3ALD$EG5ZUOqgKlXdVKRUr(yQYXo zOz1vl=hNWB$iqKbTMy#Zg6$q#<9oB+lGw-M)nHCCN%0%*TV<(?POk`s6fMpX zw&nx?<(lYT3u-MBYcX>GM%H;ZVnlz{(nYY>P-XO@Vg!oNA#aQn8)K4N(MxROz(nf$ z+~G4#!;8Xk0$X+uu^FzBEZ&;2%BNMHoU(g>Le%KdZmI7s$4S!0YdB*kaK4y|34Ut3 zdw!^R&-5~$~I#&i#qOt-^<62{rh8ZN9Um!PHJfkipChT z-xS_lRH_}&bo?<{XexauOJx?vAJqDSwuJt)g{pg9Wf(SYAd(3GRs-J)K4#}2p3;Y{ zLr=sjL1D0~{P(~)OBg5UgX`r^7h`w@*Gk^#+_78YwX^QtA4ayPLnowa7Coq~u`}1? zF2q@?r|6i*fah*acKZq?kYmD(-E2)S7)}*FE%DB}tT6VVf!6c%;(n_&IWURP zsOUzh@uS;^2SHxrHhidIsT{ofOg93!WK#KDI6YGZFEUr@c}ogB*LtORQQ0N?E8nYA zq}R9jbwfxAU->r&C(It-7QQB99#V8UVWsqLr`wXa-Dxuji;3aa>Oy=g*BEl%^MRQY zcixz{T#WOFxY7gX+^^5vV3ny1c&3kvRz@sU_C#UJ#xdk3uC>R{T9fB}<7u-JYabWU z9G{hNz`gURrt`FJxU~-{Z&!qwA$O|B@@G|Ah|c3DrrMv{rwiPc+`@XVMXZI5?2los zl?FeweoP_DQm{(h=LN4gFj)D+7!vmS+w^-^A=d-O;j=DNJ2sntePz>O*a)0R?1wD} z=8g@7&!jrAm^D~Tdz@K!9LNF3V6)7*sba2NEh4mH^iFg{ykjk1R(YTo z`yHqRbQQ8YXx3K9iw&0mKAAr&Wj!`7_Mp#(<;SSEAfkAB0?p*Bq83gy_q&NGB7b4L zD+2Arwu-eWl34iaJNAZ++(s!H`%mxI1XkUGhdBb^(_Uqf@nBfgx0sgIX6c?{?quZ6 zkPGp-M1((7dRb~iZmCcn7I~n!j3!LNsjBS;1Uv3u%hol1kZIhW2e07s)Jk5ZJ8kz> z3L^s+`sQQg=9y3y+Q>O~$GzTDn+vd>giLgS&?(uMpQgq8aVKg0aV2 z*qq+#--Gj}$e7UYNm2pc%mekz39J2j+QjCmnEQ4)o)I=}xLN%h2WG#4(Ph~2)g}Yj zy0Vd1N;FGr7X|7Euy!C@)2z9lcfGdJt{?3>9*@|@l{)|d3SX@l7ER5#4Etl9ooApj zq*Q%}~vLqn7Slgz6-32T1@QTsFn=KWv-VcoZFo>|9^R)#0rxxmU(*BYtGf}uF?UH9F4zFxdA z5BMJ0=k@J@aNv62EqqRX_j2=-+C3>+>p9>!5XCiDm;Q(zB+jn9c}45kQ2rmW0&UUX z?U<)MHm+UI)Ku_&ZZ+?wSZOvtF8ZmhbU^WbVMIh(8Uzi%FAD+QpIigHM zUpRpky`kx6zkcSoyb?cu-C|l)=`}7%T5(A*3u6lVM{?g=-kbIe7juUt!6^0%($!2A z3$ncC7eu3P21)*TbN@1)EAp;_Rhj|Mt^3cN&JUeEcad!L_R__h35Hx<|EXDuL+5S) zmwoDodLuX31JGX`yOz*v6_SI$Ld&^NjqV%lxvE#P5fbh7D4$H$!>L@^3DuY}9HZ!1 zTjh49?#*yB(#NJGO*x}>^TUVz0cAXQ8D;f(8x(J4wL4PaWRUuGAy@y8h?(8?-Id40 z4|}>84ft?H+uj^6FZ)vG9>inZASn`Wfc!M5AU!g~ywL9_HR^CK4`n<2A&3 z(kRsa^uLQ8*YN1zGSG@O^+~y77h(?{!v|^?&4DBAZgU3Ba0SMIt0CBz3)g};vheFx zDm6mmz#7H4JZ!j@K=Oj^-4f{J5R;>0M-#oS^u5mp`+Wg9dv8MB8%Mh#LFwmRyU%o6 z_}a%+{;?;R|2w6$YcmdZBM4kksx+`WiolMC84|J9iq-O>j*18GOg{3Msgx|*gAZ)z6^JF*4 zCvq#tT;Rz(!z9}>&TX4s{)lFY3QM2S{n&lIKg?*G>zM^1-nPtL_I8#wukH6pk>7xQ zTJh-X?~cDeI#xcqzhfFDwH-TAkR0Z?|pH) z#78%@kXPLC39%?U7!G`&6}Dfqd_2ClkZXg>h;;rCtL{#%NZnURIK-0tY9e4yn##WV zSxAB1S)tPpmX83NY7%&m?c-0S@x&2;8uTZNU@JIt{-Qt0nqUn;6#yd?W3n)kt3JD? zdIW@d|KCA50fo zXl?rmTJ%KGQ1f3? zeTGcs_3f^caHM?@^MvS2|9B#IFYF!S_LB{#8OMJIV}hsB+Q_w+KH0&>#xG~oxxpY^ z)vmOqwmH2T#8!U{sKA@lb5*VX4l9;Bm1QGVbVpYF%z_1Jxxzd3@}H*oUo*j&#!NI? z-;GrfF0Is#Bi}?}kV)-dHaa#Mjx4gGLjk8quRY)>8MmV}3YNldxpji}i}#q1u5#n9 zFM$_toq4Mf5Pj<;+~DmkN^eO}D=P&6b=;dPJOz|?#x{UX^Jvl4*?W{{fp=lu#GSmg z&C*0DGWFSeq304yC-ch%#2F|3AkQ~}Q>T9Ly>vQ|{Nb{XU5T z0etZI>;;g~Bx+3i^2`KtU~7u<;#Xe2#~!!m{RLLV|rxdG@pF!Qkz`x83!W8MT=EPLWllEnUMBU``1 zPErZNlUS#C#EITWNfQ1MjeeoFDYn}0DZGc|)oURf*7%ZeBXT0wK$cmy>8`YPnasrd z-H!XGqDX>yc$$r(K3?J}n&j!-$fwshg2-LBVaQlvU;LYa)Z_3tOEW0#; zw90WxuA_M}l@}OJ-EG4JolPlYDFeRN8$&JD`lfM+K7!X>L#Vm%9(o~?&El@q5e; z?rYb54pFFEYpZx<)+CpdTIVclodd{Dig{5h;S29$SKs`y{%h!nvFKKY8k*elx&rb? zcxn}+-2(-?D~j{$SbOTsB?`;?pMH*S`leXsUKO;=k)>j8yL;ly6MnQv^H23FWdyz^ z*CVu~A8SnfQdz|v?k+jG_{Rf#av>lvx+M@oFrwxIs5Fv6*QB6{iz$j_^8C@FfIdCP)rNcicO z<9WV@ns-tL6ihnZcuW5{E74^KIgIkF7wQT%1!Xi@mpV(8&LR|ClB}*SK7%HDPNp| zmpQ+wNKxy?^P-RP3R?>;_s)@$l|5HP&C-YxPDU0}O!t3B)#Crt%O}6DsSHLYS+R}^ zAxJBIsRDo>40Qb>8Sj9cirzW1=+ytS=fe@heV=Dr-UU*$CHiqQ{^>p7M9)|DbQXf((FJPLmH1lqgjHBLt7 zena!cm(~h@)(mNUsi76D^{JtitTaW~i=pFL+t2xwlI)+S#^P`nm;VjUtnbn@=hy9~ zJ2m)XV2S>*N(uku-2D;${@TP&j1puvG4N)Eq*RsMRRJ`IqNy38kSVA1>eU6Nfn!`( ztB_Zv(egd2Z*~66Gq~KYMM1QSXU@rc8a`&a+uaXx>pU;e`F-1eg(fma+=e1Tyy3dX zy*}zj>jp+zCxmQzPItC^*#h{HroE0JMwKq73Qk-w*^;~SJ-g<-$PC{c-`_8^`!fH& zFl)adHk`_@?X-ZXrGvJ9z6;;Qh;z6DxT7zqU}#Rw#uyH8U{3}4yJ=RDp-RAmRzES6s;7Lx>)B;v~E`H>;(Q_+sj2j%k+nyTkGx{0RTV(Ak{A>Sy+~^5qZgjA*X}^>zoS zn6rG5b(<2}8}TbKrC_A|?g{bn#_X|?4X_1S*_=6QGp*o5W9=6KE?Ifh0RN>=uCB3H zz7*PZ#UT~tEO5sLn}GFnWMdRp@Q*$(0pZgZCJG?Rp1fUa6t7@`jqW%hYnmFq0IlE? zK{bFKW%J#`KhhCc8)zAN%XlR;ahr=hIY6+xKL0BnC*Qn$lVvuf$mEV~#;=E*=7T?} zG9;xpQM(y^S=Jg`=a*HNV%u)9+udGnI(WAN)pAxayWs-Hhw$$QQwB7k^t1ttMRM4_ zFZ(qIP4m^cGI^-Fw732Bvv^zYCNaTa1f%B5E9{0WDZD>|TAkU#_QM>SJpEj4hr;5x zcT2rvVh`Ay@}AuUXrEF_gu0<}fkO9OdsJ|bWCV=pBjG&WFSa9mNbYsRz9om}ZQ4SK zhkVQsbn(G?o|neWf2PA{!p{i5wC|P>ac_xNdk9VLxOuwDYn=YXMb3z8%le5-S+^#I zZ{_rw=l<6h6?S0SpRy{DW>LBs*sD*jaSW4We<3k2jd~x8D8+m)w+|Tp4mkC_eC`xP zppGKa-96<7X@cFWYtP17hBrvKKaK9fA%6dw&@tBr6P+5Qq{d!u=xX?Xe`Hzg?-R}7 z-T%4YxGnWe)lMSpEI!b${PgFCvE~ z5jIHsiekO%_x}NhznuRLf51lNW*W(O`$<1k|A9LB3w0qe6QwssEW}aY+cRQ{{z1_DQIYqIB!72xrBqK??8${>it0 z2*`(N#3D%k=ml%>Gx+NjasDoIRzdb}JhFmuI8{Q6tBa7EvBDB7Y{}^&E0#6wLl@W3 zHE#D)u&0-w>bn8D^}L#9&hENNT5#_Y{g(&Vyu9hxFQFQi^L+DID@nP_OI#yw!aPOd z&pf*c=F59`#_$)SPz!|SS|0+POBHYi^^V1q1O^MS&mvj8f!O+k^O!c-S3a4P`B!a=up;SZ?v{z-?CkL^`%-)E!w0WBJ9^}sFTewooqJgfKtu_fwlp960Y5mAZ*5xT149o(K67Yp}$I^Xl_wle&i z?0X_Gfm<#b%~hj2wa}57t^D02S8@c*%k)ppT;xP8ugjy+S87yeyYlcy$i#AS z!TVXGy(36E(Qrfos3s6~3>eb&=;*&rzzj^dVyw~?WwwK5okM{NrC@BhSmx5SeliLP zJ{>6v2--+{#}LIOq`-@dD4}u!vu%qT>g6aR>JZCV7M9^_QRADI;p9c z-59Io9d68LiVQ5%_T$7PLat!BN6(u8jZy)v%8Gw`YL=&5A%*fSEv!A;aqvQ8{}PFu zU};8N6|+^CMvi(lIUe;Ysl`MYJ#Tv^h&T(uWo^7Y>Me!QjF{3h)v4}RR^x@ z@1?K~;RCk(VpCi0!D!O$qCkx>hJrqN8sQSuk^1e(vNC?{W>|E9!q9m3$<#L@+_D>t zUb#=Ya29c{a=6LryjZU+=uK1oN$#s$1SIx?w>VM3GmmkEB#x@4$dFZihA+iTXfuJw zV&?W}mZ0>)9!4`W^nntLg>sxsrhlso6&SlW=`J=FH&Y{ozMZHp zoOog+pj}2zs$lD9W-3`<(^`0zPjhB7v*819BV^dEnjpd`$M{mKW$r-d!N&FSaZOw2 z90AXy>{@VTcv06-$!?R7b|T}<$V4PB|CcGc?e!m7QDwge8eBGzmGnM6Vr35i6l6m0 zgZ!;~(C4oev%3%pQ_5M$Zux$tB}7CQu?>*UjeG4tHvskgP(UE-<!UH$k zgtN01l@=}o03KEih<6@w02gP7SAzFD&e0{sJlyiLPn;9^q`+HkZrT+RJ6ZeuGj%~{ zyBP!Z&rgLzAz#y{!`Y~jX-nh_oxeN3Pm-jLH?D)iKf+ptSxTs;=u|!mu zb#vQ=%K55*f&D3c^TgWnWr%;Gny(wP&E;Ou_N^a8ZLimlWC>#00<&>p-W9gBzgDHg z`h04sv}l4Lt6gtn=4SP*|LCRZzLuVrVymEG=dT7lgU=hR5;qDTQa;_&m$&_$s5+nP zUqbSm;*|0-b+jTH@&Pw)sxul`XJ$d(jn1n~Qs7nC(bAXPV13Zku*iYNY9p*5@)G+{ zVpHIJ-2de8baCfCR5kFfym2s;@<1karg~QbZwvG#0BYCRJh%j?f4>g+tANh$f1xF} zk*@bR`4S<|R1{)Egx4tph$2}sBv*U2XamMOJF^9#$HDfQcAP7(H?D)-rG;~V&SHGf>`VJLj@cOBDA4|h zw@kIrksiI4gCFj^)7bd zL+tYKa7Cg?b2wF9vSLKN2?8}no2FZnD(n6d(abkHRE_MLQ?@ybycE@M8plle%t1we zk1T|RuErf)hlD8^Ebc_m{te)cII@OdH+GJ z;6o#(5&n6}KX$CHRy2hkaT_I=1@{bV{lsS$3O?z-F!^uzuN$S+@S zbv*a2M0&<)ckEDZ{8G8ThCPA|~tyvbbCDjc`G~Y2ESc%ZEuwUd5a! z#D7SjIZgPxTSTvS*)F~IX`zx7p1+rY2yS^d2S8){tG#LGUDXsiA~x7!K#|)?Iz`7g zl3P5JmA5Wg+JWowPRW&b+&TrL;v zsk|6<+0QcOL2Kh+?mdus|5~9HTdnnIF=!#csM+lIozN_??dA#=CWwJVZVbGiUKr&K zZa?gn&`u@Qwy;4&x(?F#$G&fL2SQuP?xb`7LU+d9ORZ|Z2wkpEenh)(U&k9bjJj;w z!m8q8m!pgR8dmN5y+1rK>VZu5T$b|Qrl%|~Qu}3${dl-7<;LGd(?h$r%i8zHbUt|~ zYD#D9CCIKlZp#1K8M_IkqWs_YDv#D=iuLA%!oMay zF;zI)-ENZK4E=p>&6PFj71-4uozeD9hN8XZ&~7DfD3%XScJWaF9G>9-+uQqx&>>!Y z->T}4evjfr{-ZRMewYZYvi;zRdI$eLK&`*$E^iom^Hf1rU!@f~JDh!u%irq{gNs9~ z)QbeHctL;4(9|k)N6MyjCb`ygQh5{LhPEK)T6r#_Z%2kYN_Nbi3x6!1K08#**)W&c`?TdFLLdl?%`!*TQBr>UK*t7n-FAp|4R=T??E+ zMa3~$8(&{|1i?tpdJC`S7t8AD*?zrV!&01-8Kh$z{6o(8%Gh^h=kOtK7yrssYA+4F z6u44=&6e4W6;KSupkfW_hAsF5MqYgp1)pO)a;G|$K1;@n@S@EtYU;kZ)d&H85?}Qh zi@hWzB6%pP4yP;8(xhFX4{v3ov=vWg7uB}TsF|`qhkQs0j0@2#AlXFlM-)6P*qJnI zVrR;1DPIG)e?@_ZgZ~rPhweUI3$cIAJi+u(-S!0!=R1J)t^{~MYd}fkvL8myl@Be} z{|pfS=75J?D^4QF6j0?&-2h{E8cJCvc5_JL`G%)LDo{mZDtxV%2VDiGt{eF;=+ z7}M4Wd&TYi2xKF&`moP5QZWxUK$v^wM8qoif{xx|Z$N!imNV?3<=QI--HHb{NzECj z^Q`4XzRBgZpnu36YHy_Y5$vj)NH~akx40+2U{DP(mL6851~~}os0X8Kc9Z;fUPlub;_ih21z%G@dpU&5jo(Y4hg9A&Fq0Tx1ARs(V;5v``K4J04wMNhSF|2M75yId8nI_5GwW({mRPi zT_&)uPN^=88_mg@5Tp5$U;cZwc29U#1E$f>q3ZyPQK&cGjXW4BDB-RBx@?aOdy^)& z9;YV5Ym9gP>q9>uWyIR)6R#4dA41b%7EDhrw}=E(b#VwtzvWeUubooY2zb{6mg_cbXAVf$X*rJ~4}lwF0t0w_oR+l2XrKYK_nO{&XzJ z%=vx={emw*pA3TDG#KIC+MDaFz4#NPKBWRcacEh^Q{-9}77MQ!vHaBWQwmdv$R%xZ zSJp=OO%EQ*_%Ryk)napBpsOZMm8x_@M4m`<6dl~csQGb1ErFLjGJfSsG_s;9qKSOw?^ynweBa0Odx^yf_xs_h@hV&zU|ngO&0Xi8)NP`CDh^^ zY!@p>`>X5=!QxtUTN5|ZAtyDyCpe;unZML=n$9{Fyj~duc8cD}4(s0|2enh9yU`Z< zMS(3o|Ggf$5hr(9D)H+#K_;Ojo^EvUd%e~xL;Fi}_XSq6G8gS)= zS=t9aO88N-o)Y<|$d}q0?di#NWzXh=uQsLiOpmgkmmTNy_=KfP&B^zp<)I);x(|g5 zli+9koYfmGom1)gb&cf8p0>w$6ExoKp&L*-pMMb&kg?Jomtvw{OaW{s*Ak0E5ph)25WoaBa2`Hjs)4+bEp+d7xsSsyY z5k7E8iEC2y-bjoY92a;p%XkmUM)ugY;VC?dJ>hi?5zfsrO+vq)2bGFxL;|*{q`B6z zXsN_0z%k1GKJGo_q}Jy8UFjVVjgqo_@jRsiW%}GvW5f36qqF}Zx`t?o;R}%fjOtOsj*k=DC$8VTEx7+8QUlP{?*-CW`|kDOS;##*5A-i>cOO`dt_Aj-sd=kNB^RD|TOOzL{9;H()W)k0Y{z3R z)yHi2N_0BuCneZ@*$b z@%+y#=}LT9qFLg@KoV{GeD?)nu($zr2D) z*X>DU!T) zOE~t&9>oh3P!Di%Me|iMl}Mg^*#RcE=PAqH-w=vJJTd zTGedf!+xLmxoBn~RB{_cdoJC)1nNOhIgfW;&&_C7=q+KGv?^OS`&Y8X5A*Di(`jQI z?!5vX^80xic9zqc2sc1i7h!ky#@%7qzIF#R%VZ_ zj58^B9>n7FAVPhI)jjM{gp=C0gU7W&j)HwasZ5=&=y*i$-H?AdW8ER|?uiQ|vGJ6` z)?X+UTE(c=c6&bVeqk_1Q`bp4#hG@f7#BTekSqdYx;p-xtb8@j$>b#0$->F1ql(}* z=^jsWMixj&_?w?U@lN7RZa$})k7d63F1)!GsjR)q)GXH*-+(FB5`aG$eWI%sAr0m7 zg`T&%fvP;8?@v^-WfUu^*9R)8n21`Ed0bco&a4{HFiPCEh2>z}+HI_1LP&qRQFspu zlMadTRdh(Wa8&{=5q}PzI32>#4OCF2Q_Mse9jjz_rqE%x5_nylY#eIq$AkHr4M3W$ z6C2sDzE%}S95kYwtr2gHQKkUQj8J#=qY1{7d&b-4>Fv_=E^BJqqX&{56KAoVAvVo) z*NY>^rY+NM3&XF_%&?eV@-LuZRXy)Ef>B27#naK6`YfNq)420$QE`^HQ0R`vwBfQI zwbn2BAAa-7T==CRO(<`Kh%d)8T~2$*Dt{J>$>bMIlSqqe#4vWFP?dN~TiC*_XodFF z7g9NqC2#WuOeEX4G@4EDh|JUf$>whcYDh5`WEgH)2BTyUGde?2JD@Tx--&?(HpZ$p29H25jH)ZgKMQC55uTRiE-?Ojb@DbnMPShye#qgiLxe?@_c2ldsiRE=u zoJP>amJ^vcZ3w3=V39k%!x_#e&0EF^&09RJ$+F)-cd%9#e+*zGO4@B9*LwEqje@co zLWnUlH*<`Nz2EuEV)4K4kiI$4!m~^stElKo*qQ&m$v5+>z&2@32*6nQdOi}esN%*? z_J_3E%>W%M& z<$}yuU(JOJ@E^3p{@v@X2OlmT8o!orUMLKREZ<->hk12CYrH(dmQAg6(U*MXRzd&+ zmOKP0UmqoDO&#s{h`|Do+M~K)L(&SNpAIZwTb`VLTUay)dwn>L|nhw>(WR z?0#f-17=jy)BbGnedySGe4`J6;TT8>hfL6am$c8doICv!W7tAfa-9~f5wA!jgj|972gTrbv0yc#>W-g7*_DDp zjUN3D@`F}QBlcq$?B}p!-4B|m`xDgn+FJKT|3nFI9RBzGTN%Qw(|IcUHg4t^t9!=q z0Gt~Z;ttUKb5GEAAbdc1jPOuFBreNB!8&$pyUm_JcEL)4LKNB4Bxt(6`#@B|05frw zCjD;?$vJ*aasA3r;g=%T#y(GKczTTDu^8n0#-NI{v$x0F@={|hO8lVr zT29UGQjRBIPbpU{4uPFLX?*>A@cxzlwE)8pY{+$s;46>N{68-jOACC})eF4duKh{}BLq|aCl=r+T#!Qn|xj_9u``hSX z&*gjab|m|2^bNoDnu5PFg0KO4{%)(g%nSxI9o|vv*stQxQ+bUVkv4cK7?ZMdioUpl zqmi!os}96Gm<<8|Hle>PkWju3N)- z1K%e5KwHd@WZf@*qzJn4Ys-5a{?uCv5>XP!K41jR05)RtFu=OV;S^FeeK+Z}UyfznnF%#FXKF8A z-0R{M-O}|w2J2aUCwrgqw$%3ZTUPRAZ~hb3B0|*$0YT3-z1MZp;0 z@AvROJ4SC)#Q9tMEQ5nOG7f5y70+lNmvmUVU0_ zL1xRPJ*{dnEj(6+1_;kXB~HQ^iT{qw=PnU|ehhCT%*RwlS=66nB&mcX4#!CL%-`Wg zy3xk-Ftc}~`#_iZ)eRTf5N&vjT&iZn@a!|dH|oRF;w6OPkZ@3c?sJO`VXA10Ip-wgjBMt{(K(bEvx8wH)nMALJk-ck(MwQ@$D*K)Xd>DlK37%dlN1bnZdJawOqgV z2?j0uPjv}T zc+54(=Ul1Kj18P^>i02HF^3~1BD~($-#a^&6pV!M(rZFVxa;apF*V}LA@3)ofL-dI zZ#l0|trqzbcO(Iy>%^3hw%TgIRn>zL^P8d` zI2XO)aCy}#(N)G>qW0{8aD3gQ!9IrfPg~GNQ$O<>watm3`b90ra>es6c=dSCbYq3q zJJwxYNhn^aZo?^I)eSI|tEIyuTt_vVZqf(XN1nB)R7y-Bl<%0#%;R)kEZjEr^5fg zc%`V1J+fD1WnOYoMiM?{6`$;RubFG_tfH)Y$#!KGp|ba0xvq5)%3ir#gzUY3@7wqB z`=|eU)T6HVeZ5}ioafnl0InUYAu|v$7LK^V-si3X;TtyWfI5c&H8RQDY&Oj1*HqVh zW#EJ2)!uSLpEzG3TBMND$!+7a$b9H)X_vu#zY*TmgWi7jy_I27V=iDTjr?mXO}iWa ztE7p)hr~(Jrk_#$jS7#E8iVotcCUi7gl)J!T(Y~7(%Q2b^1&!EuwQXPHDtu&;sW-pO&*l~Y;#fy2T*u#IP9-^6-8{5TqR&}Zi@w=DptYz?G{Cy< z{WQq;_>wVxeXVCz-mu^_#2;0*m)1KkRxPid)wNS*mgXw8SBd=oWPDo7z0X(1@rwmU zZSZ?KPzLuON{gr8aZ)eTqII;E6k(K3aJ=c&F%|co{ODoWKM91YZs0JF{?ehQ@J`OWvI3&^U^F$@v|;)-z;-G(tQwz! zHZ`p!6E+W)t95L$aJ>%J3)-zr1A`|4JkUm7HjO?6!ZMUDIt~dH)M|JB(3j^>Klr3E z02C^SPE~fM%RCdPA4xu>I*BUcYj*qGg=Ch1*d%9q-~a=RszwX|k`HQ+xHE;9|3J7N9b4u3v+)pY>o(c~kZhi;>ar zAa)z$I+LsIUb=Nb6M})R>svR;Sf@SGmLz0$Jf|@qbhcAr^K)%?gWR4H@aH**%D{|9+%+aEM3O7$Hl8N)5)S?5rxD<=4k}3-b1o3c z<_vK3^T}w`6I}GIwo@>>0TetNF?>Ju=OWcRBFH$soI+K^&l$6=mv#K#z5NM85jZZz z$_N|K;{t3E4;y(CEC42T83tY?v`PxZPGnVP|Klq^{csBbLXVsxvk`Ii^ib}qoXM&^ zpmh}LGRi{RNfu7quY3!!4;>A(Qs&Q@c&q=re#_N%gbeaU$*E@j+g$)&xFN~8!{8|a zByCOSZ@DiZ0wNwqwWChX-vaP2MJo8`yLNbDFdL0EKN~l|ee|N%sI(~=)l=|%eHX9ZR*rCQ z0j;~2&K2iboZN_^#*v_wT8msAk^#k1cKbkJBQ5x!b~yC!t6Ay!i(@Z8PJ5LbWb_%L zR2-e!vC?#*d500aF=I>L@35J<<#0QDuJ~49I$!0v?2jj)Azi4){IU`f;c(Y}c}}3v zxP>Z*_2q3}V=|R!z7#^4eVC+$v_ZH}1aKgm%_7AQE3}v2Hi{gvXRhCS&s`bd|H4A% z^mz6MHH3$@8>@R?2_SkVnUpO(uJ4Nmn0)5@2x-d-8*q->h;jT#3FBZ9KMtAspoBO- zTUJ+k0{I+=CtyCc9}J3@Dq3FREFKVHfG{X|H78|1@RqogQ6nhvc&V+>B{c?JE>rYyNvgs(6)qOl%)Iaacuj3U zByZ9%p2J#@EgXJYU0B3ukx7r28>#6agfo-yHV``9=;`j4YEn!w3C;FYL7689xA~%M z=%Hn#k_h?_-XwnX!DXLQnJw~!yXf8DI?1mVR_LPkB`w^$`6eyop+R@n&AjKd%%Tj?lp||txaUI=Xr!qLVQJz$xfQ&urpRuJ2JyBLdjk!+j9Y_N`1d)JEVJLd|89DH?j^f z0w7o3PsZ-rI?^lN()cbwd;-j4onlcfeG5z{-Sw{zMw|DmJUK;o0I1;p@Z!VqTZw)P zwMdK^E_&5yM_>H2_^MDD|7T4&b?eiM!Zp#5U-!Db?ACr$?7)I>JH#rFCg zMDM8EEiWcj(_f#t<}^^lzm>Ub*P=a2Jce$)T)!xXs?*Kl_Mcw#V9nUT`OGDgtrsXL z@d4pzM`6^c$@s9q%=;fmI($nxQ?AZY#@jqAB0e+^1ZnCl+cH~#$ zdt=%xUqgSO5hsUVX&%YZsP^O9P&F?vt7)}3{Kiy0;ApLIb@=5^jLdc;L-48;@KQ$Z zr}|dp2K_NQ0uMF&WQMBPJ>bh)F{T##rypy<<`Hvc`jK;)&+?sZUfZt!QYa3zU|kJ~ zi;QQm(V+Y?wGoo&VSAZLM0?c$!d=K!7N*DymFxX z$J^mHCOFV6k8I+>P#be2`oTQvx~4kMcLsU}?aB0&7n#+rbfKNkB?kV$W<;eJQ>9;n z4#u}eyde_tH>eKTy?#6s;!nd7J33?X{Qj}wbmyJpY2$eX^aDt@`+6JmsZkbl*SB8X zFK|F1t;z)5KIzHa5$ktNJMuBt{geRM9>gbbpbetOa9{Aw9sjGRV;ozl|GCoU(B(hZ z3vj99L_M3ee1^(4gzhe@%+ zmm~?5_my9cyJ?ILwm@%Fj4zejHmavygJTbXo_IGyqxTe;3*7Vg!;2}apLf?dw!Ys{ zw4O6)IereX3r8#YSu@UKd56z~R)iQE;9HK*Od6ge5lvFh+gTYY4ZZhBK4~lBi@b2hY^%IF z%T1Fr-i;>kjWo1X(+XUGyN2GPc?15JZqJLFBV%P9$uNv3Nzn~zFnGwH6EVJ3(mmAsjQ(#aeIm|&=Gw>4v9esWeYl>YSq*7BF z8a?h@I-(kFZM?3~UgFeqjfR+0^}%3%lr+v|z1Jud`id-b?w`PTMKXIo!x$Wm)bP$W z;{9h&%*hu8dlFYP@qQ6J8zqe@u6 ztZI~*!gCIzCX7+cR6OR&-Q=!5dS0-X7(dTi9z?J^f%sl2-UW@t! z3npANkMu2drD_f3R|C{(`U=wj!3bA{$}X(AusM-gxCVTpx2jGNQ&n4_vAnb?E7^+W zfOo{npWmv#mS{br6$qWJp}%^fJ>t0BenfATw5aRY8pWU^{0iw$C-@oD^8}Vj~nANJSbuLwPU%Yh- zx_GKvxT>f#?8UWE;VZVm-3ssXlZiBk*09P!Z=`W2T9m%Kaiu(p!fs40>JalG%S(A* zh~EzXC8Gq;OV;y(slR%eJ(PS*s?n&g<)%`VA-6PwlHN>j;b1a%nC7Y3VSGjVSl336E&8xN|D(|nE<0I`m zQ~fd0JtvJKnXZ-7hiau~=LaoWF%35fAu1j(cN*M>&5x=sf3K|FkI=2bt0~)6>+xDk!NxTeyH3rlN;`Z92Qw_BYavqMGK2N3F|s zqChh=%tF3jtTD3hnDDhMh9*!$NVuw3<8kUK<`kqNYjjU~OAG(T{5QTI6nmk9gojU_ z7up0sH$wcxH%4c8EDmQ8&eGd`GPClTXX_W?2cpe zd^C4`^thz3Q2-CK2VvuF>mTFpS$;tBg{|w+56aVEq=mbX*S98&SVlzkBQQVp?AbKq zCJ(9PTXT~%-b?bAh_l%mZMbh3a>XC5)t+zj{HNG%r_SYsdURSU1W2J<644b#n(V8h zi+r)U!BLJpVF`lsIF}B_BYtg_W+DN_6IUeBL^4*T*^E~ez!@EphHGMZi_O?C7zqbv z+Zvp^F+PpF90&ZHpg-ttaXThd*DU;LY>jR*@63*_DfK3q{|Mt$q*(=sz5USp?BMfL zZ(cPL3{@2B{@+5P7#Z7(ZDupg5jS~mJ<@>cC#A=9D2q?qsC!WwwY)n@w@DT>}xk-rO zJ*v|&Bptla$ zP-vP*k*TwG;#&*4DPQ{pX{%-=gC&N_*=R}hA43swujYaq^*@f9KPRfM$)I%~fG-{4 z;W=jVnPJv{(RTXmhKYwoh3QcRs!TJF<&&a=_0YCBz_Rmp3>7U_6$z?xC)oq^_gaon zz0>!*N$kk#!3))+KP00zg2j%-_pny`p#*dGJ}z59h^!zxXMHC`CcaT`bT_j ztO)7rjhuh)khYt)aHER}@-S@J+=i;bYW2HLT5og)jPllT60=g$xv`OhviXy!ZF;X6 z!!g6x@+-t!N|asnDKJPOWac!#l65e*RiRde4wM(AI!v2v*t;0L5)j%|+gdWycb$tb z+lhxfaKRW~fWWEW8Uph*aX_E-CXWdhGR4l0@`)vrlXl{u1Hksle6Hjjqd~CN5B7|9 zTY7$LdgPgnm_U*ZI2OZqwfco7ln|G9$jCN7Bx}nj{Fm++zhJ7?yoMh zB(GK~%oib~NU`70oc?QN#B)8lc;nOO;yt(DzmY3X=qpi+QPA6Z8teAN+fbjaudyS5 zWlF%xubmPQR*U1h;XR?9JtdGV!{qHrBCr%=Y7xPOp{~(&5vYmWW81+Ni*N07z;PO2 zO(c<1FNu*Opgm)%AWZ&!Lnrk9JZN~>QTal>jd#u-Ie9&z)H}z8O~lJ8>QANaXf9c{ zJg;tr8TwJotqDqxWPOjL$48b1@?a<|WuxsKvfVVF8R#$^XE%mX3G!}?=(ME-+FQ@e za4m3}(5*|MUqy@j86Im{I*=H+ViL&SG(e=>-y6~TB_8mL{QmE;t*5n2EIxaIDc~3P zQuIY%{`f}C=x)Vv2z`;S^t@xOk!-u^dB1f0GTnT z#*QO8go*5}IsOk2*V|o|e`FUFQ|*#*4c0SSl4|aoV04U@;W*+E3%9J@PJ)yQeibF%*4)+^(doM!*%Z6mA^JxwT@2H#RIqjfI2Ez&+@Mp`~6-4#KE1lRZm6 z>Xop1+0nz09?=g3qSSsMCJs*K;lM zXN=y_(@gelQK{O;j0nj_!LSA`w?1Z>@=ywZq~Z=D4eWEBK%N5eI50q>i~TtuIDXE` zEkah2EZ+WYFI+yP`Yh;4nqy%rK`8|^RE=~I&j7Vs?a^M;5-;aeFBacpP2utDW^d*< z0>w6HT)dLqxZjNjys&xUjHy|UmQC>aa38{1LDl$gA-D5sli^ljvb%I@*foUC$cIGf z4eyR?!xC)vJ3){O0iTi4k=+;3k$q`-9hijeU|&YM;2@I; ziQSBYK;Wm>?wq0Ha__o@@6BworjmyTzkz%y(@oqGTq<|J(;19+Nix}dLUj=-~fZMzbOI!Q?Pmaz(taFun(RehMruT1#Mr0t}@||GlkOPYlGL%qn_t zx|?;R6WK^41Yiz)c@JFY&u5M186>h8^F^ZkBXdEthYOr}hs#E>V2y4#Xp_8eS@nd- zr`Zu~K?#E;HJzhAeYcDwAQsJQw~A#CZu8x|MT|cZtvz5`+l3+h3S009gdN~x z-9y(ov$2EgK!gKeg^#zV+L+b!ib>P}7pk+nS<)7ota^ma>YWZw3zgsC?gs+!C-H7U z0~K=-0ziOmGeGs4XM5SSfRW(yg8HtiJ`O}f*{VyE`j8Z_BTk@QGDk7t;IMHmO_wZqA zwCsMgO(bt~PLhXY#hMSDqxDG!F0~H1D!EX{M6zr^F_RM(|BpoM@iPhA5z<=bw zDr|Ao=7zxR#$iYQ%yFHNt>INbdysVM~V>I6KD z#+o$sRD&s6-^$!x)dPJo@;f-HlXiYL1AL474d-W2jibbr zk86I-y;Vgc7f_(D8!ZjJFvIPBtmSLhttw>S9bg$IiT zlt?jsTKAD2Ic?)%E8?v_{)e7;6cu!$@@~Azq1+EAd2T?`<2>dzDxKgqqd^tc{I^Eb z^u-bpWIsg_Q8>B#in46X1Pq&HoD?$&V=Z`@LGTD>HVA1I5DVrGX(HTAc9Wo{FLY43 z(bLD(!##zEJ4En~G4d@D9FYp;(Gck!<1HT(`!*cW0_40bH|~wYXvUUhm|2u@$ET9u zkcRzRJ+8vw8~R>oR@-d4*NBmjzJH_xMoj#!s?7A8pE@QrsH(!D5!JKw=PfVzI!k7J zI{v|ku@qNr3+1Pm=WuGBzWrk-{UqRJb#*y&cf#jWlX1H*`H{bdRojP5AJ`tIKE0LDX#MZe$Cv_C&+I*lhb&je-Lr{bjN11kGb-n}>C1 zFm*u)MuSQ_oHI2yEbfTQ{n?_UuW(V(L`08NMU>IIr*vQ}zu@|xm~Hp%4En$#w7yie z67fPYNbM;Z8GSmFUABO>?8F^0!fcY!V)E<``-~fKJ$-^tJR-I<`mCw;yI;Rnm}s}& zDPPY1SV3^HzUt*a)wf3U>i56PGa%Bb!;lkijJw>V$VOx9Sm0GZ#JBoff;>7o?fo_d z2<*rD;HUrRH6zn{*>lmB=VX=(JQMscYoIH-xxNlh{Ag=~?iPS`(Bt;#tECmD*7sGp z029&xRowlq;xm@H{V)W#?`c&hk~!Sv^9UE`1|GSMfTjDy@`>HYSaSw^Ya!D$lUszq zBb=W-9pUe57SJ!Zgy<9+|M;P}y*$^+oOFjmWB1>`P-gL{#rj2=V^tXWi!a0n4x~aH zI&T#sN~8$UtA(?VaDFbRrPvg(@Jb%3gw-`E!L*(J#iar_+C{U(J6|=nsrcy+qk%?j zg$Pj%MKVo|hVStfImP$;#0*E*%gI5e1OOo{HBr%!YIJYsOhj>z;fo>ye^+|*vxdRW z_m4ECSeDLEc;M&ISsG;ZkoyS~n>h2Uw5tx&g zg+#tDcXQ(L7=L@lvB-xio1yh@)|ed&N2xsP&sm=fJecy(A)3fR7u31z0m=PsrGx$M z%Y%AOKB$~jfgLlxd}DYK)6&a|9xWFSFW4mRDa_eZ=!7_=75bm3)ui91t0$Q*oEH@kh`7DJJpI{er z=_OdO?RY7$ey(3gH~cj9uWii4d%>mN_*G-r3&d*<^;vV!Kkq3fx|z~)y2ugEu$f@a zABqcwxIIAawO$G&qu%>qeL+cZIg0j9TcVjv2glD9v@zV>y}9}(zPc9jdhKQDFePmL zF-wD}V}5=&LOA7RcM3TADY7YyUw$KLF~S+)U|pJ;)KRe@Ha~mFvGHpfrNY*D!@~1f zj1%mp&w>W7!=)#dw9BfMU4KHmw?B45yPY&e>Nu2d*fcKF%X0FJ(c&5x#A zlYh-h9ufVariCm%((51TbH(+!pw9(N;b-Bis9O0raMmqbII=n*^exWuZ4!At&Uq*>mtrbHP0x^^}$@Jj86bpSpC`PLQ6?x`A8Y(Rj ztUPPvF^@!?7D>9T04zdFhRcVBG1<*3@0&L4EdTWUB-0D%J1$M2IZCUu z{EOy}WKahyt}*;+@}BUs;woXne?{ys^Fh8l&S+H#IQV&xIKO9UPs!z+39mFu!%IfM`19ZQ>{aFA916#S zVu40siAI^79zY)a6-dVEYkBX_#38sKq_5(c!G_z+3yaCHlt+PBb~G-tqp(TvP*Y;m zZeOUS;wi@TB-=?%jVMX%7NlN;fV$eTocInQOEE^|&}|VGb)s<>j3j@&arvhsFE!H+>b5YbCAnZoH6Xr{QTVkAIl)B_||iKU@);*+?2i;(a#7`4>O-Xch_ z{7yzt@dydw7qTUE8x-_8^=qNY=}lgt}2o5j?&%;;&p) zBHr|nD#Z70Z$2N{M50ob+vlIi$2?aefe@oi-q z56B%ST5z0V07T}hzf-L@3ESfWCgs@5J2|)S-;TvuP$WHPMrqRVm({BEpHuCpHisT; znUj;C!riJ4Z7BZHF1sYPN_ZsH0+WsA8G(Vq7mJk(gmVu)t2D>imY7xd0F1yZtKh1+jqo zeKf&6qXC!2Tgr>hRtJHAp9^43YS2@oUR7-acKGGmP<5uA4T<1hmqXE`{;E;)w3wXd z1a3Rrj(zoyWK3^-qS?G1b$D$?0#2d`evQ-!a6*z zjNFojC0zhg+dU_UEHaJ1Xu@Pllb!&Xz}@fT`&zpcmxwxFDLc1biLXhf_pvb)+%mWu zM&I_W$YgHiTZDCM5f5T0x6OHxRbc{2syWuTGBNJ6foOuq(}Nreh>y*6%~px_8gC*b zp*k=%+#E$)N-`!pI*t~ZFma7sRTMtCpVcnq2QB{;Q+=G|c*-ixId6&(sZ+<)7T%B= z^}|o=igi%_&sMt%x7jJCd}7wu(39<}^$qc%NjU-Gtx^A4`#Zz)5mb&g=Ge57cQ6d` zRa;hOl+}c0o%TgT3pQOJt{W)82^ffn)L_@!023;WUNxw4jtD zkvZ!rFVjz4v9B=7XIvHfGyPO2^2Baz(U1w{eVM}KV8D$dx-8r2p}G`E4iG1`$?)K{ zUv2xfF<7HQzU`iXs-1~rqp_BE&Cgq+N*u~Mtr+(|{QQI@Z%qaLYo5C~&ny^o1uG^v zZIZ`?01Gytn=i$4f^&cP$s~Q*qjMrq2SmI7*bBt&5mgCLL_6yDz-GieaT+sqpo(Lm zXF?D|20&*Y+$}9cv-z{-bL;UDdS9>fOQYvS=@4d4C3ezuB%ZB!4>TFck=|#roTcCI2v{2It>Juh$Y*^6`T6Dw-u-O z`zt%oxdM=Yb1^YD@=~G!;ksrb>a=-hEzDO-dkXv^>9-W)gml5}`+;k9GR~D5_)93}e44KQc_oNd({d+yskD~rT;Lmz4 zZ_*d;L*y+aQt9NYDeJt_5cEWq_ zh$jI=P1E&nioNc^Tt_OwIZZUZiks=y;-HQQv4R|`4Yb>va}o<~DPIxm9|H#bGTd6?9L^xyDxL0jT`3@c{CitMaH-oM$ zkI(^mV)52-@zq=N@}kN#Ig)YnfD6qd;Mi?YRIycsF}?aRJ)Q!?|IjAsP55nHKR&rj z^lO!mQ?}C}hTd*RHHzdT)SHUPD}|TS48~23=X@^-3%6oIyBRHEA;Osn3o=8ujhxE_ zB})2*vvw?@(E-|+pYxZzGraB-&~R{r>jzGbg|U(jQo*ebF${^aC8Erd@%|;i&kD?& zUET*Kk<1vU1V7^h6@*Cl0vqBa-bJuSX5(qIk&iRzvU;{R&Vg#eSIi)hu&ti@&rpKRj%cy>~9C%5Qv_=BF%L5$O&T4+-F zWH{iCOUYrf0z42uGVbKTR8nA1HAOMP&JOjUo>>@HmP`Ep5uId7mR&W@Lc9R zY&JsSWovDD-OsKC?kyfp@&8OlRplF0-PX~_m+ccDD=`1CnEStVKppB_tSGJ5qEP7W zm-=}Lge%JrQc#ur0%i-QXaigSG966(;ZOY*Xg`yvp&hJjtz6Kv!okxewvA%HRCd(7JN48hR}W@;{&m`=0CY5cFLdkMjM z!`b>KP@H72hrnj*z;b(=prku*=SBbQHXC|&N94C`+RLXm_p^iHFzTZB`Q;auh1R@g zKa^cpdHMHcdVE%v`~;2%`1;4?p|6SUphd)?i(RE7&s9RbrtMY0BO^OX$vo11kcYF) zS@dQkI3CzktXHZCV)MJWB%4qck&=BCi4HSu$2RcdxT1VZa=1c=EZ5}ROzIv3!hy^C zBkB9ODyk(66W3bWjtzszLs{hT{FD6i zM*iIVW)D}*rOrivle_0Ni#*B2Z6ii5pAIe(aT*HjX4Rdwn6t{lQ+}R?{WR!~d&!WRZ%JyVs#ALsWWy4`GF1ijL_+DZzUOxu+qEe~&uA zg#@u+O73x)h0Hc$?q{FQi?^k_Ww?I3LB#353s~Tt+)MLaq1|J{N0kS)v!^-=wG{A= zKF1lkV68I!K$wUKv+lkruy;O|KuN$d<7hMfuz5iG*3>i<(7BYE0tP7G{kIObOs$nk zy@3Khy&Bf8NY+y|NJN_&U_((-iX)sXmQ%z~VX3S-*Kc z8hkdoerhr+yQ(S>*jqa=n5=#gfdcNaxD_~Gb1N52xOMO)ZCT}!jG<%=E=(M07nWPb zX6PJZF|~fyA0aTns56rabi#dH+*#00kY)T4a_NE7pnab?C(*Rx1ZW#4Y$d&i57-_i zq_3NwJ!x;<+j=aJaku%>Jkfw6`!rY3w(XU5)Hif=^Gvx7k7cZlu4>$Eetn4R+mpP{ zaGUa49w+xb z$FbF2Be7n%5i>vHK%A6vDgB(VJ4Y4a#~8*lF64c!_m*BqL* z%byVP{;wVF-D95|5jYB&Ha=YfJDyte>2_}o(&BEKUxAO&>Ci}WM@h4rSr~ihei-CM zXPx0KVCPOZBhV88Wq`cD@w||1Aga7r>)`-uFJg%peDKs3g~${V^BM5K*1S#<-sQ_X zs!UyaXeE?RFM975DZ%l-@doJYqZj>^D%@L^cjab2)jAm+?bXPuw?s9<$PC{hs6-`F zoLpaZXjq}b;pYf^Re5)M8TA|moLUOn|H_EE7NuvHg@~4nfdVUfSTZPtYhI?a8OK^# z|C64Y9|VE@po5rWi!#)yvNHr``!*-YaZK-u9O{m~28-=nV!et|O`_h_%+P(8-H*5; zm!cbnzQ51e@b0XWn#ROdwx-qm>T6Mnjp6fp0xrdC^v?^E9J9A&Oe~!(zhowCGTWuf zzK8~!ox%Z3dEdqkV+`oNVy|1NARB%NC;kLj*G@TbHl+aHfFht-Z(vFJB#>^&zN(W_ z-)HhPWwHkbKy_pc6PeCXq@fg+U&?^cXyEy+Dr^s8`AW;CsjLhmdRU<^?(iPFuwOIt za#i-ci`6!c`c%euxxFvPdRJw?<;drhG^?74>U#>LtjcIRx7JQ2hSd>Y7AH2`rn)CF zA-RwSG})Ps`s|Cslgni6vHf-lhYJZhoV`b&^IS2eq6_}T=JjPqZhE_CE(=59#AEI0 z&Bir9|G0+tPI$iVuBxpsW%?G9Me^WY^ee(FZfS%{-AHFp5u?)fLl1Gab04M?y>(Jb zE*xuY%1U2YZ5xZ>|zAgk&7l;k^Tq5?H67klb zb7GzZ+D51RcT5Et6+<3@-<8r|2DMFJW7BC5c&%+r=nGJ zJIyMx|4-iOLq5Wo7=#F>-Jw-kl_{gPnaEXVA%LeY>0rwl(&<9e`8OK>YFy!jZig8j zE6&>Tx(-4L^6%xhGkaVs+lny$7=#&AwxQG#a2rGGB>?vtQ!gg@!pvvLYRzl>tpkSH zlpY(#X(bbpKiEdxq?#0MTpls%q}0hvj@3-R;wkQ_-)A-wC>9tA0CvFPBLp4M^JPLT zl^z)g+OH@g^2YE1WC~Uan;C_XzLu**>sOKgMw8Df@z^#(^bjg~h)XhAd1feomoc7= zs9Jk|gw<`XT3oh-o=>2I{7!FGU#V*sm{5W^T3B-VYJZDAAaX|%PR^`Optw?FK5Akkyt$K=_IM^GfU5EY426#BlAw$vO_jGTXer{Nrlj}iL39EY zsa@zW1RM?H?4y%GH`8eU)ba^Xuhu;-KSFFrlNk!4p55hc<+1eAyIu$V5*68cC$#7@ zypdV~dE=q5103PD!cjf+l)*R=w8{q}daPY+ugAD-h$;H$%9~RRg?y~1i(l&44 z;CNEW)*HJTH_qnl4g7g*!-9H13Bl-dMY6vVh4ve600l^mnDfF;f&MXnguh^6h0*2x zF&57dN@;Y}B{F6Xpne5a?Gb-TEeR3nA(puS4YxXkRi$M3DVLTxk8_7iuMF|o6luKsQMR0r*hy@uY{6LXIFEc_Nb`wfS_t=Z z^v75Oe0I;}O==T>1n=SKia=8Sox95wSMd8Nh5}LTDek71@SEYV6M* z-e*3WBu`Q5!d5_Y=?9We+%3tAu@%cmVBQFf-0qP|G8n-pWSv?QPk+SNP_@EZe&4nm z1wMYdTA?|oSFI5wBmSbz?5h72e-e!*c1X%$?9%70#@A>9S@I=DCAEzJk{gp*^JdX+ zDI=xFg(-Q=e6i*o+J*BDr1RXQ#R^9hL5Sk;L`>N0GG*)v;h#18Rd0b_fkj>#Q!$E|A3Eds zPIE)ysFR-s{bZoHz_@U5k;!g)V~t#=ltCwub;GeQ|KrADD(@=5(-!LRiWkHVy!K8} zTipw0-y&1{`*^AI{tBA+GUEE|_N^|lKY8w&od&mr@t@aZ=EB5nifgvM|08$k9qVCo z?o$|#Dg+vOy%?4t-d%q=xuZJ+a*&=aZ@R1mp^OI*foA^Yy z?wl$rBZVh*pQ^0sy3T2tG#=%^u!x?$(n04b4x`BW z8QZoTz&Ju#c_cJ(*-LIBM7PCn2JDs6&SSWlh7>e^xC0xa0xGwA3*S@i&5Om0av)AX zp?7uDM?JLS(=-tDXmd&@~2+-BcH9>EIPV7FAy*h7jj@wHd_eBq@ za63N{tXa07t;X0{SEu^ec{n5yTjREr7Yxk(Y!JP@rdOLV-X6+iD6`j*MwaemsY_ce zHtAQq3lpIH$HTR@v_9)^py;Kl_X-hdd}REo$3)Mk|l?!D_H4vhTHacS}Jm9(ZG zKM0p(D)$DUNo-QLxSshWz8kT&W|b3I{EX^|<=wn2u=!%~LECLY@2#=7=o5$FR2O~n zE7W7BCDs?y0kN~rPntTz9*e&&ReqCRy!tT7um&yQ98qpB-zw#+k7UZ<{ux!S{AKkO zO_|)zT|4;s@FuJMMyxxH7l~0Dq4E>k@2mS|KW>O8bbCI`YE1Ej4ZTn6#kX|v8Ml0L zFjoY*yiSX{W@6P{mB9-LCO~5QZA(1ygZ555U`#kg@ex7y?*3la*|d)!9Cj8bEleER zLaF~mMW);eDrqsOj?9U5nt6wCd71HIF6a=z6xe!Yg7~15cP1Ca%ZhCR-gocuFxZUC zM=d3gSMEOhXH{q-qWEQ$oQDBwR?@~X(o9kSJ8FGch5f;ML_@LqN+O z{?PwfImw-|(C3FZKS5Z(KV0lhKk+!%FrOH4bO+BM z24daYo@AOdKFI-kM4uEq&7<#NVoiLYW{%^FZ<`GL(aREwq zG{csNAks5UVAe^vs2X9TJ!l1tG-ED5P7f0=`Spq?exv+3j?3)z>I3@FlGkL()N%{4 zWz%gk{X4YGf$&+$Vnq93GVf&3*mgm2{R@P6>yU>fcGygzsGyWZQANZr$kFf{$cP%P zF#_L}&5Y#)Q>NvYX`8;%hC(ah6b7HYlO(Pg9sTac*;c^T0>uw+gUB({7jFL@Se?GhpOJ94`w%$!H6WnWb7KEvKWo zdzT8}{MWC3XV@?I8|^B)6%YFaFdb|`@DK^|5!wR#1kKOBVvbLE%2)c{1ZYKR)ox#6 zJPc7r_;SB~^*G+L^gVD81R>3xU>;X3?1sG2Q^{BO!l;Z(FiROAZ#L2M-%myArlm9Zms{HHHiQSH#1KE$2uG2nXx|C2f zOmDI)kvtEz%`}D*au7KxWrtopLiwMFeUf{{KGEw%9pcDoQN|W_61>p5EW{SXzK+7! zoY7xizlcvSfhkA^#F1>Oip5gTb1p18TAUc)t9dPhB=SqwH5$ekM#9E4AFk2L_~CY9 znegv$isHfzxrJEc8}}0WZ01JM(EzkEasy{5yy?+|V(FDe)~dHe477^dZWP2h5R~(B zDF4*E{*#WLbRL_V<_6?Is@38@G@W!(*0oM|b~@m{jhz`@S~1EcON+8ue!e`G$Z+Pt zBBk0ie%IZ6;`I<|!UebbNLXzve|wWE0rr$i-IzS;$inZCkML@a=VaFM+;;f4!g7L} z3QnQWh-MXLr|`k5BH9Z%G@?C}tI3$7^CI`zEqBDza=#kH(;?ChL*a=mu}0DflTYl{ z-u1bGs<3zmEq}9nZH))<+Oj%MFqV9L{-)8PIBZ(0_LIZh`C$(D?v}+y)&(1AuH{ZI zb3&dn(htmcE`8Jl!NYQ3RY4@QxTV@bTfm1o%XdC9@V!$5)srHaMNy(nW^@KN+y-An zJXZTciuU?>Va++PB_&OC-6PQs5#} zjK9{Ei~o0w1HsMRR6YW%>;>Hh#b10lxG*h%Hfmco5Bw%`zBO7(2V#ItX$zoB7Tr6x zhFHj3N>lcFb%}2*OcU-|YELEgmHah{+$V<6!O#-ey-~;j5y#g`^~>^Rz@5_f&aKI2 z3!9{52D=@CLlv*a6#vQ52pL`I^fqgZzcNl={n#oj<7sL-L3KrkM!_$ih z+eR*rMzW$CQ+rq0P7*yHBYxSde1~{avW2B{tBg02avGike0bS9n_XSy-DB+YE?--j z??N+^Pb^xADTy*lnN06@mP6rv`c|F1$+;E?ua*Quc&5e^v=5i>@kvC!Vze|4`20GL zJ^h|7e>%QfuGjOwds4GP{Oi}G6Pm0y4rzJMOUzRaUbE&cBTOi-lFex5ZFZ;7;jhuK zkL+H#9vT#KNBouLPIPP3gQRS9xDdtpjnbYsPt0!~1l)dH|!Sp#s?1-8%n_tf1qSKqz6!$sOG(rkMjK?xqo_=V7)_ zAaF$@2Mrx<(t{(+4OUFVqxn0KzTWp^M)F_nrgsLWM;sk%ko@^rM-{ORf=Xb(G$QKY84cFs)R zi2pfI7}q}2!{LJhX-{($9qih!)hP$X@-Ez{i>gmt(MweEd^g)sE6rxnhcggHJbk}d za1(}2KZrkLvA>s8|FH$EI;Z!>8}C`MH>7y-nD~@(hw&xz<#i~Kz;C={B`Ol$_w`4MjaO-+lLuOG5_2=4k~?j-m86|$(}}U2+;%k{K@=bk zei@u*lq0BA#rkid00-1vU+4d5I?J%AyY_1@~k_%rz#4$z5?r#jkf+F;LW3A6=Z{a22w6z-Tm90$2>mP7=`go<8YTPC-#j zRiE_(sis?c!QMVLp&_(5#0B;kH{d)H&yhKZ`x9kcU)roG@dH+cKIO|{u=BukOn z7TzDdX)ogT^sO+WjSs^q!tun$^hP@Gf8>4dN<>bmCwiFg*fveRzL*#YgeFhcSZ2|Z z!rY>89Dhu>YBxTZ?`0>EhwoS@rSyjwPrVsOAT+lT2hS#z61D?RH&XiT^^Wj5d#^x7%x0wd7%Ur6-~3e1_vYE1c%kgntrcm`OC#QN zbnR9e_R(zpJy`=W=?*)}il1|DweJTVVD9VfDAg1a0%DO1Q;yC^q?3|Ff8}GX%|F*( zTbD}&s$7Z{D5y$DD`@y7BTzPZmh2A5%-qj5B@>^5x%5U5D{B!0#zW+4Y4pO|K1e z^G?1>bP7;_qaIfp%ohhQFY7&)wpK5c_(*=6$#T+RRuqq0^*XW}sMh$=7Lxx1gI!87O zm((U{4u?f231jM<{6KJz5Y(5lUUeTm1cWzDU_9TYiXM*=-FTodk5UN0$}P%1>g@}T z0c{81Xu8Vr%W9^V-RtGH>@ zm@ootuS3Ru8nrvR851I{zzOV3{?i^~8&XHa*ohWN2OAL=9L;XHZ3X0{LI1>36XGcU zWv%tCMlFmr(ek?hz$0)Nk8xgZmXS`FsVC|#IZQ7~WluNj=NR~Lrr?ax9IF04u?!rP zB29VKp&zZG)xjk1kG+@qQfjGRL z*j5OD+jG1)j6(OcF(n+xBBqfJz;hR3-CM(U3p_&t+qj{(A9I^J2I;Q<0O>voPuGY=G_%(vv zI#H@Cl9BgsDfn>XSU%n$5lq!)qr|XPJF|3z%+N8wx7%SY*`cqkC0G3mRD%UG@_Byc z1M)D{tYLE*j~~9S#+}LA;`klS)hNJYKBXpN|qAJ^XPdaw-g?jpa3aBgj1K*N3 z+6bYL;mKHT-Vp7h2xOe)qTZEKOomUm>2o2_05vAqhDrKURzB2*%Iq)qZ}gz zVdhd-&oYu-aC&XZ+I;et!Q{nZ{qfD&`{8gSHg?{zN5h zHyhXAYSVUfxOZfo)&(!T72rOSkZcXtcZ|vU$REiH&zP%E;NEBcKQirDjtv@z0!n&x24g)VX4`E#$G4 zw%_i`JHvI_NC(yhxdo3`ktyO-hc@Gs^D0iXPvQr*+E~nH7^Ft|^Wkx8K*i zJ(~ZQO&kj*$sBQX2q0x_En(9;p|vWCuB40K;Q1*>8I&8~yg^z!qSsAYUu5sVJypkk z@k>pG%$R%W&2i#3U8U~1)B8Woeo@>T%W$u$fsReXlnt@W=a0oMkMVp9W_PDvb-F3Z z(F3bf`@w^@BP*j*c_F~6`-ddJuO6$d4YC-8zC}0ibUSB(tjG>CmHURsLJ!z&oG!sc zgeZG#4qDHu6L+n70G5FBU;xae_%=Qg;G2+r@+{;La6w3ql4|aUR6@Ep2D(p1@^1ZH#q^Yn>SaGyaR4vf9FbKNy zOo@l??RJvAv|@Es)`nUsxnz194>UbYDQq9hL^E$Z&>!2-R6G4t!-644V_<>=UZDUYIv>9S~MNltJ=)9|Nf@S*8l8f}HrE_rg!5+cP%9VQi6~MhNc@ z3%)63uz6xlZH;0h{=W5{ca;HG#n3hWf=>;NPAb%paxgIxzrWIon5X==p8fJJdz#O0 zF)EgD04;v&HFL#%=LM{*+!I3#Lcuy^xk?{I)at;7;v3jdv`L}`pz^L9KG1ydio<7N z^amH&R8yfW)kpgoIDc+{0|zYv69#T&Ft4i5<^R=*2(?Q@h&PulWieMq#)pjw`$ETIbQ>gB6? zi7j?L-eyrLO5@;>;{^{H`huNqunQqx<=VfqN?bPd(YdW8!CJ&7U`Wyn`j7KHv$B6TOf%yLcF=!XZ_wcmm};T}OnPg^@=$g#)vamx+<#Sj^miYkQnqJBiz^?KnS3z( zbyxkiZKeEZRchUVpDzD0sJ3+Y=47D=1t;$;g!Rl~($>?ovl>DYXv031CWfBXg-2bD%FA_?Q$WxB<;+SA}3Yo@z>P-zt)QN)%=-+8=#eZHAs5C zI@Str-Ua!s3s$p~^I)dC>6(8X$%%M>#3p;s1$%|g?&V23;oWtU{GbF01*kjk6KmT$fPasXp z^0eOw#rtH8T^b~ulp@HV<)%Yq)i0|bt+p~vD5-UaaQp*$ z)ly8cxPK!dkw!tBSK0E#zm+jg?Q^CP7+!71xZU1t#t?mW&*b7m@G zMWDqAe5h2C%Wc%Jc~{+1`lI?aJD&yBO3DP`=v4J)^8YyCpG&RjLF_xNSh2*9FCK+J-XazIr4G8 z)WV&NHt#*Bz_&Ki#StG%P5L;$JYxK6{xKVd~StHKG@O zxbWG+QB{A~W-|(A$k8rg9f)mhGr`=(xUo9%b1{i#yaYIM_YuN{+hrm8Rz zE1;%HC$2T3q>@kV6JGJd69EZG8t#jqsleEa7q>l+wAOOVZ$J5~>~ME`onNwR6DtdNy5;LkLYyg<;BmkLKYd2wkmQ5h>G1t*d>nI`#%3E~9oXuB zx`%+>NC`x>pZBkS_)vV_-?%iq-)U8@nx%%|se9!iw0F9p%2f25@ZaFvaGxVs(Z206 ze{3n})BA_Z+2!rqZAx1p`=FIE*-UuYhev3Q3ITf4hR~0Rn<}pcEZHI>h>prlu2>Gf zf75+Mg7iDkay`hP_t~iIQLoTk@3lt@!@~YLnRI=8mx{~2@pkPCLX_RY38f3AaeEVg zC>HZ)=VLH8bA@Yprb=%sX&SXPRX{2@xrH*bFLjl`=qw!7e`tDZCA(M9kjEkC~V+td%178~RlW#dlUQN;F9=0~pBaKsdOod{+7J`cP) zSuoWHjNYD|$8zM)>MB`M&me2TUW{vhCdxnfF8kuVARpON&@0w-TKs>#Zz9@)NV%wPNk_#2xXRYe`KUWWpw)Z&yqLMV(cHM?? zEqod3=cN(oX$Q-rZxtO!ME-<3?@F3&dWb#LKgY~jcPQ^7OU!2OMdXT-oqf%z?em(|;4N2KGn*a06Xw)T{Aq6KbrbE_2FsuwyD(iIXLWtndU)r>*J9SWoA zlt5hQr>QtSO>47!M>Y_ANZbM5z&*`5{c{~Bqm0(iCgED0ewm<$2(&uylmzYT>_6F{5a_(#GI^nqMZxx!F#YuhM&3O8PboqDq874Q$>z9-9*#hC*=_Era=4+$W-eYUNdQ zerl6L*}c`)7Z60D#aJA()e4A(XfMlb%`D=rU0G3tb%GYrjjpt!Gn_r+h~#-huOu4j z`!sMUpP63s{0`1y!|>gXY!y$VqqSR2%@6Y!CcF|#9cZ^X9>(0@10lX! z=GP135q}Dv`lZxffeqbNze1=hvwtm*;X`o_Cbv!sRb@W$@t=pl14?&MP_*LvD8R(C?H|t%sUo;Awn_ zvAE|}cgtA=dI|@kckFwE1>h7Da)&ZBk{_GgzvkEf`e`$8{QqdIk+%_$-+gx7Pu}dQN=MJB)st$r%oz z>2+0~6S@6~T)CtbY86oZuQXO{Ue&K8j3*N^jz*OeenGL{J^5Jd@BHEMF>Wx1F~4f$ zE1S*<_3#(0sS}k{__Puske#*BvDP~V934Wn;MKdL0-!PnU-kz4;zc1hpcX{>i<)Lb zDrV~PsX_xb4kBAN+v=e5*p*+dE2yJ~HJ;qz8T9SIhtrZrhuJ2(X6{eVn>_BpD9{)9 z!kTu=xrUD01c+nv3CBrV2W!{WJ73IHCVq3d%+tG}=tY8vmEroRaUwUtUcPdTxhpLH zh}z4|ej(-P*RU5mi{q4*F;n^dJXyMGDEV=z1A;QZ$--nB_8?B}$1@Eb!mIM5b@jDj z#SN15guD8U!k3>Z1HP`BB|a=J0LN6s*5q`f+8lq-8nuMEA79;FfAXYI7ZPiW6pB2( z%kN{(XBaq7lQoWZ!(8QqHEQhC@c;%4J$77pl^H*0Q<(NYZ4&9P3LH+-EdKDQ7ru^0 zmV*y_^^}{YEsk3odr^=6$N^LAqMWE0*+?&8me1j`?y;Xr+U#o=?h)3ss}(>6`8T%LoR%K z@NbjX)Ye9Imi57=y=ZfYpThlFr0LL1QkL+tT}MibIP9A_k>*ULeIS+GG>&Lsh5qz| z4(eTwV-{qoRUFF5$c9p>o%QDA;iSzy(a z-D)ndA{fB?jX`|!ra09|d9B)<%3u_+&j(JXr_%M>S5!sfv!(AR-sin4S>|BzQusOX z>6Y^c8Jo8jf8Mak{QRO8qupvPLTzl>S{aF^9pi^}p1kl!wXj2JMDvDq6y-B|n$vp3 z>0vrjb_vY)q7k9vafWw)1(&G0L%f8YTXJn9c{C zq`|Y$COw$hh6ahHf{{DA`dFrHtC??OiBO4<82f7uB$ z*(393s)hZ;W(k!%fkrJupK)YiNW|ha7{6s20f##8Jy3lOB$Fj_cF@Fz~NA#oJ*4@C^b^$1`iP z@-|X)lk0e5%0J*%TK~0kf?TQ(*6h}r>`5>6F4!aA&Y*JNF-NC@4`bs_Hy=04f57Fo zWH}L@yW=1b>}9)9953H%3X3>P{(lH3Ku>9kzS?VK?pBFUjNwN|=KZu{9d&}L^WyoDWk)_%};_Agim}%gk zi7tO~t_ITig{kBwtw_`Je`S)X)8k(#wLbQgh-Dre*K0Cgaq(A6h1ZQ~O?~Y10au@i zuN+R5yIZPkG(Y+@z1O*-ENJ8S9e*B_J6%H2h*&Sk9PWP^f%aUxDdH-Md||7U8zVx8ri~(I zgi5#>By4?wS!vybJ&_fvb%uQ{qE?4$Ida|AU^im#p?WwQg=ypi_JsL@n@H#WQnICc!pfCCFqUUc%T{9yKk(UDhzQf1l^)iis ztXu`4nLqYsUs^WGiRn;@Od<`&PT8_@V;AJ>V-MX{c+>uATH|I>=7F5*bq?F4b>TBG z?wr0A(lOO85n&ee@0aUnOTR@q=o8lojZvlFoXZ8^96##KF^z>dMbl2Vk)Tp{K&D+j z(5p|Q0iqvWT>VfqU zzV64H=AB1-6WW8*fG@ytifr(r^Gx!huf7B{Th&-br0bkyYubmjTS_`@eb+dTI51^~ zZCaE@$h>RV_4I~6UVOupvaOp(b0oLO%!)i-)Q*c#?K%z#70pE`<^AGV7p-Lz;YM-) zP@57np~i68(krz^DfGz1k{D+zq`LEe*XcH~`T61p@?ng55f3D>RKqCbgEVB9)p1a1 z=Z%!mPLgTZdC62 zfOQQ;{qY$nZi;cD^gGGj5Xt*}u$Qr%w9{2Ss5z5_s8qAT-Pz2y_nXp5d)6c1Gyqx% zA2sH*rF-N){(wK!z!;aZsyZQ157aMQ%rS+;96ow(E_hJtXu}t+$F+aSALRp}Mm=?3 zuj0E}0RMO<6(x>cgY+0_)B^#G68}XW1yAFyRY{gs0{25h;Nhwmj6?342}^R3?Edq5 zgFF+!HaG3gL6DQ~jFj#RfGuvm9l9v?h!GnAHo|8TZgNQJF6TCHr{|u^a+-MB_v#On zq5$UFq0CDZX+kIdN7#N;0clGw+EeqsKU86oIm5bOkNrA5-Y4<5^>&6b<-D1gn@Up; zfEdrbo*~3BUo?{_Jo&B4t)R|`PIiz~IGq^C170ZktWPd?xziJ~tQvK-Qa*?02I~6# zn$Nu!weBT~Yg|m2wLPemn26rD-f>4`h&{-Yx8=0sFtd;m2I-<8=4_3Ew}V^i@qn%4|ArDqCH7A4$}Bh@L3j{aVf5 z`BUkxCeb14nc=|j@Tw{uLm3a9RMP3&_RI<;V)@UdWz?i zgpovqPefg)g(RkQW#3P}iw~ehSis85^hCR0jlnv}8W}RP( z+{-0S;EO?$>n56aDJ-b1?_uAL(>apKsMRYA#CyN4xt=X>Kydvf4QAMTkQpxJ zPN}*KER)T?Gp_NDR`mG(S8Hyh6LA1b=&TF{FdBiigp&!fv0%xp2BJG_3x6@gxSt0~ z-L{F^Gc8hOsL@W4AE5MH&(|)KHxlrYbc%JL1vMklf59jR7SJ4*e|3UBVxpe1yx-7s zUS{7G6yfGl@x(8bM+)jFdZ_c?)cUy5A7^)+-`JI<&{IiHb3#*5q(mj&_}5?4_@32 zhFLSOe69Ws29ow)uBao(MuSd23X+WwB=ysgSZ(b9zO&*#Yy}UVAZLuviyd5Ld;9pU zH#JA3iQ`u)e@w6Dl}GXESnsz_-ue=76Z$1^zSSk*AsiA7kF1|u^aBC*vR9)oL`0#* ziQ27n96jiy8kT^&*UyrdRnppJ+Y$(<+=Bh%N}s$|^UMU@AOLLULXlz~W)(71BHk8a z%VpuLHg5Qpyz4`$&yv3MG*JdlhQXqo=||P0j4Ty}x(X7s@Da%<66OXBi>KBwH2&bP z0gn;J7l=jG6rkd55BJh?KCZCK62r+|5Qh^q!e$82HZ|_$3V}9U{ItIlmjjVO9krWi z*3~&jIy}W}gLzIg160eLi8&B!$XsMuH`ETf?Wld<5v9<1Ukd4HhM#!|io zcY@nr&Z~}cZH5SjnLO{s1cq61QLBnrZzq<>vTr6ou10SPtL14x#U-k9}$>gPNtw)i^gLG1fizm(_Z4n z87ionm0gbJy|uj!*5(7zVHL6?6SwsDHLDOH;5OKv%6A;Qx8 zNZIDC@0mE-^o?`f95tMUWpHC5o!85rqA7-X5+pVZG;2ThrXWkJP01g%Sr~;pZF|LX zMvO7(e*Lqayw-l{?X5KLJc$jX4h!dTTL1n}G_v0kBSd35Y=#W=vAg5jEs`$8U=}gt zuySdUH;4b}4N9X=+TQx{S|Gsz9?Ua_P9G<8>;%U#4JN(?n;J@?8w@e}=oHUrm5(#z z>vpscGcL%FBaG8b!8hE-NGM}FKq5M8TyqQ^V@DW0rFbGlTnj`3A%!xx%T zf4?LQ0Sw|^19%ZnA13%=pSIejaZ z?GmgR)BWFl;7Q0h=3Frj5#deo(wR!PdhQ7azrvIsN`fIy90%O7cLY^+x@ya6DeI-0 z)=Y7aF8#pwT6dEb5WM16kEQg721;|5WPi94k?b)>iMM(+zWuWiDC%c z6aVGGub7@@h$P_pg-)GJm1=ceMl@&iDj#biuV11n&kCV%oqoe=5 z|8wK1aid^#esO>HFXCTB?qkm{pTK*QNJQl3xiZ7sK1cxNcZH zdi&sx_8Ua6a21g0()w;wth^LlZ075tZ>RfU6h#P?X?sT}ea|UeRFW?VbQj#i9sld) z{0xmDA^df$K|-iMSP11)EvzI#F%$^Y9AF%VeJG|VhYQb_6)%0(k_^lkgZ4iiOvc6n zH_|uAt`U_kglegd@~Mt@o?EowpRuj#iQ6w1C!On@UZN(+GoI7erEqq{Pb34$P7aiO z$Q1=Yk}k;&ezX&S@kCQ^+m^rG7Ii+msrquUAXjK(UE*TZpy@}z)lbLf^;ZaL7YV`{ z3Ve7l+CEFeZ+#L6r{jisQpSm9N-}I5yRD#?4c%>VW)*G3L4PT`^P(8kS80xBhls1a zBkt_52+gA+eq$XL^Bo&)X4Xnu3hsJ5ob2~4-(0=vYVaN&wVo@ar2uR%PoJc{!@DLg(&PFZZ0aLTceI} zpq=fTqph1$FC(NiOo;HHWBf0uBo;ldX2KJ>S;iWta=vW-_IUEWFl_ISLE>}d@@I8{ zF}*^2J)N$`I0t!73_|;$FI7I$AzI!|CsA!tzj57E*8TWrlu%=hN9zslFPCOCibr!H zlYM`eg8A0sjtU#s;&cUlk^`wBUSO!rgBShlfnA6D%?G})@oSE&ef!6GGINMdn8J}A z>HbSG4er$2e#4YRGJijN?~m9rSfd$t2mRIixDN<1IXwa0(oNGu`~y-8(KCx)jBb|bH&{Bmz_Ad3?=-M?&krJy5d@OG9$Bx2`05&?p*AWU9cAIrL7P#5L#cO7)P2e~g zwjljq0yuTrZo8F0(eC}UutB<2$mxM!u_k>UAYxewOI&8!(04WgZXkCapu$}htI~J( zIoONN-$3vz*!ywBRU#AG_Q#7PwoO;xj<0bua-4*l-O=p4mGTorxjg=!0TjT${q^}y zN)wprK7|YgmBh0Koo#=kCn>&%6Xfl7Nt{kzSKCAMV7YrNUH~jqOWD%-W4|k9nva^x z9h%&Y_}Nj>o=JyqY#s1Vii6Y7xP+7QwsM^SR=a)i7x}j8YYM+W@042PRw~tHmibsz z@I5YoKqa~n_ezaOFK6kt_grpjNhZMIGA|IDG5xtQbtC5b%#FC~QWFo$<5QF(?$DEn zIAL>r&>>1h+E60)0+CWl2E^6GdWxNC;>u{$Qmc_xjg7rYOCIvoekH{`qX;76fzccG zTCNqfOt4kN;hzYm2d~~}r1U+9(tqfDsiW1XWmB#kY6`W|-@$2S7(mN`M-63|$xNoS z%n@Ux%Lc2tw{u)SAcej|)>TQ4yd@@eGo#OAZV6dZ=eJErGGliX0LVYXO+}#tGHZpY zP;5Nzxl8GNxv=FH-I&3GQ(TiG@X?$B*6+F=Xo!{gHeNJ6PM#)0Dou>0*^qK2FWcJm zYLdk_0?kKoJNFz{^!Rt@!Qs^&g&GlxWmIEV8akQQx3x_y5-mlxPLP^odlB()XmfWUgnu* zKU^qvGYcU%2B%H8MUX zC6@ERS9nh_08P4{f^?h_pd{X~+1*rfN^pDgn6ca_HYXVg$fUPD?#S}zKQ`=8;(l2O zA9fRnJn)u@?Lphc0I~cfJZ%42w4v19WZzwVPA$C>zoL^wmWWt70T;*8UaGJX-~)c z*58W$_z!sIo}w!uMN2z-&N^!dBxmMKpTu?mRS^2iG`hb{E{%aUqhTdG>gjFbOaz_@ zykR1HddPGPdWhBl^tCLCaN~R&5%oCHc-%Y0i@jRFltA|c&7hY?vkE~)tZ>P6r*i-k zfWw_+G?Rek4Un#!J@|6|cu@?^G{;NV6KA+1mkDut$)`Z>SwfnX*QgHu;M!02@&~<5q^xlq^){9=}p4 z?Yhbq8A`N8q(PM7m>18WyLczKDmCRz*L&HwTv1{~kF70OeM}cme~Zu%5v(Lb|I~9j zKV68tF?Ns1;Et-6_N`_KF4E{=tB)ymFD%5)KRd-){Z0)WHIyInY~>vz=^L5 zI41lNUXuUk5aUpyec4EN(eKqLWlK~zO zJvri;0Q9IQxHssxBLw7b_A!+ucUyy+bnU36T;>^a#*GgeKy%unjZQ_1|Adu@9B?}e zYWFZt7ZMKFpwCEe7|8@>+_L|6UF&^Q63EFhc#v zVsuuG-d%4aW7{S%cqK|wo8lyINFhhDI~fJJxXaQlX48E6k3IT=qMl{*`}Uk>xb+~% z4(Td2W@v}t`luXKV8tMgYTuqEBXTEqW9YIPY!W+&b9V}8@uWL839KVwQC4Dz7BB*Q z(ELVYJE2!NauiAB)|@j=*?f-H=8RuSE4V<|5^a7J+i#4 z6EbUXR1vlbJc%75cbkV(N!g@sM=|>@B^i9IA(~%cy*wHT2-u*!D2T0rCTJ`)COZ!N zc;JlnP>F_ z3d}ylt*&la5jM*$yN6mA?#6%{t3fT^M|n7o{(a|=WLVfJ}N_=Mh`ic zqK`I!l351WOJEY2B8TvUPXWER?V5+_4sJ+r+`a5^op8kM5Qo;I-tAvS1O8YsP#p|+ z^P%YVT-rHMv#OO_8_b_ZhTXXk1_az@sX-0c)7RpoWnJu|{KT2P1}3iUo_)AMbyjU~ zdn=sp4R?5wFy>!&L_MAltC?5j?(F~W&v9!>KUHGp=>Jdjz!((qtq86%%Y(mVTFbM| ziF%UHV55XjHoef}eTF$YO$;dU{_uke+AQd|S;_#f*n;&#WzR*B5gLp4LTZ*TI> ze?O<5G<;(zhuV%@j1wsj78gIQ?sFvT=&`OhM3b^T{9z|()nMdBBecj)M+`&d_TX<9 zXp-jHO9z>z-j+AdSN!Q!>w64|d*SSKSv&YGcm}R{ce`$8zqkl*&|cs&r}#U^@k{l; zlcQ722A?_1xGH=+#Xm(fnu7P|ttkpH zzoY+;c^L@H6#*xHB=|3SG_AzFE#LWp{`}R~bf0)l|G%2%k3<-~y^ioOi&5ZEDqpy1 zTYu&4{LvRuHbcF%*Zhg)2fEOlhH(K#glLyk^!6`ibmRaV^atov(K9)qF7ML0EnRe# z;*`*HrQ)E&@aZYUNw|>%Xr5%mSe_Au(w4O!Dk!?AVS6RLNtF^d>S5vBVsgfo{v{-H z<2UzU{GfB|&3_`ZC()dkSau|y*Py4I6 zbo)=srTaiplxg&5>c1#f!o4W6)ukb7!KuCF zfEm>*a`cixi8^jjj5Aq|MEPAp)O-doX<9%+O>uqX!}G8g-tYr=X273hj=GzP zCqHL^iuxEswd0M}AtYtM1}Rvj^yZv>{0We6tN;rP!5aax44b-6p8Qyqth-NzzjvY? zz!awgI;68+4{1z>)oz?ekj%>UX8i7rD_2;mPqf^72$@<9y;hE~I5(U1PDZ|rYI&`< z_Co^akq9a_iOb?ZwbQ`^^yysTI#^$9Ea>Af=Ab#`TQH?3xx-p+@_LBGV}g890uqEMbm?__5WrD+AgVa%9KKwJ z^t9|^s&e~G4BQZ6O%KWT`#GM=c`{dJ(@>@;i*VGQF+{sti|F%tEG`~c7OL}|1lk5bTp-J+$6_HBKRjg1JEIl(`LBQ`Y1&?RkTh_yYohg%oH$*J~c_O(;I&`-@^i2$X3wD{K@Xu zWxMf@BG1Vf+goG7+og0T&-Vx!VN=npkk~Bs{^(tvPMaFC`WFgIiF#ERM;(frHD5{V z-ZW&qzDjh>Elt%>FKW>gg^^h-PwcWQi3ly7h|con_-P}w4IT@#wMLR%7p47k-7gAu z2Z_sDJ~RNx#HeqY;eslI#Z5?w7^HV<%qhg+zHV5ycC3i(eh%3H-4R}E?bltvBxF(3 zOx#u%%%x~kqj!u*E9`#bCj84PvWyl^>?D3cln(EGGkc#tBFZrBGqgfM%}eUZu*X#* z8I=SAiA)8-H%RsTM-!2rq_bIl`8He%z>>TK61y|BdTmSc;q5COLE5Y&2v$tI=|-S@9qwh zBg5{y{5fZjf4co%^i4vhHR0b|$44OnJf`~)hmR!U%qKHE-|duf!HZ96%CrJJK*mURVH5aHI9p*hGK5Q z=MSZjz@_o-1*sXanWDR%z>Nvurl}lQq9poD^nhqp{0dbe%}uIOnp?X5?2KH$_O9HF z5Y|#*yB|56Uz(xA8UsYQK@iF4gX)vcU{R!o+W&`ohc61~wEF;Ir4 z!Bx)4Mc!SDCqPJ{1wu-3$W>Q*q?LD7^WwKc+3lOIs7ji#87_L*owS8$3Ai)U#xz%V z^Sy`Z+5W+BMzJ~bEwMH-)P0hM+b@;Z{@|+w7RG~nu5}HTrmgDeFR-IIVi5F77V6U` zvD=P$np?mWcCY)E%p_1#Zd2Buf*yCDF-$5b?UNbL3%;W|9j?GU-CTl~TXSfPn3X{) zNtY!Na<>1PI)R59qr1?wk`{5bE2lZ#yG!$9rVlpt^#-vSYf57sAMS8o{pFK3<0FQ{ zfF60K0K^3(HR8v$F(p^I+;cHo1o@v_txND3pO#sSQ+{f4D1(pi$$o5(7jol!Nva4I z-@~&bo&F8NvOJ-JRwz2pQohj_?-B>>+>`o}o8lmAyhemlo?j~1VW_UQvkKMX>e|Sv z>!9X%qz7O2c?%cpwZoZWQWh)!fNR@l#p@sqQ`1A-?)%KZu`Yb`D2*oy?OU|>VB0c8 zb#(%hY1gz2-b3@u*8H%5eS8@Va9kb%mf2#A*{zpf53*mIK4pZX0kIoYx)e!PC0^po zn6)T-9?RZ(_xLd4n9ITkU*Q7(d$pk0?7JwI4`m`zYgSJQ5dcoimmv27m}M7RVR~zl z=!t-n8r6rO!+-%HLS>A=n-f@k(7DMCSrEfG$I_}?IMCVV8iDh!xs>Y7d>ew#U^;8P$ z-xn&fwr#KnZywdi9h02rb$B(EelgTYl!pe-q(DD}PLTaJQ5v?eXB| zp1^{xS<>^FiOA`i^|GF!v$phK=R~XPCu*V8O)a7~El zdCn5BdPJOoA3?xvIeenzZ}1a>M<0W(-_zKWH%IB zxF9ljRfx7aIa@w;1(C_Yn~BC$RvF;dQv&oH<=XJ5cxR@BSE+2mV+u6yqD|aIumSVE z3~>;v>qapDyP|ZKJSXJz_bYxHg|LfGcu2k3|6S}Y#Rk3RF+pSfQr8EuGw!C#21b(O zVwex82#q2DS;h>JaCvwSQ|9j!#sf7eZzB=V(XTLq;_N^T98^}6TE=de6* z!=%`MdXd6B@GzBUOhx{FjA07HGP{E~QO>|ok?dv-N4wqJ1+oM>4Vbf&3Iq^Mk=vIy z7sLgpQb7cJluoh#g@a#?NwFq0hd+5+ZE8=ILUI3_POi6;Ob02EZLQZNWcS%+beCj405^NuTKicY%CBw+vPc< zzDTL8?&5SV^(?x~>uUb~u&}u}QN-O1M!Xm;M`zsk;^rwO{rzp9r&^ zOM(oo$4_Jp=k%7Q;CSX&no*HoH_onsyj0G}4HSc&d88YGZQ}&P&FG@Z`80qXZ+n`b z?)K=%dqNzGZDU>U>4b8)kK!?_LzfwWLzF^oR_Utz$LG3<4(RXXRuou?QQ|oJRc4Wy zyE=ExdxdAB&VaWdh~EGjT!(w(PgQP_gDr4&EBX00m3VA`1pU{xLQ}3%;$;8oc=`Z z?tf$9{w#jCd*pQ%FcD-U^xw`4O`-pAH{Caij>)90@M|295T6*lT=>i;GF$Ys4A!;l zU1cbm3|6W;K$t4MmE0Rty+mK{BMG+vUKGH(RK|z3@RZQ}z=ZwJiTjYf=e?k$y-hZ8 zo7(+g2>-XWsaR~985rPn^u?l}zDB(P!~=u_z!w}TaZ*$INvLixlox09uOy}Thv0Fw z=*tU4v}h9^47=!SCmAkc6a?!}_T`x381Ur)oO3zE#VE4p^rD7k#j--SEzh*UzNm1_ zc^mI*EW#(DC#9htgGgIFV?avD8J-RL`R## zhO=S&3Wdv`|GR$}5w{lSsV==r)_Rm^<0-gE&BkA|3INbdzCYO6IiAmvC^B%{p+rL1 zJ~W3Ble}g9&wxnD5%YgMy=7d}|NH(e9}q-3q(+EHsDvYiG)PO?Gy_J;0BMjCQRxz- zOH>fa(H$~IH;yq%iP15dQUCY+{;unWH{}LAcJ6!~=W#rb`2BJ>)jiP=SsF32buu*s zWq59ufCVTdUh}`(r1}6}@)6kRoztx@B-?NBe+q!od);2Z3|Itg>^drNt2vEX_y!DQTa#yFVCXz|y# zdsrr0NA{;Izx`~>f9EM1GF5fDdj`Ew5Ao}+X7YEwauKQ~$702q$|(06ZU}q(7u7<0j5QJd#=shSJUy%; zKonz$drl4LNBmwo=!ZapEaL>yt7l#wLX*boosD`4VNR2Png(>q%_dk&?YQ@|y4Ia( z@`MCR@$AzJdPC%pJ+hPXj=CY6QEuv0484o8OHYm8kK920h-s_26Si0rASK!XAFFRt zj>lMHuf7`*d|Ompy0`r&19%dVldkb4-Y;L3#aiM_uz$RIPw#fifHl3eOk-)TB%(z_ z{={EFRLC$N8q7s)dPoeHWg5v@ZT8W$>p?GHB&Mp%(UkV4)o^SWlfH__IC+kS`bi#t zEmJM6lZ`#$mwAsMJ)rOmL$SZ2AA2QlafRVri@i^@NT-)+XiSh-XT>FI!0b;S94A+A4#pz;e&V-+6LpTXY0!Q+(cY%A}*sBsYrY@XH-#vCCrf?c`f zV3%|v(>v*wG%Tl-L!g9LBXKJK-_A5R8zAM^6e==^(8LPHGeyD+?&-{f z`EN77rjOK2`v?*O`yzm*d`7&HZCoO7%9rIy7j1M6>pY9Zg|p45ye0H*S`4k-3?K0`^jxMhm3~_qtmGgMr`PzCJNo_~>hJ#rOx{?x6VlxfF3BN*qxreY zxruHfz}lDg80EWa?dN8hgnx0OA%vxY*L#N^1^sJxe+*g&+4oSwbZN4I#?H_V@l?Vo zqYkY0rReVu2T@?}4zc9GDfIV*lzt$f&S0=vpjdKavTBabR7!iUkHAs!6&`8NlS*49 z%TY4)`KuIBEN*c4b~`xO97_H(Jg-uOw4G>X1gvn|=757Jv{n%SX}b~?v?)Dyu!;v$ zRnu9B00pGS!Sg1f;H|p50Yem7&O;VTFo}R3=5`PM3O$Kb1$*L!xYj2pJ}+vGu2j{i zPAxi#q?mgMHkm$})}lNi(vf^#F|5=lWt1JmN3sN@fCZVA>R)2sfjKP1C+Gavcolhv zV;HHCPZY^WzKu3(lh9}JZhztHRi4Vg&eZ-uj_om|2s}|CR8F0|_h~!oxDo}-C&7hk zJR>`=iqatl_Kcc5X!E5`I;&6vHoUOakOEK1Ir{glSc4YHzslMiL#j*QdzohlhNh`` z;nHvKUNra1g~((ghGu}AYUw=d8|lJ&U9$;2H@zx8l*@4r5k%e)H6*;$R1^ZZ4SW5Z zfzl8)5ESKy@mmz0f_D_SS*d)SXxrOk(BwpTt(VlgNOx)Qkf6EeC0Ql)`RHsy+d1P8 ztY`W!jSOrVPTNdU5LcT-@7jWKpy(XG_^~`__f0n2V`uS7UTac8_jvOfGQ~eOqy>1H zbuJmKrKda~D^Gt2fz(lvI=|KnLbyiCBF#p4aiv@oOzsKP6DDb5xBQI1AmTwq<9bFu zVwUa_!>GE^%j83s+><-Kso>BW>@@vGgmyx0Y1GY+*x^?gD#Zb@Lb>4;RgtvR&+_ju zBxlAH=nf7#DS5b{6t@!tCRW`0aU5azyO7Sva_xA4AdrYlq`8TMV})?QEwr=`h%w?G z=Yudt^MBDTk}hM}z#av>-b&@Q1<9LJb*;bktIffS=aw=G$E?0$48P^81bA&$Pvkqv zzP{|AjfSd;1xot`{}X)lbY|P@OcVaZd`z9xgCEN zA7*6G^9s9?e4=b@V9eZs?)Gcg!rodCFaLsjf3Ch&rHWYr`Y!Ku28&e$UL!PMj@~Og z%s~Kh(4ng7gC>A!Vz>nhs|b|ce4M5;^i}Bz`G`s&@9xBCNVfl0y?u^}OUkB7S+p(M z)_>d&Y`E+Syt;{(>;tGLO^(ufr}lbpX8;hwJrN6Q2RykbAZjBJrb)=}0!AFzMCpSD6$ec1tI3IT!GTApCJw?0jxVp`CHrwH@ z&yLt_kn8=60_nC+RL$n>=H6?_oLseyux|rwHk-fR`8mJ-Xb(-*V88mzrm7QQ?9299 zblq+o{$G;aiP1@is8IUz{a8;r=RMRI2HD8R&`KCA8qBSv7Xym3RRGpwlMa7}5E=cs z*>N1v!+$h?QbYt$FEk(crj^S;An^fIa^bV{P@pC#VP8gSmxw#pXRoEW+gsQ2ggwsN z-uSNV^AotpY%V!Wcg8C%PUZ^`pgrjkuw4CqbtMg9$}YC8L8r``T|$s_Qp*e#J_tky zwb}xUx|gI$#wC6wcvjwIFNB=qN0dgS`=rxdiN_+}JbK=-{`c7BDVNAh8>wrS8;X75 z_D5uKQ(9c^NIvyDO^EWHm!DIV=ygXi50$m84IXRn>R4*$>Ra81kT5XwMv-lH+p=?Z zUZE`g4A}C5a8}^l@1%ckU%PF_GN@H&{kPwG@h;PQ$8W+yJPaO-z{dIBDzlq2_sqZQ0tAQOh-viDJ(fRg=AZqQ>_)cS5it<_f>o&=Z3L$m&=NEa<0iawQ>OE;I z2c&+|)zF1|{1HmR7q)QN0)K_d-j%C-IN1QMAVH7SG2(-n3)=jp+)CwTa2)*cI8v~D zHB8i6i4M4M?blcD2!r57qPHF?hS}e(Y>M&`j|EPbyGtq17W0k6m#)^z5NY6+nlb(2 zY>kRoEIb^G#B2fvEd6CDAKx;9bf(qEW>`gd6wnk{xJ(!mTpK zTG+2=r@C_K#3Sc)8cpncoGH&axwdiT@J8!nl%qMTvQQX`85<@Px6@FlLpxJvslTX! z)agIMWw`3QO+VKV2%lQum&E_4vd?(BV5>87@z#DZ+}UYB-k52&2@p&M*QRcuf5fC$b&f=M!6+jQyP?|vsqYE z!q6w43Q-K)Nflqdy7L~)$DYfG4$WVLrDybqr!m3CFtjWo=ny?fDOJ(`CgCP`LsEH9KRk8nSt_2FbL~fr071~-kFPJ>;=uKam*&4*{rc7oh zznTXm%2%)a!=0-X{y>1kn5lQcxF3ve|NQ^RbsjsMS$yOxvUL%~=+UTO{+6?Sr^Y_c z8(+e>(*e8iMYpD+IBJ@7#xk30g=J6MtyjEm&vYqec{cz7{|*hK>kqdDS{7xT#D0q# z4L)q)>&SE?>eTf&zZLzv$X|D(Q*SOpSE>hRazg&I|$qKfvXcfN{XKWKZ+_-#JqA+py)@b@8`pwN zW^&{!03WaV2g4UUYofirIMC@Qyim^f8B5}WbHP@0Z*@$X;C~=*9TC?9sAB$(B)%H0 zshuw9?+Dv&`-o+6pu{BKyHZO2av}IE?sQ*14=BidV`$yV)1nNxeU3gXD;IqqA(%;+ zYy(5fficF@wl$&RY`Ls(Kw0WBP?4F*)});N&&I*HwoG9%Ao?$y z@xBjrL;5{><~HZjyCe1K1U{7NEvyI4L2 zf|u`dY?624;k5r62~${F?am(><`Dm!yx4fQ#w?&^957Za@Wsiy3olDPzO!5n$?aE- zEimKTl=raAvYUka1E#{7SU{p;ZVhQn`xqEG^F6LDKksrx^QMO-4GuYhoCNFh#fGyg zmj@N|t+OxP@4aP4`q{nPcR(tY3eRvD>vuQUf0Zi7Ww+AUz7m`=e3Qb`suH|jc5b!V z&X5&b9JC;9^2$?L8hHgY{rfc+xEsEcKYIHd{Br1ZNkWe)A`I1s)-4aQXjw!BPa6%` zD3zWIlwG>SvuPNU!j@t%vA!8z!*-^iUfK-cTHiUT`VF02vYiTj(=K>I>c{?ubnDNM zY&mx^)%r8EZ&enKdF}BypD%l)_&0-x-X^b}#}^)07X2`oY?@k2NhLQ?QlDw7xpi;l zHX#jg7{Z@1%c=lbrS3I02p$+z=ZDIb3`XjcX^R={S-vv3{qgU{JONh^v;w-MCd?8` zx7(r+L2^?WJpt0|j|p4aeo9Wo++Lk+BCF$)X(*SQV@NSe6?sy~_)@vV;`Q-w_%5Od zo*|?5Kr9ESGy9)#`~6n;=Vo%Zp?31uhhNKkIN6Al(+tH*4O|Bu;j=h8ZxVugPxx%a zqxms;B;+ZJU#U9=02K&Iy&ZZAELdIW?s{?82_9jiV2>1suy~d8yQy2hqkw>hrn%o; zDZLGbn(zkhleJ%`!AhvLq;xFypZ*S42LTEolK1sFlc}_Y1TM! z*PxeGY#jZbus*|{y4z7Le=^}GQN9B3Z%Q}%Ox_gU!eJd2NDuE5vr@u!*} zzWI%rT37FHz8sVHV2vDTGI!x}!aTttYzN=X zD)V3c!~WVC7&)nXG|;9Z)alH0Oa(puh29RnJms>F-r?;g^^POZ0y>t`Jl+0{)`z8f zaqfrx|0_S)3i-8VQx6e$DUFGS`Sh~`P@%_3df5YVCY7LUgH%D_;=k|M)rqKTFNW$s zFgjGz+Z&N7K#vgsK)^qT06of%fTBh4G;|&yNFwf66t+yPjFDpj4#J)i`}xq9uLs<~ zGckWe%c|uheU17#>8d3##&|O6+o{@*9eT)TRdqdjfGUhiuPNtR=VqY#Y$}HBwk@-s zZvV9gZ5u6pn7hVsw;dY|4VfI-0)Cg`lizjW+j3;fWXjAY*WLjld;s-$f@)%b4HM-4 zE0G6JyV#WW5Z8uH{t63Rvt4+EzRgKx?>6&NulHk}=7ye7TMn2p;F*#2G-7h@VgK;s zx>Mb;PGaj*Ah3av04tdhUAjm`=m&1v+$(K_hQGPaPec=&G=)-E$qQB00*P*xuRXMZdxPQ7R!j?I45OBORCpNbM6`=%0==`rk|8myW zvY`U{C}%Ya$LH#F_!DMX3*i2&vkvp-ZmvSBLP{+OtmOp?_54pxc`#wTstNucl9h}8ze8{Jv8mg_H(QIj4{3()g5!zq8S=-{W(QN_ZqqLLJx=u3| ztkS$za<-W2$n+UItb;Ikcz~^!h~DdqKrG2;?Pj6%U-DSP`voXsL>yOfcOgkT>>V=m z#LKEhXp23$SFA=FQ-8(@>l={w{775TjJ zO1=o%YoVq1pID!K;^W9lX!A67R}gO;F>xisOUm4k%C1m)@0%XrX%cKg<8(`g8-?Ql zTO6QfKVmXi)-g-m60BL--dM*wA4~94vxhY$eWH!T{;mwlm443u>n206lnt2~J#%lb2njJ}zm z_VHtM9m%8N2YpL)@OTDYY?IDt=rn`8>1%ME#3djB`OL=38^Ox4O@UA7hm4Q2KeNkM&HQ!Ityz|jq5a|ePs?z ztUIC^y#WzRfN(Jh=#Stl-g9}voscudtI~mrH4I$ejL5t(x@Q-0LHl3#6{_!trOsI1 zTk_`u?WGmJk`}sa`+wEvTr^L|BB4^QD-Xyg-s8dgsHl=|9F%YFbq9^y#_=ssPpNhc z^8}?`fAI^)^)!$SMTI7JUb8fcFZpKv%|XmJfm6kk832<~M~UgE z8v5bESDfx^;=(HCKLLQIV#EAPaYhlT5oT<@p)cXDdA?aR&VnyUn92*! z8Lx@GEoUFZiNJZq4LFguA0WIMt$pcTM%SpT1g#|=E8Wf>vAE}fWnFYZcjO;G;NUK6 zKE&F!IMh$U0}IyYe+akU<^e8|_Tew^X)7^aHs}urR$0-eF9l#|rlcuQ>H?xvKX!Fjk(Uy6vG)%Ksp6m(BmPLIN$PU4M6#{6mC=8Er zWDBs^71Ol*H>DmBLua+Qb7x~JVBK`?(S-k>%;qy*+?lz*#0sU?b8GX%ckQjfa9ccI z`!vnr)#J(T`tE9Kxsra?6;Ovd{YGuluI`yyOG1h9CQ;Il7PGnle(kk@ujUYxl%kZ| zisWA$u>7Oqlv+kwKG5V;`=)1?vr|ezf=)L{{1@^hT5BfoY1~-(uDf0+)B86A!al`B3*wFOu^4 z;QHrE{+fCl{PgDjXSNHiZzRh^BHdY?=_)?Q6loBBmI`i4CB^n-#2MElwkETF{EJEq zh_e0*a3O}&j(|1MRP0fN%(^HJ(4&3+KPcpb7Qvb!KuN15H?-!q4Pfur0sK^>mFdI- z04~kGhVF{Dm2u+Pt|E+diB--Uh%y6S^B7`#Q3TOpRXy%1-akM&2M`;H1-)@HxKysx z%Au(j5*|4|FH-lY!6KU)I#OD6jQW-BwgE5aCt3654RpVnJCu}C<%?iGXaj3rHb8Cu zTTwsJZR<+rzhvx6CWR<9vk-pu6&@4M=ham$J{Rk?;U34XJAC;swoSZOAd0h;c0%Z) zPZ=6t^-M0&^-pqwrtD|prtkS{#^?@q%YSwKrm@u-GH#fJACyW zp*SS~m$*Jh$-qAjEZRReggpJT#v_l-by>+_fRj$T0H-F?TO(FH16J{A(bm5-t{B;^ zx`mn+;E3va4!9Dz=aO`8*^!cKU%$%8=nevF^;2HgHoIo0+Yj%)nP4>*|4o>ijQ?7} zie`soJ0ED5ES^k(_>jHUpCI+lgY>3Ne47~gLvUS^DQ_1j)WkDd=5kR`NqeGDqo!`^ z_w6QA=`$e5Y;a~y>YUYc6$bny`i|o}$eU&TJva(bxt4f>AEd86WbuN?yaa=MA)+AB ziVhNP;b=WpyyX|b5BkzY*BX}8=>Qd&OjgwLdp76i8l@gmVO&xjO41@%8rD!YE8&tM zn!t5-BjX3Sx;^cEfj{_F}Gk;HP zd)p7Jz7Jh=4=oXX(`nZ~gH4Td@0Cj$OWq(4lN5AbN$PZ&Z!NVxYUrtsahgXB5b+9w zts40wSaRkid6(OO6lXM;ZX^u-kXiPwx7vDoE#4`)(-%pNxeGEwoFG{&0hpwibKsUo zjt+RnNmstDGkyt|rTAZ9mu5LQEH0cvWryMT*%>Jzt|>&p$x^f~_Cbkjug&8V3AAM? zilaLlfy%kqFNi6r*L{W26li)+e!3vg3i#3)g?~FPIA*5+Gx1+HvGeQc^5_Ay_3%%c ztU1?ogxb@|BwO|EejD?XLgGHZW;g**2* zRe$+g?l@>3rezP@4+IwkN7$WuR%q7S8_E^I-j?UUPvlxtjmw)BlIW%Kmg~s1yTEiQ z)?`&avETcZj>$!~o7?0ZUu_zg+#j-*A6EYE@@Hr~=4FdMi`OkQ_z~d#3emsc#a2lx zi+G?80@+f+W2gpJBWOzgKJ9AL{Bv)Iz4!*0wdMUmN9`YgsUI4g-9O^WG=cg!19v6o z;vM9#g(mEQXF1ocer39v@ z8?!(x=tKkg+zKwLPhxkTfw{lERNk^FBXRF+LbO{dH|qxt`OhY{ltC^43fhBg*J&Ri zx<~9zyrf|CQ?We#ew`=ee#sSGa>L6&X^c3{ABGOhmDp_ES63)B!P8OSsMTbyB#xF@ z=d>H-ylSCBb*}?=uP3;lhqrDzA>VapNNuGSe7X#!I!p@`eVtd@bs4xfAYHKiGh)?> zSKzK#Nb2*97jd|e??N6J?xh%l52Tdi1kmWPh#cVP5bcIG?mJLuO7w}6IgF>$AwG!@ zbBqlJXk8fZb(*|-nS&AO_sdCjGE4}S7?PLBf;tBPmE_Jm*7*4?aeWex1?KzG`m0PH z!8`~_eV3*AG9cjKD%|R(bTbipq}s`tW?XQFs#ESyh=RvfgQ2=ZYe4lcf6<)HZX-Yk z;lrU8qk)@h%-P9Ma1aG<(V1bdZuvWu%;VfTCpAhCz^(>;`A$Xk2&8KsRO?*+yw_ph zsbt)1GR(D;Sb_N)xHO1hV=AO?^{MolDH1{NO|I@{Zdqpc4!RD03Cv$6G{fW48dCiG zyEln>vJ!*9wP$zorNCZ2RHAj3(>l&^m)}g>rzv8WqlTZ@ypyL2I-Im0JNo^vtHGOk zg}X@MadDa7p^Lf6PhAaT_<&3QC#FHhXJV@J-IYdy&i5ga)q?=vfA5RHK7)Lr8@rP( zc3T)mgD^@)J_8`0D-WF%MY6Muz093+X9`BJ)8Z!UM19YK##SAPF{1At zM!pfSL-2;Sp+a-v@1A7d>gEMzXcvyUov-}?$?XVv5-xW;Oa0uiGlu=nZ(Yh-E-{?a zd-t_1TW(VV5yg;zo2<5OK4>!D(gl}K+nzL*o94Rrjp$J3EY|UVE55|5F`X2EDTRmQ z06?&(!`;kK$C^L)G>9F^KAhBT+`LYDz=0aZC zf=zibl`Q1+1Z8sXx*2fJSU9j0*|}<)V4H1M?e)|wPInuxa?IzMU4LINfYsgh?+s2O z>zBD8IgRvm1?qkBXfitDG7cE4=MaU}Jw&2pTW-{u>p+Tq6JTYY79Fi)XO6OHY;Gr4 zms#Rsu}kP6N`+n%=C$Tp(KJsdKhn0mJT=4OTJD>FG@GguK)Db%lu^J*(p#TFH@290 za%Z_%d(OS(x_f|IbJamN%lb!ATX1%UbGKj%&D6*KcTAADzTNN_$8W4YZVT)YRr-?C ztwvWK9+g2O!ZmBMom=|3e`2El@^w>9CgE>hBe*Jdo9IT4sh&0^^xu}13vPh_gni}w{^Z%#ocA>tNkj&-alIBdgTl<;+7RQwBpQTq;PY?J7X zsu-Q0rKF+4!N;-j<{%b3=f`VIb0OILr_$DE8Gw)&(0K#se(dT__Z_C(7|vxnPdxs- z`^`00M#1T=fu+I@1KJJGbxa?ioi?%Hv7^w@GN8Y;JGI4>*j1+#?ULj#L2wD6K)CD! zJ`=G(pYg1IpAL~{nPGePY&nG6-Uoy!2=4+^Xwp5r^USSP4Exq1$88T@TVv0DzN#sV2>&!B2N@!JB7 zTe*psCDJn+>0p zBGFBt$*W@SXpn1@+d5G-h}@Pv2As-!$9%6Z|0)B_LtYny*h< z66$$h)|8YjQ$+t&l`g4aFW`Iv)zAWEJ|#r=nyFxx=O`K|gRb=g&i%2i;{<@z=W-5w zqs_WalIp%){y=xzl5AMOifr_@HS@L>3jXURFv7p2YChG7*LxBdW585dccPuEC9b-o z*QOP(I;{0n=cazS>V5qy+P|zG$4)bBuCo8m=q8g1= zZ4BT2F)0l-Bb^{YaXEArl|vq;|* zt|%rtXJp7H)SK-yyFbXr^*?_5Y%YzbhQ?eIw-ZS8r*=WF_3ym;KxY zJr=tHu8q#E^&{t9b&7-2`xObztt|iQ9$_8gF60A^?P!Y6;*re{H4+TacL7RezpWN9 zh2kIDRnTyq3GY>6W~7PfC?>Q#;HN>rFRJmtbdyWWw5Jj3moC*7Sszu89g!MC7wMpU zkMF|dae5nX&ws`0HEcv--uEfZ0w3xEBiHL=o<6@{7&p8o%0V)>=U(Ok-K@t4h2EPcSzlM|G1Aa z)2qu7r4$+}fLX<`96}D%F3G4!n>gMNJ;923t!%_Q8h7pF8t%`9>hG&s8}&Y4&A?yf zHtE#=OWcu}6ukl?@p^26|hDeB(LO>cN_ey$TdIQNAF~<2fSqfeXN`aRX9DybLV3_-ee;sn8nN~>^XI;wS&rn{1F>;zlG6KV0l^~azE}-jtrK!Sa0!7Sac6qaA z^kJ>-OI|p}?My{szdoJy{fGzo(@v(oTJULJH_xiEpEcQXiBHu$C-?A_BVLV0)LEU6 zau|xHfEN#c>`Ykl^EI=v72Pd|HXJOq5vY4TeA5k2CK^b1L&q7N=@!K^yK zO}w(^_#5%I1Yp@3;)tOx^W8q62`+|WCxRHvAin(@^JPkcD!0<@BK)Fz(lm)bY8n-# z-zLB1Uq94nDkXt`Ukz%an&~A*GFsLhLJRwbtV2(0Ku$D;AAC{Wl4 zU~=eT;XqzgL#LTxoF%594;b-+hei=Y60#^QsyQQo^T6CNb_hJkDbuL>;S+O12 zBsT>E>P8E?npN#H-B4&13a+I2=IgV;m*-tx>;zO#0rBVsKZ@y;b>G1I&^hU&>7Q%hxjZ7q`#puL@c^085cP-#vU#L6xQn`8~fX)!l z*MJKA7D@Hz0aW6IWu|*yyUgBx0+iVN!yD_P80ORWJqTDa!-6eNI6JV%ULeB~`=%A@ zr$R~4kI@Po3NYdEr5#s_K`&uPWQoy^s8Owm>>%?Ta+7~oD1n0qQ^am9FF2_Ij`(89 zq{e@Cbom7!x=Fht*reN=0SL*A?0h(1&Fsmbj|&%Izg*Cuq;+uf=b>OEc6I*?_M84| z0}}=EwD=Uv$s3eN?X)hSTPa>KKTgo!)xor$FqVI0EIJBHs&vPET8gY%}x;7h0 zP6S)Kq#h-i2-$CD{53MlQte)A3G$4#+hSyrWYf37@E``EPvuO)pSl^}GD$KrGd)P3 zrr){gN}kYd$$r*W@@!nfEBYi<9IT^N&j?XSe@+1CAqpruuA%Z7Do&7yb?6rwD~te@>g|JW z_L^&QYEQ0#Y@Ymx>mVsgQeV=U94)xGoIGU`aw@AB1O-iLsHiw|wv$w;+rDIePfJ3^ z@Z~C*wlbN@sskU5qr>)-bV?YU*)Fk30#F(f9hPuiOVeLLsr{hV;N^gC1{P2B3<>&Xb$5xUTUq2GepM1znj~ierm@M{(igS!YU|C$-Xk?fUV|S z`Vu$ix!Ll{T8~iIrQmWLs&pJ$O^VoLOQ3saGt-@(fJv*q<^9V7BeJfFquf6!riv(t zuEbGS%wwmWPG|MigIi$ z>LXK>7w^+Jf9l|=Qs1V}reLvAID9zwBQWngmo+di_Aip}6nV&KYCW-Lio7^xg*`;S zES6a3#Ws}MM}HBi9JHpk7VbUnXFC`#Q1lvtUQ3ALVXN(-Tvjcg)GS?q)Q=XQ_)~aS zicN0~^m8;8l$<)vO-7v;pi2&x`=$La`q?;x?YI&GwcyYrUPll%ye4m8XSwyXu{9&W zgInfa%Y*sGmi5L4MFfLeONdxr9q=8YboNW^?AK1tHCw9*Bdrx>-O zQ<8(H&Q{-8{cO*EFdU}n={)D#j8Q$C-86G4bA@@he`+R(e0^| zRs{cgqD6hmlgz-VOKY98TKm52%Poy22j}eiwx9i#46q05RA?6Gi~MX=D~mClE6Y;r z-YB+du*YyIwDiY78raa9=iAKkOhl&fMg*hu%CjVd;h`-v>s$Iz{9i}#0~syc%4S`y z15d2plu^?oKXcr{*lxpm=LhxEm6zHwqXJSc#q*QbaAPu{gcC`pB5#q_jJ?&8_`{#h z$=+WTtGK+@H^EGD#xT1XJ?fh^Xif% zLj%b=T=CIP1j*XlJb$C?fdf}oCe*!q^FvuujQA+U`Uzt3Qz5Gip}4G2V*T!W8v4t? z0=bz&(-vE%(`y(qIr^bO>CG1t_noKP>1rglp7RvD!Cojj#ObXQzSRntxdvAJu1h#v znM}Btx_2ZVDOSZNrU&I`fjvW^kbg77hB)}`ucSJ`!-5atkAjUppGoE%JPK-1*iMnK zjCPdSPPvG6tvO6ug27W-xh{_lVWv^tcIkrs<@Pt2s)dW` z!|uAbliup-w2p$P2sfk(SMKDMr2ZLk5mqzuth@&M)%7r%Mg*JO$rh!vG%PYl=k z7iFlf!aHyA$W>rEQJ74K<*pWJ#IA~W^O5P;#qoa^46UmtSdHiBVnN9t{8>z8s3xfP^yU6lg1W-{-vTy_d^O@(+%)JqxrPc|JEE*yR5?@joO9R#2PdOfKxVxA>j%7f)lW^qh0{{RnagTJutY zT+pvAG7q9@cJv6+lrKe{*Ct=rc80y-IqBBa|MW)Yk4}dEdZ-jwXC~YVDQ+D|3lq4L zfoSDA!hZ<&?U`F1W@}AUg{7&^KWmCR?w0>hA^aww2xfxQ@zU)>k#0W9>`B#_nxKK4 zWwd1aRybUiUKj@^B7{IBNf8x)<1h&rt=&Yo`ay;tf?oL-RWia8n7+t*t7%Iz2!6Nv`pk&pfH1 zmKX(z+J$*C(Z_#G^WGqQ**n!g1hBoW7n+NGd-;5>-OxUU!D}xT{O&{ye23ytLZcjF z8J*i|W1cEy)yO?v=!f-w7FdR&UBeDaz2fX4cSUs{S{~dDN(^X5C}iXqE7@_Ufxjq7 zMh%SmJV86IwjMu$Yqi>zvYdh;qlWlr1V=Pf%HTtst5*=il8n5>`f|S%V<)J|T+5h|^-DL2jq8dn^{>6BaHme_p|Qk&+>iB&q-#)+W4pA&<} z&tejeK|x`cf7iX5zL!LVrIGSOM+ZfmsFSjI4`VO+w}wU2r1#xbjhFu<_Pa^&^ryR_ zRkB_*)8`G~ZA9W*o-ETMTl=|woXW535GcV}E&9+ea}tXE5^Tlc`l({JGf{dKTl^ny>+_>>EvT{4yG>Oz+c06>{@wVElzp#(T$K}K&D6Pt z%RBk^w@uLg2y$Sb2BnM(LOya|Ddzda^wVh>E6wK0`dfO<<5f=ggTd1&MHL=>fR-<@ zZB}N05o1w>8wcLI_$)=@9PdQ}y9y(3L6@#aboGNG+@cktRhscKirs{4@SERayLSD! zzN>4gS(*3GZ_12roc?xeG~bh$%Qv`R`~9+F>(!B+xOb(-R6nNKu&^ci={7ni(W&@C zx1ZPhlOZoHzkPh57WRG3ml%h8*yx%lC3`O2OujAr0H8~!Q*mApeX<>6*@snsBMbuO zcYs5XcSZ0Ha7_%FKh@-PL+)fQ%iH?`DR=q$D+fe6)r5PiRQ7IvgJ>^jIpNtML7a8t zggH>6{`Oiplt1VF%Fs2aKa!7oK)B_tfv~k% zp<>tGypvSUuQ%i%!JKzc2EIgt9;|KS?j1jkbpt$qz=IQJYwrvLZT-f9g4^hCtNUhNdGV&5r-v?6(GJ8*u3!Wk2pcVUcy5o~IgUqz$MqphO2C8V!!N8|`5 zTYC^_VfP^RaNDLXobf56Q-xuBKw-5^O~imdWIFoiKm=0+U6ua;OhPka;Eo)mKy=D+ z?<{Cuy_)|5Wcu>5#P7Y|d98g)%+G^4;5cvE$RJ^o@r)cE%Y(#4-%E1^2md(D zIA(ziP4hy^6kE6;1$usT=aDtB1FQZe1M7<0`iuS62ID9i92oQ2PY-A7#RJ}pnN_^y z)!DM|tae_TCm&|NyW!29&Zc{rH{f{6A&p}{Vo^UB@ivRn18$vuGv3*t43`uI*t6M= z)AH53ogWUg{%sQdCVdl_kl?@e$aP1jlad-8XQphui~_wC=qBOoV8PUZCT^^XQc-J$ zb#r-29b4oqy{0ntUFk1SpnX6Zq&4H%RUGHg#}<2k=gO7NOKmlk=fw#XhxvL4uFXf# zz7t8f>l~0}M`tA$s@%9DAjv6?L)nfSwH?7Y6RZEBvK2NHvq)U(r;0^Wbc!L$JQh zUU4t211JYQ>rodA-q#G4Y+B&jHi|lRoT_q~XLXJe!z&UvopoDbnR(k!AiYLMZzGtF z1;AgoNXG;VB^0AmxAB5rnv5@`Aohk*t$hK z@2)-1Fl57F&%rBrA`}A_? z4M^z{M*GszQ3G{L^B`BLH_hn1kL!gf6#YK4522lf#%Jr>i0wyRNI0#$NZ(=&JP zXeN1UPyP97>^ZEV{d!b?9Nfc3xI$$^xa#~-VMSVaV^v3rH*|9)%u#hCGSE@g#cVnB zslyGikAEz$TJxUt8n(DQs|rNiVtM41z__h z=TmWRrc?spkvJWtNE`Z%6n4u-guh{0(0Yj*W~#B8HsC?pg|~F)oN--#jN93pWQ(L( z4*}2WabjX+Y+QA9ver{IrUgEZ4YH4YO5(4%U0QX~EX3m)C;?;G9$;h6`L^AeT*a_7 zlux@r4f95&I@TcRAbEtwAK1^3ubYg0j?d;FoWBQyBV17Z91@?-^0JYRYc0BNUnc~P zm9rYFDYfTe5XFg%#uxsFaK*Sa315LB{S4&L9nzq|%x?slJ=R`*t{;8+$0zy;;sxiU zACHZ*7XF5gXIy-MT2m2>vgQ!vzwD4AIQ}un)QU$io;4VJR&cqWBS6v8dgR|)3o7za zB_`Pf_asG&x@&WPcSvl?(xqqd$@O7e{JpN3Ur^9uY`J*M+&b7c%= z>&TCxEP?I_{)8Y?cJ86nH^Sx^CVU|^UvuV*qNAF4lu8$@QRN(}z*sBWltTv3lP##M z8Jvzn-++CwW^X>9b~II;3v6bAQw|4HGk||O{`UROQ*yAaTiC`L57y0){hT-5Tr=5x`GR9$>9uFBrtoM0qJGjdS zytTtpXjQg+3m!jCIpg&jm?i;PMm4k`Up5~sHF<>9%&ASOWSa-_IY|*D6jkb{syPt3 zvCGCq407TE{QA{kdxoFjs3W|^tbvS>f%Qw*0gb>P6UDy#|24OS42`#h82mMzG(;}% zC540jio{#0{UtCNQe5YJduFJv{X|*s z0uiUvQpW1(lKhd2>86W*Gp1k{KoAIBEOhvvDBvJ>RzDLKZE!U2GytCGQ&^hwMlY^C-1<&EIhyD4Sv5#)Qe@XqN}FgYmx*=<@d z%hQPl#cxCV?j#xC3B*qD^^!7tVR0G$`)tDpNWuAnQq<$@Fatd8><1-&(Z8z1ZC*O* zcR(+yP;ms6TkI1t7ojv6_RDa6R_MGo+f;ithAwUcb+slsxcS<=!1#K>esFe^-ni+jhCZjo=)kfu^s6K7OKmI@S`~i!%{DQru!c4Ze&0c56ZV zpv`<3{Jl%!{zBR3=1upfHtOw_N))I*V-gYfykD)Gc9r|R2yVqjVLIdtMGhCuo1_Cd zG76N&N~^>m1cLj2)1O>%jGg!8`~oknNISm$F&n2l$4kj>07unINr*Hw-DkX5z%69udm#-jpBiFFA9 zPtd!@{x%}5lXZw2_~I(c?OeS#dyWL2y;WNUP=ZfMfn$|YN=;GVT?EhN*TGfOXp&<= zh&F8oq%#=7jwd-CsX3O0d>^uc61Wh;o70EQRbJMC8S6zq7gWm3fvm=t){&O9%i--E znO+U{)!<1|7muFtI85|5cEXj$<1oQ<*8J#T;gf z)nqb8Gn+NT_uc3B`>#K`a$T->ujlh|cs?HQHR*o@R(IAI3SXkLW_k4XaNwoRCy_fC zKW*6*{LdY{*K)DxVMAu1P-kR5WbOHDMsr@qo0u{1@}oEBX4He#VH$0Ze(p%ok2Mjg zJBRrB-LtS-KxJiobfM0m$SP8GQr4Eb2LVhxJVq~Sw|hQVOz~^Ui&%|k8}sXptDtsi zMLqh&kIT6!w$}3R=+&g)#p|kXUco;)Kfbs_|NB|-*F=;pg&+Uxx4x5= z((&QOi91LB8q+2b|o{N92Cnl^a3y?UDJc%_0+ z`5TTa#pVUO%KS?laW5)MOZ;#jZmA93%GtiVpa@_w4zz^dJkd?gt=tVxUp`y=QTHW#$gg8jUzv;G;Q>-wnNPJQ^|Q7~NKZnN8vwA@+8?FZ!W|&_bb0J{?l} zkx_bi=}dN^7PLU*pj;`9sE+t}gpr$iQT1loJ*V&v<-hB9D@wlN?>YKcHa8z1UV#G> zr(17hL~p-K@<@Ru+sb`kNkwNpnNIoiPQ}D zn5E`SjI)=(7mF%Sfa+&_&1|99&A0L243u&dY2j<7%CzLv67d};T$s?V&*6`f+it0h zGsMc&QNv(I$fs6n=wZ}|M@i1eg8}!JcOG)BV%ZrD{dCg({6*1&p=3Pt+FUf=A!f-I zQJkx8)=x}A?@ms{tD7A|v>z|Y{i_Q?$}Z0K+(+WSVBM*!$lQag2~usrc1Yk{ zL3z|4jM~Lc-HWZqOFxcO;zRTd091EM?PDfqk7{NJVSE!YSDSw_b~cdUTM-*=5!8v=NODL z`6fMK3|2*D&y{R_yKn`iT^2y2FgHe~`)vupwgd2(!HMHJcx_zn=74gksoG{q`g!rG z8BNli{9B}eIT`U^U|YX1^Ju-@Q%hoW@zBn&%z0jhov}f}3zw_L96K6Erc>(dA2{M- za7O)1qj5qeF~__M>H1N4H55_SIM%Y%khG2c=ZqBttsm^FkF6%_0D#P(ts?0Z8T@oidDv{q>?RvJQ=)} zvfr}1mmT;^xK9wJ0X(% z;%J(|({Z|0pws6v-DH6YBM+t?@U6VtCLqYS_gymRCL=YxBj6>XuwaE4d@R0P_N+^I zui4@SouNcKgss$=%`#a2lF*Xx_=Y)e2nHYwSPMk+z$*$v&N%x=4P_@^#nf+s)*@iz=>`XjP>x}9L}4tL72$o216hGPe57(-(U2d^C*1t3Fx2pXI_m=LM^ z0Gl=ro|I^%JTm=b^W&S}w#b}c?8N0o6_lHNU!fRa9SlR7K-JM7_iIFZpnAa;OsGea zCeIt{jH1fP{V1a=v$6+g5`5LDUy|a@vvrdaZtrf`y2kO|>?kGXZV`hoQ=cyUj6o{? zVkO4XvZ4x~nAlCur?=il(SP$@w9d`jG5~+#w5}NU7t)@G3I<*^n+ERzVTf~wQEMDo ziw>ww!(h^!If(jt2g60Lt;RB#M;u?l zP6DR})BwNZFb(-NiV?S&Hsgah7uV*Vvv=W9OQqAPFt%-sZr}{XpkcN(Y}!o8b&h7F z+CqaqPJm?8Sn)g~?6}YL|J$@#B+HAx*DHe-E>r%LD8rm|`iuRTuaOZ-gX=Gy((^v~QsB*Ab zEx7lWnOK++^4BYamEdpWW}_MPjl&(Hl@Xj4*s4>mix@<`Oo&3>A2XiUTllG&+EPl& zVq=U%&|3iV7dt{;scZm_4f-+FV_WSsdYJVs*Ibna1-p$kR7c6;Uy8R5q|0nOur2zK z#=iE+!U%;&li!0cQ7`ne(GH3QzM2Oze>d4H6Wy|SDxvC_;Dci zjP44JvmY6Wc`VJN68M_XXP{|k)%w)GRIwX~vB!VlWAsj6VB#Hq=eGS? z3Le8EnOI5)Vh^i48lbrCQVRaj*!)^e?p8m>-LaE|COKMuIXj}n5>vhcVb((Rq>neh z_JT#Y?vuy(nP1gplRf~Vqxp??YRZzKbkt>Ildeb?hBft(_*%qy_ioPP5 z>0vYvfj9`O?-OACeFINCHOwe^Qv9+>H*TeFLbK2qdT6UEAbuup`js!0h;nCY3dBhr z`YeF}{}KBbrU=nSwisk1v|tWm6P9R z;&b2Td8@L0>8~W7yfuF7uT5fnEplIN+TB^>GdWAX33wP@k%U>V6FmSVK@FMs8e=T3!R)0ri8O#9u11X(#tKL7xN}b#D zh2A(c9Aqp#hx!`tSFdk^#rs@xk`tXEPG@RTf8dckD1znah%rj|z_^WmwJqgD z+)i%Z{$`s}vm4rw@kTvEO?=!=#)*xWB1Qbv^{z}8vT9^*`59>Li8Jc9LQ17gPpwC1 z`+chG4#e4=tyK+^kptz8_;mi|^_@p4-=@9%*FqWkW;5|IDxl@$t|Ga{sHd>cjZvw$)mHr}yCnJo zegxcbUNwHv88t?totffa@YMRA^I zHSvy~<{#|(;D@i4!h<4^73KwDf;_U@w3FfwEzZTove8#J5ZI-)5O8LoD=V|BV#)8n zDQ341XlmX$;o0K0VZ9PF+H&(@81S!Zvk&Oka;&)YL#(%fpew>Q@e%5r#T(hK_eA=! zv~ou%SYwkmnG;k6;(b@ttld6~cTnCii8Q1;1cm z=6ipxT$Zu;vPc9-ZZ`fCnt|SWW{@uFi9Rny;do(wr4n=RT%y z-L*DAt)5YVy`bKZV;hLF7$&8L;7%|hAg_g|s^rddF|u`=Th-#4FCb)vWtLy}u2$#H z2t?J~Kxs55LVTDyB&}!EO59d76x(X72yRW&DEFu)@-arZHZJU>$Y=Y)h(0Rn{-CaDbfJWfj4Qe$!ygS`s25%pjh3Ru3rksQlYN#CCJeFf|w9Sn^dh& z;DZt@(VrVQwVKA)f>>uPW1xNT#K6)hNXTbjyi@hhv$L79h6?4+2avFn(PVVE8HHdo zd5)Uxl;jDyY*}J_<_2vl_t&;T?v48VLdx?=9iQB_*y1S&Kwfi9 zyuCm{b3(kU;E42o);?1Atp~gHNrethnxOdGZiFHS6?lOUr07piC-ku9q}1^bBy8x? zv97l+$(wlho-KCF8-=cNW%1QRj|y9z!U!h=E6^ zthk?}%@@BFgZfo*h9Zi{!gnOPB!A*wT9h4o*~4hCF>4NRh-?oj&;R7ftqM8RI-2!* zti3ZF75yXtb?eMS@mc5+CD9|;N=1-R?v$MBjEUNK4py zkn8cO8B|TtOfUURT*s=}B6Db=<>S-X|4g3$^xODkZ+7gKV{w>y4c5|%<-MJ;dT0E#`L4 zca2fM&*0stz2Qu;m#`@!E)Q+#L`w!!%#zZidobnC#fL(AGiqc>Rw{<$*U}L8!Np>? zl*+IU@|Q?sNjN8r{3VIfWAisZVfx5`7fChfhiy%YCNyAu53%pLvQic1mUBt!U7lfe zrN8_nCn5}OQCC`0@paC-J9Hy^SyOX7vH10JwJ0Do628hlz?*1H3ZEI+8?c zj-D`u2PI4KLn=p#qQIwcokJ>IX&I8Y(6c6qgE}_FcD4~Ab28ApYEjmJN@oAOf}max z$7>l>N#1;@zuWSI4^mR!=5ZyruNeQ~$k^Xhm(TC#T0-l1G~d>-;wP|h=7sH%Ti=Dq zT-LnO0+LnY0`+8l7iPVlo)_+xBm|A(!D`GaQXP_fT3xUql-9T)hl0<<`7?VJvhu~& zh=ahaUhC9Pu8Wd3EDqv>VI9+$r*cDnPtQ-pnnk5T$j>mTR|0RyIH!fLg??Y4cdE1{ zz!#@?5fH9@$6h)MYBr{THZgLMoE7tx=4LK0VjJVctMo;;Pod(tpeT{r3@r;sCLIkf z>HVsZndDz5RkF-rm>jk2lip2OiS9d)76i6VL(RH<)KKH1&I{J0W~xV*c{g=Y?V~7J zEG=xl=v!p-N!a@{_=7XYg<2rj-t$C2V=J11w0&B+vm(uyhGF~iwbA!G4bVN#G!c#a`h^1A;26}sp_6zBF0a^S ze0kb#9^l&Z6H050cNNWjNG$_a&f2x>))%D#%>K46A!_Aui!uX$e z;f%|b$2h(pp%h!do$!p7yCqsN&Naj(l?E?A7!)*$6RDiSqT3UuNmNcN=bMF6^!0^F z^Phk8jWZBhaiJEd=zl*~fT8=Mp|4L3&U8aR*MQ&1#a0kb^NM111)m3VqnJ0{(37pF zL*7;ac)a~WDK>w})~`6Duo|f(Cga;(CsqVxq|IsQd$<88G&&>A5#=Ih{Jj-w){Ts+-R)O@5!Z3+17Yy8v{3e|)={`SC38 zPH|%MZ7&UyN}OZ7HA6n;1? zhT@*6@85i+?xcwyZ6$8C6u>U~j)^X#fd6wY+$&7igdlZT&F&KNm$65Aq>%$o*Lu)r7=tpy$vwvb$x4-cFdG@#2 z!T*g?4X%fRJzzPzv6p?A_|6va9uC`OUd*yI5>+CrdY+fQkT^^48#DsUJu&b><=b+H z$#TX-lx35{PQ=5_siE{EVRD!()I4={c6Da;DO{<2k+tbe>wk>Z?g4cO$D!V|19YZakNKZ!W=VKS{IPAxfkOR;g;Jk zmGHH>7yN77kWTa3kwfU}gHvtOoOQ}d ztA2WQ1k^;`9~67y(fK`H25T=M0~tTG*azd^W*D6L)KrBejJcfH1g98n;PY}C2D$CU zo2J?_G4AHAlpE8NL%2+p)l!&MxFs+_Bi8rukkDpVl?2>Pia#U=8D(Cz|4@O#*mROS z)Nc-KNEYgod6HG6Y+vlg>GVB5qp{? z)GU19W%62sl1l+gUq5W=6DN@YenijM&k$;)Y(otKe*@a0bUm#`|8MXG|CS}Eq5oi1 zA7uQ9Gt$9Tsm%aHh$4Pt9cr!F3+~(#1)59&jTmSC-g^5|$wIUziyn?S9w3xhtMu~Z z%&sh|VCqusIzEAOHN3<0Db1lTR21Riv|K8`=i5Jr>K0z_?fU;9))bmMWMUDOJH0sV zsM3^_rqX)am$DdP`t^L#%OzfW=}$-p$0hA81pv!a_=_rfkz1Kh9}#m;!x7q>V|&u- zxEqeCX#ulqSUs($BF?jKGMVo9!%+D&&8K6gT3{#NFl3=gj^5e)ZoLy6nCr&+v-JAd zbE$=1eP&6@-gK=O%ScQ6u`{i?BcA|C{<=5N?r+ms-=Bqq6+ch}70_0=P%~-008E(Z*Ij z=9^o~1A9xq!u@OKaV}Ez|F^?#G&jZ;E;=$LIxR7xen|d@@w`n` zYqM5oZkU1{N^pw-Y<$Mzx8TOO1o-Y#y%hmsV%QVNrrr7Pm;iP!=wlHm&5+&G=}r zcbt9J+NuL*@2Z`|LlP7v7)?`zpxYf5?RDOAP+5OkC=Jz_pM2KK$x2`Cj}(x>5OiX* zy(Me6udRje;I;Mj@RP*nvt6jHhMaPO=`29Hhe4cw8b4;%1CG78fU&t35um^)QYS(J z!IX3W6^1^Hnz0(=j20!kZAF0WEZ{?RlIM|v+#Ea{u>M)y5Dcg_o2DdnKmwqBW{IAV z^VD|F8A>u}3Y*9=2fumLj&lP|HF~{qCxB*4>Hj{)wba zpHD_6%>h&JNoCV>LDfU^;a(uBQi;-^ZHuVneZsa7KA69%-h6!1pzWzMVb0LLU! z442*!%y%j?TjqhJp^YEtwKrk6y)}NqZ!3K}{vqu~!eY7;z^v(!z)*yr`dHUYOxCP# zmJL#~rV6gZ5e8cz@TW+5Q7rL++yH*%I=t6LLMh zSdr4`D_$^N##b}x!C*vsGC+J+SVZ_TP{gK`eL`teYh=n<5-=`}BF3+b)UVtFg*5P< zfa-D{dGA()+=YhQEn2@>Bxr0X`cCxh*_*9?^Y$;OsoWBFlk&Aw8KhqFa9f7yzaMU9 zC|6~g>~gg^5%i3K88lq^oLqchHvKnKuSY1piQmPa1*iJ{IGvM#s1s^KMl~N~+KD}# z_S_VZF=RAoX%uG7beeWcxxeD-(bt*na3@Koj(7dq4KsVx%c)2vf&WSrBWyv;>WEhm zi-T&x9Rq5=r0iQdk-as@zo}nKO00yGb6ls6B~G!&22K*hnc;VAb6TvS_>fNfMavigpmz+}?nt-Prb7dWWD zolf~udQ>4PRVlr8?T!8s%y;3F4Qr<7Ar#H!Pyu}A46zYP`Ysx39if!0t2?t<;=u8i zR>mtyGWQLOk$kuYT9E3{p>eFoGRq-1E$d2d4xdIA45%=~qX1IO&%)$V2UH><7*IlZ zuo<^!rDpSUebTn&g$CWZQnN}IN0iyE&L^*|n3f}UjMTfZ^fzW9*|L=ztxJQ?ad|V| zYfGcWe>vs&0vd4y%H6m1xK>_?h+y9OOcsTV5>_#7?&jM$Q|T&4XDnf1C%W- zB5HkHl`ki)@@K74zQ3k~=`_r&CI_#2h(be=lZE=hBK-4z7PeX`P>DWq;LX#`=EdN( zWPHeTjtjqbU_JD-rNZo5aJBF{3viG3(mN%$$KQ!>o3ZMXK8pX1k+};@H7haY+-z8+ zPDAWDf#r0MS?gxQrgd6HJq_`9-22Qe7ypttk*N8pYZ@T>7%RsO=y%8Vsu=(L@BBs~ z*g=&XP2bgVLzeOI{Ix&^O4Pf?&i5@7E{M-9XSwi~UK7#Am_wFcg^8hmbz!5j#d0J( zfCBZy4}w0+URSM6eSGA4@9@BE^5)$@S}0x>+IRF(DwCsa=s{eV%#EQ@KAx8e-De%Y z@0PUg=hACcpNTrfHMVETTF5|7%&;XpFpHN(h1NI1`ur+}l9F6XgKyNW*7Cl4Lesd& zH6Fs4Uz~iEHEKx0Jp#LL?7?7Rmmy8K3{q)qU0B6vwdX_wmT-6(nsVzTF06v+vwdvZ z0yVLz)RjBPe6{R6`8?sp`3(CvT8#$+zZVR|H78N}=;kxC(R3y3VASWz<$>%!y<@Jj zN?Vf9N~)M%PN4gR8XAjDlx ztw}NFIfDvDXx(h|ApbsHS+y1bk~xyWX9Y1CQ-aUG29yPgW?Vgq=#ZLI>wwv#xOSu> z>T_{eBhDYhn`}iY(c{`?YzbP=jlJ(x0C}en?NWm<@AHwPcsH7Gmm_yJhfE)Ua1ICCl_MQ76{ z36|_U#mFPFElS*05jVYiG&BU?UgC81HDSETe_in+C!KoIq!R7>6<+ZJ7NjVqT&#)Z z>j`pUj@=J<#kNyHy*A=%ou@e600YtCgOkn_lBgj#48Aou<*TW!4c_+9l`OfSpTZs>+UycyOiwc=6kit+jk9XW;*PI-t+orIMng! zfgGd`DV(PBHawWTz0N1Z?nS2?$&9ATO+x;d15|PZ`sltn&(>_D(QLSv zYgo6{Lv8u5x9CUNYdThrA+}zSt+Vb^etCw#J9M(3#{TgMo{8@1bY0q0`s*{5t@die zmma@JJ#c*Ieuv}Vn$?2dJ+;a(O)TDa*z`ZIp0Ak^k!c|6hl}r(t7>-c5nTMO&r?=@ zTz32DpNB{fVs56R14GIRi?0W}23=)SlW}3yAJ*9?=b445^JhD~4|lFlEu+_)kMc&Z z>{-Nbv|Z}+VamD|t@6p=pCR6Q%2m*+X&71&KTYyGu|Ff}_K#W-(|d#PcZ&YTBbG~A zeM+p4Wu>2B^&;2K!cet%d@EA59#+TKC(d{q0YqDS>5MPhtrzdJtR5bUjHr!K3X^xD zD$HaQY6R~K$(1Dr?t!DhCE7vKqM>LU2 z+s`h4ZV00_V4($K)7cm1g>|B3G^ScLrW&&hs`a$?XNsJpm%HkCeltfvPOR=}I+}QV zXgu~mQx$%@%3gz_sNVFX-g~Dk&8XssR?Wh6)PR|xOC2iF$U{WQJgPS@ORrPWV!OBk zb=DUemd~Yi!=R4y$f8xKBq^rxplaR1{fLEoNU;Lx2f+I}F=XBnKs8>}i1&<4x&FP4HN8p6pi_u_s4{JoqjB@m@wa zBv6mkq(EbuyTm{zhg7~Rt>)D4JhaAmwGC7omjRo;x^Bm``xISpo4oT>3>3~NC1HLB zF*&sH9W_W(U-uMIa%@yZ6zI`YqzHMwx0DcVYq2$5UnR^U>-JesRtb0a@@LB#7*Wk; z23PqpXu#ZHCQjIU9z)jpkuPT1Qoaw?^TT+9-x3U>sb-;Joi5&np>3u&xn3KV3s25R zhk;S4|LHP;hK_0%{Kg-;+ECLOOMaQyCCFQP>OBU_?c%o{>{3G6n8Pi`5+>FJXBZX2 z*#YAjD!KKwEw^WqY|FX5YwP>zEi`7iXLvyO(3O(F>uKe=VmHp+2A3Y&TJ1hM|9=v^ zMSTcu3OI88+6mMRe^dJ1#pLU~k1x-xMo3QSr-L)6n&pUP(W8%Ek8s5PJS*RqLLTT0 z`wHI1ze!y_bjc@0Gu166>|mdvZx>)f0*}$HU!ArT+G8%8`&8~<+lF%&KH=)k7x0S) z=EC#qJSV>H^ZRvFG)ZE21u(lWnl%*N+zkorH9uk@8RsHiGy} zOLP?zl4+4NcMj#*1(_o)H1s5cnAzCQU;#QNNHCz3%uj74y*kB(*9|hg9wufD%IO)B zC>&gmGvoQ%P)ic~A|xQi92Tf9ptlHFA-Gu&sWH(HZ!uB9=m5YFnM0$jdxMrIA$3?# zlm2UlavJ@6B9XQV$nT*0UPn71Ffuj>XC=sO9TL|$<`4`>Z>;``A&JbNt0tS%= z4@ZN(UkBtnMCZ?QLI>2<37a+t^kH8QxMnnP=iowlmwDS`EUlj^=r~BtP822gQHjfQ z{#n8J*l{PI2sJ+FXetJT8Q)nzvx1Uj$I@Insw`aD9ujYc5kKel%aqeG5`TyX@A^W2 z*H>BTbUILb7>$NbuGWWHM6KMfua#y!`TYS}E zo1thGVUhZv^R%5_G#-bjX4_7?rs%|)lg9Fpqv?`SlVkAc`;i^w9gN&H(l-sgdC7YN z?h;Vr-pIp}l3(=BseuzVRbWHrX{nc|9i+Vhqfrff|&|s^#SGNB%jm?dp!H^NP0&p4iyR zAKCZXq4@0X{x3Pd#!~l2ePoXCFJLT9{0%`i!^z)v4j;=TUi5~jY4)Dlt7i>2cvKE` zmA@IU_CWTyRIT8NqZhaGwR6CUpGR>H04h3&3JQY+Xb~M=5ONal1+Ge~=h6h&6c1sS z*cVaf96Dnxz9OwOF7tO!tC?+rdNO6lys|8suP_YsTZv&on#9nH{qNQGK2Z;3?gz@?T$6pn+4lq7*Oz}zndgU9B)@oQ@a^hN@V#g&ogR>L6oShV~oRp+gS4dO%?lVs9h>AaBBD!KXiule*6 zvrjt>?d(+tp5N%)^n`lwo~FJv^Z|DGpbm0(u35a!rTBVA%}TC0yi;FShz3=aiThxm zBsU2m!gm95?DP_?>%JaJ<>(Ypg=Ap7ktWSDXd~ePwEs8337gj27EvJNMC05D{($?& zHANH4d$)etPWpVsbx0^Rj}I6Jd2c7=@vXRlOcVWjCTG;o%N8o8l^-LY;Cl4l_trlp${rlC44aIajy*V* z_*!u+jGqU@52SoJ@&-(pnu`!12ku{OQkihu*ucj!O4dS`+~x}T{0N>O)8{D$?_LPX z&8N6j532mgIZERzNq45b?`5>3i1h7&a}M{a=Ww7KZ$H7wiU-6%!p!8CL{B6_YMYeF1^ z$QKUa^$nv%q9uOV}*M%&kS_ zPahj^ng4YJ3=F2YBhpox3kLB|Dd~#pOP3%|$OB~aUeOEEsKrKv>qhn5OjZ^SD71tg z+B;)r(N#88$CgF8ubYnw>Of%EfIbz~a&SB%pm0MZ*U*IDywv5muRM_5Q9|tr3^!!t zdkyz{hC2E7_Q9S*di$_2<@(^`Gl46Q6t@x+DB!-ow#uK6HF2LeN!)|nRF>JnW41WA zAkU!HHyc=&dCZm;swUuRurPpPb!zDyZsZie40}G*lpVTx_xLm6Z*NFbsr_oeEHDQVl3(qmA+%DT$%Nd|e5q%Q=Ht zzJ(h4uL-89R{q#!57hFxq!@x}2q1OM1VN@zX5=$D#H5sH2J9I???nkf0g&p!I*U4| z>K>$!(rLpWfVG~5P`zV=wNl!{Xu=@=o0+5B$;gwD7zMbqU^t0=iTlPMG_{8SiO47K z=Z@qkji&f~4rf+|%?#Fn4FT~h$#V7sy|^7$Aefiv{AITC`@Ee6*R?xlV?1VmOv-|< zmg<*kMB(1FvRuV&@V>5-smJ&oy8^GM=GBDNt=3_s2()W|HyjtpRs=c0wHlq2v`0LQ z+KhFVJ()(SG~(&yI^N|HZt(%L(bsN)jPuyo`x1VxFHjgeWeyN`zaj|#0doIcNLTql zvZCUUxnSU<#*=TSJ|sO%?@gueS-)z@HPzkJc{a|HGfuRGURu9eC3Xw?=}bmSbVda@ zZeS~0Tn<%4si9TiH|r|$&SMw$_SgJMYJFU^3AFN>JWph2MI}Ytjx^Fk4rZy*6)J&;5c?rzy^Bl5HthVgKzr zUt|0w^bhpKqO7<0KW)js)r@-*yj|#oJ-&8yaJlXQ-reGVZsG2S8;|;C8mN7&RF@00 zUJrZxIP0>ewyUtzKH7oc0x3#;3VxcU%d8_kzY$r@u(fOYn-$v z2vHN}GC++fP0)pat!|OSr7&kZX^2iu(WTK>elf=;l;l7Lp1v`N8r9F05C@10s=6nw z3VE^?!g`d6{1U4&UzX zl92`_K#ENc-K5c60 zG?y*^juqoit@Dh>1x3^1Eb1q4mOfr}vos#M@yX%;eLd(p+YRY7)|Sj>!8fpsQyYK77+I-L!YTqVK25-PE6hP&O{rysKU2MV zvQJ*gef>p%io(mtYI@{Ykju0`^cW_0@U$hU8a&@YgG{&5$_o?7oQ4<*hdGPNDQCcs zp|oVKx^UkVfb3c!q$&Q5V_1u#$+Y1X=IvwHPB=(w+%+{QaG|T?uwi0gR9xTv!P8ox z>d$~a6LlEsTpA>ZTrO=f#liqSts#H;-e8@RFFg8OG^E;T!ORDK#_e+rHSjQMg#>_* znM;e4jDNjrdBeor@jk#_59GkimS1O9LS_4G;8&gd%v?TuZBO!m99iGst8T>_W71Q< zXQYNFu2!g8{4d79@4&mFS=TOlLGsJ!+CZ+o5_#vy9sqQJKQ?IAgNQTRw%&h?g_hA+meAsNf80QYBgqjy6kS$N! z0dWQHzZ99*z{4G~8o%hY(X20o@?M9JIHUN3;t=5=+C}$rLrnS6twZalVk8L*DBKK; zeht)1myc0i&&pg>5AN-ltJy2NYBl-0f!I;$AH`L}@8dl?fIOfJMHkz%?_8a#9|tX* z1|fqM{$?C6cRIm1CC7F&Kfy34_~vMPf?+OKa0=|Ib=u-11lusa5Jt#Mz+D>9?UPF4B||A!f@4+ z6CrFAes%^0UFoyze`&e~X`K=@QQ9)^Q4{ifOw)qpjKYh!lmFIXsrjmS zo_<6AniOH_$~-a#TO!2kJ$+dkk@L%S|7zMVx--cyM(2A(#f%jvG9GPP0$0)zh+Twb zT)RgIWMq*y$zwxD|D_Q3Iy8J@FTZJU$P~LG5J--MlmWd(Up)DzrCG`Dme@@^$*D=r4_cn+BG(3OZn1(D*?IapvO5izjA+4JeZV-IdAB5Sfj9D>?JW+dX99y zsf*&m*Jt12$i%Cd>MG!$(5ES@UwX7`j3gQwbdf-g>TcycX%*DbC2J>p=hmTy-*I4l2)S$s;@BmHD_Y;tFc z;yLI5$D)<8IQ{FLtr{9taZ-|FfUmA!9K$|b@z{EiM{jHkY(X#mlVP^ca)V}RVJ;}4 zD*rmqymk9XF)@3vM0@P#wM7=?1-Xn|p7ey3wW3ovHl?LmZtn9K=^5%w&Lh zjXwt$4DoK#dx?+qTRGas9q2(;i1N2NKwsByZVMfx7ag(vi47cFsYM48u%eQX3i7=7 z#vVdSur`(ogz8>WD%%VoxKV98ZenV{X~v6q`$)y0WjbOK0pto-PnwIOp#cl8eMb$* zve?1X0$b>GE7QXrlfN?Uoq7!J(rW5+E-9M&6vbzub%|IB0*}_M{ux7@?zD9wXLc9tGU8&JPiq;h4`3ji|{EYZI;nW$f8P>uVC0bNOc>o$Z z3ZPM1gQ=0UfX{SY)kYBn`dU$yH+c*AuBm3h)bXkgUPaCgAJi&)M|@zD(^YCC096)= zPClxvkD!v!j=|JBEdS-?iLbFhG{m>Ht)=D7=oOpfdZUT{^_w~4b|)c*P2A-&bJCKCs3<^)6z2>K$J5VNm(dXs1L1(;r-e$DSk|wv0?Ug(czL3DoEffT&e6WP8^7 za$f__Xuz1|>Fz55D~}uXbn1RZEW4a>|H|gNIh%%<02QCIeOC&u)FnkMB1>_xkd9q& z(TBL;1siebf^W{%luaGh=Xrf6B84vFnJcNqVKP5B8^TCoD&KQjw%z)1G5&2S===B` z0>rnL2o}SYP#HUtL5Nuv^zdTQ_Yp}+WB%hSLqQXFS487#tS~Rp#!+M z+ERxFO%2$To!Cu}4Q=2nt`?Sb+C!}h&sXcx&;%!%0<8)#u%rLHB7a)l%lWOX`yc%?KapLcpkrUT3sD!Ge+O!6E-*nv?%#Gy^ zEdfP99W0WGi<37WVL>(x{&h}u{&0{@|7G7HqSMGRC<@OzD1^K^HMTY?`cC+$W65e7 zh1n7s<|1MkHyF_1SVqz`$hJi?Dzc846GtK4_!Hb#zB@u&kdZVeleKI_oDh=&%nz~cR!hzl8muz1Zm%(F$31V!k9kJ2 z-c~24R8ZcRa+QQCHKGh)spVc@INk36Jy}T1aiQn|r@8}qmTW^o<8oNTJBI#IA!Xh} zIJb~ks&6K^b3Qce^H8ycuGaI-16xfb)vcJ`^csSm4>01y*3vsyn&ImjzQd(U|5krJ zn4d`g@p%rM0EE3ypPh^;ONqb`kt5C#b$HL~Gv17U3?ngaEPW^5@;7hjKHkr3(uij+ zFI5g$qBcLk1J)T6Fy3oO@|SI@CZ_v_jQ`-A6$3>;hJODJ+jIj3+~8N=?!&6PMwamU z#0oThH}gh@&04Lw9#)jcI@x!1=0?y>_SbVP??SHG)#)igo!D*R3IW}cgjI1BmT-+5 zsGkDx8vOFS5?-R|vdLs5!-U@Go8)OG(sb)q%{PWrs$mODHG=Wnrd!jkX9Ztnf8Rz(N+Rz$dSP zt}KKQ?4cA+ty{w!@EIS5Q>w<$V^tP#z*?kpNvJ{t-pHjY*@?Bv|0C<$$svbOnbX9=oMto3W)9=` zdb{sF-}`?2_Q&*4vAuS^uIqVS*YkQ_u=KvzqK+cx4uNnJw9z0e(!ey`s>3lo4iCU4 z4X;Q4=DLqmJT7^IV%&cm6RoI+qH87Hs5BGDw0mPa+a}%2DKon$XMciGRxvEMURppd zaIrO{W^K6!mz?jxD$0&qX!UkMb*lq}<=pcpLwJLkUkbA7>R=9y~IQ1ZxpI7KttS#V|y5tUKF1?~TUATK=?ZsM} zAs%ae)b~ZiBWcICHc7rU_$uy+6LmgE%^O;}Tf6_It{O(+z z#N54l={vgt^I3Hi=kM!g#}Hdf?omRi^t{B&A3>)PIfa_dlYn?2u3qj4bm zExbkGwdVG&jipKxcYj65_nMvCo)z3x+^LpD@OZ{pM&nD>{n!?1zwW(?K$-95lS1iLC2J}$P#Zm&5u`38lqbnI4sK+dte@`(CLOTgf@ zjE2gejl(h_f0Bbk_V67=w%o22iJLgt(d5m-Rw;#LAJ2CgKD8se;(8)p`GryLxW)G( z4a*;6u_;T}b!nAX^)|-VxfDll;%X=Df7|Yy@92tai$B6t z_Ynlm+h~!*>RwKr|MD$b0+f=yV#Q6xO}Jd&(X~H$>G0t)f!ldX@6Rem~ls3xXE%JSmwv?dT ze_}bsCEO*I`yij_+E4JV@RhmuCAjU?4r7e3!bn}tx%W#(G+|1@DEvxyI==5bTz@SW zL%>F!`BC#tP5mG|TiqO;y<`@lJNv;UT#QXg@5{nlxS7AfR9wL`LrtE?o^+(MQ?20T z2`({?_gI|rd&TZA9hlz;?&N^D4s%39&Bq3ITfHwSd^BTqC#_+=p6%?-*HTIu7r_6V z!utS4CV%&3#*Jn58~yi)zFF-32_ZBEVs+GNp)fiXtqbG}DoLCdV{H9^W7VC)si>)Z z%aMnoDAWk+d>3UZqK|PgN3>YMqtxDaNo#7kP$bO^72cU)T&azHu*`cIAg+C_9YvJr^S5$%{za*Uk8vE%FfMN z5G%0+J`OK)?=hL(M{`uz{cGmT!3BzCjdel5gn)efLf+<84`kpM)JZb)N!Q z&=Mx>u9Z80x+=`R(Z9FL7kk1|EjPk7i3Di*oPeXW#lE{;D9rh`FD`wqDI8(^bOw2= zfomriu(v5Hxbj&lOyppK-dur1>&6#<>b*N2Cb?G^CRG?qH8EnV5YswK>P?emT0Up6 z@s{dc&W8_n^o);+cKH@k&VR_UHfENyd3c+o++|;53cU3d@gm2q@K5$& z2-4S}9OY|!0laeJn0pM+ztYY?8@UUX*d;a9-spepQfh}v7nK)qkdY85wbxV?bGv&j zl-7~TZVY+3hd6uGUTf-dF0+IX<}gyC2>3pjIK{BYhK^zT*?jIza`jR-0C!y!&8{z2 z@T5`1Y;JeD3(v_oP{5$rY=08|D#G?DvLn*P^75oC_GyQqU_CqXH3teAU!B|Bn@RnIv>aeX=6Fq^ehyvTDtM{H#0wu>Tp8*@*& z!(3qf1Vhxqe({?nNahQda+7XLcd4R1ScSB#!$Y~CuW-NH(#b%5-UfZF`a1fSd4CTF_t8I4an?IgyluqD%vlht zn~+%t?GegD#~IrUN7emGPxfjd-=5KzBR(u!qGd~m)OuFUHtGrg@GTKy1gB(ryFEKY z2*wgq$#%|P$kk?G*z_rqc?njN<>)yj)qffP03Qf4St<1aVW>KIY{Y?AI;i~DIN{uD zujAXy5w1L!MEE=Qy})X`5#E@7-r(fOdlE|bjJ|asshiLJ8OM@s3j=k)aunM-7Rk&W z?c1SxCebR-Y8ptXu_KWj@(Uz0)Fq+2cv0TC^_fe;_o{WjMI+|NNjv5!dQLs_eX-Qu z4USV3?=#hR3!pgDH$^0`kMvwve3(_B(E;{1$qQh zQ3HlLbCpr);ve^YkUfC6IqB-!L%^89P;S~pKT;7%-mqAjd=kl=?knkjXYmDl=HQ3H zWfy-dl#V;mJd8lc+p!3Gq~b~F3f^e#bd4bxh9B>EiT-o*sG~bKO&XS&)Y<2Z2Evp5 z)E}MDq;H)oVwv0=&yLzWWxMm-X{JR_)zs+h`xSZ#4%dZsZY97_?p9rdt&Ztp&=!;) zb)Z-R*3j~y-$}-EyX9_FamcRHh>Rwo`#+uo^_f)n3^{h5BKag)@rtUJvjxd@A!FT< zfg^5-m)FIs-^-?|sHrNxZJR*I`8VrVR2Sr2gv3x$1Tl`%N%xbD_UmRZ9Js89rhhlnN1Nt`Zlz=H^$5 zE#&&pjlRl(B;FTwNy*B#-ot?pND+KX>A;s=G4q*e2{Je1Q^WhS-Bcr8mcN?x=fRrW zzmbXV*>uL|AqXi@&X!RZlO zebh8Av@bM1cFw8^83RHVIyp+}IpeBV2!^hmE}(-625`uJiII5B57r0pZ{o*u$L(_i z&1w?IjHbS?s?qwgPWkqOE@y_L7VtQVxkM`zfulq8wFLLVwUrcS$q{m2wxDES_Tdr_ z_Kb%yG8!lBc6yoxR;x>Qc#I%hqKmqEvD`sUgw=Sr7}x@xZISDT*WGW;h$GLD=H3(3 zC6nH+o7m3%`@0k)#c#kf?H@KyI@>?=OwO~HrA4$B-v}&K zy4y2b@v4teHt?!1V|*b4|J_c~=PJscj~+}c6R9k9D!NwD=I)`e(i_R^rOGoYs|}y%V=m-HBP5 z{UVr-MbgN(?+eT#yxT6+v3n43mhi@GA|bqc`cEeC#Mdh6X-LO=t$o?yZgRQA&V$aW zCF18c*XS@FmG?a;TD8XTjj9mAa2?>Bbh9!E9`}yTV`@MmnDc_@dzC0plIPG0u8^I2 z{89;S#EbObALYHnlW&T5KLr}-#O(o%&nhitp5g3 zr=x$idd)sM)d0112CCZSCk6b<>So^Z!R{%8jXlqyg$>EnMB206mO@UVYVJJip4trF zat7hHS^ukhL_+e%lC2#da$-}EKiPSH4Dzi$E$jPnK-4!f1)!wEV7JjXp;H(Ly)N?~ z_-<(2zoCnupH$+)yH(kB`Z6fFh(SK2aI@pPwQuPYh<|1!&43CXs#{iibtVL^R-Vj# z!Y_MBwvt{nv=7Ivr+N(!wCh{kS<8w&>i#2Zsm(Cc;+0jq9n3)mu$I=u*s+Cyp-n|+ zeOrzR&Kvh>%4^`WHj`!8fS;6yO*#0^PPHvshL1?lBr1AzLDj7VEEeggGj{>WaRv?o zA+-0xWVFMs9Z#}E?rEq{uWOsUOBZ=Hk-5OiP%o_(>XQGEgI^&w7`yV3$S!?)DkoKa zu3Fzdw%2@wI##bN#Lu({btcY-Awi|9Iy zqkAINjnN;MEQEVdg~Y}MMX`lD9As7vVnoHo9x2?D>dZ^ESRh`_&&!1&vlum^G-7eO z-C|Ue`NZOW+TyKjEL`pq(GO31qY_Qj?yt_3yFtkuu~XGa^?j-1^HQ7m;L)+Hjx44o zD8OIz=(*TcK_Ec#P}bx_%ePeNEqq)Q>O`w-bwfBW5qWqE%9PG-Kn#m_uG~%q4F)q_ zy4k%oEM+7iHq2|7Nmu3d2QGV7vTYR~9OV-V4VVcQ7co?utsepe7X1u_F4Jvs+#|j8F8{5R3t_?1cUGMyUWX zM|#%C5tlDSbG8%fWxW#VRp7}l=iyUbPQ~-sXSC(JnQ;%IXvEXBH$v{xj7sFFOILQ! z`!19xDNe=87g!g-rKI9ckOWv{+m(MW>OAdD%65Xj(}i*}%dfguI{9V?o3@)xtGU7+ z?8~wkGkbT&FCPPg>OSm2%dR-p|NAjr(0?MGRwBD29WN0t&XbDk%)3xV(2ud4c(aR5 zGwCXB`1{{@meA&DPm#V8nNF>L8~UhD|Hh8dlvueblkSL|lZ$t%?ChKp*wDVDIc>Dk zz{5_f!N@8T*(YE_DG@(Y<evkiM0k$ZblH`V~Yy zP($w;1GK!ptffoY-SLFW#04GVoTTMNI~9)L9?KJruNDpLKLxb5p>Ozx`))9;lc&R@@OmY73!Gm*et;<*Ylg#ha(Fcirv<)n~Hvs~aWk#Gy#fl(M<{Jm8k;pcb5 zZzyJw^MQ#ss04h^WS4(}ly$mOPe!A4tg_9QO{7MqU2-IHs=I@Nn#*Zq>l1qGp;g?^tGVE!oKlzCt>Ww~OOpmw;|(gc z^JQ9dh?nv`{(1gr_SRzBvHMhKc89!c{fj-S88)j)59oBZIhrnm*0fq zfnnkB==~X#nriD@O+$uh zFTULCKpATk_DrS^P_I8i?Wr%>Jk%vlcpveaGQ^90=G9gAOQdMJ%ct)l*c9dLb!Y{| z;_`;uGp(|fZlIQ}e$FP4$BwD{Rl?851_BRXZ_ku8=(v}OrrE|B6jjZW`K7A0xc;%T z*=C|FB#mc?mUW@@pB5(TA(<5SGyKG&GclY~#0uH<=V^j@lpQQi4;5y|i!(rhKga83 zU(J`T%r#55NFV6Nd~gbP>@7Y5w6y5+QN@<9m^;80ij9ipUtUkTE)wyH;BbInc@ZGGCZ)6TPc83j7y=~ zJI9yo@b4|rbq{uwbhPqm)8~njkAte~3EaZOVy*ntoBV*$b*3IMncIn5oj)ThZD^NR zA#LXdEe~1jrX*o&Ka=2}_~MxUPCPK*|@G?Hm2SQ8gO zL=(cVby z-4oT&8D45EXQ)f$R-3U0_pw`qn!P$*i!*wdxSka z2c^1Z`EKBwO?DrZINHQ>3bcsQ@as_6@X}dM>D{Q>4HFdzMj$6Y44`8ih4`Y%KP9zp z^ZK)jxcv_K@eED)o^(^?aK3YhNEw=yMERLJF8?CD3tCp5C%O&JDCvCe-LB$PHt|0E z`R@<|>JrW|0mp8k03PVoTMl;IOPM zv!ep~AkiR=)$<5b=%>b)ZHV)nm;Mr4+~2G)x}sSA(RpelMS^)%^*B@aaI>*G{kGs# zx6fg=5D1+yayOEFcjkfWD~NDw-p%+0_& zmzMkb-Z9F}8-jw}X&P?F5y00Xv#Rk}WDVRvQWD(eJFN5UJF7ZfC=a8e(h2+nBN(pl zC9-2$PfLrSBS+wn!n=S}UKLhLON;6{-`L_zi>MJcW0u339~KA_a+WWaZy8Q>&6}J~ zlBu*?Tj~*92LacWDbqf{3Fg>tF|Ij$mhW@_W~?eh!QYAePOQw)lc9^D>Q=CAba>yz zdEY_I=ujScIaI}J7X}VHa+igj|0swbjG^22`||5c$M>Lb!`PU7={@U@K7<3TiCj3A zffg6W-1 zP|=tTMM*6lqAi!1Q&&N zT*B=lNX){~tX+ zJnefG9QRnN(yQrM2m4#a^nHctwYNLyQw3|^`&BJ{Vc;Dmi>QxXe?;8=WHXkXw6TBl zP_G2)qN?@^!9AFs4;xqMnCyOV*ay_T-GLLFNR6}u2zV^PNnjioxS9ql`zx66>pn)7 z+I0Iq`JH=kiW^_lfCQ%cURdb*!y)1d_E|FjVt&AD)4?~2R|X^Hqxg?0ad?z9-oQoK)TYvEFa(w4 zABQD0@zI?_ID759F;k|z6Q4cIxIZMdl8!4uCyvo3$uNB~Bs;UG9 zOn!(Ld$>o7<4x0~4paq6FvEDo9dU}v(`6%IOQX5ygZe!&;a%{V$AVwgcD6UrY#P6- z?wqbp{QKxao4Pao)2Yccsog+~HL$CV2`&aZ%VL)hB4Bm~tn>}=+Ox%}th|W>Z5kqf zNLBelv{p&4I>yQOuPNE+Ujkx@F=CAk_7#EcLw^N)TD>g3^zHs!vvhvShnn9Nv>yUC zpOadZX9}I2CO;UllemUYdBeJU0LWhQhK-JsJ5V{at-B{cZEu0WsPWt zd3F2%zx`gbpbnfjGLa~4O5DHu?>h-SN0~`3>(ZSHEb3QvWFPu?g@+U6z*1j)xWrsrP^Z9C(*<9IQzgfDj^0~M#_<$63B8^bK-{)7w_lz%RXsiR z99jtDN+FmF2KR(_sqDmtcR7h}qsaD$|8vB2K9}i}9bcIB!Bz zNHc(Dic6#>S92TW@@!WxPRT6zj;74f|5T~zh5K8`8Z)}wE!mxb%vA^VtA_wUNU+)a z|8uXNg8_+su1=H9m6*}f2$iN)_dz2My$-)&Xk^fs=`EZ~>zI$l9Xs(Wrv8~(^@d?+ z<|;7~d;jx}y3BO!#bh+6FNU{qxE?}}J)`x7HBG1Fm!>UrcrCrsS`KE1m*$)m^WQF4@=u$6gS?Smk-NFcucfJc zrIQl>vgy-$oY%b_86i=9<3sPCu2*tkv5q|~Ag}>-kwj%HCf+ySrUoe75_sx_NQb@t zI%vot9VFJojBEQ)WC>1@VZ@Kp@Wti<n5&d_Gl0|vgw*ITVM51J5&5zO}9vqdP<4zoDw>Qv5phA9sy@x!9h zy)YM;@!m_++A`%KApL{ zU)iev%Zc!kWxMwv_l+}^W@s#skQdce{E?$g;?D!is24$Hq(t$v2r#H7#eyZtMq)or+$Q?Gwg4^nT{r-q6wc0LAt!arp57@bQR`!Z5 zzIFTi^?JXhQ_6+%fca>B*~58Nb1it*&qb3Ofcs9ztehw(*l3W)aD>F*7KQg}Ny&(| z<sPp+&AD^ZtVLtK#kBu(`enEV;v9YtfJF+*LzY_^eA=TU{_> ze>XzYOzXzg7s{KlpOEqU!gC~3nbqDaBdU$75|Y{Ny$Ne=y_xygc@OAQU>!di6un;} z>XLj=re-!DY(jIL4cF}c3JL`dQK|;VzgW#KtcX$OJ5j5rT!{5=^frS3`1@h$NK-cv zkm}KwfKZ6v!gX^^==UoHNCXhWB^0yOP7~UzZQZb!xohm2)gBMqI7>g^U_A@deH#xu zU6cLwOZadh3bqs5szkdzQ<47sA4}JAV3Cq<%wgDjx64kh05bNhN1jt3SdhrB5gS|? zQ!bG*p_!^ z9bZ5-&gX&wzc$y+ei4T+N?x7I6|%Wsn>gS-ISp-h$J>C}iq$b*clwes8|RE$`1NC( z`cz?G2Wm#uhFTe~&U_px_K&bd58L=o-8g)05zpJOlp4PeGWUMDSAjoo)A=QfEDou1 zF6*ZFc`FG4M@`(xZ+za<F(Qo?9(-Kr>DfWjlazesr~I#e4i&~OENF5KI7j3 zf+w)jk&1Gx**C$JPlDIxt_Ku~$G^6F&~Ts*-(y$lo0lYVLss%bJN2E{9xX3Sv#wc# zhZ&>e#;8ih*vcazfB0O4&Fdv-+uBsOeIFYVNw0$l0L={>rBfdMxW6=+E;x=wP2Znw z5X$eXvMbZa9zdBcxJ>n$2z+E0a`&i{Tq7-8oM0f7&a5p~=`t70Z6N`_dfjFN9OUGk z(^C}t1pk*v45#82zdD^zPb3C$|MYDf?6nhrW9Bg5r?10XE|df5j6MBlpkgo{7e93j|-|66p4%%^yWx zjG1haeaxjw!}|twEv2BX$$udwRv;Wkete&n3}E2VW!Rs~?tg}OrDv|nv?x5X<4n;s z?+@}o@>^)laqMyT@JV7e>R;WX2eC~xYD3{-^Cj6*>95t&+FDg<}s9`jj zS_gp_9~Lb8J@`Px>cXV4%H^T+KlJ59^PobHY>XO72z;!1VlP%suychpNmYopA)sFc z>ZGZO3)w1=G)r^*!0anOdR$;18`Sdyyk@7q>x#of{C+;DgCJ$H|5!rZ;yAA6E)&@& ztNtu^_8dLPpkNO{f!UMJNS~FW1BQo>e$;Z{+A^gkE=hglrNZCtROr)Infj-~9%Z+O zQ|mW-%`Roox9S8EJxKe$U?e0_Zwh1J{vMlDji5nxr|2}mS5`j#HB$ZjaAE{y9dDy9{=;ssk*7yVtCCje32m5z1?c(vjywKKrl{Xi&JFW@-7aKfQE z_lKSd8M>j{F7)Ksmgox{R{hf0yTv+TA<2-D>JA_E<|ir|my*ExooNUZP1@b?Vs}{x zg2F+1h_GkXgCf45$h~Xx#+E)h2;Ojp(@V657U!ZpZY`p)ZjIG8fB<&N`NQ(*iKDNd z?$g_NF!$PK(o&+*$+M>)ydh}(HZSOFtImK$3wAGGoJ!8u58Fk6xDtgMF>Tk973P_* zy2>4q4vFoX8qxsS&G5%04=dH}R&v2jwKIQ)R6;ggleGC)Irp(s4J(By0)Z}{*7B=M zG4REhA>fxNGqr-4`*XFABSf}+Q5P#Y@K1o~6N_fGT6%e%qoy~t&5Zg{>#7%%YRZ#X zmKPpultIk-f%d?)IpgHnJRwagIA9EQ9O++Uhs`&`9F!WjU}302;F84)fLBWCJu{v) zAssj;Ej>O_&V3_iss?7GJb^%#o#n>HR4E9O@{!ah#8RlWWh)lm7^$;$b z#dkt#C13F-B~^fIfye#29)#;S}MrftCxO!U(m8M92(;t@X9HI=+4MPHsEzZ4+lNH>SrtZ#4S$*HDg$k zd<3D6H*57qEA=xpiyCBf=W(S5e`ZJEDl0~TLMpf0q`&G>>|e7!sRwa)nn(8$y>haq zeezKQ!y>%NbewuJYPx)#`Br#3-mL_jC|X$;7mi?AZewB41$u6=t6{teoFMXBaD{uS zfVu3S>LB%f{(BT5gw+8LECUfBBs;$v>9z4;o54sb9rZe?acu0PW7i?xJbpxc&1F7t zPoL+@lr?kv-P}68^B_@-dgBCgmv5H^8M05hde(`(k3bnsLE+>#v75(EzTWJ5V(Z^; z`S15_)?~MB`G^XD7ZS?fzG`o$hx`P|0%JOxzO_(kz9b#yK4akxK(Jm)J)Yl%o9L7v2y`y3xRZJw&s1MKCsZ@+d12gXkQtZe87x-0hh3%N||2> zhI51K06D4D2Zy(4cy<_w@Qx>SkE#6o#D|@MYqeLNx`uhKwo6Fjb!j=!S?+3EqiaL@ zIl>sQhWVja?PSf`!W!n$%7{2zZL!%%3bX0~cP0s5x+(aVyP3d49yHSC&5J|yD-f-z!U!Kis_gRVGw{{GJgUv@!s zJ`(?nW&`i<7tTfY#`C{uGid!|cKW++;G=o;o~We5!Jh|oh-(_Jq1%4o7<2@mq_&ED zJ`#eua2X1HC-gQ(TO8ktq*%>Q8U-TDW*dd2!;Jn5!D!d|5yRh3QmBo$?bN@nW$41P zDr??zBDsWms4fJWH{t-*csw{%1#?gZ=O7sTyDa1ezc3!(icn!Cw;~pU=AQ}K^|o!! z4hfg5epH0>1$7uh z;MA;c`C(^9V4R$wV$2Dw^GImWtnL zVe8X1(`6m((t=Kc3XsoTFUYt4`o z3l#=eq-ayYc5PzX2EOd|_T{CUXoKThl}k9khs~9e_kSAuZ$#+IKwYEzQ{O)jz|I|A zl|xVJ*F`7|DuV=ZMZ+&rn}Hqx0YY>Y8kuHX0v7~_q-EAYC6Z*o(ysduZ+FoK&F-oL zgCvPRC)EsKY%=+An$#fjnyXerTwy@W^%1 z1_49kzsrr5l{rsW=C=yj6vRQ`8V>7gy=4?k+(mzZZZ?=oFZ$yprrD{2d2y*Kw8^b8 zXjUOrJ;0j_T`5Ot{_n@PdhK|s_joZjO@ml_Uhgp|Jbe96rcSq{sqX{lgr0eamOU~q zJg~ZmTl4q&v>>=PBUrgCC|ij4w((~Y&yZ8X5m0~4u>Bj97`r-60JjQ!jL$cr zlYJ z%2ktJz|AuTZ-GA)<9KvU=#Dx57ZFEQbi~%Bi){C-Iq*8T8fpSnpw753X}}jPQTsPc zZR|HSg83*f(~AWwuJhJu5SKTvW53zM0n*FP+}M9rE8?gt$|Ki2o-1?&NK_D4*rLow zx=M0soIDRyf4_hyvNNe$7Q_1%qF&-Vd)f&~6cpxvdmN(`YAa%OP7{$f(U32EjH4I$ zbsRPk2~i13Q%G&Y{P1Su9{m^axv0pU;DYLgfUMDhQ52nsdxaw`I`eMCMSYhx5@G-P zPSMs1u3F?+T zSq&B0*4Y@+>a$_NvZrqwrH-YuO)c;01O_lOaEH*gS`OYXHL2~Xg8>qGkni35`O^M` z{k>)Dermo=Tkn?C$#0e5&TNda`1@t9KNry)0*}ROkccM)=EtlzE(XEH=i$`Xmn%@R zE}oNom|uL)fmStx4=wylPdep%GG=MA?)U7WE1w%+T^kw6?iecCEqi19?4xSOHs1Mv zjyP)I9nc^J0g2yME^t)DM@~15gT>4W1s0-arxKj7<-W612P|yP*?=?zE&1d;1A zQi6`Ea+bZL4we1gKX|NuHjRTJg>e+b1=fSgQ0#@7HQmmGcU1!?g6W)R4m zx9(2H!N>lxe?Ia`)q`=F4Hf0i$YP|#)j%YcPa((=78mTSGm{#|VS`W;-}Yv-2pc%h zvo^kcj&)t2-TXS=t9%#kT`gfO-7(=XdbUFs-7zsPDH(qIEyG?zGUaRJ|`T^=F!lz80fZ0dYm;d`E=R!-)0iu zq^`?JQvTFxw;d%J@D?Y?@s?PDdU#X~?v&j^#q?k}Sr}Q%Z+EtQ!~5yf2aA01nG4ms zcGoo7SplpD$F%-0&6xf%##3JY8p8E%ud-WR$}~c|JmS`g54H(qcJFayRl z5pN#>VZdCV+I5-DXvnwOeaWsj98s#n2%+k;{3C4|f4Iu|u(s}|W@guneU1h=fcsX& zXDYi>_VjlP$HRwsGYh)t*7c)s+Idz^gdHdzssdTWmV!gM%_=dQroz)SP~j)}dfEZQ zrnwe>I={-RY`S7fU};Q}9%k!mvY}G?KYga6EQgvMg?yi(BcMlsHx6kc0It*hI`C&X z5CHuaZjoH3LXW*V1l>A=YFqa~&&~C6z4~=VG`qxqc~9J+iuarnd(J{#qm3`Kc`cyF z4{f33nPzU`SItTZfiD-slLFrU&rJaC_I=R4HY9T2@L!sfdQr|jAnpRcDOa2jhe{U& zW>`3&XsQ%AB<)Xw3hJ&x2XH>!mQYa{3y01bX_$IHJl5kN?|PvPiIWq(ri(pMB)h%|pP|$4iFcL(Z?hrF(?S(AzS1$m67iWmo;SVa4F1W39m=n?=VLEO2X@-6w(w=D zsPdjGRlQ46HObC|sO?9_F0R&Y-OUY0{V$xfUQSvV3I0y?RNmLtcTZip&GK)UP~4gP4sa6?18qk$ zyM9Ch%{&25|5oc0LK-upVNjNE!fD({Wi%EqNE+wgpI^O1Yi`JgtQ9zz1`Aq4{uobD zr+lrlKQa{!f;Je6BfTOT!Uzv#*Ur}PH)!sh1Z!L2GT9Qh{WsqCU_FRK?a zjn{6^d+v!!aeS#6DZKgHqEg5)@Xq^o-F#VeR$JzV!5?3{RVj<@dXnMRN1?G!yrh|#2zHi^Un|;e&)}&_m#p&nJNOali(vd51g0q);^1Bm!^F{H*oFpTY>~|=TF4nC#W`R{f zdg;jlbIqFct%>jhYqH>n*=pv z>piy4A|9A~y3g>YYE_)4oMc$TnUBW{%NpiE9XL_MM&IPqmbia18|Vw&tcV#!l;&vl z3J<;Z6!^dar^NL7qB>Yu2~Ul)pez$9s#Rkb@)PJdwrmijqah70asdZeJuKS- z@O>uIX2X!(|6KFj>y>Ls3#|z(o7Jm%A;}#OkyAy#O^H!6p)E%ndqeV?0x~UJV8%0o zrgA|LR)l`0?ikJ5zaG|17B>8_N z?$1!VEPpLK=?%X`bkjvpDEEAD`gllBbUkh0PGYd@iGqK;2K2>2E*c#9O4-d}8mF9?U>DankB&%)f?!L=Vuc6v^;}&Z4n<|6FoBY^}JKM%H=jC`g$jXe-p$A@xbVv0V@w;(|4{{$3O{;X}LVC z)!x>_FEKY71|=2bzQusI)x1p&$l2`iaV5k4g&)kaTO$x;Ck$Z#NLroKt3FcGpje($ zh8dDR7uH)Zgu#He_{~<+(p8sNR={C1+mEo(sh;7XGJN*emk7rBhkQC8-;@Hj-Tzg2 zS}b<|ty)^!>(c!~8n3^$C>`obx;B;jTIBlIQX#3ZuE9IB+6({Zn)dXyl6cbfgI560 z{qcPPGq1Af%W)zEYSKoCzq}4(#MZc9{1#kEa}!aZnyN|JQZ@*kQ8u6J;`L8Co)-Uh z(;5CX$*TF{SEPIDlxTtAVjuAUla9>|8z96_eIHa>&CacZg1SeZ-kFf~3_ zhG7Uxr`b9K$?~O6zLb=Fp_*=f2{m|)iVLpp)qJ^48GY+%L}x1yRVc5X*@u%-+>;t= z)@-`3?xXEZ$)cE->I-mPqAy7lG8;?v#trOPV{zE-Qpg5`4}bZIuh)p)q*tG?zs!=c zb+^hVfOXOh_F6)XW~zoH-@f#LKl)A-Uc2?L`d^cs6iT8mI4i^y#rK)j78GDFLiyZK z`hW;^Z>Re+2DA1i?eFdw3taze{Z= z)b4~HMaiUOL_0R76Y@R@WBS|6xBr3))YLm0WVf$#a~EeW_^0A{eK^Kg3Tc}5`m(^` zL2jdxp}JN_!Xm^`Q0Da7hwL*{zCEY81eHJL8p4v3qyziyHfW;8=>f7q6SgZy#O0Yv z@Ja9H;!cX!j`}EFu|D?>-bc=+?Q>nT{oWn0g@fSk0dC^8fVi95Uq8q7?hiD;l11?J zZK*Z3^0XeE8gPytjknmQsjK~ux$EY&CEO%7ElBCIn2c=D75URb8jwUKpXjYtgO4KD za!N0G-G9(sD%8OF`+=#c=mbLhe@kZDy^tWMovu^1a_bvQ*{8J&aMIAJ&>mhKJkpnfj{J9Xy2$n^UUY=J`Sc4R%#cTTBI#gkkpWcv2|z{B_@APFLI5CfW}aca#LUp!F=?jmT?__sN+ z{K2x9qSh+Zd?{Z9=8R;~k(ZCBIQGAg4H-!uuk4{u`rgf0g5F~QIv`fPP|LD5dsC>$ zonr|;w9Iq?C#?S%d84Ao$6TcZuj^5Dt|B&cG%9Mxzu6ppQx0-z)7nQl`ZUab%Fg(8 z>KMI}D!E4M4`gPrX;4*8|_TLVzD>Z)MSZN*KD#TX`nj3PN(+ucMT-goUVYlzeKH)+-q-r4j zrjMnP+Cw}3s9J3Ev{RJ>uCjz*{5>2rmrgj1t>@?KECQ&ts(vL9q{N1@b8Y2|oK2z5 z2<*KQk zE*3x*;=g%c4egQW(a<)oN`_eC{aYl}Ktx|6e zf)P-R=&r5}-RyS!#1yd1o7W^;>;99&h&N-dREnDkJ}t(5uD)7*xBw7HgBwK7j?IkO zi?RNi9(+X>TUV8wdFiBP@3nZD(^jUO68sC2C!_Y0Xqq!i20?xBR&c~Oz?02t6u-nr z(H!mHMp~2%5XKFV>|X8y9rC%$)UdL%vEdSB8nNM8i$NSHO&Ws4C6(YG2)gjueeiQt zG_(A~fJaz;MES}Pln|0Xx#CJ?RhBMQ;-YF5dXM9Um4Co??R33 z-R@@4Ue!~*tQpYfG}k?gplh~YtWM$&Z?*v8wYh=ho_D0b5y7_XJE;SFYz9J@XQkzU zKOEf0(;@OS0-)pE`sw|Csg3c}eoXZi$sLaqzh#vsjBVN;ZE3SXQ&OICtKI;A{FHZ0 zX6dCD|A#x8FzM5}U9e1>Ewz|GmQT_1OMun9{VTWud}DAY>ioJ42&g$nPE4~h8vbq| zA(lQMtW>pHOE-8e)*<<7Sq4EW*IT#J`rz3@8q~dPU%@u?|LO)^@5XpdOzLJDLwh&% zS((In@be%1DHICzP+xczPC(@c5r1k_9RzuOS!OQh*5_6Vz1v&HTlYd>v-v~5id@Hs z{E{8w?>pj8*!gss)j^{J(D;L^cp5Nc6(t1x8bwvrbI@~ygz2{1G#edXmDb;mvSp0J zXdfD=IUVZDbUeRAr~m1 zgjdYTFd2dT+ZHi5e;X3yMG%?G$Jhm@mQ6%%wrw2+M~vz?myHD`O1}{-CEP9Yp};B_Gf8xs*Fvmu_`$ z-Tm{rbxrL(;%2vhovY+>ScP1d*!GUq{X$#sZ&3KhcInLpN->^%IU%3Rzbz{TvXnv~ zCddF<0$;7XWff2i?lX!Wa$1!&T1N#%Hsw<`Jp#PBpTiPdP{Dc-9{fw?dVl4HJLGp( z3*W$NT7Q^_C$h2u6AKQ`wCXxja=ZFpZO`7@$RGjo1zD?%(Cg}0BXt!f$c?%Iad&-3!Z3}V_ROxc#<9iV9ielthMG}`L_wRh$5P_A!Z zsnpRy&MBN^QsQ*7Cd*`*q%2A3lqIq|WX(9p3`VJNC|RPAsitKjk+s1Xr7T&dvJb{? zG>l=GVP*{P{Wx!ZI=|27{Qi93f4cveXFfB`^W4{c-PiiPu3OeK`?kd7d7(K-f0z|+Fbx??_S7&tOPqEJ-_84O9P&

    %5V_s)PUlv(QNt3{gq=UTiaLDfL)e)BN!SrYYjD4SDCCaD3l4A>BB?l26fNiwb zi=F`|{@l6)XEp9s8sya#RoSI`9w9D2pl-VRXotu~xVqWV`+^-fRD6MA2>`hV9IgFl z{v*8DE>-Xhtcc6C*f-O^2VcAsl^3bEJ2N=MEG@QPR(E1ZL*!PU@i6!L5zeJkAUrT^ z1!DYhP*$jJ4YQv6F}efFybfQmLQ~#qvq$21KgNWTlrs@U-nOKTvmnNKzE5ZLR)z$*GgOA^Qbe}Q9vFR}l)Kz?5Yv2NG>Ce3S zygcWX7(_$nycc$E)X6DHyu|7VHOu1B+?w-|Cc698#V5QOeW@dp6~#U#Sl%GcS$l<6 zuofS~BpJ=F;HdiaRRa7FP=<~ANglLg=H)MMc^PHbg(`=^@yA&cu$5uhbqM@i2Vt>h z+|j-79+cZvk8H0n^Dm3*rR=mc-#i;|+I(}zPWdVMawj31Gzas|cfPG7*haWp>78nj zC+iH*ghh*~!1iOrOgqehm+qpVG~;20mxR-~Td~8ko4l;zjd95lEgsjIt1C?A%sz(J zz=U>%3{a@@i=6jM6QyaV4qsqM=yFDdRHUASaE--2PB;p| z)5%5@&hASCdfB1tjtwB7L<%%gI-gD~`%(*mnWRaFAc5C`2>-l8sunr?t5h;FFnhkw z$tZ*uh;uGe|3{wt@lZXLO73pv_r>yXN zGqYyMFM%(N;`&Ub)Mu97Ccu65+z|DfYKg+H|NFbcG_?Q)}5Fba(PR{l+(GE-1TTt zXCe8jcav7LIykvQJVJbY(z>}O+^NG7N&tH6xvM@nt^z6BUml82NpIV>TYe@k=| zYfl-H@13vLsR;%srd$nukmrD{L20B$tM;o#;iV8Q^Oh#?7L(IcZ$#B{WTjh-$`wj| zkH#4LoBy#-erTh_w@Rnv8Tw4`)A#GTID0m8+$1HXpT1~Y-t#9(=dcut3sd3zYm>nunUAQ&|4vFQyf$x16vsqUm4mFMAM4!?7Iu^HG_f>%K0 zA8XL%yS)- z+!%%q>i~U$`yXUmIc|?4FGi9t0(>flHM}HMJ+!ed8|01ysmZ|St*6zoz%uu2?Q=8s zcTmGLI&htMCmc&NYd-zKHeMiByHEzJ2Z2%hThxAT2<0jVR3#rLmcj(ro!}9yy*G8; zm&#oDWlb~#)Jj?3NQoSTC~6lxBvX$oE+JXnK-wa^3AI-R>sejwPa`*+g)Sf4@p{tY zX)=m8IkjicX_?s3#hW~aP4}+&yMP7W^g0wxUGr{d?Xd@!i?Q-i2GZCI-<;*AD zu|w0@9}TC~%0*t6gl7m!C^KLAVi6A~jR_jJ1-E5I+Mw4d(>e*R>1vasIoh=x z_KQ$q@)A@?Fzf~(8Dqt9kho0KfKya&t8RmVdefton`qEb4 zDP;&i5$V!{XsR&gNf6Kngz7uXTG2WET2fNoq9;d4jPZTE7yddpSX5X?e*Nn5<&TTU zk9q#$abN$>t#^WC*dTL;2cA#=`W<<{nqQX9+iO(kp83dmsQV>VsLTmjvVWEa&KEP6B;+ zHqyhDLqMA4fXr=f4X__!)Y}hZngpj2DBc8>wwx5Z2WjnPPw}K6FEnV1swoQ)QFV|I7sD(! zVDv%X?q$nx#PgX1FBfGI&yd-wndI@=aIuyy;h~;=XfODN+#n&(pj*PFJry%|-7uVO zH2CIRz-ZL3j28ZEjnTG`?};B1&^H!E-nl1g3a?nXrWWaj+_oR)OH?Q)*a>ORRrI=!jg_}r;+w$aoO zxpWsG@yz9tn;k%^oi7gX(Fi!y)HOHqz5uGfRm7~UbyZ?EiKfC7tjua=p|;qw=}+~& zke`*g$5?-@j+2%%hXEzXN}2lp+Dy~)_}|;!(LRaLbE{$6ueJYIb!llgaM+)^dFxQD z=+b+zhl38jE+-Iqg1E3fE~nZu!X8;RrKAn+>&_;lhonABajQjY(raR{a}MIX*QI3i zg5ju5Cm$48>`9}Kc2+z+@9KnLURFz6d>XwJOnjwl*zYVfJif2^_oV0rj*Yn9?A#yQ zw%v`>xM&#AaY4lW8Q{*J?Vkf=ziV*wQJo6oVj;!5b@GSB!uDz0O5Clx)#OUNusdPv zl{ydQYVTbc7H@W&3#WT-cXvZrvT3ZU0AzkRUL`^3eJ@`T$5D4gm}s0*kPy5uZJhV3)NQjs*iYFchn1~ttrAU6RFIs$GoIU zsSH8UbV3>59lm5qm>Om}@opIuqlEOO5Mx9BHE@-<+Lzv9AKEIH<@tY1?b`4KSDhj- zVi}dNqTwZ{s6iAjiJb9?li{kD$8&UOM0j(X*As#S=w{JO2s6|@bxIkWt1{0R`+)N9 zPg~5sJ#S3Rp`v`Tp#7U^#FKFWUO2Rgu*50u=8TB=UoAkI7{am&X=6GlZfpeU9**;1 z0ZR#Q{P-zwEa0cvqa&!zmw~n`|#wbu4^DJ|()s*O514Vp-A<7_^MpGxs@`D-* zo4gvHj*^?)y4CoPY6!1h@h%ceUuBluJij-kK%MuY7k5*7b>3FQ@RRbMJv-gDJ`9(O zojlNhKxigBhcwXTjR#IhUO%oP+K;;R!g6Z|Sf~vq?)d1~)660#%bZT(5UmRmFYj2b zfADk}y+aW1-7#j%w07iMnxt2NhEc$+uk+V>Rz|Imes}Zbfp1cd+fvw{8ICVSVv8~F zR!(w?=nrO{HoZ2o5{oP*x65s1p5OdYPK<0Q#XnKPsYLP5v+w(N^i7?!VlRFy6%k`S&&Hfa`np-C<(Q~qJ6rL~R#nSxz!3uxgmA?#JDHz2b`2GQK$?%G zBLnZv_Y#CMs$m2?xaaYWV|mCe%HF+P30+!mi2O11Hf5Nsl9CBES=Ipvd1?1t&6y^y z%3)@vw<0q$ye(}JC)V*eH?c62SPuB(O?OU8!}T%iDd0{$d`orUUWg!3%8QAm0wpez z_ao!>%2D*Ea>C|4F3SlB1*u%M)#)gzFxHR%=6Q6?1e@JOjxb%W;)Q`jjsIM}D;vgS zxzk(ajEJu;*-|TcFIEmXx-DSUl6XWLMC6c13kbMuuaDtyw|LlDdxYW3k*H*|gn`{xaVr8R8q4J(C~H`LwQ_HTb#B`A5EeiE6B? zRlb2V)p@gxc$_!(fXLgD?%U1sU46{=xpo5$bVg_^j+Zoz8{gF{o{x5iFId9&tBto^ z6K4zu(fjm-auZ?2c3pDogVZpyyT2eH<6Dedx3#|Kr}+7*#qL(pQekFVxHbi(jOIlk zR1Nn@bvbX!t{!}z+cXXT%W$ z7gO$H7rDJ54@3JD$C;O#`@E#dPEezxP<5lK9PFwAiW z2={8#_Z03Fp2kRrcD2gefn~wejcnhyUsDAVZf3kO?M?*|UG;{MO6sF51tYa!6UjWe zto(%7_-g`i_=JUfqPKi*Hb_0<1G;o%%9>(OcT~&^WIgk@6!fTsCH-%pX6@oR+9AlO z#9TvVf?#G^?7eoe>me!Y(2lZ^UWoXp2eM-1#}c8~M8PAfvz=JIsypd`2qEN7)!C>` zB3DUb~W?I55}XmC`TaL z!qcjKk^h=)?2_-1|7nWHsHy277mo}9EYq?e_!us8Mgzu^f zsof&5Q$c8aa+mMaE+0QNOpnjeZ>#x0XN>{0QEyt)gVAZPanQy_<`^2Xe2YkD)gUEO zl6)wj@PLR%N%z^ss-FC;^1-uS97P`b~Vlgni z2bza_IjlGk>Ff*p;=yiv*3oYR>LVfkpO1z&K_uICWbtk&^0cmv*`3Dhf z0nHh`+l!+_V##b1AbHjz?o<!EFD8bGJW@m}2#%FF(;~&ydv@15IH!GVj zCo3g_Q!3OqQT1-3IQVw)x1PY=j%v^qJ9S7!qxQ1ujt1q_G<}b`oVN~Q%_)cS;>OK> z+ZUYSX=It(x#3)@kB!*#*3*)X?WvAzYe&mKn=XY4if{mMrB7}K7Qxpstse^8REBow zCBKI>K}zg!Zy$Y433y}k4R#v_6z0!_zclUaW6~J`GM5%o`r9Y1h?qd{6gN8h-VQB>C2~E`6;nc;8FWVOHdHX#4O_ z@XUCoJQLLuO2sNM5}wVpw27iNQo_C$1I^h0%2XR1OGgc_=4Rr6Wd8Fs)TjTB-ogoS*%BzX~&U5 zhJjv1x|YicVMFJPIn5~a9}v7~ZFu5305Q4yn3*{)*^Bv7uN9eg0@mg-A(NCl(Xc1mZQ+a|lT^b%kMg*{wr2Bhy}4e7CI z@hU(ZSh-%_$(9t>3hq*Dr5h10n3pL0;LCb$`HMoZ_1T{s3Rrp(_4-?0WcBZnQ72z6 zzwl2e*d9IO0i02&)dBvw(4hR8AWJ=I>P(1b-&7v|{IqGnA0$76GE(=V*A+;dmdtz7O@z&bEfToik*i?rWvs+*`E zmR*-S-V6-2g}XnQ?9y1FF~lSL?LpmfiiS0&PPz!IPbcDJ=YVJEQhQ6PEa9>?yvX^} zbIYGQJdGqb1xTti#e%bsnlxE0Hxw&;-TkPZLjSPI?mZqTGzxXep9$y`6oe(`572xU zD|=ihjm~xh%&cv{@xzeg%LH#ojUvRa#yeIb*e@8;r6Q@CjG6BQhQt zNs4Gi+}iM_8Z_ed9`Ds!_rYTQNsA2%GU_VZV!p6CboGS$EC!?ajzohOVOYNd==1Y4 z;o}kkRz$2R!&y3y@7DX1-{QMs9qj;&KSj=A%=zvY!8Wa^1v?uO4T{}?K26zaK~;+= zIS$&`6Ke9P%nt9a@Bjs7CTbr|$BJ4=DWXU<(XIOm$}jXO`C`nXb))1354xpB;>y&{ zU>V#6aNa?Fv~yH7t*^j^%%b@wn|aEaxNtEI2&%yf_t6}=5HV}x4)Ee<>tj|XZ7_Ot z%*j2Vrn*tiOLj`^wB^>)rpww!9~8Gxju~0*=(uW>y2+sP*in8EdvU%cYXd$ZMnU*A z)%l>S?LYNkMsk>yh!;sItDIbRm-wP!CfpKqrlXhGRKc#Fu9;3OLwhh*><9Md^F2GA z4YI$cV5b#`vS(Y}_7!$E^Y_8ZQ>q6`b71uG8EZ9icitkJ-ODC|pj!5Pwi44W;P-$o z%I~&m<-7U}H3|^^WoiqN5t=n%w!Cn1p(C~n>y@8W!y=gq1o#HnQV&r0)BEb}S4TZ= zVcPMl5h0VnDeFZijrOaYk!o=`)(xyI8|$=<#H&W>Z;kSmXQz&m&PJWeMW}4~V6ox; zxr*|yUOvRM#ml8={j;HJ_?c}FTBk!FRGMBx@$GG@Xq{lD*8JRao6a=bHQ%c|*#|T3 zR5hrQ|2yyubm73G%#x#86`d1A6v(O1d(V$8TdR3Xv00G?C{i3{u>*M@6dsn{ESu?6 z#e3^1Is?T@)ka@DgM2B$*kdgoRHqtMRS9e3kC+PzvH4r*9ko)d=s1hfOO zMS6CXA-#mvqQ~M^Flirwh2oif@MdU*b=9303G36}g&$J6V14`Aay8umSM#)nlu?jT zWvBC1AVIUsw+e#cXSN>?Rol`TrFdrXJ_>yXUx6*#&ZgQlZ!7Z(nEI3-ME-&R0)Kx* ztpd19McQ_@^F9H&1)0fH`$`h0qfiVg&twYGS#fS~iu)^_ zyP#Y~8m#e_8=UFEa>V{y0OvCGg1M}#6 z^n9g8@QOd=QQj?^bfD$(n2g(ncH;k-06LjkW8Kkbk%zXl39|Z)&hUU5j~^!@IrR4Y z@UMSb{MQ2VJU$bah~kzyQ-5S5LqR9gdw4sOj(n@am6WwUo9xJ^G!FyJGQn>0TyEjl%OpJ7ho^G>Bn{YD*lxH5i8Lru>T92!A zb$JAO;1i3#f-2V7XmygYvy9HrJ5D6#-Lo!KK1)QEeigC3i3>>3B8}yX&rI&y!hZiL z&o0?^kBR}}8J+tJo%H*EVEWC{`FY z2x|QuwvO7*?-~^fd5d36;$d~f5fJtMb*zuv6yEU?mkX!!#Uf8a?iE@_1hf@k_t=mS z^aV)Fzl0E~|2jNfW%vrEg{(W?21HQ!(C9Ph zjx9;C+EV7rF{e-Lf1Li`U(THvn5bF-zo5&0^cd{odW-#6d20eBy6x#M N$4?!5an$w7{{R%qyeI$w literal 437330 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�eqB3pG0)%KtF7=4`1g~7jM>w|@A`Q%#+YjF9)Ku<&z6qL~2XIcQPH=*%h|MXn?yWY&U z5=uXNcX`EYh*|EoINms+SXh_-u7P*AcTHSzCX-V=Hj^=k20)QkP6VmfbnbtVjCV&x zgei+L&2=c(!fabn`2B2Hr>Ohi-}A&WrcTG^9iaTZM+-8m6AFcy=~E4DpP&29Jg0pp z(E17RYs*S2)89hU1Mlxiko)iNNKtdCOa7d)vp$Hhvu}bxQP@8`htdIKMUUKb#=lqP zr?7f}9%l-v$wStzY9^{DU6$6bw4CEaR*XJPN9HBrYFlZO(k3|ub^KV$2IfF~9Cyuu z`T5n@%p-Tj3zfswc)H0m0-C#6>}s6YS9m*JG>NvTf8+e~km+fdPftcv7ErD_1z*06 zM~EfC-AN)XHRJ~Npa~q-ESCh~e`J}DZa4D+cQsB(sBIDW_Zc5$cTiP6(cfa^b!Qg;) z`Sp6}B+xJ+Zy}s8l+0nQizia#2}yOs z32_>cP`F^7Dd!^drN&>FD&pJHT=Mn6MFUSwvyf@C!jYpbhjX(O^|0B`za6Liz{||| zH`;nXS-CHNu^}PwAB+DtYmkRR+u|4~oiwJJ^)Jz4!h6+8H5WD&B@PMKricTV%x#MYUQ)uWpFJR@A^8 z=dILr#*f{G-m*9R_svdm;8yMdw=%|79jYmE*HR4#3L-Xayy&b2O0_r>#9wiG!@fQe>B}w$^Sij?B~;IJn+|0WaNp zr&oZEP}@v!vyX3eIzps!NE)B3{RKiIIN!!k=`<@e3YPAk?HS!3Oxeezrm7A>`Npl-9UQ@(wIRKO9cdZMH@d9;UU;*N+E2KFzd}wo zLyjI;hz2co2WzM^ty9k-Y@Kthe^Fpy-p)(*+AWc;4}Q#3r6jRTl^n+{i&_S!!e5nQVr&+fhg(a!?QGj9U_Ubh=5QY(>Y8b1{ zdx#*$u<9r25!#!w*<-t(fe?S$f`1#L%2H2J1CMjAJv`0_4U0`;oQTB0h)m&u!nGE9 zP3;Y{qE^~WK=H52+74*}06~zXAcKxkIbUoak_xiS6*nFY72?vf>kjT_#-_dp05y+u zN8`N$<%^8g!1SHWb#EpPw~xG5V7>P6q}Kvl^1PV_3T7edrE)N{tgS-uk)gengpZ9M(6UWrKaSWQFkWFK1ECjCHEOTm1Vs)11C z&Ip=*_+!Yl>2yiTsE@0fzTZi%BmMDb#5iqGuUKv$^l$XH2w7UFxpP%6WIB66nXjz{ z*e8OBE`NgWYs@UcH+LKYTsSy?b0mP!xT-#^gi+{DQ0Ta*scXCV)CtcAK!n1mpLGZyC#m!+E=PQm*b+Ugf#_;BjF{ifoq~Zoz0~Uvzy~i zArHJ_=+?gx;F|NK4V@PS2ZqCfb>y<0eeT)(lI9G>^#LuS6WQ;CY$A5Y=A`0|-wS80 zVHqFCMy|(KS%r$x=hJ5k^%gY^BlEeynO!|rm|&*{U}wVUulFPMkxYcx&ZZFv3e7?H z)~Hi&E`!wsA91gdc^;B(Wwm4+Jc-Fx@5pRIG3U5#p8o)jd04J%0*n29cV{)T%N zvKEnzvzx5ay}<`qo~4oAq10kdcx-W<BER0y%+EfxmezPi)~+#*mLGFAP|@YB!NgNb2;QXNSTKqWd?+6 zFA{gGo{7iYb5B-WLE!|oQx?XVMP6BB^rFOD+MSVKinTf!{nwJZ@K&3hP6E*rFpGE_ z^HiD_3N8?zSZFP9+0e^XzsSXQ6%r6%zgMG3x!QSKQ zU599CdZJUwK5s|4Iim@q*S{1c&Da()1aq2EHQCs7(qQp`t|Q@;FZ3p$-%32b1o^qi zk&#Kw{A*b6;K!@<+e)oW49u%_e;+2anqfNP^7R=fbqjONkF!$4eK}c;bEjq~t@90s zwYhq9S-NsHf@gH*ZrOJ)IbbcXKb zq~$#*&@Di0R?_$BwAklY&0R0N(rS}@?tgV`t-Pdhe8#-hc%Woi{RUK^QSC1z9MGa* zG6V$?B(E(rFwnUpCd}t!1pKZsR-?-nPP{!=)9(IWhM9TqV!|+n&41B40%*4T_AlmK zsyFCSjWdfcU-bMywL5&tFWD#ht9?#zQf>H1=z#CCdL`6pq+%#K-J@cqGT{&P=aK&Q ze5CIWj$Y>aMdP8N0zg9*FxsAJM*0AhR1QrF4ro!nqRYB~=de!mtV@%8golqq zA6dV-si{@V>MZ~RxEcptGV9X*jiYxZ>w>J*G}-}?bzmtbU)-RbA77x;yr@6)IW#rt z%01N@Z9Pm$Fz0|wQ@4@ZjiZcyvrIQ^J$^|8Fjg<7XEzM1Ua~*QJxnk0tW@n-OC2&U zehyXFgk~=!#GT<%pvl0)U-bunR%q?rMl<-!!C^yK(n@jrbI_D|nbv9lp5 z_cNbz&{S*o5e0Qw8DbcFK({5+5oEpwYnU60U41cvH?#6yOAj!Z<~6FHnE8JAW{yU@ z&-P}E!qKD|aZPdjxch4F3sdKfAEU0*087?V7bT@R zRGPextP#t0DS#efI3XvWVG{{orjl7IJ{fzw27M7fWuwWhsuR0XG?{=5vs=Hh&`1&jy zPu@)$3gl*gp(U|oe0&F7bQm_%<_WBG(U}diGVOg>z()u|JA0}b{};z!FG?s6tFo;Q z5Nd$YU3`WFvZ`zpiHAc-pr9t5L-9>N!}tkVVNsPV)P~2oR9IFHl4B;5f`Yn^11={R z$EVF3`a;!H`o}|~0rk)@yVB}J2{adsaOr)$EDK;vjj>;I$eTdc?Je1(ws|2wDKFZ< z+W^W%tnAJMx3_1zat-W^6nY&@>!5?9^MGxNbF+en3>Vr~()u@Ci#T3D0B zi&D4lnci0^7{*rZ_`FI(?aYHKZ|fAQX&D}p!lFv0=DrQ(&RI62W@2L@?KOw9%uU36 zF7TdRfARJH#EGGhx4Rx2nPufTT$*h-cx-5QZn5k9N$y_yLsfQ|QTb3}dTxzuQ5e+S zdk`A$D+%IS)N>V7#8ss5Q0I0D@N%DGt06a4VuB|)vmy;6k>pYF>r`QXJYFZ~p+P%e z&}S4Gmcb~>X@efg2>m3v`dV{32b$wo%IWr>7~nGIwhpjD=gbFKk#jKvtow6q11!ed z@6E*1YLaG77y1e4M|46BLNy3_{}yeNp-n7LqF9gq&&tBYmf<2;9r1dVu^P7jE6V6H ztxx(m-rw{-40>Bj_U&O5&m}D@di4Hj8%+IRb1Fv-Ghq}*0oNrW)32Z$dKT?QX&hvD z$hDY1xkiH_5s&<)%Aq~|p4A0Eu{cjmv!q)rvQ4L8Ydc|wm6atjs_(-FM|fX;27~6pF$h}iDNFX58)wM1 zK*LL_1_D>Og8Lzb{e-F@JRx+wQI2Xp_r7%Y9C?bQ?YJmZY$=~sZzwnjv8)&GvVbaX zsmI|>@vfF9xx29a!>B`SHP|Gw%-iW^EZ?u$gpSQ2rM1W!jV_SZ6p+?Fum74@To!@W zZzOx>$u?#zK-@%=X7mfi1)f~YES;Mk^GY8qo}V2hAQbgvZwo8Uh6MUTc*Cd`56ryA z(q~Xlb`I(>nFXL;-HQWrp(BSe_H`hp-R$KERZeY3eG+PPbQ%3ERS>N z@Tz55*)TQRppca~vl2Vk2lcW(o)1hWU}D^y1c-f}#@CU>9eGcwlarF%#NXW6hGA`X z9wyaE$&zf}OTq>x3Stfv9g$*t-}q59{>Wtmhr1PBZmK7ZRJN{?OZwqu;E6X!f6vR# zRq7bOtS8s#^{F^E_m%mDAeE9%Rv(wv>2m5RSAn5a>33VH5(NV4_bhIb0+L{Hi^`8< zO30!L*rI71x#gaK@epzpIkSM|sak(q4m0jUT^r#4(;h!5U(NFxSf^xO zx)e2PBOiW9J}fVspSxX8A0*u7-tNJD6@ogq;N%L;9g8PIMqff{=km&1S9zG#WCxUw z?d-f6j@PSmpm6aIep!xwso>yxG-gY_yu3flx@BnMW5!~v>`7AZUUuJ-HJH&T^uN_B z*`*!wrKkL}ASC)4b(ME^28VY7v_p(=fP4wMS{GkS3W#}()<#gDd8>B8IKI>V%1cMSNSZwYWeok zXh`W9ZCAP}rJ+p6Y;S|(`n(O&@*$%w@TT>*7j=1JnzLwZN6)of&U*+$eB{S}n^H(3 zi|DC19G8s)%K#BsFpgHIKJ$r#!ebntb0Lb+{@mHIxz(E4TfO=pR&lSeQCR*@ejpX9 zquu^MBceq1o^LZ9huFwu8x~*K_UDSY0@NXJ1mMS2Tt}@2+YKF~6*KBsZO+{E(5}wX z@Rsz9OtZRs3cL7wDr?#ucghKk;M)G@QHSBb7Q2$W8sDv{inobV{@dz$&$WUbY3=@8 z?wC3($N~n6RB@fy!Vcc}L?Qi1^00p_PyOexP=xl`CsWg)j z$aTY7yFXlCeX1m7cj-;pLP>Hl(&S>w(PE6k1YmaFWpj&OQ@VS!g3YNZm~SsV)gh~8 zcO1=H?<;03s#izFbD^Wd)zDARR1WpDBchdq>-AIeVGtU9?S~(pyY~nlgoD2u{W6R( zwIOcSp?Ko0Gqje`D`9DeM4$ESTs7K><+Px9g?F&2uYyfo5TB9d-4+i0+wCRj&@1|u zTxwoi)}P-KqFoL4#;z$}IW4FJu}6eA}HtT<{!DvErLGv&a%$- z$7AE65uCR*+^bT-pyck`s+lqSub6R)Eklg;x_nfa8jIw;5ExCOb0)mS%>MBPK8V}O zj@(d$P5EGQ4!XQ#F~md=J$Vp6D|>8Y~H@{9Uog=F*NyxWJUkrdezA?Y&A&H%0j zR>($znv);LOx9zF5u3^<$g8PcQ2$u8;5RU8CJkMpI0{9AuJ56)+ZbUDt1jHwamm@A z+cKsuq^WEHCBjwR*E#PY&`VHwg&uJqY`<5g+a8yVUxbOMXFItGXkKk|stnI~^z0<( z%=cQ=yP1ptt_gMkGG`%`%h?_;H<%JP3ZjC1fmQ$G`9%Ci<>NQ1Yy~}K8dA^ZXohrE zcfgKIbN*b`nEG-|?`w1mQ-ao}PdzV+=j8*^NU8)0wSx%nhslp}N`X=u*}JiE7sx+E zG$!k6iyhvfb={v^Ggh(;lQK1TI?9=R$Xf*~A{0S0c_C%iy`mvy5>Qk7CS3^I_%jr} zvZ0vzv~2e4eN`8JhYp!zb0QtPDrR1{c720;IjC>t1fwCiNXf`PfHyLn#b5vMY?81&qO+ur7T|V+maY4;Y zlm(=D8~8$W-pU-$sn8cLXT(?zaN&=L3-<{F7wWu4-9=H|YE^g8j$3wJK61=?fwG@J zK|mY+g@Zl;!js%3YrYgUHI z^5?2zsnu|+!YLz?S?Ky^O5%D#iKLd$jkVNTG%56CtyMK^N#HAB#h4V)=i7xF1o(@>tfUdhlMUS> zqbM7-3>$|gyx8w-7^0nTFe^{%x|n;EjZ&qk2P|<PjJYAZBcxK24Jc+GSz=v(lJaATP(o3( zMOMqrEPz;6e0XKs+&s#K`>5%IfNWubTb)l7K>MFv!GNMO@#j7q^IhK&iN!g9ru5)= zCh;<%DFDIq>x>Bg+Fbn-Nzr;x<+8#+A7XI5j1Rj3s# z;4PGBpA4y6EVEZwT$VxE4e*;bwiwm zMt61j>|~Z=np-|W6u0U^G^eO5U<<*lJqzpVhIOr{?t+V5!QW!*Ae0zML80AD&u86` zjmDny-;Qp_>h~k$tm)Z{;qb4t39n*;Ry2}ND{eSh;C!l8Ygx?_ZWj<)%x(9uoPx5` zr!ne2UL4O|TJw@jy&K${W6+lCiaP)rb_TmuBg-q8P;R7!6?cg8IbW0(4I*MJ>i3L{ z&e2Mf#q>8ao|Ym)^_>9Pl)Y&N9w2%8He*-NnRuM6yZbgKh9Ppm}sv&Eaf%h^jd5aFNp^#*W3X6AU+3W+z}}c+|5v5Q;A?kNVL(U z%1Vu_uD*?!=a2b&4F~^DNVoRmO z7$T`qbs;S=O^!ziVAPC_FT*Is&~H$Mw#S5ux(`$Xm}V!Rq?%^LMM=F2=VRdc0K-ya zX&{ClVR!nVTK<9xv`laY^Ili%+|HF*V=ltJbLFh>F?n@A=;l!^%>1yp>Ouww4Kdq5 zT)oGH3~iDO>RnJb#xm&86?S7fbto{)xv}n)r1JaA+0J*5ZqyQU+^NePbJ^evhjn(6 zwg{8xg$8AMV)o&kz;EjalkgFtalcoPrmND`7lfP9 z^{ukZ33NAKFUKl2$gY@y)Rh^cEc@e4xmb#rwsh~T_YFqq*!ag^Pr|v*jFy)2wbcc7 z?o{u6xPnMCi5L^Y(QeH#XWSr2Xc^ksC&ylj={zU}N1lB#(&99@O(jrGJXPKE^z5Kv zSKl@sJwsF;VnPil(Ejljf7W{gqkth z6V#1Z%Q&lZbeD}B?(fx8pgXchjh^?%b!-?&ZYi5n|6|pK{HEk`^;I(}pN5{43ebBe zYaM-!_|{E6r`0awF+p2OCczIn-=lMrO@&)Bl7ja-;wA21hL`qST1uHEyk3} z@_L(Hjp|YPw*tnV@`D0af8_UrVH*cPG%rvdD%Yem#-*{K+vv0@NE!VvO}a~skDmAQ z_u2UM+}|GO=LN7~57f+o1-Yq^N58%CbIWEVKczg$DxVX?jy0m@Nij>qI#K^&{yph`M)Jqv@^3SH z0iQO}w&rnRTh0os(B|u>cWi){o7P1uWuSi21#gaR2}g!)-SR=}^BOmN)_y(y_pbA$ zH+-PuVh!{>i;US2)?%nFW6}X$2w$etGs)X>xHle5l3&668=RP#?fI0%d!2!mh0cOl zla&MO3S!8?dphUmxRIzo0K$hIP&p1IE?JJA4=RR4sob&YKpzZSgA#pgP^0%^wuiL@ zZBigO$AUCm1NH=U@_7>O4)7#I%EVCkga$d6Fx0}e07fZrb=0u%v^(chFZu3R6s{!eP$B*T7$opozqoo736WX^nU!*R^B!4qh%*ky~|AyiwXh^^+6Rs z$*iPEDn7uB@NO(f^C& zmBA^4c}Q$%!e$`m@_H}(&{9$35!A{6A}mHDPblA_!gREuq%rVx=dEVIQviXuRn20tv*7vPn>{#D&zml=O6@DEjJ!p7i+;V6Mb&10ZYO;Fu-P%U>%mqTJ8N|5pnGeObJycz5du0r6OvUu%!%!rGK=xZN^od$-(LVgwVc+ zVVwwK$zP(#MbZTNLDn0BCy!RZB3;WZPFtWo$?I57 zH$;Z?C53e&r;Yggqoj-vL3E&;1=yNd?}x#C{7-Dy-{INaGbP2&Z8*6*e6{){;rv=P zkte0KygL`UcFiYi%@+<>8v2L^hxVn0bp}GqadJ1L`w;qJpmO*xe>Zq&-%{|G;ir?d z{q}($Xt5`!5Ppj!wIM-jiSL8n{$oSESh+2|rWTYvFjfWbi&`czPg7}Z4s;73BwNrQ zr1(E1>kCHbBe?LV?RpJ;dyUa^g9vpb!8$8d3g8by+sR9l;^Lcpfg`HU=RsWLLaSZ; zRNbbb;Vy&Xn8d5onCB52k|eE#b!(2lv-x52eFc-CRiA)XHA}mvJ$26r*&w!m!2MFEt)n*yi!kHL72u2Fn~%1Iz@c_5%aEG! zIL~aVKOvaV#!xuT_xpeTHX&!hEjBsv&%xTJqu%+nQ`%Fr$Y&ws>|>H}2WW!Ms?JV8 zIJehje8TDWnp?S9I9Kf?&J^Y^^Bwu_4?=Roe?e#hOTVxrQ`SWq5$(#8x`RVISdLOz z5XHYLi>usT9AdB9}oYA zY2GJq!PHd&b7JR);}IN%1oWBu(;Aa6R)_R4!@w^d7Uo|#+nXe3il28qoed$B&&`6E z)w8y5AjJW{xLQ=Wt#3}1xjVL z6py&^!*Fy7GBl{S_SHq4lkZ07;sIcIp?o^ZnoF>Lmnuaw0g1gQlPsh6QR*)U@4JKC zke@$|%Z;FCsFzvQ_)pcNs5u0|kiU}*8G6IuY;7ilO-zMAd4RV(=p4EaK7Ze$X8#|M%icq~tuy5VhzmlSE9w## zbJEfQdvn{|3e?ETaYr}wfM%pORE_Ay?lST4p-tEb8S3i9j;$g^X1Z$X|J;oBJmckEQGf{|~X0^&T) zae^`9#>+j?L6-Ft2tXnOU)69nOTB8`x_Y$LK8xJOAz~W`YmWkZHR@rQ1nbi|3*zk~ zZ;p%0AX8}e8-&O-Zo#LGq}K%)f29ZT>Tu^|Uk< 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
      4qr7lcZo=3>U`oHPA zLrLYd!c-xG&BjSV`Xhb~@Wleg!#UOvHVnUnkN08BJ9-GA2#9<|G>MZ~_wk1Ucf@1` zFV4CZEW>Y`yd7M!z@906cJALl-3*81*EM2?q@4TNwJd<=dWUZ6EbkZT;o6YR`Xj_TZGH?c7VVq@F1JqsO0c7ZtY z2XXS^bzbwuIo#4Y)_$#HJho@bfIacZMlA!CU6M2*M8h_1k)4p5Z+s+xMU^5iEQ$2O zFpH}T$?-m|@D{+q6X@S)l1saLwW@~yI_imGLK_`o!lRS;?xLn?jBA5d)p%m{=%4HK z2&``{ku#w?Ig!{PA?v)yvg0^k*DImvMI7%mj+tFrQZ?W$2wb=#$)K-ZhK9Ufi(%s} zqufxJFw%2~y9r`E6T!j1RqZ5`Zq4cEXcS^+r{(q|Oj z0+Ukk4nD*dNd(!6g|+^g)GNuh`HFLk$PhRmM+^S?;pPrjhIAIBya`~}0<2yO*^_eb zo57xp(oj~;ki|FHa2rzOJv0-x2MiM@1cVo`4n2*e=HBxBR1_ZOC0R@2AQ$u{A$MpV9f7j%p?zn=ThL@^!d93d zNm)ElhV`<{`K}@s#DXaC0}3mhhsJvl50Lm>`E5aeEM)K!A;0EUFoidu(2T{C zpCu+VnNl8y4c6=$zKl*jMK~mL8p1VT%6t^SUR&A)fX@Q~K@daU{N$&3_`i~$3(xf8 z%>N@WH=g$61Us++{4Tg6hdlzW8-?5NO*Mh(Y+!?aEKMa4iV z-2vL13GFc`JNEU}>IA?ffJC9mM%Zh~{s}Rl(xw%_j1SOLSSS}p(;lF$Iz5GYi4mfw zVu9+V6jOyo*oT3Fr-c2de+$olik<#f{?m%YmAl5=WJ4Bj?;=>50vxU?ez@tmfXtL& zRZ3@pjZokX?eO{hUN%PXM1Q{g=5#VBe8* ze~GexD&RvD@wdU@(JOss-gnA&f|k2=FH*MX)3Zqi7JDkIWoDis=lu%o>meEF;~K@< zTs?YG?%LTYfX@(i=O7`7`&0eAHyPEg!sscH(Tp(0&1{UGIRnM=R9~2j%LgGc*Q2Rj zAN@9a9!z71GL$ha7LCf;Wh24n-VOHN!N26j#3^bn^_Q~;%rTWeZPsFOH9+m+o|r`D zX+Y(2;7$=anr0$IQNLF<%Kmr>CWMWBF&q!&D7Xk>7S44lePQ>n-pZa99M0DM;LknPr*lOKcKI;QuS8>F}nv{+c60loZVPd&!JwDeV_}+y_fc_yqm$WS)Z_@7b#OE)O!Ila2y&-%n)kyH|cI#K&3yE3|^rSFO6k)%M_N z>=B27C4>;65jM%e^2IL0e+i$11ESjb8v0tF!mQTg)z)YixpFx~hdG6dV z=jTVh=Z*UW2w=yWAvW+J=9jQeG)eluFa3d{vODM(JBV>6uAC{4mt737;JM+>xyNnJ zH8PRI4F~km_BfO$~{m1+;Irf3$XfhvuNo&(fTCOE8h0$i;N-HK1m} zOclOkUPdD5`|0v?X%Kb46A}FY_&pJ$=Rr_uy!vrotF+3Hj+?Nhw-e9kkcU!NfKM0e zL-s1H-W^XqXW!-kB5IbOc`GAWI)rOTd1QZO`)rLcUDY{ z)8HVKpF8r_{pbN{s2;(U&oi_A7b$W5dM zAvFB;F=!PrQ#yaGpmzWJ9X9uqzW@yW;M}E$*C3C^>5G^0XK8k^zQyV#5H2n>`_{j+ z*AmHm?OXP(%Nx-5hr}>VGdp*X{<@IvN45wDYOiDwphcoDI@t}(#FrW>u6pNu=j(?i zyd?xNvu*(U_&O&W{42k$SwhIT?bR!{wceFuEbM*&H6lU%M0M--={n>#pT6n0s6V!e zb)->uHPUsY5!AQ1zdQ zIH3Hm<@qT{)t_;&MXtTB6EZuY=E}AJ%26cxBJzaieCv0nF|He=whR^A6T|97#OEg~ zLltgvX1Z4U5#o(RvX}klgw}V|5TieR{jB+7$2VB?hxnVa(twz|8)JGb?do-*{y#Fk z9fbV!7#SG75Y4+eQ72tJw9?V@FcC;0-M8%$L0-r!3JQ<*-?2TQ3Xh=P z6iK}w%oSU1dmmblS?$Tb>~>FCfS%?GeJmqT`72(qqH^Cg4Uyl;#L9K*)7K-#R92rH zW_6N+V2yCq@5X3_wVckxl3SG|C>oD9Aq< zenAUl6p{X-ft7GgaM=4GO2*s0=wHTAHk_eepE6$p9q9m97#gDy)(J6W!su=w%)KDG zdWVj%3DqP7tDBX;I5fSwZPoUW zEWODGFkK=l0WF}yTuX` zk6ow$JtX_Le?bb$;s|LV(|a=#Ko6xDw&dQ0jG9NwFdY;%pr{1fUdGdYN+K)OD`X&5 zCk!|etNaD5fwP1G6}6lvr0c@_*xK;EqcjY=kkl)|?)zaoW|dwHi71`Aotr;_+`7Gc zNy7KJETyPU2u2$X@Wxqsbvvp@AyeYb*Q1_9o{%1~T-e+H=_zFD9CENGJ@~Sw$&bRN zQ8C(zXFR3lf|fJ7UI}Am#_s_<65{eZr|9#mErc!DO`KrP9XX4G6(d?r*zV!ROhre3D@6U#XxB z`;sJU2{x*WhA6U5F&coUl3@D;RVHPMsP8{ZE-%tE&Pe_nIcoB|geElA(angohy7Q@gRxt)C*R_0YpXZ*S0`d2W1tI#XeA*=Q) z0BTg>b){o89F#=T{Kgi|ob8sA-{3UQyt;NHh;V3H<9DKN_vZIgeGGBam8~yr3O+A} z_QX&~X75Zj_!khOok3gyMo!_92#3z%jj6RIZk>SQ)w244;MX*i^n zwfS|QA{M751^`mdQ8_OIX9ol7{mah?+pLg4_h|~{duEDGmG8pJ;+kFqba!PJWORE0 z^l_q2cJq61N7ur-UX1QQ6mN{7_1>#0IQlQlL_dj=l3DXg8F4}EhxmtN5G}0hF%DQHp?84 z;GyF|oK`SN`8T_M10hj2S2yOhLcm5(z5*Ow&HKz=r7W#F#m%4494qs^wi3!IVjuvo zI3cV?-zGMSbnt@*aY6*6D&CPZ1K}_uhol%s}goC+1&uEnAZuUC?=BmEjl&wszfqC99L1w|G{@R zY%jaj`Pevy3xopUL7qZ_@9p7vgbj#sk?v3vfBB2S)~I(AVmpoJm$<>TM>KVgZI^v= zE$UWt3vUmz6X*@wB@=E#`3y(7@LOxY%1x*k%!6GqhH(M)mnb;F(X)LFO=Foff=#f^ z@%Yb>&Sk+zXnXo+pypCo3M{DXOS4(KG(YY^@Rf<{FkBY&YtRn%TfX0bsnh}HJSxUh zx&v7MgblV1_s{M42F6kEKbVpjVpu!kZe!ouS}~7j`}?Ew`C_pg{vPJid+x*k($geh51W4y!KQLob!a)nk6t;z+qyBOu)cnKB%az;V1 zU&Aws{@R2Im?QL+=XCb-}?XT!6-4$80pH&8`@ll{hR zzHZzOfiI2&6SnjL(C;CvffG{pMvgn1%uvv8eBz0r;zKbxO*=&9(?#4UDRxZrB4zUq^H%?jt9UI9$pFUeEj_g!9frQmqK+hb*OlF?( zdLKqVf@rnwRsqX{r}n*~%^P41Am&_&iV1=g+cL_|A?&T%CQ>8#sABylecCbk9>U;4(Ml(weRM&8PkqH z1FuNAq>X2R4FaxvavGv_X7dilZa7#c!qdcrg!Q3G_pIcUUjaLZbo_$X>zq9t*q4nK z`WrFjYtRTz(4eRZjv}|g_=Lb?FiqW_f}b?@LfYyqG_Zv_k){@5rqC+1%14(#oyq4|J1yhR1%J3=5B74uZO1Bz&T20R%wIyz#)u|CAKV|lQD2E5ldUeGMP z`feI_u6;dafpR1V$4jn+BUI7W1yq=fiI(m_-~G)E=+KF4HdFivUw1qu+D?t4UTY6X zyVXu`Wuvti=%iMgjcQrPX3Wg>B~gr57Ipv*K9B9N5XluDh(X6%4CeN-ac;#mHTM_sfwT+dvteq~dm$0(X?)amMUyE{C zaFq49Hiptp^}&tr9fR(E4T{#kfIiBhYrjK68SlsdLvVee70SB;^v?%KxwIBti6P3PF?NPY09zs;q{l8?yi zTE9ZzjVysnG466&;tUt9uOjMXkMzZCYP z(cY(}Yo}V)uo;e6ln;64Cr=ch3rU_}{R-)TyH$JR>wVA(aa?o`d=QcQs=bOz zT1|^7U+{XG!@>YJxD2!npEQC1tQ*E!_#U)87Bt4Hkjs1s?a~6D4f;MFuy9C#{QNH! zkKduS-Gs2@AfF`%kx?O#fAI$d-~^OUogCYm%)rzUKqDy0V!PKKjXYwEhI22?f?u<$ zF{Rh+=$84DU=f}{_6Y3@8e66`<*0vtf06ty4lGMG-@PAnhW$JLXwUV4)I?+|j)2Ao z)&L^=dCqUS8qbYrUr!|I0`i* zcd+H6CbR5@V)AOXU`8@nKJDxCs zkVy=6da`kGK(>6B0Z)_8qRPFZ8gNP-MiHwGL;YU>sx&ro&~LND+NM5!deLg01#xc~ znj%wk?b1CK7eP)!&j=GK%Cj0sMOj zvJ`HP!p$A47?pd!+HI7Bz)c{Im8rRRq#Oa^R_|JujVVw*M0jqiD%rLkKG`Qj$N*l7 zWht>x>sP@rQ4o2)qK;4?zya2+58sa75OW?{_?TdJ###Tuu=YNKW@fse6IXcwS zBS5&@i?U^`xPWo#UaZG(`rXzqcYS)NJQz!Vn~WZ+WuDzn<)agXXvS@_pVSsuF_8&@e;8+K zCuJ>Lb$61p*7f@h1t??F!nHmbeBp#R-^&Q;C3NG3{Z5`A-Nh@t<0+yP#y+ZB^7v?i^0cFa8t;c>C#y z!qS8C<<_sBp0a$;mw4Mt5`9GJ$~9P-eD0BKl+r{kPkz_g`H4yC3aLw#9Z68kXwXmZ zyvSfY7lolQ-T-91NO2If9ZHUrWR>P@obfhFR>x(R(Of0ORVZJ0q`Z<>3Ag%q^x5fv zzrPG!1KkVx@_!$)`A;FCKZSND4ao7hPSuE2>nDn{cUKQkDC+molz&0d64sv3&lPWy zkWIKCIh`&k%LfaW!O;#`%Ja+uZ>&s~fC)91`Uh%B%7?5R2?kO~^+W6&7DEkdR}s3i ziYfLx%Jwtdw-91LJ9L0{I4UCqd5ZNAsaJwIcoIXCE{c z5KXRsE;N3LozT`_yL-_xxz5KpGB-B3Ki9_PsTc>=1w6W%c#4bQC{&W{7~mgBWCvwHp?Qz>PO1d-6-9t06zjT)uy7RTS{BJJ5%6NGsb8~`Y|XPIMTmm5S~n-= z9C8grHWX%5yMVqqXo(9N1Adj@%=d@Y$OB+3;2pU#Dn*#uWnVa@E>c`;M@%L>*v&YH z*sUsWSGIf$K`t6UDp=Ykl~$aA?6Mtv#_Nu4&1Oh77@trHir(;;9VPn}$iYO-(A?Om zvjb0VvbE3URqf+Pp(oe4ey=fspL?ngAo$H#gAY((*r1<6Z9S_^(>KHB1Cb4~0`ekA zefJ&tKZH8Re_H!F?nKt!+W!=bOc~g}3baZ5My&TVbsT6mL*$aMIs9;bo0%ferR23E z{y53PZpRvVE#e)Z2xWhUzg9nkaw^dVQXk1s3VnpYYo`%-E$}h2X*Ex^?!5%IjJs6= zd_M6f%AjB5znl_a{0RSFIVHqVbs!SBE-n<+9E$#QHogpst`Vq0E$_WB?TC0P4WQ-T z5jZfUpqHf6F+DlrDCqM>BK@~{-^!KU%sJ|cFw=>uB*OHhmWwdusqy^GB5J${Q-RvY z&m>d(M3}p&^*flx)Ovnq47J`980tSQ(gVu5cFZB?^HX5zgBi#sv*B1pY_W;$=MH5- zJ^dt4W?qRT{*0OBq2a=s6mLObQ=Idy*1!47e9W6KUd;7=15Xg+CR7e{N&)=v5x`+@ zmJr3XFo<^l?_9!Hp)wIiw|nslpfnNL9<7-JJ%3$)UA0qPxbL&!{Nf8BxTQ0Fs1x!x z-v<(XCno23N4B>ec%gnZ{*~r+vU|n0v!j0-8}#$dQlUXPWkW|4n@(6Iq4{!mw&@kq>lDh@XD_VDKF@s<;Wdnn6!x;=1Hd9wfkJX@3x zfOI?2oCsNCO0+6UjSy+sl^Vvn)i-zwUyWa1t{mBJ8a!G2XS-ObX5t`1O*-xg>w_R` zwTIU42Rk9@tRoP>@|xfKE3~%e3jwo-=?rm77@E4kQH{jizx@g|B;2jCIwi|(>|nCE zbrYsv4AfB{Vd!fj4$X%H_`nNes57#tbBLexPjP1(xc5|y@S9dodfac%9|Q2^oajnf zEd&Q1S0FR*wu&k?!>!58w+cwYa6<{beHt)>kn2%#iJ1OQwrI_VOHgk1f+i|0;Y67Z zkCB)B27#y5$pxVGq1OA3HPH)&UugDL1WM9>Y%iP5x0^lw)xTY~ltP`^mhI`jT&ZaF z2%uD{UNC(lbgAS>Hq0w$7o^v^vIb+0Z((_nL1HCW3_imxEDE)v)kFWhd3#vy#cLDb z7r5JMmFVDfuVp0T9p)$YDNdoJ6rLTTD-Q=c*JH9>R*9>`P-(^2I(V-W{#^cP7T+Ot zy-&Ikd8A8c53^bbS4}WC+dK{aLWlrG+X0F;NIt)~OIqDy%5=_VF?0?~ux9aloG`e@ z>Kv-FN^H5E@oq_z!%s3AT4{)ostQL_xsd!j2FbKt6qZW<@yo1Mhw61De{a57gB`Xo zv$aMk`~Tue>FgTJ;8y-Nkh?aJyA+f>-rwKea;+(JE-#^L`nv)cX%KA*qHU`gOqsj2 ziu6j#`T7!>3|b^i)fKA+{Z(#k^~|4Ct(yL@g1Ke!*l6Lai3(XMSy&H9Cf!c37)r?D2uw9~^{|Hdb&>na0<-2F@wx}SQt->fu)Z3x z_|?ufztpwkZXkr&s%m&U0)G9~6Wz?rEOc1uaGCxZPr&A*SbFMB`a9IKRLz&Dp_84w zk?zTfsnmqpA1{Hv`bZYL>PpffzFF&zY~8yDK2J{Imv@D=LmXfN?mc-|#Z(fD1QijD2c3}J=OAn3G1^IPz4@1W{xJCB8o zjsioa;JUBD5L9sv1A^$s_i_W`9T;i$zpDh|(4pemKz=l`+tn!-YVEJ$h+21SkH(jB zVH!W6F%alFTg+Hk!V_I@Cr?eCbDo~N-|9`y^H=MEXTtut4IZfshdN8^%J_|#@ zytvWm#)E^kow<-mPaM+8ezwtR$0n@n3os*zBib!T=%|rEdE`UE);f_}l(?ugDuip% zbMzBGA-gse|FSd!EY}o_-&{p0yj{zUsYE>*fs%&}WNSmC9)uD2oRUCjZtE{2p?PTC zoN_SOTW}P5V1va~LK!{p=hykA6eDmSLT*8l(e9dL+5FdkL^wz7+%WqbaqS7o% zeSSP5ggrWzb8#v@{a>s{xNEDqVzXNe(k&Ldcf##Y>8&z9p$LbjaQ##0TvD~?ROnnq zJr|bO%3{fFvwkHD193oW=0L&7YkB&-Pa&opiUaPUet;S20ncu(u~VH)XtgAs+wNt4 zThyGBGvo;C7mK3e0VZ&oQLpWTI2TtvSth&Z{&cCHq-;D7MvhTzjq3dgc7TGJs0HNrvu@kmI#%MHSW1%q zQBkiy&)A}5Nu^1cBV01mExbL?y15p4qpK3PY3<|JRJlOVAPqqSzV3Xj{jW~nQLskT z+QO~1m0N3@`tm7Ji8o?OM5!fXP~V7b@}h9Fbce9#=uZZLho%;TK+Ij{A)Rs+DBeE$ z({y`vzsIG$)y!;u+Z34E#l0B3`d>;H}q66n38^8k3}F{Nt-9 zop$*s1}iQMe)m;j_}8}}&9ue@c-+z07<_X)_~t*KvT;!$J_e1LUZ#Vd?jd(zfq#N? zwSL9wtQXMun)_`YQ9M>*W^xrgxj>4R$3m+KKN6Kmopd?_KH2vbjsIe(`!=I0L@_%N za@?^ZEfGad2h)ic8UEbQ;aE1NT0X2}K^$@mxNP6Sc&*qsH>4j#D<5McT{32rR_IFo z@bC3mZV3$5OV7o2g0gw=c&YAJ5G!}fMUzH*bs25YqJ0m$fL(K0**XJPoqH%}&g zn*8Sy^jpETfG)DOU17wp>@o;Sxk%Oo8_SQSH6hAhpcPK-{tsd4Xh>3)3#yR0;b9HG zakeWFxRt*hj7b9+lYat_rf2$#S=<-1yf0>TU(9;lTfNoBXhrK+yg+Q?l!2)MbymDg@!UtF)uJX_(_6{vWkyl&SAOmsWxZ{?pi zap2ai`+4);EoljRTOL05+aKz8dE+j=3r9EYe56zL;Q1c~+qg1kyF5}2!@DwGwsqMU z1q>51lgn1fq(WI+%Eb3kCra;PtYSQk0WJM=1zS9`bKAOTqcd4c`iWM;>rQwGpX7Oa z9?jvZK^@KJ;#Xd5YTt!#Nfmx1yxEyfb}Rk1has-g_O2ur74bn(7xv>HE}~jY zeG=RljDp85)K>4qlqHhJf@^oV57KTqwxUy^lNr(B3eX;O<5sc2Th2ZGGQpUF}-^?d@^;6I?+B4Pou zLN(lv7xZL}f!(zeedKE!6D~63HehL`dHI(akUH4Hdn7dJN2J~0C0Umgp|c!j&k@Z- zz(`QnSzxrJ8wBp(%ERM7@u-WweG{fKg#by2jV70qd*`3G{}Q#nfeKxWKyLW)hTZG6 zle~7X!}OxoyS9Fa1b|4&E2VH4jc7N1N!EScTXzI~+0-tOUkI-3trh0PN?f_kbaZ_P z+=*7?wuAAI`lA+uz?m+N=4#C%xL>?C>o%^h-NsZE+y=*X(DCON_u-rVQIjR62q`qz z#bL*ONaG zj^1`~aOe=(qYqJRRK>Yk(e$}wA;o5mc&s5Ev9KHKw)8&a6Q42&^qG>+$;G}9z?H~_ zHcQI-GST$6iU6je<)TJeRYoS*ea7vruJO)2Pn7fh(a1jd8z)qOTm({9`O8ieJ9{?hnpRL=oY2A8k0T zaBag!?pW$EVYB=6{KwY0%HtRUq=Eq*qOcoJyY0^|Yu_d(W9(QLd< zpeTMSVVHN=m=}I`*l+!|4@}@-5Rb1y0x@jO76`Q;$siDq0IH*V-g6&bM_x@fAVugr z$6g}TK}53nZ6;vGOby|LhlIy+Yh1Yu*76xOP@=Z?niS1g!L0S9q$yYE=lY&2kG`M6 z+V|Tfj9m`$Is(9}EsMJN43(injn0Wy#n*oE8(4@gXGA;1HcSfpF8u&aWZ)GydJG#L zLd;vPkQlu0R4$r+W*PACcNKF{_e@JY_RA5G01OKcv75Z~Ss)w=HHRF`R7n{I#n+^J zjz`%Eawa^DqsP$xy!~evf(605Gksv{mQVY=8JnS_9vVcJpMxNUF^dQBtu{ZtRx!3h zP8-u!T6=VVoI{W9Bs{vmW`83k4Tst7){qTe*KiE+A62;gI(7#j#GPR6LSfIJ@87>) z(QY!v@LaF#4I_-pKlD!Cm%SA#rnQach1YRWFSi6tCYF}CCUE=i5Lg2Dc0Iff;pAx5 zW}c*>Lpm_;8*04N;)Gf7VIPCMefCO$%gC63kpnKSkjl7)5Pfp(>ZIXDO90<^f%%1> z4QBtWT0Q^%%n+j@xQ|z|;YkbOcKbExp2bgp@mnZa7|yJmQ67^Zl;M1<1`7sfu6Qzg zF>PQP7RI3f1n?YUHehPvaQ#GaM(J`YMrMp-o|ujpvn2(5%}H!LXnGEZ0+4?WE-*! zIUNc?rg)!6EXc1sruPv*V$l-DZ;r>n2$s5GfYDM6(4G1X3$Y(uUeg^d>(9>}!O_{! zsCbdo64<1XGNhu54Vy!mc^l0;e-7n|eXE`v=H*A{r-rBscRF;)Mty`|90THoS_9PG z>}Rv~i(y{7as-P)xL0?obF{}c%1(|mK^PTx9m)(mKSoG=B%C-@doNqHzHc{HI{~WO z#ueK0{ONB*@#!p8XTZbSFH@s@+P>{r{|vylaA*=sCBul6lv)7eZ@p&VC$Y4wHDRj$wZ!K8$0qnV14Y~U$HtWgIY{$t857&KQ5YM-zLeramA1YV~F&5Oz2kAARK znyn9ql3qSUX1zx~=>UE>$$5uO@lSky!wewF7o>~{_9AKO&lddl6FJ4E{$46aEe)x^ zZ3@#34!seg)_Djl+t2FhSDsn>=tsA8=^r2fa%`AVrbm*FXbMUjve3gaETP&??arD7 zvdqHo*#b9Zq@{l;OR?TZ@Vou?BC(vxKTtx)5^*fZX{nQ>ar;*(YhRmSwp6%##vNvm=;uoE|5>F~_jFP!MrH>>%;SAe}IqaXOfSj1L5-Ttg zP3P5Q(^G`>ISyyTNEEr4N|{n$Mx-z7@eFm}_C#4ZxhLg@*mN`UhDIy6rMA*6;Ag>w zH;K$vM*D0%&i?LHugy7v$#a{r1Pap@NzU^*Q9PKh>&awd4W0;Z zlS{+VH0`x3Vo2o*_Ha(scUqNd z{E~{sP1F)(_AB0Y-HDM=)x)2jEsDP|i)K_1(pj6k&EDK^^XqQOICAr2+HQ@)7fDI` z)ns#1gbX`jP^DgR9*AiE*giTW-;r-bHg&1{79IvwrBxO}ZYkc6cpsB?OjD z7Bc1-EJp-q)Y2ETrqj>);Z1Atk+0a)pG)H?9s%&Axm=$bNpBX-*YlD=-pAoc_N!i~ z<+ENr?SGD$*|YMTkj0D(pPIbI&D z!d|TS8!BhW)x+-c5pBPh3u||4uE2r?OXp1KA)RxqYvm$IFT9B-dnm;K^FS~uZrY7} zw=chQfoqSS7ED**{T%>9XyRRGSN`ovc^J!=!76_e09OSvy%sT)IV|eSO!cdyw~RlC zcRA8CzeU*|sMGqmX=XeVy73Eo%nX_6`j}YGxASQB(drY)h7%W|u0qeR55%VUkf)X4 zzIN&hT|TUj(%R6V{RVxPjO1uSGtVoKIfScq*mlKJ%KaVpl);P6ja*!n?W)mJdu{xF zFyQ>5arCn(bqW!%K&08731033oQd-Nh03c-SwX`v0GxtJbYZcrsz4j+q_*|DZ}j+wCp0BCnLnbGTZC@ z!szov`wym`qjjDA)#QUE!+#c9wr6=;&ZdNp*V*A13Y`+EWl|-}c>y_vvCNRstW!z_ z)RjvsbJHtv%#~&s_ZhFX;yL82v`kA{DV>gwX40E|wH7ASSI9%!8 zlH~$TW2L*XJUEFGEp4qcE9*;_WvC%brX9nUd5>Ctk<5_Kg>ZUDp-j>ABgxU%n|WSi z&h3yz7on8cOrXeu@Y>>`>5hEb#C9weVSS!L_rhJO*HQhV^w3oEMGYg;p3@UgMmxFU zLKG&x^wm(VEl2V28oe2P^H~-bxKANwpF-NRjAUQt^h5~LyQ$n@VNQJ|Zm3Uo*)ugj zC8>R%hqve*+n!<<#>4;J-TU=>GeV?H*I_QF<>Um$e;0M>Jq=FZn4)#GZC}l2%Ye}w zUDr?JCFb=#PQjzyot_qvpQ6J}O8UA-i~Z?2(X;XKJ!Mw$qhnm-kz}WuKSq1h`7L;l zo!#rXGIgOdfLH#w=dCKz=xcrTTrCj~?O8_a#~h`zOJ7FCRd?t7|Gad)xh4&`$aj?9aR{9gy|l#vUf^Qg}@i)qA1#VUDbkLJ@Y?cLw}=Fw3hf-dA% z)z{Ge0^Tlv}jAUhxu-a{0~)3Dduq8y{A6#%DkH*Tp5ZA0e9#xu|CoJoY5E8yxi<8tCX- zS?;ShP{9s?y_r8R*KXsEIt``_Udlgj|8N;FB3vN(O z<%C9-$(4LbyPY$l>ESm2cHKx4Nb}fGn9;ZBfiFfN?pXK%o0Z;o}=l7b>N`~&R zL5ZD`j8R_uyUy2(@loXYSL!+9!Q}@^=z#&1T-(!PlIO(9_Cw3+6E{7SnimDheLCUA z@ENE0Sjo@wHIX_)@OYtO*SiiIuJzG#xq}{I^~8yTp8efVJB|3qqP@NPNt3^G4%-iT zUz||&AT%w8_NERlhdw;kb2!>Ag42w}ZRPM--xGQ{eVGqs?$yU9((Hf24wOLYy|PGm z*u^PT^21}(H-sx+M#gzXjwX17_4d)*j0>pCniHPV!bv9!A>(a<>iF^5F>t%s z@>;I3J^AH*6qM}YfxMijNV=Lvbe=|mM`3JkuBB#u?;A6_*|L7FTLe=lhk0yWcMkDZGy3csF8a zK-f}lnnwEPvE$a&qi=VK=Y&SYgp(JZwp+U4Rw}8L>maaPjDP>DAg{G?(vP2lgwiho zqiOv|14KLJ$K1sZM>D%Uz@`m>P0M`u?w!NRf$*ZLvlJsxW>qAR@Qd;1lx~p zpRc$nGlgveNgY+y_jm2`$h57qE4ju0>1oJv?^n)FeqMsG;xXmA!{im~-KC{6!cA{3 zemfv2t5c{hOJSwK;HYP2I&KDo@x4EX1|TysuMmWPlk;E-b2N-2c#a%FZHIN?9@qLS z^}bhTn<@#BCgtOEmFJjESJl294oYpM2lpH=i#yYs^t=nWhjV=A1AIRi=%E|zUDFA- zy{NAR!A)&M{>EI$L%Uhm&lX~u(NQL^>w7!zedPb|iIeVzzSok@O0o;Hi(AfBTFmu2 z$eEyPH$MIX`TM?A!!?!-l&S5T{4@}atV34V`{qBa)mI<-(woBj0rSaru8h0(HEsFt zjRf5q-NP1IVf0E!b_Nnc@>&RD@W!P`kWq0E(>4&kn35yy{Tbg`JXB&SD;X27Q0$0z z|3DB_kGBd+l#Xk9qxMZ)(5>lwF~o=T)?fTIOTiJ^M$^qNbf8u&@nwqn?if0T<%~lA zkm)S&Mv2FWC2K~XBpMc2#DB}Bw;RXxxOQ<>+*{C5Qu`(qR4KE#yYRZP$~XOCb5s{E zt3b}qbQ?RyGzlr-Kk5rz?%yYa9@@yf69+pv#Ks^qhfC2d@N@$bSn9_2>XxKeU zO%{&%c=C9e-uzqRCtlJUGuz2r(m@;PW7Ad zunKbL>8-3PfE!!eJ$aRvuZ;re0|E9e*;mGjon|wNPUUh%ifk8tA6cs{7;hbu@cGx@F$_^<`< zm#NhHd(v@;(tcD`Y2k9&IuxKd_pv4G+du^Zt}z8PfXbHgiq*LUFzcftcE zbW5EvD)S=BNvWkLpW>}E^%|_|9IN*{j5{nP^GurAT>t9=@h>0Eq}R?+2c%^pazo`g zc8>bE9fbFl%(p31oS3%iw%)X81*hSx&gh+#k7e%jQCF zU2Eq(E^?piYx1E;A4!VMvR6`k=papXI0=fq#|c3w2rga=HtznoPz_1A2ry8ck1~Yz z$e6d=F8@)~Ni&e*=B-uNI2^Px?KBzKR)22VX@7E)Mu8UY$N91?>nHV4$W&3JJI1mh zgxAB5n9C5zt795;pjeTL;ce}n?IvC+up4@mE2LSbgqxSNc9(roQauMC;o^UB$)RI~@PKpnn zcKUgFDXlYE=uUH80hYH23@?0?Xu)2@@B%79l2>%}nBSoyfTvUzY1i5I$5`It-&S@4 z_eCZeS(`eS6$F|h<0?@D>*)Qkf!BfBQpP%Yl=@0t|8$p`@IX~=7qD~yAZEm z!__m_;c3Nkjq?jTM79uzXor_^7nCe*EKq{I?Bx2tyP=Xkl=+FL;Nq(ByAvQK@C zxM@Sf258W+&jn=Kff%mVz=G}@nYJ@aH*+5a!+pGwOkXtdn&uJm8E>j5OgkN^i;+LI z2vaemvfE%Y*bcT4dHY1p-5|)T5gda=tG)vY`JADJ^^$S2;)~PIxcmb;4+fP_JB9m{ zHPv66rl(rC0BnPnc?w%us$bbn2^Z`|Bu4OEgnfmEj`!ghWIFC8!Bfli zQ-$v7rEV3adYdZWK zBG#)xJ?FF5qOyC3u?|sPsW3Iq$EUge?lk@7z%&euI!0jC`~JI;q_KOfl)Rj6VoL!u zGm{+#rbiP4j&0+OS3jyXM4P_wGQNG}|Xe>KUe%A|8$R<3|Q*CUt{}BFk1~QOF1cuI2a= z9VfE{86c;xQ;cLbF_!H7mn~uLz z;(dc;E-r>~*EP(=86LF1Q`~Ut*InYd+>eV-Ss^WORZ9CsP!eo2E|8US(qR7 z!og0@6J>6h55xPud@-A!NYFqBS7oLBY3YhD<9uzAueX^uNIiovL{nJqR;B+w{F#&A z`0s3JgaO``wWn%P)SvO6W7m!Tb)@8$+p#WL*3NtGekl`L-Fc?-O-bb)-V4p~+h`Yf zCMKBU6A)!~KlgQo+{zB+9z@EpnRd1{(Q>r#bjf(qV#T?yq+xiQT6AS;rL;H&Xt8B% zLCLn`r`gH2zz^@BsKX8Rq^Bd`bhb;gTRqdPlY{!~E`Da@_qKY^g`(hr^{uJSPO!4X zwH(nH{#H{ypX{+*YfFw6eDMif)QH~l;||)q?Q&O1@8h^v66j z-quva>O&YqPwmW_YyE-80Ft!FIQ)uV^WITGe&TH7xt#$46$fRqrA3m6`=X@umYXz+ zF%4iAnUbP_BaASOGW7bN>P*vrg)lQF4j>FzDX*^IK>sGH#VEupZT#>b>q&#LjtWK351HZrtp7sYcki>@aRx0c^8~JfOT$jM5dC9=viX=^j>c39{GFpYoh%o z-n;5e=S$`Xg=9aSYFtXRnML`rK2!z8YTIB@Tz%b!o_suWRW+;CjkE8+#}ff<_fqOnlr6@0w}Dp;wRM7u(hhedr5vkZD%D$$n=!oyCc@)F4v2aiU)Ap*uwvW^0R1Ri5i2wTv_^g$_Kk^3jn|<9gMk zQ3}Qj0m5Qdq)T&Na0y2!crZ0N^cvAzDIVVEj|ODI%a>C{!pH+pqAMypNP2qKrfPIu zY5Vjg1Sb}nMb%5}0Q85#omtD?4mN&QhiUbdP=h{)h&xvZShZQ#M zALGV`Z8~$zsY|J|XyE!1pZJyO`jlDRhIMIC2$|XmbwWOh^-;Hyi8q$Bq)O0J1a+Nj zYIMD*?B~Qw{dR!T5SrbL)(>He{b{f3Qg?Xu#=TyH2lmK0mjd09l?uVNeHkWhlyQ^d zkcw8Rtyi>V#H$Y*iUMW)r zFlqhPZT|A(I9mz4xkR0jHS-}{OCjv{`&r}^`?<2e{MNp!!q@1vUbZNo``jc9d;-_fkJ;?#xa+_MNi7-B>f>jY{R0{2)zp_cN z(Uk8Gb5PVJp0({g(HX5-EQK?JwI?*hdP=SfKN^q?FAUXElvtP?YI)!3X>I3ptc69n=l7AybFEO^YVwL0$hRufl~-S6oj8?^c>n?> zn-?m=(44rsrc;VmonpZay!%^2QmtuJc@u7Do&8aJyWaJ~hxY(2DvoCYp&^(VGm+(y zaLM{;{uvdQ;^;ccOtqMhqlZlH%@@_rm(EURNJP!)QJU88M&ix)d}r4U{- zA2P4C#Bp6&uYdO)C;y-D71~SFxpUPY6P?`M4N1c~QM7@Aff6fWJ%-vMs%iM$T6Gl@ zo^{(mx-T7MYQ5})ekMvvGWW}!m%!^w*4?(uA1Jiy)s=Um3v0_ljYUP~!XG5NNnCq#z3kDzui;X%6C5s(!C4YTT{e{r%`wD7TuaDjPHz9J zk^a^uVGC++h4qRIQR;X^%iYsm8P36SnQ`sh6;O)9{UU+a5U&fcHVqt54^Pc2hsCfcb~v5zd(#zVluNJeE;R_c zGEv|(%j|ztvA&4})t9Bnfp=CudPR@On13@Yj-Gt`G%I;ko%u?f=RYuIk|4& z=s$7Nb6qa(^BVJ%=lF2*>Au2vfz_s zpXJ1)cAlurOKFi5;)y6J{kZN@u9m8ITq3(EPBs&O0QY7-oM}TIW?!}jI-~_E%T^Yt z_ghUBoVBE7l}Y24j^VqmMu|0h?W#*Ws%l-1xL_CdIM z#k~enOG{I!yYX$GzyXbLG4wGfp=(Sc=37fIOvVOZtMK^>_*(Wmm9HV+ky@JUnCCq3 zjFnaA#i^6J)am9?vWX16{=;L?-VP^aD_^VavWEK5!kOVnH!b>X9{nv z4pm>K~o!4Uu z=6$0s^~Ex{j$`=Y7t+Bg4CyFKeOv35klB5(vhpc*a!vZYAyXd^C>bBny3dKZ73V0V zq`Js~dMi`?A4q76(c~_0AgJE-=)O;c{PC$TqZB~^YZ6ZQInG02Ihqw;$0XnI9H?-i zUbnzE&8yLEr28^DniNIHRM9yX*g0z}>_6v3>y7#Car-c?WVJGBmMfZ`+k}f6Xts*e zf6ZDJY{Q@Q=q`kCgfCjM)B`#G+5wp7z)KV7Yo~l3i-;{BcsPmW0@^s4Ayb#zxRm+z z45|pkB7>%F$+jpwe@FNrKQ7}g-IVD0F3|dawg^J2hd`yfD0gh^0jt9hZ!>B1jqIX- zu}QE+eJT!RI(Jctdv-uqcoVOrI;mJU$}+OvbO)vKXcqKkiS|8%)i4*CRSTl+WS0vT z6MkWq@>=kfgUTxD|cC77R^-%W*g1-uqHs*{RHV3-mjvc z`HG0yUVCyE?K(w7iluRH;L~fy+tlS+mjw-6=Zi#wduGKe!2Qe+j70cEcs)K@7}`j8 zgB4La%ik&dq4ju+KdU~EOMpMVW6ji{J4h>KK50^9Et=Y9xwa^P8F$ZCi-iN@7rI%7 z$JkOQ^}0D;$6k$YCoPi6I$|T@?s3p;o@AvoeOnJnF4VJXNnuq8t>O@;bK+&(%8Nkdl}Y1K+IT zuAD$J8ihIoz`vP=8eaAiU-T2GWKAj&qNgTp61DXjafZXPs_x9~czlNs`L&5cVhnGv%REO`FJEdX=6`Ow@d7?;Lk9V#|6#7`>cC zm@K8|4j)F; zr*hoH>lAr5W^h*$O<+Y!wBqn>Zwh|=K~2=HJFeU!>eo+XPO(-^u|M5%?^>Wx$@C#&K_J{}F{Eo~K+`k%!c>l;3^@=p5ccJ2aEJgBN!Scm5bY z!`0d+c)%N$Wm)Wu%o&F8s_-6an#w}%7bl#v?51mc?3D0xBt1pIL0w72FAs5woBkxcJ3_QIQMz80UcS%_fmqlCOkDtN zW9?nQ{+t{HGZ3Ig5TLJ6o#B}~HLOLOARD;YeYUdtDC!h()mfVDdU zC&Ei{X5K&P!SvzyrJq%cl}ew}=<+BT?N>G3BP;-mW=i*^5|s>jTNayqP;izO*GBVT zE8C0eB`DL#mn3BUoE*5&9KJZd=ifUGMbaua`l_-*{?ZsUP@2QrC?51Bpai-0241D3 zSqiREAtpZEMiuue0EZqiuq?fzI`W4Hp=%D7!djaaF0lpYuH7pzCCVVJzemqKyp7y0 zJ3^k8yBQoW8~$nH{^};dn1uBp4mbyi_=H~wew>t&@^Supgpb+QwD?W1Fbb;4I& zmEE;r@%pCH_<|WG-YO6l2O;dSM30lX9B_kC=0i@V<^+kb_xD74mrU z*x%&ft-PG-q^Q=1q;NSq87X-->E)^ zlgDiWAIbv$>7cPx%jYIV6qcmjZ?hz>e$a<%gj#j=;@Vg#t#z3GmjUvPGj_p8sL#ys zI=N~izvgMC6@scioV)TviK!~*1~RnR)jnl#N6uFj3JgBb<`Pg*bdfw(^wCsM7>f{< zDalhjKXTv0sEZe!uD^X@H~Vv5ww6a4_HYR_O&{v6PAeo^4NOn&eI=UyG}&dJA#4tP z$j;%`OmLFN&?H3=9ph=G>{;9g!NJt&FL5=YVgd9JkM^QWDIQ*?8YxU|LuQ=q5$vSsn&2 z$Zb`4w*0{UfXmmZNMJaO|*S3<((yCp#THvp}sT4lg=D@c_7yJQd3kBa^5+l>uWuD@!}CzwC&9r;)Iu8*(6T%*;iHU7hCIB}YN!Fh0T)+P_ygj|%+ z7p9BA)Dac{OkRBqfp>+|dah&SSs)3LjPZpv>#siTA-=Dqa=<+w(lI2!zxXLj3GR7? zCDW=S^fT-?G~aYX#?c81To!h{BLs1`o+FD(P;dJc{_wr7p~3${*_+2xoqzG;n&vZR z+RThf8){l5)Fk`X6p~OVb%l0YmO}PrrbUq!in65Wl5}ag$UY@4%64tp=T?a8B0^lt z@0{2BYH0fQ{eAzL$2=an=Y3x1JkRnvuk$)D*5I!UI?5GNm`;)e|VrhFVAIDy%aZ^rG~BXEBq^4T=MK^Xo#h6NJJ+kIfOa-oS?NgNA9adh?@*ztw z=Q#1DcE%kq3}6S+9+1=U3dV-gLAWT|XJl=G`;VE4y^8!LJRzathBk(ZJLD_XPW@ee z@T=@q4E55Cn;q!eR)P2%55RSBBLx$ks2@snZL5-|w}`nUJ5Tm>UI=jY!ET~Fm(BH( z+(bnAz7(}s%D^reX9P(|Rj+ilFZ@oRU}gQ!58!mz-*b*j^6)YTaj{p>nlDawSwV{~ z&qlZX0^c|)+HSaDaNYpSI3*waRH&`!9@e-Yds!!~V@YNyN1Rqqt>j zBwmYMdO6e<_ow%j;NEWDaA1Z>#-FN67vMMQx}0rH{RB^xS0LUVVXG{43HGN=&h9=b z9aep)Vod<`Ul$i4_JE#R7$yEvF)HE*#AkV zOU!hY@_Fwso4~u{?5x-hCfIs=(OR(?LiOh22-EjyOQ>-JPK9+DABz4w&S^Attr<2pzj`eS91LE@l;sXJ*GXqSCUpG`+=;B93E_A zmCc7@kM?v8SFcuGizzMh^|G-2odn1|ApGqs82gQu8wgb?>SZy7@C0u#ws#j_j7wPE zcW^(Tg+ojqx`JRb^Nv+NGl7E$KD(DI?^$`5JwcDg#1~>k0dpT7?yx5=u6WsF@JOwP;K0Ow4 zUr7Au9=E%25oG1Zix_zO$a}-7vQW!By(}jai+N(#0UQPNUMX6?><1RSU<|!U zj7m#KDiZufH@(7Q-8tHlx=P^sS@3b0^cB-z`x_QSR1TU$$!7S3`L@(P>0}q$OA}R)_@fWcWA%SNPm!MkZQPn%O z<)on1Qk~mJt-S*)RrOTBb~QH(4#%eJbf->%;u>afz*Hy~bz{HWN z^?G-h>Zp2;_}+o}l+9}Jac#w|Nntl=3UjcyIG&qO@HoHK`;HE?>y}J%eyKk4R{apX zcc-gRWi`Zj&AZig{SI7RX~%s-)rO#4rn)Xq7Cv!Zo)(=;r36#pOuFK^-Yx-1G@z50 zd_{9@yuaWfSb~wvVTNm|(ycSN!(Bl-lj@JvO2Ov6Zpd!(`#2avDj8`jJJJ`Cs-UtE zgc?{3KKW#`cVrA;R#VhXt7c z93SKF6cQfcuOU$14TGgm_MCm%D5hNa9PhTU**ig2yJ@2=r8$iA^L(vy@d(J-g5xAl zIq6BPuuj%d(6w$bECxb9Pc-Z0IrbzJab0)ipa>(7`cAj+Nb%@TElbzQ``LeLlJUJ- zcy;aaNK4tAWp>$SRNKZ=i2Wy6N>?iLtfI<4ZRVvg9Z)qHiM{E3)d*Ni5a`aA?}V(g z)*(VQ)yCRQ0c=DmtTLB5LyHspG#a!MqXO?DOoNZf2tE8Eqlw&(oEwxIChqRywh;b$ z*=6b*x;!~lOeQTlol?x;D(?Ylsr;3$IZMFXfYdS?`%LYws@`q)>)Hca)mymnYY;BdwK0cQg@IcFb8^XH{({&K{eR6${!!>LEa(XBsWSVXTa%^ zqa-K(IoUuH8HR1K1I3#QFUI?^i{V?e^lfoluKo%i*db8w2&2kQIh}o4bw=>oTroc| zz!&u1H8lBkIjj*pg?|rweLKnk)w+K^Z3AcEau5N0Ogb`M-G0VJhgRlWWtV?Kk97hI zz>y*4kt*-zy+1`#n*Fjlp->$b^SZo5N4)l~z7{9`sY%T<1XO+L;2jE3CCkYif%U%< z_u-P()88PeA^;c+(dF!C+S}l1(Tc~T!?~mKNL^rA8(y5px5gdMmAk6lWOqf5X>I z*pW8}TNYJm$nS=?-`OB~7btF>5Hw#3V^gG6`zjqpD?Y)ISYme+HXp72g;88hr7zwW za@@i~EiNltT=<@N-Fmx*8MOyV5JUE6ybyC>gji>vt=tx*ipu_UT>aB=M}5QL9{CwC zRs`l!IQo=+^1zzi@uc7-)^0L12&bwQfLtZ`)Si8`=zDxrEtJY8JAk*%*&Tg6L9V!% z8%Q}~Gg&<)v+@L^JVl*epp5UV0_E4r9_)-Rzr-av^U`BQt}RGPoabq6fmNL?TR3a^ zAUaQv2xGAlkG7lwS9=(6RG-w~pzl_)J$T7<8Ae2@$L$a3MH=A{vg$<7#kPptBLc!y zhkxMHhDn~%LPDvVVO)zY$BLN)dKe}`@?jKLQ9@FM;UqAHVeurt-{EAb--G?Cl|9Ks zCs_8V_3+us?L;ucePM7hneBCRu(@-=-y21tvcMjSxtGG}GkP$;vR+)w2G$xIR$0ot zrp3AQbVp4iYWi)}pcfxg8~6?vB40fRim5Xu@C1l@pN4yr$n(aJ-_+D+ozT=wQXvPND!keG+IRL0DNh`3?s4B zBk|tlK6mR})Wlgc&VzN7IiJ7Tv;(UMsD$he7028z4NzTM7PaVW09PLz!vA<+Q?Ct9 zYj`&4X$Opdn+{81RP;p8659hGcq_w5F3rFXcmnmmU#F;too$j)Z=0L3?;&^ti157XRO#|{cwLl@w>TqEcG(S89NG~&|S;qF7?3d*7 zfV|&5Ywx&Iq@w-)PiFaT5+^1r)m!6;{EWHRn|0iGxyoH2pJ76Ch;`WstYf{;uP8;$fRc>!ML`W?a%UH_`1;oDmot78 zVgRPkgjH5s4OhH|>3~BMp!0i1j+X%GsUzyOr@77dA(>g)yP0&#!&X;Ims}u^JGte5-0s-5wu4E z#710gY|YM9+Pdth5y5R(MAhIl%BQV{x9efv&LS#K>SghSYSdNE0`G$+wDYkpG>Uh8 zB^h{6!9(fBZGJ^KppqRKQ$$nhx!WZGz+9OGw9U^IdcH z8JE(mUF`L^;89k_0!CHaDu`FZ-O$RQ8tHEwg%wIy;p+Mgj77Z&nMtM5vQEN zlRb}*#{>92v6Ms^jg-jlSDAaB?72`7mFo_}(oV@|Es8Xf^{BOn43#vSMDRbuwAbdO zYsqj$Ad>m9Y0(i>z3ItnVLQ9M7-5nd&7iisxCc(7zwx{$yC-&pgOy(u># zL&`zYUy>JxAEWmwF=|Ual1d@ZD-pu$C<=lJb(7A*&{wlrMa$=9YkG<<5L*pq-6X|m zEX_zN)#ZVU6S!{1S-Y0RvcKn$1{SP?L24?0kF?BOPXIVtSl6GcbP6Iq!yS%^MT<79 zv>fRG;y7yIFg#lIQwuBvw!NwvCL~Nwy!+Yvkb*^^P+P6^W>%Vfd$`TIu^J=Epl-dypGnYti$St^iqe zVthey=L7*+KiQ!RgC z1C=$A$BoYsuQBENT70WhA=;`(uhIGtTx%EqN$4V2L0j*+wPMwGbF?`*auyT6a(3VF zU~k^Y>l@vd8Ue(P_T%^edkIJWcd21!KY??Vld2!dW+wbz!i71+;yr1q9`*ZtWEL2VR}F2{>Gf&y9!WMu*Pzf-_JQa+*;)~efcP73pXp| zA(vSc->X(5X!VYj^DBHHJgIjs-`#yr!op|HTed{c6I+0vkYV(c4pN_}%7F`|r+Ur@ z6gH~+-J3IS-jtSK?Q&8AE#`>Lfj{k)VDy)&X+(6wQ0`*aaG+nZg;D&B3doB$y`=Mt z@DA;ErEU8qA>GyDFPYXE>+PonU49zsq|4&C@os_rN63}rGg|ijqW#l^0zkEcmn(;@ z)URLE<>Aqd)&0tr{nWNnBg0HWDh!tN%mMSGua~kHZ3C_5vNFWEg3wr|hIiG&Z}(QuA;Dnbh0x6;Upd;-@H!%; zK9#-x-#?c<0P!4z6cU!oO`~4T^K8!tNv*0i#zj zc$o4wU9zpm=uG3=b?N_`%2zLG%>5MwD#_rL`e;ND-tkc}_E7AIU`YbLyHuFk;K6Z} zE`3h*K;Hms$)WeE*NA{_)z)(5!Gy1$p+yH#CVcHNIvzm{>a6EpnoU(y-sG5Zzd=ma zG>&i^LA`?!xqpKA$?X{sKRKS*0Gb-s<@s6pqWJYt{4td+`zZ0pLyxD8EcWW|hvV5d z;DKBkStr@-t+?(EJH}{fj>ckwQGKP>o8UJ`znc>{ckQ7QPG{bvHXMy;e;U##EH(vK z+zAckjd#UQ_x%*`pU*^MJ}tjz5;?EB=UQ+r(_e5rUud_s;v-%D;Dd&(aj&slK+6?g z9f$8|b-bg?%n&*OC~9UVrQiqVr87Gr`SOdi_FhJXu;=uqZRETaVoNINPsfAu8@P;7 zmfAwDV2t-)Z;186Xl&7<^=;l_C#Ijxzkl#0IO!v0uGeOXeGiK$l;lp08UE`HD~F&c zuJ~jv;i(BPNSH*)Hk_QZ9S1v6`A%nvaNIS`*L{TWI@s5 zdFf$dBN<&k-&z9G>#Qxh%Dw*rH?593)}clFQ#z)xShp}Gg>$v}rcP;%(keefpbIyt z5!uN5Up{)!6bEmPDPX9fdHw6ZcShn6(A_Z)C-*BYQ4zpDHLVff$onCmKD-?CE33ol zSxuZziCe3#i?y|JdQX!!Ie?Pyv)`?tuJS$prfNDAIC=jIiiCZnxoMicnZoET*8$}p zOA_$#m#q?WkraOOq5*8_cw3R3vwm?{-wpUe$xKG^W8xh&VoAv?_+-b=?HO zW35ZeGvyt(YP_xhd1H3p#q(ZE;J7hUK*?pex5~fg^qU#sE<4@2jDnX)aD`)rkH2B5 z%>>HfF}=GenOn(XHi|_sXo}ye2BPtFmD%;P*vKW&lN47d#``$&JISQz2Pc^-)8@|! z{NL2}sAnwO^Vy0jA0>2xFZKOYI6H$yqD)sd6ai`B1wj#9*M3{awj}l= z1D)WTOoP*XLIDJhkha-@M0oCV{Y= z3gml6@gqtg`{_+v5sE|{4cX3n-QL3@TXQPa7S*V)Ku?*BLrrG1h`Xr!>64LlDlrdV zp378KX$Ou!HqwXxV4mN)y9N&`HH4XJf>fRm#Pk^+-0ORN>%ittVF8V+>Fy4PMKj@~ z@=s)ZRGKRi<9&i)yauPu7pb?IkIeqgxh;BhAUe-|;}OZ0X{Q8Lf%R(*1&YN#_6viV z!V@nrA+6GK5Ag=qFR}~?4v!%Y$pxRg@h~*bw_gy-OR!dS1XW@_pV)XZ`Q7_+nD02R zXmJ1;DB-Vyq|IyOH}ZbUr+Z5P<#Gsud>ksYYSEc9!Bq}S5m=!N0hVD26GK$qX%{b z{R8Cy=H-+8OqFU|x!3zowo0_wWl&uHLyZlfzo9M$En8_twloKAV zZ#>y^ewmm?JUoaVcB1F>Dc2`>LQLpOau>%8pF9=T7Z0M@YRM?h<>LhtZPoG`^^LqKlmjp_P+b@4D?2iz`u+QIoKSig-pQHP^6PYm;Tq4!8=``t z9+u+6t!Iz?k*CWmV;T_o*m#eeB-NOCi=})qO~a<1B4wB2`n==hCztzvDTQAU#KXin z-z=YX>{G>j2?|GM3M8HI`Ox*3oE9E)|3AQ%Tw_`^VsK zX0#EwCd2+k06V0D80W?AE2xx%c4cYS;=gcZWbyE1c(w1ykmC&2Cx8x&3V!UqF^^nu z%!>r(qeAN}wR$`^41qI4qSgd${7ab?7tUr9V*n2=i867p^>j1`p2tlx(~^D52QMcwdy3@&>ow z^`n3>TyjzB+%Fk+!e0^apd`gz9^-xL6v6xm%wbjo>GwfbX}8I&Jv~%|0qB?94L!0s z81Bz8lTY`}pJ!f^jCL!UqSpTh>6}ez#&YN6h0v_$*kj(ph{*ADy8z;Z+iTvM%tk(T zV5UHw<4Ec2@7_Own>bhXuBj+SYL_?QDf46$&s!<3OpLdGjV`Z(=|EI#{dpCI8z4iN zpUnRNIal}@0ko5MyfWvv8V4&k`-WJNp=)NrZ!iJB`m4uV9968)C!1xmz{SqZ4Y|oO zE2**A$eS@;hHHxWx2HwBQ~0mx&M&vQglYFmTmU&}7C`!Ly1YQE#v6TgS=ut6%rckc zLswsR-(MnG3m16WI22tPetbLvSQnP!u8kQ+)_0(0BPuP;Db1#`juOp6A1EhFc}AVQ zN){rfp<^f0;bA8VMmx>@#}gFYkED+Urb^B~r<&s0cSGc)zZ|G(SyONU7WfR>~PHpT#x)K--r92Z{%L;7CZh5Nl$CHDw;lO=sWG17C9{v~O_^rgshJ81_{CJB`S9aS$%u1e2n*L5DA~-7BfmD$GjGe=h)Lu zSz-bwaA;7f=hGssa|HHZ$wR)QjiX_9*}awQhh=f8)i#F5cu)-#vIRW4Br+Q}@y=PP z$LP_AZEK*!3q!z|YMp#gzIl0z4@&4)x6HQbc-3_`Zi$XzTE^X!#?yU^Y#?)W4r$EP zHH`GvD3R=hX@Gfa;``3+a@*{-6`et?Xm-~-NA;LKmKx4WX@j^eLNe}Kvn;e2pW`;P z199%y!8-?}_m%p@W?m4p^K{?hnoA)5Wx1}D_)V_Cl)h8@^|^TA-fa{42K=wdWf#0~ziNSl zjYCD#Q`iZaF%}BZU z8Z-i3N6Lw;k;OG(w@|gyeMTwO%G@zclV0FZQ(l)a_3?2+SDL#aX84TUW!85@G`#p&UVe7A-8XBPC~O-zH*I93h<@HT9S`2du)Q2Q5vqL9mEGg4pwMgX{# z=w6q1fhm5bPXYmWWks$(1;7Y0hu|$VDr2s@cMBM_&*i?wrD~d7`mhvy!gv>_M~dXt zTX*HS(Wogrnn)k6+zSaE0ITaw98WlqPna~7Mp_#^I2I)$_5`DstF^_iToYyjGZ!7p zN?Y$7%CW4Jl(Hm_1&TpM8Q8SB8adA0%)4k6jo5p(aSVI)%wyadN1$44Hp1%qnf#e9 zFW4#<4gL#ub#k1?vkOy1goO4XyO~UxGkuao4nO9er`R>6nug#Zp2tVx^y`V$h4SM`J@;0nU!W3tO?SAE0u)h=?z&Z)vHIW&{*-g<-xh z1;Ll_lIgs2YwT=bI?M^d)quc&m0W`u??51&jtJb&C{E=g@Y7>!3W2kRVX7T?Dnai- z=+BwJ4xIBWd))bMsRW#sybleO&RDTve@*$xPli5jIu)HuFNP8e{YzKz!)-bSD8KgAM(0 zhZJ&{2`;+DGla}QEwjvO;y3a{>{fEIKk9k_E!vg}#RXlOW&BX=)YH(6Q*zjk2w`2` zC9BbxAVN5EjId~@n>G?AC#D&=whX4hnLe2slexxGSZ5Z)WOZ=16)Un0 z04m4e#fekA1$J$vaA|P^QA}8$MCk|t$6I!P4*|!PatB{t?O~Y9JM~$Z+_B2rCMW%+ zK-dMWKpO9|m3V9reb~OHA9=4}e&+o`s5J6^8%1Ke7TVzcM&5UArhb7U>EZ|DWoeQyXYWPP-M`c)S*oT505L~^gjZV9D1dzQdc>r%hXQ<70nTn>oeO=O9_NJu ztPV|IC6)W(6#;L5Fr8UJ?`>h*^#gq+h zp)BT7xJ(#-EHGS1iS19%3*|4>uqJsUZ;l;U(%H+6WhDNt-WDh#GvisPT;H1wPzu?F zGG{Oy&h)JXnU6`MjM5~%`6a!=ikt?6Jp$7aopX(jO&6k(AH~vmp;qd#h?9HWo*o2% z%ifTI@=45u+UWkRZqE(Dw;rZ@>oTLkw~mN_P;TGsb)QXw`wA(GRSa@&gIAaBa(bsW zpYmUY8ro5lwvjj24(`MP+Z7bszvT9N=8Bw?v^!jVCogX@k(*uhoeFl2)_h%_1&TYk zvSk+~ZYJv}9rJuaw8mnb7IPmFYiiy2E7y`KA>X-Xw%B)zF!6b`krY54vYx__*_tj# zqHSf%UfajsL12%$KzHj>M)3p6iAW3>@|_6W?{?@BRduQA@*_X-JY+liE7z8}25I|P z$WXMmK%M`Jy~kQtp@)4H_umg>spWen+OM1^UYf37McWQ<%Owyen3|&~vv&&c~8s-wkisu&=P5 z;#|4M8^*|A%Sgs73Y+S-LluON!2p>MJ_g~=Sw!cq%+A?jcTnh_&rYO8>(F+BOp8AK5K5n;AI_>o(HP1Hk<|AU93p%;Pg65ou`6$2F+9Wa_uc7~m z^TSREt^{=5W(8FGEURg;+LNcI!1YJ*PoYI0q{Pqa(qvIiQ3<^5bGyu@(CX2hPLBNV z(7j*XBtM2DI_IL!4*rL5)F0aoAO!OO-L4=_GQeOapXpPc_xi3lw1N4pwDLYjB@vq!N$Ft{;Q}27h5azkcp@X)>Z;pg7nx=4y*y}fg2fcl{Z(XU6Hf%E2`uI~Y+=;J1 z|M)Ce?pV_Y*AxCLP=`Besy6aO?N)IEQGe~U=)IKw{ut=C;?Ed`3gXe^aAmkxhbEW8 z%2`&^iE4Y=`GHbfBCjJ;W`XX!=P(#+w%B#R>TMfqUtzAN?A^TnVvkO%kln2CEvm(Hd_Y; z7TPBdGs3e7*CEFHJcQx*D&PM>65@NG;0csD=N8+w zr|twzzl;gCRJ#e>Qg6Ut@(Y%O7k*JR;n%Pt3}bmoO1;H3z&7#iiC zZCJPj6SFyiFQqeAEzq9#yi&^hh?^DKTU%6JP0L1}`1HfC#V12VznY?!OT{pFC15&99W-sDg}J`a+b&n!`H>QD;No)%zaeR9^$sca4I*Hy%S`WA2iy2U6oUm} znu+8%#ia#AfisKwKMCtogh|XGik=~J3nF5DReWS=hpFAHbFp!0wKL$*Vi^Fr&9J6( zBky`#Sl=`2Xo5Moel>+u!aiP>3EUBjPa%kcSYQ}KP~Bwg9nwR)%I;77?g{~$K{5f*4J3q{!JTIULLzsB!LnKOKTqk!Lzrzhb8fAD91 zF94jM5BczA&CMMhVb8Jgz){6+TM-}ja1)a$ZsYM;$YWyAqlo+OzXN+~4jLJy$Fkxi$4q?NcrF*#y@25^Y+GQOuxhx_IC( zD{8wT{LoznCkUSsT#5?cQPaPXcOwo;fm&}|hbZyBDTXPFc^_i`Y=1RNE#Wo+7jmo5h_Z-&cJ~V? zTEqTi?IBpS^B1vm-=rH7Iv-Q@Ww4d2(>HaPHGvJN#+@G9Wkg+(v!f~agg5Bu7EKY- zM!QI1j-Kh$)PpN{7(dR^qD`szajlD9LdAbVHoX4WPZNFsm8^|JITWv@UN9I$=-Ig+ z$XNX@M`9Jayl5+no8aCKp?ib+G4EEm zTz%k$W4qPD%(nyLGsb@%JP^Ed3ASeKeTcHPj3SXgsH^DVkaaEY_Y4I1EJpayYDPEm zeuJpb9xCFqTZi3SudO{`9{P_$S}28VrcgkiHb@}?rEr)Qy^E4UQuo0UYVd_HBwFvt zblY*uLnDrC{6Vpr@&aYO&i62lV8cbUNEz<&nBi?@x?jp5(QEF%DV!6U1vZcz zAO9QhItDHMBUClc0mJyVw@(*M`ovWct^ zvaX|ivM`=<#xwo0%)Rx)e8ORU>q|#&wbH%Ug4QnSan?#wN1p4f-N~zsE9E=$v)v)m zQGD?K9HbjRR+^P-A>FL@;SEW(2GfN$f_T@_nc@L`Iw0O?6z>*Vv!6W_zjh2UL&ZJvEERJLp<$ldeUYZ70!NH+~8-%tDj%C^ZtfXMc65k3xcr0k=) z7c^7s9shayFp(`BC$A*3UA-u0i2od$5=b{n)yczc4*D?(`tVk!feki6!HY9+`$WFZ za$PpQEub+seBjCzFu&cYqZ;SDa!VM^}!e}~;5ad%eUJ17-DB@Od} z8qlY=PiTIBr6%u`|3b6~=x^2J(c@ZN&qCw=T723iIlS(jj`B%C^3SvyaZO&_var5V z;BV_}M)7T8Ffb8W!z2ig;anjY0tm@t6JJ@aQ%lkGeiJ?WTULHCx9s#jHCeLyh=(OvneJNq`GD_9E|VkiUn;L>GEKRbNM@>jbr#qbzb)N zGS5c=CMW#GQ6kim!AF$gl7Cz z=Xq~0%XI7tVzaf;m4x=eJmQ2_`Y_%XyR@F;MA>r5MW!=O%Ed(=G2tpNR~cFXYA#Qz zbM16&r?QNdx_`z2%jeyB`$85F-=Gv9d(LO z8nrNDfQQL2UyF)&$LjamxOJg+ATk&-eQl0@shz{2{u;((Ir=~7ANwuwQaMExU;g=b z`PvJPY=q?><+a~~NvkNIk1REb8ufMQU-GGims&`v6Zn+RvaZ#iBBX|VW-|=}`V90y z$}lTupkIO{d?q&<5=9ftY)fg;+bA}-(pI9|nFITgH$@RJ zZRY(r(UWlS{#6)^L~&HF_-H=-3Z_32QMD5&t zM6~m}*{Hf_zZkqVCGu&sRVw?$$Kabf5wdzLQ&wF#(|U9GAG)SBe;lr1%@6xaN+iAP z56P1Oy&4jR*Eg;I-{D`Rj2Tl8IzAlsIj6FErTVPVqYEyti{KpxFLGkJ-+o!|Jd(&NJO|+H7O#4{!CGiSGF=-wXWRt_XurOp+AW)wiSW6ZV-GG~beLd8aDi zS6!WIXR2i2l3weYyL7@oi#Q?L${Ai-CkKr=Kl`2Q`R??wcmMlYK)|WxUG_+a+J3!^ zYA`b$qx`H(h1<-EUVv+P@W7+D&G}l}(d1lanEf%ZS(fn{nS)NoVWufI+t=+yv-KWh z^1Xu0pH|u-At4pZe-QZlFfu79cgH|p8S!!ZO4xnH+bL76SJxRA{`4r*37Ygk z4zE;;kFdq#Ky1q0U5m?th^Eb7=~b&#G~wIh#vypQw>;KMjjx*k(?7$-1q6EDzRS)^ z?r69+feWW@$Q)kfz-*>?q{x0vZ(T;#EYlo!7^J$!0@V^#&|*Ze^ZvSda#eq9dbkOZ z<9U#ya@*ZJ)&wpH9v>{f=Js1uY)0K};i|ZZ1qkr$D-rhrp!r_tR$Nv_8{AN-ru~sa+Yk39u8NZ5aDQWT(Ka*tXW@ZmdgH~oF9*#} z>2h&AF~5>U<^rYXh+6id0se3KDxI%zh?nh=!>~vfy^I%#{<6SyiHP`&-LI-(!CT|I z2WC=0Tp~Sc<0Bxj3S7Zp=Dq=)uQ4~j@zYbJR&_W-vHl&JW@~=kr9vY!>1JD?cFSnM zYf5iICfa0G7{7yP`oBPTrG`({UAwEaM$wP9Xdga#Nk}c{**7Hk2Il%{!NvvZvG6KJ?I;F#pYpOp;zx*rq>ES)jYkWVZsv9 zzp&-AisRkQLc}3)H~+;U&h19MB)eBCv%ZCz)lZQ{;$sPm{q`!0CkUN5#kKfAdKoyg z>=BmvH&OF+=kAUQa5r;Q(A{*!t(_Gmj86 z;tgKMCVZcYQ^#OV0(yo_UV;C&mmBxSFd3eO|JxCTcivug`BxTOo9<+Z0Q5{A+%w^0 zUz*6%t;tm!-nQLTAU%aJ^xju{YJv_aP#@-0GEl`Gnaz00xNumg zU`~zpM3sHvW>#x`28<(Ox_I~9iIz_R27@Kauzz>|)QO+_a>0v_xSL?s@CldOa?Ji~ z%MFz>4FwVX%*Xdyz4 zpAJm;=l>{q+kytWL8Do z$S_ZRgdW-*qGm6+Q;6yhsHo126wzQVmhl5alR~z71B(s50+S)J>PBG6BZH7B^L!U- zp$q9;OaCUI*0y6TsK0a{hZ3zt5ih>@u);%lHvHyV<1pSodIn>F^LOz2J?g(!Kq&6<~IX5-6Pw)QK-?z{Da~ofz^<#a5@`zJCAuaUg1#^uPIN@faXC| zYi5$S>^E^IH7o2Wve?G{2IBVSox&COcMe;96C<=+2;%n)3dFsR;P;|y)7MR4fU>gM zjEZRkAAQ=xh2r^Z<`sN3nA4s@R(VlG15&P+D8%N!3MX16yH@l#Qk#0`nq@^}k}jxXU78yw1tt+mN}Aka^CBOyNI(La_$t zLlb^O*^2JDLcC>Qcw>5kVcOiMH z)GkC8cOjYk3neE0=KnFr-+Clr2L#LOS20*l)mQvl==FqIM95&&gMGFW6!v9gn@9Z2 ztufHN1JESx^f8?98$M`YvO6l-)a6ahgi!TmhAMk@EG}8effc(x`bl?UK1NwF)=JP@ z>nj|yp76QY%By(N~8=AHX`!4YEk!37bl7sU%B0> zR|64m>-n+G&AcaLyKLDA(2Hr#`&$#%#ovnHqgUX)II3Q6Lt3@IvCEd-wEG$+307*j z>hit*6HS57;&6v6QX@H5;kep|$CtkFG$Loi7;>UR`nz*7JUuf?#}z9e777UXANyFU z9sj^M%#*VnLcsU}&Aueu9cEnS7iUU-K4MLfBl>^bvMVrQIxiiG4b!tH)F|p;dT`=T z^D$>IQj4Vu0h2#^_&j&mfDXGv4D}+C79BBu(@yP(+Yi^KNH zgEE0(RiL6oM0AGv7Zo!t%s5GI!$eE*QLiRCo*K~D=(Ju*-9?p@6^c5C8#?L0q-U8^ zLzF!hF*crPv@rAveE(9Zgux3@W1;Np4^pu-{eGD-C440x<{in+D`+) zW!L%)t!3%qAqar%=3$?6@;NuysyDNId(wnMSLFC`1nqv>!gR%{P6M%A zz52lCowf?%aF({rW_dhHf)Z-T{ec9kaBD9H1I(S1+B`_sK7blY%=fxfs0UxQ1|F^c z>Q3stN2(arX%w#3iJ6UmGkviFI|Ac|>jPV?cU!NNJ&?E9{95#%puue7V{ z%6q>Qqbt-vbS)F5UHby0TAK+RXZLKAlLt7)qK}m*u-s0{w{wCY zmfwcdcy$8^(e-75B&%?|9*LeaNezjSQTIkucfvm(U89X^Ho64o+(gaaXPYN?3fino z{uBwjWnTE=;Ntm;gT(wG`ulm680Y0=I<6iYau2eF#1tv<9g#u zg}R`2JoUB;=-x%C{fE!q$C*@dN1iV(8_zBUOYzaGe`Zyw@t&3G;fc7JWOK}6^EQu> zwNXG!R%hT26%8ggtC#${uQ~$di!5JncBS)VY(l6CNM8{V#)nXgh!0zYHE^3_mc~8U zx@;2~_bjJvax#G4FQmB;H&zXErVErvHGj;Cu5sRx@e_Y>xS- zqLi?>2y7h4*zroUItvha4h=hQMf7&cu>Ib2-^Ls{O~GBJb2?{7JoVR=oR{O-ONM#< z$R0!Kh~0$G{YQRJS|4+tx4OU}ODz4{>YIn#|Ap|SnS_z`P>!b&-WI-Ew9~9}ahi`@ z{g2p4ae1FuK{L3t9_+0F8D{Zi_-oh>^o$vBuH|kir6yNT+A31^Nf$KJDL*@)%(?S` zH8+uyJ=`WlkHEg748vC&sv}{wKE#blK)VugV**$$IM1T01tog=4KI1wXw~C?gXp=t z+OxkyujNis|9#6G#d^}L^M7D)DjY#^A&meQ3xP$0b_IF<->aDw5hf^t4xY8OEX72Q zS^9@l&TA0?CIRj%B0|99V((MQlBOQYJFdDArooJT@#00BFl-G1(eo5JRZd(NMG^;2 zDOtK?>&0J-wm*eZ-n>TWpc6#afw@33{HB*V-DyXa@`u+4TMrQw&g|JLw;WJN`o44uS}2>|>Gv=aZQ2jQ)v;)2 zuZ+0}LCJiTONBaS#OX|Rg?&rhgB?|#j*ZL9re6dzd29Y^eYF=T#hyS=0$TKlQmzrD zlu}ATiaS;*t(+ip5>8Ln-rKLOWb2Y`(w;6~KNBz`+mXGm*tBfm7AL~*uE>tOpV@n4#7AJ_tEy1XpX`6f-p?y=KL z6*w5|HfP#sevKYJN~7dp9rLNAFj_|*I~{{;*Nh%;y11;bxDa6@+q71aq_VFrj)RS# z1VFp?{(&Q3qlwp=kfs|+ov<-=Ue&&l7tO!vwMUcgN$Ud39mI8CnLJj-`MXTfz4M>p zqI_jm5YZ*=m3sB=C76p%W5Lh@)>S}uW^byq6Cj)QaCVP@oCu(Xw4|OXXyKDP{?H3i zqw(~Gr(maLT4ad*xUZ94)dd{c=G@%o5n;mJB9Hy8)OtZF?nEiKyzD8Z>}td0Sc9(= zLG(6NNoJS%6wQr_fIohy+KF?ulw4i1-_BNDT)zO3laxOcQm6^;{~!p_DyBP~a{q@U zq@(bZY_%{XO>km5MtB*)FUpp+udNT4Qj|4bs zd>+?A?$i*x`23~`>mvE_o?)1z;G^UUN?{kl(IvJ`KV@9;yzjnAnAb9q#~F{t66DqM z^&6Dka+&*$GS(9)dc;KHPcWp;Vd6%4Q;W3TOc92seufVDgPQF{s?{nt&kXnc4(pcP zHc&@-S^s~Q{>-&Hdi4I_69IvL{)x7UUca?DOoelucD zH#*nRR!NXzvKw!Qw+_+I?CYNk$2WKxAxJl~_~GwS$7S#N>Jw+SGTMwdvws%8F{Idp z4c77gYtt=nMqsb}Q~DLx`-+riLUC$9{x8}KE*9-E>%93kG=AKlfG_h};6${uePD>v z&KYw4{ea5nSDT>Hc{`*H_?)ciJm7SJq&!=~b|2MII&K~Fu>W@SX8A3^Xi7F7dnt`t z?HlzX^4tNJN$}|Z?=m-jJy4(-Qb$3DrqV!GVKBOB!&l1H3;3q98wV_vDQ*$Ycd0cG zwGRi8+j#N{6qiT%!rIkHbd`*@pw@0Zz9fkK4l^3!Q=yD-h5YJ#n3KNT=yRg?K70!~ zDo=J>Bv!So0hF+5qpq1_=iq)P9lIMIc@Ae(w8kMUQ$@zn zbM@_aZCwzTpyv2C`R4rPAn_X7EBWfW*o1vwFe&k-`xfG8Dk>r=wv>>fS2eyf$lOEyZHe+Y1%UAFOF%d12_O}pZ&CUmFs;LG!YXo+*v+Ev7t z8^2)@9*@645H$n=i2hyDVkCFAfOw((;VVL=%`e*HH76U}HH`)+SW z80#Gix}AH#JPb`Ub0Qt?r)v|JaanyJL|vz4jb3kGqWUF!yhdhYx~A$t&$+mOiOas; zGgjUaI1U-bao09P&%biIh|WUGI)BRYKg92FiZfN~@#b22>b|5G&7u%y$W_JZ1uZ*C zm{BSox7Yf6kAk~H^R?GU>@)sET-fFB4k=U)hkd(%K&%rC$%WPijWJl&uhS7_4w! zjF${e1KgKII6+@j9%|%=CMQZGQM1D~U>Z7S_VP~AEVJce(e^R_iid#42Kxh}iVlXi zUG{7UwU5Jp)?HJ4zzL-1j-aWz?sblU=K2Gol2?3{+{FdwqVnTy(6H^cs=XwJU9#(lgfSGA{q`R1Zg`dL z`gU&XA-s*4I-W^ch95i1ajge=2a)p?IM66mlFV;`FMNEb}Nd3~8A8!285&ql#rK z2I4J(?Qf%eJ=Q!s&=V9F@E^M4iiOj{Li!JNJVH;5cV@#IJPQ<;ML5V_MvS&SaQpDa zS*vX0ktch#XNqSGtZjWtzCF7~_tlzeuUH6`G9X^2&Vb5PY<{IhubM=hsb9k^nCNz&>he^7YQT`BKdbcxFE2cCi zab&;2BH?_fT{R`9r@tZINrFWXr3L91 z8e}R&*#cs7foRFHrXD_GNsG?T9i&A^KnwOJYx|R?bIJ+{uiQV6`n+hKr`Lo%cOJvf zMn8#{De4J&e2Rl)9WSKoNj8TbzE=9@zLEa{4&)@@Qa8cD*@qt!FolD{v%FLBu4DT$ z(g~Yp=0!5qyJHj36t?C{nWo-+5FY1It?5dSz5W^GF`B;BDRO9$6*oD1^nbaR?3wtz&1;em zIGvp_(}`$YZ(s}2_}{O4#x-|s6+##PAne)|d%TBlLkkNfTo5NOo7bN^I{fC!{&PB( za(cbNW)55AO~Fa6qt_O=FOAp_O3GYA1{2g?Do!Es?d-a-6kDS{=ObN)-gA4#$IF)X z2J$$WU>*I6$$dpFL1F+-?X_t#QPr{)q1%Me^&>B6`>TF;3r&wM83+Fs^fc5#2!G$tP zTVG`&oV1#pq)15GpNN&A>->C47V@P-_Qfn=)&xF?WJB>iv(~z}$=upLmUG#+Xi7@E zV76VdM10`6HYB)WPddt?i(H_I>k=4~XHU zeQGb7XG5mA8&+ESS&Sn1~A!{%W2ImGNGqaBEy z&XGLgPF&P7UW@ODC73`=W7hjD=gBZ$hjlA3eMy9g^Fqu^WNV+P_1$wmSN5mA@)7Th zpNwGFU7o)?xKI)hm4=8q)YQXAR4gLu!Wg13U930b80gCH9k)CJ{0GBfqumxPMY!k2 z=@u*tB8;wVzIa%_^y8O|&Oc&J7?p!$@rJS`Heuq(ooymcI&#T;ndZR5$OEmb;wN*} z-WE8oC2I(9UlL&ida^}4aSJSWQ+WCV@w8|RPm^KcNu*ieG?cMKxj8(o zq)`ibSqaxPU8Vl)zobQp*XMRMj@0_el@?ZY%&HcDTA~GCw+XyTYP)HB%bN&yXs00^EP!Oou-z*Uh^gx<8KE|xD-!b#ET8qkWVeAaI zFT%gyvBvj+)0sF@n(7-Uk5{`~bS%7~X?~KfyfuC>1KwqgE?Nw1-a|P`7g(ARNYN4y z_Mh1V*dMA&?yL*ubCK)wDAZZ3^drX668%w*?{M;)=Znv8u~ZR#e{1pVS%56bRxO;W zw|-WS)+^C!m6*x-L-U+g!AH&pcDsv^?6>l2WMn&U(yqdnSeTq6f(nz_mHm7DO$68b zeI3u6f1z;8b-^w8+G}yH_3rAC_LaCau!?d^*Vz5E zy#38Vc)Mox3`hYoV{y-CbWi=U5k=6=}zYW^D613jnt>f<$8j5IkHm3<_;6pHv7 zhXYQh<3xHSk>ijtj(2<*%h%6B?WHhD{*GxBpBw52M9{~0{~vpQ9@g}=JOJbAa<#oy zZLbS0sMxASWeF~TAdA)tA_Af!AWLuqkxeA*38B|kDiNtDi)_&%nvRa1Psb18Yhw~_M|VPezMoZfx$(yo z>P98hd_EKWu*Ic0u_#&+T?ix1BfA-I(luEw3tt4)vQma7hGAzB6%@8OAVD> zTz;hChmM&We9V_+JOfQ`PaBEynDA5}C-x#dNfEAwgcE_$)6|M(fMt!fq(OOby`N-R zA&+GZ#<$t)AUYfsiCm!Ff6+(&9AgLFRSf8byNs%m`kQBKqPETZ?1q-TJv@5lFuYn)%XJc71zNliC48xQ(^E7T|kI`5j6AP044UwmS z<#M@EZ4lpY4|slW(HDrvjzg@0p<##k@x7EJ6n>@)DFX&l9jEYL=wWCOgGIXBxKc^e zntIVpljvq3ZMutGlfeJk26(n&dEjn+|6FFW111U*nyWEUu+^=~Wwnm;>EMx~MKDQY-Hbk%^4a+*JZpbmCEfNdy2Y5*t)drjfG+o!RjHmtIOsE8I z1b7!g4Ny|koLZlN9@>Z(;KXwMUCQ-1Pv?AHiQPD2Py8aYnfJtbhbSOXtPF@i?3K5A zdf-X@k7=r8>jyN)X3=azk@VYU)pYt3v`L8v9d4$gVyhm`4NE%GW>IBCfe-&50ILUW&$)@-zL~!om(@`vp8{Ni<%z^9qv@k`z_J{wd~>yrpN&TCS{C@L zJ|Wi(^Gh%x$TGY5`gBD9G(7a7TDtSS#nYOt6~D+>F8>BBdkaYO&Z7jL>j4mPD2?2D zcnn3Q;phzrSBGY9n%@w@)zLO_Y?r>ndhB-X70E;tiqV3NqG7giydSE091fWpC&qps zJ*I;+l>i6RFLoin*7I#6XMZc-m)F6nH-fvR9`R>^YlRl48#ar0_gLi9{(mc3$#1Gz zAu-DtyFRMp5&>~bz)O6-Yx!gmF=M}5Ll&T_E3ET$$7F~q>z~Un2$<8^cIegBSuD_l zPrAlcZ2yI!5ay8F^m`o^z@vt$N=NQ*SkSTJMpd!}QY;qK4a@>ur(=tR5zmmo%HW#Wzs&l^}DB8!)mRu89;xtcPh5wGP77=@QG6@tc>C(TchAM`y(i}izFfmN$D<2y7 z&leTctM4<2gyQzXV0NF#a$w%ds^ndWgqn4pN3lIQjY*>8vyx~B2DRvw1a5=@?nI8WtQTHgA(~1&Hn%9G<|JE+(bcY zUeeX($Czk)S@(f+9y|nye%PbJ7?cSf^ixT~(7+hnhs!WYUzQM3Htim z{i~zudR6jvv}*4<&tu9}FH2g3)Dd?N;KK+}2RuW424&@g3g;W#wjKDF62bQ)aTMe9 zWkK%?x`3V6K#~1H8);qG>eMB~_s4{&ML@v@+6C-R&$Y%Jn2t&Z=IiHhUdq~6M(m@1 zjX_ObP!zTkj40q1Q7C!Ufi^ax&HC;3cjcBSe;w;?=zH(;r7e$gC z^YQ)GXn){wM!7#nu#_IEQV8KZV0fVSi#O5B2;C*xoNs3b9$WRa|4VG+qjIJT6%)+m z7OTQe7;PVXUEK%SB(cy|!iyA9zf5F3@Hw#5mg7B$96B4JuLSaMd|v?%uMBmV1SM_Y z`Vm)&&L0F9{V&kSZYqRqIRC`hZ;LQ)4W%1E?i+t7_gvY?)nR@=q6Wj)CCtr8<=tym z8tRJSYHzBBi6z~$NGyFbE0&@v;E2wI`#^HZao8MH?ka7OqQm9-IV44Jn<=9jl=!B& zlnV98{?yim(AC0gCPo^mzxY)Du_kQy{y}%c2k!xvYFAMvc+%V2h^>(-rRW15=m*rL))&ZVGCkg2r81K`w7h5$x^yIaSPz7t|Fv!lSNMIuZX70#4?{%&mkWO0yCn|LVxe9;+uKDZKNPT$VK;xTm9eXoUZRX+l^(p+3H+BURXn2ug1X1{E><5EPQ;;TgJaCRVs z*|yy23Yl0u#3;N*4MV+d-v8&T(}%&;eS?~`;K@mgMjf|yIDX$io<=|Waca{(gG;c_ zlgpJuF!BbDAa}B3X+u4`zcoS4e~$s`FEqJKJTVjrPz^WtTLRn%R;zQJAZPddN6`gr z*alKTfdUZd7tq%WyXvIj!Ay1o#Lz{xUh->aCy@(IqgFjs^>n>f$H;2YXFEb+j@)ge~ zNEijif}nfK%`MrBI1FF7bg#nl`$JINnzV9}YeO7b{bzk+vxqK9QpFI3)GY%=sTLTh zKZB$n-XI+4AiG5?w~Nh%?gq;&Rt6n1@*I3Fd!?stV~~iT1{1;*O+o=&2nIFK9R-J5 zvEOuyQWh*lF-+0Nlrc2Y>sR>9lwJ)oUlSvkd1 z9JJC1-Cw$2p(-0x7F8u@OU@$B9hIt|Iqtw?DGuFb#nK8O1a*@ENIzU_LUSW_i+$sQ z6!a~#3c5QH5d@3-sQCYZz20nOiP`0*G$W#gdf2`ZA=!-Pw-xn}*&t*GaGQh!M#M!B z*n*34k#s8&-+^T&JO;^k5#;Lf_G-_J3_sK~tx;3h)gg0HQu><~#SBeRybbDIw{{$i z_8aK*%t^I|0~Z)04GLCg-=G?9>fa4WUnfY0W&yMMb|YDq3!z;7+sNR!OM=D08RT*xcK}8|2%5bM+u-c z3Arh*NI!IU>=84>SzB^F*rjbMS*f-_3bL=WtYMsSr(;4cW-?QtS`990pJZm18rb!D zVfOkQgy+vcf*#pfEXTrQMqnS?9J*B zMmgS7?A@q?G4)0PyU^D2Kx08`QbvNGIq*-Wrm(hyd<16Q38=n)UN>+G)1j9ClP<8M z7`E>Xd9*5)Zw@^jx6*l$X`CEADJI-=XBwJk_8DC{J!#_km_ghHO(Inz1Js*@%_-zf zi_!UrK5S}%F~!~00fu()go8_gkbwn)ZqF4-pI`tl?7-cf=NGEAbQ~%cVGo3;+vj6} zeV@#r67N09T7hIlgN;N>NzN+F;`*>#7+9z~a`>j&0k|{YQ>ABuDeXg;h{&9Lml>B` zoaezEsZBdnC7!NrU3d#rhW9M8fsoljb}GjA?*Q2D!F8Tq*!ugmb=D!{V@ENF^*1K> zM=lbNqs6%eC>n+JDP+W6*L4PHlt`n@)04xF#TuNOu!-{s-66%&dme-a3V?esl+fIY z?NNgjQXwzTs*u+^V2|D>Y8%~}qUdxc`t65hp2G_(KY4=V<5x9O zLp70Uv_l)>p5^lj0@?x4Wsc$Giv|4d0w+5u#U04C7o zkZV$inTQN70nA3>;}mC%41TEl%hje^Db9jK@Fk*dxBq{EBF8%x33#0h0y5dOMAl7w z3=ofm2GAOX%vp#Vu$+C5w(d@HO<-#*G`aPXvt)XeqSJmX&?$fkTqQ0_CP;hIw+jid zQ&8<;VYar_@|@Jeu>FsyQlDT&TQ_o!r5_l**J0oN2t0Hsk_Ig6`TWWQ(R z&*`pu;+``d+goE%r{YPLY-?rnX(1~OL)KQ}qeS*LD@%ziB>XKbz|yTA0N3>Qxb~6t zD!HfquzNk5{_byT%MXVG1y7DAEn6&9Ommnd{!u>>Ub;3jD zIl&r~U{?ft(V-%49Wu?Yz{G6|*5k(L@o8atMBOFgL1+qXL<~@GgbG>_o46oXaAOXp z1nj_`*#l)h$Y$T>hoK@6xQp+%_#+7~#p z67(32>+FAFp>FNz+*r8Md-7(g8}PgT5YyH}Y};6v+zTj2JzP&K!LG?|x#fqjYZ3*j zpYxRk)Gj4-Rhw|$15BOuj3Yf7y^+^A7J6bN&UZMQ2%MVtdb%_g4){kNrH|Oh-_%hN zLl@{g$+9su0Ia*MZ%iK(4|$*HlcAuXxnnXX8`epDD3_iHR=k|0$b`SVk!cA~nJU91 zSNdm%0qSxwYbY{LqVj*Bk}-eR>REr+yG4l34jGZBKS4!F1K~pd&|OA?)AH(mC(#~* zM|o7r^_x?>P~+GdUr-)>@6JCJob-)dSOP>GSccP}oM-t2d1@ZMC0Soxg2 zX^2wciT&`N9wh{`^>svO>ovZ)BLrE$1S?~&=t>Gi;e$TnVhm-0`3?D!kkNR1Rz!jH z590CL5KiXOt>Bp^bJPKKHw^Vcl29p!Qp%07?L(pB4?~8&i&nv$zMmol(Ho#L7?g2> zosFcY<>@8ItmuY7AsdpSdu zXnmMt;KLl{Ta}nY@YBN(`Pa>R3~KkrZ*5}9@Rj(}a_j^KOkiG^-%9Rc;=&H$yipj^ zLEgVWvmXVyyNA}z!kZMJSl0i{TAf75VLabzkDP)}0q7+b8DFXX0jPMF**NG?%#&gh?W*K@02=jXBkdt}=3Xg4u4&E6 zwf7K9p=J|O0GYMAnwBlwmWnH&GwvT457T*IYx)~4@qWVzlAPnuI|4SWV>i1Y>9Qbf?M&-a+dygr+HGpNOOEKvSjGe=6_at>^{#@b~-+Q@N-?=7K9+f%MI?Gbqc_z(=dz3CMt_(Nz3H)b`q zC}^bE^Zp2>dlQSvfKd5+z^Om0hzo=I$Xb<5uQwPs7f5FY%xFz@s{1^(%*v)v{P$SP z!cwqI@0I(rWSW(Q%878G6Cg=3ATPNnLpCRP*b)L@^&J;dHgeqABvq2`sW^CCy70tp&Geo2Y86 zrNZf)SN*L8t=1TH?fl?uF@9loGJ5rn3cuRiuVl@Cf^Sb**>HUD*%w~AMK>)42#Rb4ir*Kgd!dRilPj*Nb0 z$dL|?8!PecDjhf6b&emOrExRW4`}*J0Ig0)P=z2n2ny@AmA|#k-g18)yCA69(%|*p z_(K+z?XHPEgU7nOhZ8f) ztXdbspf2FTM-z;<;3!_lrgx=4CuoH+mX1;RsbkSSouGtp?+_|M1PgX!dTK-t{Jaz{) z&f4HDh}RgN=~WJGEBJUoV+kBvV>Y^m?{nv2Dax{(=V}>${sp4D$U@a;6MDkIHSRaf zSCV80+`Np**_-#9lq+KMgJ};kd>i2ENM^}2D)C--F*5h}qh6y_6vH%DGOz2Bo=T2d z5XkKl+uMgMMY{m78EXaN=&idXRTxKqtTctw)dF_5#xgFigNW4)j|}5J69P6Eb4Vn0 z4vhGwSE?lE!^2wGVX>}^U#oqyoay5fbTnM?;x$!*d}XIDjfSm69!~cL7TXos6z+~7 z73n$zs1RTWG~OA!JB;~E2-skN{|IAO_9QfQs*=nbEtfj zDR{IbNvZBV0J@N3q=^&a-NlDW<_kbsmWAaj@G$-}rHL#35{=^Sym|N|@0(?`_(yRezU@QY=~)GUC^s zWRZ_Mg(;p2HC1gksbd^!Z_30t^x_SO*B~{v4OM*!dzA}u(B@qbxwgSH@L@mkc;Q;h zEfd~-vg4e9+M8mPg&If|c<_FxvqUrfv0hr@iojz5=;_U1dT;#rOCf#cp-db*6#4g? zrGekUN}l`lZ81i2{y{Pd-M|Vl?nnoo>O>(HBUan>v(!lIEbC&V=G|sR(wOr~5m_#u zic^$3R)q!_#d(Kv?nyI?~ZwOv{V2F0tG$rZhwWZe6``Aq2`UWX7-E9YA|31gtQI zeL+{qrL7$(3fMi;WP#0wUdC7(l^8@!&@r(~l&q!Nr(Qyx8wm>>>J zx3CJlGI@@F&d~WQUve(r`(QFhJ7)}9NRA}@gr^t1aI?r&VIsdi^6PKAE#3h7?R)^CE-)1RM zi;?aOraeD{X&f&F0)iskDBpW3z3PO0fXE)+YQM6IuPH7U(yHFR9A{jAqY?-*2KQX2 zZ;J`WB;WrDj}+`9jZIdo(J7dgG8GXTqPCY34dcuyUV$$^+Z{Tms<0I+`^c*+%}$kL zo0;+kGX{efGIv|7I#`7nL;r?}^2>YhMx*b>BVnR32pPdWH|-0=CfZStd6UsI%XNOF zID}$A&Uo?OIdJF&3oE`hi)QVFStb6|lyZ{Zf=c1uf#BF|%!E7Y7{7HDE6B7`?!A?j zhBV6i2PHljFFrpz5`@Zb;7&m#U>h5Gl#Q$Sw~3i|p;2r&*hSJpX@_jbV@$PtZrn^3 z2DVCEGx?HKLbBhA#I+@rZ5{u&3A&Rcp9GHmqWdIJ8(liN6`Vj6GIf;K_~v_}+4O z{G_K4(KPxSX(P&Mv>0`m&fyCNS9nApKPOu)dY$F4PJyT+hyW?4;G}%+Ly(UqwK}vvTs(b`6nUCguQf)UrGs93X2d5UBcMB4Dzk zGQ{7A>wOlJa2R4qv5y% zSP#5g_2%jf@B7t*_Jy~8hNS-M*4V+_9{lQg=kGSg!A>LR>wB*G87Ho7b9SNi8l}53 z0lwb_2~rilSMS?mhH2ULPuLFFeVzvN{=t>VgW`!g-6?+hiEH&T%WcextK2-<0kKfO z2V_H~3=#;O?w!q28PdyALlrrrv@CDsl?>^&Qy%uBKI+^ z5@HFl`od8GV3G6_NB_=@iSvP)E}<~KtlYFV$fzoQrfT};MG>~gZ#$6Aj3*G?{QYu ze*zbPX|W15iOVTw4tjBl7An0LR{^YFfGk#UCYXHKgq4Prl8ZT`9qLHHUtfp4JVT5v zDr|$hs0llpj{?EeF0Zr9)Gny)2s$!>ovZK7(B;x9Axs3dN(%QGthb6kf6yhQSa5Gp zfO2~E@&GQbHs0tyDmTq^el8>UcE`b)w-a$WsR`>W&uu6u-rnw#<`!*F2;l@d=-t33I{o?JA;AA% zyuQyzO6-fr{)6P1CX|V)!s;CFgc;I$4!B_mVvh^DazE&IJRY`VB4}ol#n>;*JT2i6CfGu!BXGhVXj!HZ0$dvl%5EtyMFZ4$ZT%&a$yeisJ10UOPeLAZWBko) zRDox(tG$fXJu;v2etz3p#6HA_U%t!(`}G{l!5*C~6hy}EZX(wNurwf&>i^(`*$te@ zie|D7`SAWNou$)%D+Pn0ReZJzyT07dgMCmhGkH5ej`F(}Wn?e-_7ql2Y}ahs3(gfP zLwJN>O2QnRu)FCib=fHEkWqXf%#e-o;8Pw)tvyFAV;$7q4jTP^H2j*Y zMcYM;GR7Pf-(zZ)Yq*jO9!Ko0`73QGnNbiO;M!1-blPSU0ZqWs`z+`d*z&sn2+Y+$ zmHv>nXI9i^0t8#mXj!^y7f>CN*tJ9SyngJ|zIGQ@iWuXDzcik1%^Oe=yN)+HmtR*vR83&Ik*qe|H4xW4J8tr6;@M+tM(+ zSJXN8j3$nU{n9At^exL$ySdKGg(`3hHaRpF6NX^AD+#g_lQ4C&5=Iw-#7iAi zs4#2xDN9u`Z(4=@aA-Q$12bRUOWmZM?Cj=cr`_N|X?+ig1tmDM0Ce${w8 zFH6;=NWZT0GIr&VQEtByb%q<{w`4c}aN0vN>9&rW>^6kA9|WxqJA32oo&5mbD+*mXrQs(>=0B_PvOFCa;2Pl-My@Z2I1Sf1T=&Zd>4E|) zn!(HNj0$-S&y{VO=yxmeX12J%Tb)B$Szq9P+K)}3ko64FEGu-C9D@Vz&(x7y%9oZ0 zGf@1;6^m4PW9^x(mbVTPNGG%kygMdr8X>|I+>X~>$P;b+!041N6k{~R8RZerl|bW+ zazECDW@SNM1uG4K|4VsPbFY2ye&bMxQ3(p$xjhw|?%ZnK2Kkb_>1FJDL(|#)m`d;d zmwZHBaW8bTn3irz$?edl)NEiaHXCc?dw4^7SwMP>z&?28!D6apbw840Q4Pvt+sG4O z`MxOkwUE5>@Z?~tLzdd@b&&lRq**}d2(oU3XD`5Amn7}t>VOMB!8AHof?~}^5;c2L z{TPXmX(Tw{LMsv^rVtwbwFxmfZpAG4SnR#8{sWJG4`R|kXJsI91gk4@XI-y_c#XW7vg|iO`UE^Qa1&R=(&YTcboNI)kPr%b2dl(vD^u+QF9v z`n2$!0Rw%Dvr|jgdEH=5tSi{kF<~*hQ78>ifc5%uo+pr@EfvYjZg!fwE<+?HS@N{A_>A7{M+VjUqvGCug{f>&AJ5n6=*%ldJB(^YU|$S7Apr zxGW-3ejM+@%7N_Es&#xmYvQK@wT_8jhp|JqqqTanq|ln?`BJW9I5zlqnfN&W=Q9xS zTQEPs^=X01X-a?@+F-|AB_n-@RqfNCRZ4cq0DgvR4PFfHJu(pbM>rOM<< zS8=67;nznt2)O_scTRcIbU#P(v@=gBPf_hu|EkKqm&;gK%EKp^DbIoL1cdP3Y&KLa zEWJ&?8_Fpb*&4)Jou(9OGr1!s%?yQVA&-IX1>HSM_UAz6+b)!ufyGJSQb1Dlav2Hr z)LK+;@;^yiBW1@V!Ip*cVCG3$CO4*@_ZPQV_r`Z}qxI8E6cHI@g`OLB zb$+jcX;=fRVm+-?3fC8yiK3~|{xb>0;}sBT$L$i-iTp`%#iBBBZrEb`@L0JI-(oM? z>9hCebqT0K>H6AEF5Q$#I&nz_L{)MJteYLvBDs2z%9#vM)JqK1ZO|vrYY7d0`5iR| za>NMZlaa<8ADukIiOI;@<)p_!Qf66)*s0g4JE>QWQu}qaX6g2J-M7PF2cRGrw=$!N zce`0??RRvrTB7${4g^v~z9dR-L>if?m!X`|0d!i*{h zmIkR-r)@?|$N>^^tjKqg+#ZTufY%o=ChqtzYYuNOZW;I~mLf<@KiGZtVZM^2yXZIH zsBoE6t7^oXq#37YAd0Cw4jsz#zRE-SYt>hOD+4lipkk7hCjP7z-aTKnmc{`HA!8(s z$Ql@Bsv_*n6Q5zZ*6q&z*0i{nv5U-x{)GB04$DK_DcB!`+=bF(J(yX`jv$}5CBj%(Y3;3|?rtRW>&j4r4QcZ_~eY6`d zhf8mFI(3%{Vp&qcdnkX5m9CECwU@@7_QsUn zVdREFH3G<=96v$-(QWXTd-C3hZ@JM!5kKt?FpHIsM7&li&+Wp_+Uw^GDMz#%m5rn2-^?kM-KSE! zLb$G^cm2&b)%vmmHnvNkXzqam$e0oD3_l&99xL5|=H$%I*-*cFUMk9|!=cK9#9STM z@MABwd%D6arrTFHgv$kHjQPzv%*7qzUt=&H(KRRxZ_95P(B$)12E6)?1ywN)RL$_z zwM|L&g*j^PvhzCtG+B z&3KsfKAT`|&~9a|)9!nlo8D)1X(H`TAm5!uMyUYTEtQKr@~D3G@ho;b4kPvkh;Q3fm& zIE-Xjfnk`}2-Ma=k4S4cj(EKa$Fh5og*xn!zt5U@3S5jF7n{wT37QY1+<(N}siDF^ zTB>P;Ww9@xw~UpsrEnwa@xuGUK)#p$13`87J^8VfLQoN8g3Zo_Ek0D~@oo(y-cn8} zZMm$fZ;nl}xXa+9ZDFxwhp-jPxyP5I5Ka z4x0zpyP>TZKQMVKt;y+L37piEO6ONDeqj-0Z07OkXRBHC`u5DNG-1_P)8HcH<$1nO zc~Z6ecYj-qjxH*Or}}Hos_NWw`PDvFgh7VgKGd42Cdu6HHq$ZM;HqF#`^i$btd8a4 zTI6QV6QU=pZ#tW0-OX9e$6J0e;+OZagj))<+#*NfmWz7CWBi{Zy>wVcF%$Qt7YBp{ zf~~86%jy{Ek1%dWtI`d0@iY9nZJ{F}=<>9Mh?|8)3v3(@R7G+Ic_YIE*=iG6J16tb zrnADkoC+#^O!kg#5K_^!TojqH9KB=E8gK3-j&8Bh4u(o*BahMxwXxD`KU4U5ETan( zXYDHdj>%34_Nx9GprA@uqq)_TTz>I8{JCVP2Ld0Vl5Sq#-!Triy9cq3JQKC1^^7x6 zjB^QdYmzCUAk)$IUcoW)NrBCgJ#nVfr-D3zecYGIp)MPve56LL)pM)Y^Oa@qeqi<6 zZ>M^f^&GC^8;W#HiDRBEDxc-5u?ExytJ`7nwNldP^L<7(i5Y~mH>_{(GIPr@$*EfHuqJ0Lo8p_Spp;3XLK zAeTc?$oOL^TZh`Ux95PKz~C*5=s99sF1o_6{~TT{2Ba}2Vxgj{H?X<=9GFs(*!23d z)87){|N9=jir_pz=Tbdsb;AqUd%c`MpKQOrFsH zoVa{P&FeXfEZWYM*aT?+L9XlAno3UGgPJ+x9oDM$8mlUAzakDwSddGy-fgnMK*gUq zy^CexC-a#;@R?rm6!aCNHseier;K|88%_Pa4zXm~!azU*=erfN>va3+)0+`i$>5vK zD?kp2s#9$-JPlw@5{UKLrK!;ZNj)PKo`RjK!I*SEm1rjKHB(x`k1c~r2cMLn>PXAk zz7b9%ot}!&kq0HTJ%kdKDoB;FF*dgz!{KHgyi-Evoz-QG6# z)|yoil(Y<0q#gkaO{-@-Eks2$bAzTCIo(c4U<_T)XK^iNs-JLeXG~aJhnZ>?moQ`E zL17+frAi&TYXKiz&8&xXe(V@^HLn@zRp(y6H7U8#8)sa!P4W9WmUd17)JJURBaOh7 z1pP@^sAMwv=x_ZFGvpes_l&HD8#qI*$2G$zzs26)A6$ov!Pk%V zf*LbiYnB<>6O+Z#Y)?B<)jL$eg8JS$Qx4n9mNJxVxe|y_I##^7` z(p}!WjOD9RomURMp;?;ZZfEqw`ASjr$96pBZaK8Sia`na0bD(G9U)ixLWVyc+8o5( zUnM$kE20=ahGsyWauvNNlvqW`jG~reCLiEYOyy!8{1(I`;N?NR1T#6A$HmLZy<9W7 zA&;gZui(+}a>HJlfxM#FEN-iiCHpr}#JyW7F?IFv=OD2RK0*DZRM|Er9(DoH_aO!< z&ugNJ_B`R1_N9w`90{b*u?`mA4}!tEo3vRDA^x`iuk=TnlDjU1!DjtynZj_Mm#J%T z$4O}ygB+n0DYo%9jk@l89UMt0BxR+fp;KC;)B$k{hZ*(Dy`#@-cr@fHK=CDmr!7_n zJKiI`uwyw<<2Z_z-!&6yhpJv*y+YmIo_3%rOyNukt5~T}jBw)=6;rf0 zMfDUnj*>pbrcyXl>^KT-N=&72r^IoTOH%_EChhyF@azjb{y1QSgM$5R=CIxAd>4wD)pq~pXIxV0T)g=qtE^w z@V8x>&sCFDY!HltnA*;-HPZGQ%cpwV6m7^vbSEkA+P_Y>*01K#kcMHt&PG3G$)zGs z$ZNp{LFj&WCp=$5c-DwYo1z38SEU@Mo2g&*&F45dWm5QMPwCBq#j@RYd-h+>eWIZn zcInku>o;!X#H#YX)#E)_{nf^ezZ_cn-4CiS7XACDwHuqA{@iwBv;OhcH3zroWo~^Q z)v$hJ*lD+)38YO+Kygkc;2zkZ+9!Xb-L|yoMSYJ zzn);MYLXxG=bWDv(KAEM@*xrtq51m6wtoq>7DnTwMS0YnCzxo(uA{6>lH}BQ!^WTH z{1n}(;0*g2xCS=rjoEF2??qkdU3$B8*a4q(7>mQkCg9h^W}Mvp>zp5by~UKN#{-$JFb1d5wZSnb%;d{$_k* zuy;izIJO=8R#FL{+>ISwm-V8!V9vh%`PA-hwm~(2T#Y%RHugdj4K%lTXw)e9@xfm0 zz)fE**ntKPkM7PQIeCqDYtEgt=vFt_y&0zCHx@Tq+(APf-zu@a-CeZ&zjwbvDt+y4 z#@(xU?br;;C-h8AK)DIDjLG{sjTU)m?5p}&qHd0M`sUH+$oyVmAZa)Gv77PqDt=3BM%*WpF7NxBs*?ihvE0ve5Ygm8#VpgQ9en|N!vrnjf#nta z);=riOwW^ZmwLIbj3O%ZCr`+@7kmN}}) z+^lYi7}vc+$rK36-G7a)%OSnk;2JTP8P1N5{uOO}Vj8dLV>VdCp)WfAaqzCqSU5Vv zIG@X;jtzv+y(+Z1G+m(}b(N93h@2pHqXjY}aE@7X##|%4*+2;2Yw+oq=59!brDcG3 zuF2w0G-lhsbKKMWC(wFuuMS9f2N^S0g{E`KXt+w!4Q3JF(l)$>^eaLrDwC+>81%b# z5`IUY)qeiuk~xDe4>u?z6gjQ6aHg)X!6FL22-5E(b}N=hemcbXCP8R6XV7;Ymq>#- zk%Qw@<`i}8JLG}KweyvS0{vdQkMV5+es`AI{<-wl-(tX&H0IQr$w$V%gCsGKc@LGl zjDEkAN7}TJaA|MI^|_?;F*gO3Ix@WB_^K_C(=6kV4j~I7%6j%Bpx=+{5dNx5y4j+= ze(p{Qo>}{yy}}19bFvlF1ciXKR5>#6BSn_1CdAjNWcdXbr>5(@`2^X+NpaJ;aVa{G z8OHaQ_xty+F+f=Q-16v9#q7{p-1B;Y3i_(_O1Jlcyf5XT-fkf5 za@Lv8`>YO1crPs=i;t%FgWX&jHJQ-fe@)Xh8MKQ_k;5HKGTn@n?+2x`cMbae>qNY* z3<4IXoUSaHJL_9_LkJ!Ti`OO;( zM;qNh+bn~qpz(1B%7nw%cbIUzl=*RM?&2kX+cSI;@Ge=@x%7QoKCpoCdOLy=YhWa;M$xy_x3F~B8flD$W17) zoI7V`1Jc`UZNaF^QB0{TdP(C*j^b+OjJ^CUsbutzJ0ven&egdz&3}p=P>8vd<~UUG zmW|nAEbwYp>p)<(ot3m4W|Sx3{j(|$%sD1+?^e8s_1nrB%Mhn!$j5VRDGD*gOg#aO ziIQzssygT&-U;|KeO4}#pB(5qbC1eos#?$c^Q|0Va2bEG;{Dn;hGxf zFyU7)meG)aC-zyn@@wYO?T0>R=7e(&S6avfe`u>I-Tu5oy|wgniB$XhGRV__XOw2 z{78W_x8E)}DmmcD_&yOIowfbYoQ1TfHiMNyTQ&1~zHJiNY~xHhTah9j#AKewoI_T7 zgt0mif1!_hOj6`Xx0s7YNd?>zo5}TMr26rE=5&5*C08bdkQRi7Pw5;qj=ilvCVAw@ z*qVsHl$AdhjYTwMFs12~zy2@(2GkHB_9ZwpMf9WnaIZ|mlv4yPYKbOcRlUm7(RD?n z%UZ5Eb2yG-m2Q-2-jN_|I%3M~P6Fyg35ZU%|Z&okNgs-cnCW&N?yN6Y?!Iq4cM&>(=YYmGLWc@rj5hPL>B6zoytx}?U@KZ;3wErPL?L;goBo|X* z%PKj(rMhRA?`itw8Cw6D|9lj)xF$OWDG`6Y&+3%qrz4Dui9&~uLglh`LnAzC@u9}% z7{+78yW)i~c@G3h^0-GhKV_{gO0mZK-{lYZ1D?5$U69qqeMtes=AtvKly`dH0| zF!cvv8)v{&d~KCts@4`C{(_oqCM`Bg6?-6N!BIbM6YlVO!v6ZCm!rE&NKV=W$NHr9 z7VA0Yz}e&z_oADpZ#Snf-l#E-hQkeSYBG^$n-0<1^svQx2;7$t zn{cdNrDL;`0jF%v-Y1}du2zT0J_j3Av&F=fG{R~{E5)wVoW-QqUyQBtL{QzGKFU;_ z+FHV?`lQZLRw=1Mn{cLh+wcGEz|)aNr1RLQxSV-N6h&|&rZ2#CujGe`HV0c#SaU?S zLSm*Es1l>X=bz}6QQCju>3#Knl1I*r@kBhMuijtsxeJ~2@ywi%DMc@Dd0Da_bPuwD zyPcp1=50vos`pXz_r;OkuE{|JPeyU>AxJIH@h+?m4i{H)O)w3vN(Gzt)t7Uq1gh!7 zKI$3CW*5e{NqANtH9&IKg|RwG=jcC-arsI{ocvu}hUw&Sv*799ZKrm*IEAv#!gP5XbK0TRRTR$VyNT&+B3IfILRZK{W|-!& z3Y7VMsK0=r$;buUw2bMOIX0LmnPxL1!{NIIvH`^mZJ@do5$ZwdtUZJNu_90s@4{H0 zgs<;g5GZMJVQfpnH}@?dO8(=@*pq~B?OPBeIp9jatfZXH+0oB)pB_C6VbIjHgKneo zNq?ptL|{I-EpVRCR0N}abkai|LQ%cS@aV}((iX3{QAeuQD=vvWoO0 z9#4Nu4U?R8V_Z+d^ZTgbk|H<8-6Z^QA2ou1Yx(8jeTuWGPj_w(e`bB6@S@w9B^@ZZ zAN{y9=kU?(#&_#X3{#YULI3qkVa6;LY?{>snVabHc5v0b($5SYHu@ZwDLr@F z6x-l5m(0lCpf7RTdd$U&pc7rOm%LmJH-6AoxAmJF7#Vh+A;mU{^}pO^kSXv|1HDtA ze>%r+7j9dmIa6F@g3-oZdT~0U>_^;#;2${6Wk05R+>h&uKlwrPe6UH6etDe&HA-`gDqexp)Q*NU+xJEIdKf5;UDM)2!b- zs}uir+?`mww^OZ)tB`SN2?{957X8iUjrp>h+9K1;vDWBDJtKl;#3kvp?k#7F%aLaB z!Dbe<0VkQqL@3+T<|XZo4?QMPyY;v!txR z`OxHLRf;tq2773ArPT9Wc-fg!(*b6=t^8TwY zWAm%?+8TulsY1>y9z{L&G=9$PHDlk8{Zrq!!l85C?vq5}M(98!$qRHGC^J!zO@3&5 zY=4vMxB1o;>Y)1j#naxI1=l81Y?r%^J$t9>y1Uc2U0x0z8^OB1 zhIm_vhrMv6yQE#|L&3I3#AJSXHole9l0nrUmYip>$BsaZ*!MN=?kbr{MK!_S**VkKf4ny6YUl9e$!qteJ*!&Zl{+K^ zS3dJQ*^xAGv|-lBa<4Bj$eQ$M>p9V-CZH%p3faXOCj3v+b$auWtEHPRYn|SIXt|zN z=ly}=g@PBf=t-9ew&Q`I8+SA^jY@Cb?-~}Ibe?Z9vCxs!$Sx`NWs_XRK`RO%Tjy|= zujk>;$??+Ctb7yBDivI6p^Rf=F1|^}-+{6R@hyn~sYdh3gFW3nw62%cbRnBO9ll@5 z??IjNSA&Ij7~O;1I}GmN;sRJGcXZ>H!F)eymelm!FCmP_68Y%ZgEgy#AgIrE0!)f-~)^*U7>fR_<>v^fz~&H|M@O_4viR`s(VYPVd_V z#hikBcIhs`)AY{v`diWV;_2!3RT^n0hD**Qdz=2?np3~eH>bM4OKKa@$PN;v%*VMe z>zq82X%rJYPLYVxW-dv)WOeh{G` zB5>V6zOXfcPGFl<3cGxvJC=Avc}(kDCz--_GXi;BFi7(+Yn!w!Be%3I=1iKzO{aVo zmHC2u&Ye_GdgGt<9w}rW43*wWx~k>Pv=D6Fr9p@fmyry?jN0M z`y(>%r22ABbo`>Jr0eTooVJl#2>uMUbMfsb;W+Mw8pos z#BSxeE4kJ42E#>#66=b>c5X=H7r47$cb1+kF|cTE_R0*8oaf#)8DZP$uipGF_MsUmOAHC7@|z>?{Z17 zny*>Vgq66rW;i)u!l0}cJQ4X0VveeKxa)`1%_`S9HIbdFdQGmwu|^F0GQCC48N&gW z>W(^jl^r~JEzQa)gZhtbxIve^Y}7Z%ehZ-w-hMjUD;_TN)2+84J+WvQy{s;|T-^Qs zyg^!DCV0O+B=5kL(9DW=TiabNTyXH~YX?4@nGsjStEJbkfw>LR}w+>klWoWaAbSinYUS@kdx zlIbF+`mA%Lyd374Jcy<#p4U9rI*|FU*4KM zMtb_U9@@oTDt+@p-*oz}v2VrUiUH%dY4_Q$eja!OF(J2253jr(UY2{bYt@#tUkk$E zrQkrPGl+CXd$7oFR3WmQdtM1>@$WCvdmCU zr^Qkz`%w0M9V2_C$R2}X22){V8Dh+6W(>dQYkGe^pYP*${&F7Yk50Gyb>G*0UDtg- zlgzWa3+WABc0=H&Si<>tEU#sgK#S0!oWrmtq0g)So9x-;w8y|f;V}c)$4LdCIz%+9 zPF9mrOqPaWw86N#p=NE&ZFIzFeM}v{N8de%mO(N58>?ACxV(ozFy*k!n@VS&ZMpzP}ta0{S!29?M%q^ zf;yoE)r!aO#E`y(z^MM-Id$xmdS63T=X`?U>FU=X>#z%T=AxlrqVglwmp3QYGG=u= zLc#y4DsLFU8wS%wl?u^;tx-$!^6KkrDV~^az!57fWqcL8dVE4%0HWb zIDgY>DyZV$GOdrswLj9R`Q{G{N#P=wq4uJ7srLQu1T$;yXk8wWC0z?wSBCteSR=R= zPp$UgMfz?-D>H85-i~oE^KmG~(@O!L55V>PdLfnm~&=?Va;)K{swj zh8>bi&!4DkQN(;YVDlHHEIq{o+{^U9=MjC0qJLRYO}93hp3d(0nhW9;i0JYS#-#I^dW1TrKFEv4>@YAc(mYGN3G3Fx75Q~JK_ZzE9 zTdO$D6y`(PkC`5VZ$16yP66wJrMlrsPl_Z(McjF47^B|65)}4$QOE#1F^-d^X9~26l?#XZ=ueL z2>UX!`>)h5f|cxf_4*|fy6!2=LJl=zY}57jlgB#KM`~IsO_vHgRe0HZgd}{6g3RCr zr+;JRGR}3%CL5g|#eOZM>#63m;Ss^|AR;zCAu?8!%X=D~)>Pi;xq@F7==nKZj+}c1 z!Kl3^82;ATj$G~Ctx9R$SnYnyZFw59#ih0`gty`+kmeV(#b3v5$(sL9qTNtWZ}>)& zdzl{Qb4^ag2f=srgpRfyR%`x#pkg#N*Eag1^u337<}Xq|FSKpm3PCeqEFh`h<*N$K z-~lR}-mmwf<}#cwkNfO*-ARqLA9e3wruDZiW*h7x=?J`=x6&?2AlTGua`F94^gI<$ zCv?dbVv44^{BFTR;bN9eZHJc5H7__Wr`6`6UYE%n)G9Vm6X=`xk@=FkxEA3?+e~>IMD?bNfGv)Ii}zk|h%`jUHZ4~bmRWW*^$?8UnY{65=+x!pMUNH)_gg_5 zp7Ou(QE3<(ndYF%>uIIwY2FqsKcZVaIh|P>opXT|VG|#A96<(FoL>xr|CKEniWbZh zX*7|rVh_WT{LSm1_f5#rgs@+Q@)s(ArZKBc)oh;CT~390qmDcwT&kY`a$BmlvaGnJ zU};^ns$(ThM)z~W(l&vl60-FxWI!Iz3f*^&>;~20#jP^@Rv0h6Wy0F7j{ID!Wif)B z?iCzI2H$0iBF^dq%GneD;tnoHODX;CVS$6xMC9T$@PtWD3Qpgb7rr|;PEYjG_Kq2SkM9T zbVRkO%WG=4F+h$OJ<0<(;Z2&uR)GF`0Q8w^2Xtsp`f-?uEoP0}$-~nqt0I}<3tm!~ z17fI(Dl|@EBUfJ63p$n3M64`({LfHPsgHFm8LU7(PJE5szmP^9;g@->on%xC#t(fD z_`<%9TcsD@K$qbgi_21jY;`@{R~|zJmk8Cw9 zjOZg~J>XTTEju^|LIi7&mK9?-Og13QM|3I^W?gUg?RaNwv!0u~R9{~QWu=`N790b= zr}pg_&lRNPTI#TkRdH(**(I=_Iz-@0ZSNYaBD^>jsPX$!+*#_cc6DcZ8Y4+6G%jvZuCyO0H1J%X^YwEO63ZR;hW2&XrBdnM!FoV$4GUe%kf>qg^)iwgwbn>kTqj0S|Q}>ec)J!!6y`A$wN8F zp(WNn;fz0`%h?W6l%QU)f>M#C+v9%Z$^603f2_08^q&nM*(P9~hBUDnY$;~B-QcNv zMdg*Hx_*0%?ABe4f1aTmU`_VmZn9g@jVBg{4*OD)`jj0)=kh%8HtL!{{BI34f;Wg+ zb<4ubc4vxTCMNY&d6@`$=d(ZwnA>og&1^6e-rtF2K!q?U!a^n_wobwRuR8;_CiA0m zwH^ElFjB_3Mhv!hnVNH%$k$APZdwP^97)}&slgKwI)MA91QiNYYTM&$e6fC zvevr)Pd?|goA_L)CdPOo5_jB8+ z22zUhhObP*Vy!%;2|BXj@5RI4uRXJAx)a)qa;hO7u|ufxz6$BTT{cq8_@iinhY6%; z?eOnK0RM6gN>8bx_K;vb4HbA*seGG&f=%rk@=!o@HQZ zBoE{`^9_}tgYq#X)SJm*irHAZUD;cA{XvfJzMxN4>L4f07<4iIr-JMYOa$G&zG&7x z{m;4j(wY0SE?{8DhY+qdqU7483b~U6L`iXSc*!@C`SnsG6Utr9t5Y)?3!s|NW55H1 z8+~(mz%#dakD@$p8 ztJXks1pAI$8+ySt@-1{@HOE^e@`VROVe{^{N8-CF0U=2huCfK03#bbPJCBfA6gm92 z`M033uy_!L|7okP2y7Yj{N$$T6CS2NI_JMak2sR5D&NV~6eiO<5 z)Y7N_q2SNOOQWj~UgmUf0pGhf>65Gxy{hHVYejz4GcGqW`#r|PhSVFMvLW}_7)uV zj(ZWJMC+;`?JW|7cqyg{KmuJya8iZX4KByc!74&}C6ub9ryt$bSPE*S)fL@*-At>= z{sxsA-0+d+w>t$Y!-s>439hyBiG)@;!Q)KQ9lu!ZN$)_KL#La&th!R zjb$|Jq3~98D%_I6LvE|!^{tys%ys-)UswzJ-3<2y)|kz^r%Q$T5FqPDKNyKt`oSyI z>X55tBK7qz$emU5FGB8Q{z_fepU-9oBQ?v5rROCnBSQa(xBPrWJYeIX44+s8+c7id zIfRHK<45;o+~dIz>%-_q8UTwCL9=Q7;xRQ^(>|irffhe1LP)v-?&EJsESx+DRnP)xpvo-6Z)UDHd2pb{W(U`rb*(cvA}~_WDsLrYVRq|x z(G`eSv-|6)@X6W9tj?zTEmAgxE8$V}+r@o10gqXuOZT8d&ZYz`w#NbtQjAkh6Rt#~W6xAH`QL`;@V@xQn%Tfz>;i_!LGVqQTK{@? zQ;+?-5*pVrg2&Vbqn3C;1sf}Ls-H-C#7re!ayG%MQwS>w>4UiC@Yxz4@U+Nkq>zp? z%Ri#^;AM=#nr!0VqJu9qeZ(AHD6Ghz55=3DS^G>Bw_7Ux1OH=t->udV3bq$~5dB%Y zp9xCk%@6_MviFGtqh5XpmKF8@by&c8tC*gW%Nx?urm?lqo%kwNfc1=X^9TE>pGfwyg!Dw;?DV_luV43U zZu{wF5k@ZEropkdnm3k=;^K1ezu4L9H-K|?ge_W-jnT!tlw4h_{tq5+d|4 zxiFysiqr9?4&9|H#*uQ)uS`Q(0cTzu;F)<}mVMB%14s9CdwSq!?7-*m^GU65y>Yec zOn=HUNoo5)#M&ulfeeXS@xPfk)Ju?5ss}^=OL3h5^z8r0Mx5vq{+4l>DOE=&ZGe-D>vNj@A$<}` z<;>^{i-e!i3x@=pOUcpb#wv20*Ofe8ikcPqMMz8EKQEwll~H$!qQqz8N#0WMvQ9VY z;vS{~B5E&FnyTM;;!0UpE_raQ0^CVgY~MZb#lx$0gY5x8Deat||$9)j)A)QR5oC{M6(O@q<@*73nEGjeXE} zttCT+uibH16dP|zNo~2!`yfy$iH7HZbPQX8-sS#=!R)^YxRWo-4dM?zQ%hHS9NwbS zpt1_xAM2xWn-|@bv{8EjBF-|D)ewUQjqQO^MR5s)l~wQ%Hxt0%jK%N?5@uo%)cv1X zR;7coi}I)Pmxj89hxfi}7*%;)u2UpJ;$!)1dBcREC~L#8p%Tc zB>GQk)`J1`9Hu9_2lxcx72pWa)1#rOco= zL4l#IyjT>!oMl0sQ)Bjn7fJgwF*t3PEwTNK`d@g zXtfKFttmrue(+t~s$vg*=yP7Ov9-HCs?36EMC~_XcrB@fxnk^d6>7WTBe7=Fs`?Do z0uP-j36JoyV!2cK%0%-U_&p!De7^W_1wTNe{n*hxywiRm7r-BUg&8T3US7VAZl!JY zwzAc=gI&sm36?m^SJtb)G6Z`9BXp>o; zp`*{lZV8S$0Geif-af@MUGDT}cN(;7;}IQb#Z?gYDe!GZ>^e%13i`0DMe%~dE^sA} za{;BJJ5|W^Y4fxDr}E{KFIyd^bNmX&ujcNG9IT1+<0}oW9RF z*b9+>Gh|T6rz$WurA|V`XGNdgNu+?X@24OR|6Q?CjbpZ;ETChaMxf#^4PW zDirYRBF>Cj(6iKh7cTD@8+SeO1V1pSW($7h*mfI!;NsE^c?=5vDg&UNx|&^=oqEFO zOb}YloZ*Vh*lz{C8jNM4Qbq`AZhv3Z%)t_UTf{km(!Oj$yISv#(Xz65(S5hzQ*APv zKh5Dev|TI^!a~BeP3zvrJ!&d4OVAGHU8=gWI3j#S0*YrOvYo+YV>Ooo&~^Wlrc&k2 zW3-)_QWg};gl;?6I-MT|qG@I~!oe(~9TtB)Hm%hA)gytyO3lv~_jFi+xh;y|v`c?$ zgYkH#!K<^_J^g2-0LA%UF9{O}FK6HT52y?Dt`~HHe;$FwaxoL_LNl__uu;pu;>$2u?W@se>Jyc%1D7dFTh88ScYMfuMHvVva@ zN^el~vo^m3?WUS(ugr4!z7;&@P=FqQ1k=8?0cQv+ITkshh3+~L z146d~G9KfWgF`8mdca`n{g&lUQFBr$T7)d+cIvQr%a$!}Ys74Hw%2I*k4rLXf!Bt? z|Gk2>V1e9eYauJxz0)1NKO`xvzRx@z+1&R|vtg;CyDI05NZ}JUb@a4~M+ow^Ct#D* ztmYA7HB8_BR~~jslp!k&mPd=tZ0R46QgR`B*TRZ+Y7hPkJu3Duy1MN+y{^>A5rpQs zJpHYGhU}#U_Gu{bRdx4SszEomnWGo+YI7b(@F6 zAMtv1LGR14;WN20{Pj}-`J2oT>#cBYA;9i>^#P{QjPpn-{G0bAlRxd$0wnCcxOr&# zeg~g$R-?Ayf*k|S1&pI*&IwfNVBp8rC�RBcu8C0#IHq9;(2@%E1IPmxd~rAi&6) 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

      T(nWPWxu^9jKW`o+X=L^4_`nC5N36>gwQ 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%0DahSk+SfbvkF<; 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

      ?&$)x+A&A80+hrA>KTGx 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%0Aj$LJp^RDm1`NnnQrU-&b(0sagJJmI&Vv z0|w(qM{9E-7Tz}7BMH;ntR~sFC#%?}nNT1$K1ZpZQ}fET)i%Jag~4LG?HdFW4M%us zj&0fSTg->^7-4fvbmq{&I2X)oCEErZ^sP!k6>YidyZ;e?4Ta3}jq#pe_!Rf?a&s#< zqN%HG`f8HMuBg$F$Pxgv)_mM852`GzrGr__9FdyyHq98weu>KiS^FdU9nEsXblWJw zUi%#y-5=J!zHQBNOY;de*t^Zsp1##d3PdRN z@G9Tz#Y}zf0+u!}H2;XneRI^pr!QSV_K_?=P@|^9Oa7nBTN}p`GEHJ2;y^>I?#HXfiF6bh)RTbB3u5(E zlS6}MN~%lc@8%nWjNf@8peQ&Q7!2l}7OB!+?~Z<7-xus{(+NT1 z-NPVJ8UYxJ6ldMScqHLwcK|Ky*}<*=iby+xQzyX*VHA_~MREbFoA!UQ4u1+CTc;8ptsRc>pZounBfZTK1#0W!5hSJwJ7`&# z

      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 Date: Sat, 10 Sep 2022 03:00:59 -0400 Subject: [PATCH 09/63] allow naming CP-type logic constraints --- src/logic.jl | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/logic.jl b/src/logic.jl index 1a9a1a9..2043732 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -4,24 +4,27 @@ Add constraint to select n elements from the list of variables. Options for mode are `:at_least`, `:at_most`, `:exactly`. """ -function choose!(m::Model, n::Int, vars::VariableRef...; mode=:exactly) +function choose!(m::Model, n::Int, vars::VariableRef...; mode=:exactly, name="") @assert length(vars) >= n "Not enough variables passed." @assert all(is_valid.(m, vars)) "Invalid VariableRefs passed." - add_selection!(m, n, vars...; mode) + add_selection!(m, n, vars...; mode, name) end -function choose!(m::Model, vars::VariableRef...; mode=:exactly) - @assert all(is_valid.(m, vars)) "Invalid VariableRefs passed." - n = vars[1] #first variable is the n - add_selection!(m, n, vars...; mode) +function choose!(m::Model, var::VariableRef, vars::VariableRef...; mode=:exactly, name="") + @assert all(is_valid.(m, vcat(var,vars))) "Invalid VariableRefs passed." + add_selection!(m, var, vars...; mode, name) end -function add_selection!(m::Model, n, vars::VariableRef...; mode::Symbol) +function add_selection!(m::Model, n, vars::VariableRef...; mode::Symbol, name::String) display(n) if mode == :exactly - display(@constraint(m, sum(vars) == n)) + con = @constraint(m, sum(vars) == n) elseif mode == :at_least - @constraint(m, sum(vars) ≥ n) + con = @constraint(m, sum(vars) ≥ n) elseif mode == :at_most - @constraint(m, sum(vars) ≥ n) + con = @constraint(m, sum(vars) ≤ n) + end + if !isempty(name) + set_name(con, name) + m[Symbol(name)] = con end end From b07a8145a85e71bd32ab11a80efabef7fdcce383 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 03:01:19 -0400 Subject: [PATCH 10/63] update to new JuMP Nonlinear API --- Project.toml | 4 ++-- README.md | 2 +- examples/ex1.jl | 5 +---- examples/ex2.jl | 5 +---- examples/ex3.jl | 1 + src/bigm.jl | 5 ++--- src/constraint.jl | 35 ++++++++--------------------------- src/hull.jl | 29 +++++++++++++---------------- src/macros.jl | 14 ++++---------- src/reformulate.jl | 26 +++++++++++--------------- src/utils.jl | 32 ++++++++++++++++++++++---------- 11 files changed, 66 insertions(+), 92 deletions(-) diff --git a/Project.toml b/Project.toml index 2ee84e7..eae6ba9 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.0" +version = "0.4.0" [deps] IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" @@ -11,7 +11,7 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] IntervalArithmetic = "0.20" -JuMP = "1.0.0 - 1.1.1" +JuMP = "1.2" Suppressor = "0.2" Symbolics = "4" julia = "1" diff --git a/README.md b/README.md index 05e690b..70a52be 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ When a disjunction is defined using the `@disjunction` macro, the disjunctions a For empty disjuncts, use `nothing` for their positional argument (e.g., `@disjunction(m, x <= 1, nothing, reformulation = :big_m)`). -NOTE: `:gdp_variable_refs` and `:gdp_variable_names` are forbidden JuMP model object names when using *DisjunctiveProgramming.jl*. They are used to store the variable names and variable references in the original model. +NOTE: `:gdp_variable_refs` are forbidden JuMP model object names when using *DisjunctiveProgramming.jl*. They are used to store the variable names and variable references in the original model. ## Logical Propositions diff --git a/examples/ex1.jl b/examples/ex1.jl index 659a917..f05b2d7 100644 --- a/examples/ex1.jl +++ b/examples/ex1.jl @@ -10,6 +10,7 @@ m = Model() reformulation=:big_m, name=:y ) +choose!(m, 1, m[:y]...; mode = :exactly, name = "XOR") #XOR constraint @proposition(m, y[1] ∨ y[2]) #this is a redundant proposition print(m) @@ -26,9 +27,5 @@ print(m) # disj_y[2,ub] : x + y[2] <= 10.0 <- right-side of constraint in 2nd disjunct (name is assigned to disj_y[2][ub]) # x >= -5.0 <- variable lower bound # x <= 10.0 <- variable upper bound -# y[1] >= 0.0 <- lower bound on binary -# y[2] >= 0.0 <- lower bound on binary -# y[1] <= 1.0 <- upper bound on binary -# y[2] <= 1.0 <- upper bound on binary # y[1] binary <- indicator variable (1st disjunct) is binary # y[2] binary <- indicator variable (2nd disjunct) is binary \ No newline at end of file diff --git a/examples/ex2.jl b/examples/ex2.jl index f7d9cc6..53ec0c7 100644 --- a/examples/ex2.jl +++ b/examples/ex2.jl @@ -15,6 +15,7 @@ m = Model() reformulation = :big_m, name = :y ) +choose!(m, 1, m[:y]...; mode = :exactly, name = "XOR") #XOR constraint print(m) # ┌ Warning: [con1[1] : x[1] in [0.0, 3.0], con1[2] : x[2] in [0.0, 4.0]] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. @@ -34,9 +35,5 @@ print(m) # x[2] >= -5.0 <- variable bounds # x[1] <= 10.0 <- variable bounds # x[2] <= 10.0 <- variable bounds -# y[1] >= 0.0 <- lower bound on binary -# y[2] >= 0.0 <- lower bound on binary -# y[1] <= 1.0 <- upper bound on binary -# y[2] <= 1.0 <- upper bound on binary # y[1] binary <- indicator variable (1st disjunct) is binary # y[2] binary <- indicator variable (2nd disjunct) is binary \ No newline at end of file diff --git a/examples/ex3.jl b/examples/ex3.jl index c41f799..dc4e2d3 100644 --- a/examples/ex3.jl +++ b/examples/ex3.jl @@ -16,6 +16,7 @@ m = Model() reformulation=:hull, name=:z ) +choose!(m, 1, m[:z]...; mode = :exactly, name = "XOR") #XOR constraint print(m) # Feasibility diff --git a/src/bigm.jl b/src/bigm.jl index c18c715..b3e13f0 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -20,9 +20,8 @@ end function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, k) M = get_reform_param(M, i, j, k; constr) #create symbolic variables (using Symbolics.jl) - for var_ref in constr.model[:gdp_variable_refs] - var_sym = Symbol(var_ref) - eval(:(Symbolics.@variables($var_sym)[1])) + for var_ref in get_constraint_variables(constr.model, constr) + symbolic_variable(var_ref) end bin_var_sym = Symbol("$bin_var[$i]") λ = Num(Symbolics.Sym{Float64}(bin_var_sym)) diff --git a/src/constraint.jl b/src/constraint.jl index 08b44da..bbfd725 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -43,8 +43,6 @@ function check_constraint!(m::Model, constr::ConstraintRef) else constr_name = gen_constraint_name(constr) m[constr_name] = new_constr - # constr_str = split(string(constr),"}")[end] - # @warn "$constr_str uses the `MOI.Interval` or `MOI.EqualTo` set. Each instance of the interval set has been split into two constraints, one for each bound." delete_original_constraint!(m, constr) end return new_constr @@ -67,8 +65,6 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) new_constr = Containers.SparseAxisArray(constr_dict) constr_name = gen_constraint_name(constr) m[constr_name] = new_constr - # constr_str = split(string(constr),"}")[end] - # @warn "$constr_str uses the `MOI.Interval` or `MOI.EqualTo` set. Each instance of the interval set has been split into two constraints, one for each bound." delete_original_constraint!(m, constr) end return new_constr @@ -142,18 +138,14 @@ function split_constraint(m::Model, constr_obj::ScalarConstraint{T,<:MOI.Interva end function split_constraint(m::Model, constr::ConstraintRef, constr_func_expr::Expr, lb::Float64, ub::Float64) replace_JuMPvars!(constr_func_expr, m) #replace Expr with JuMP vars - #replace original constraint with lb <= func - lb_constr = JuMP._NonlinearConstraint( - JuMP._NonlinearExprData(m, constr_func_expr), - lb, - Inf - ) - m.nlp_data.nlconstr[constr.index.value] = lb_constr - #create new constraint for func <= ub + #create split constraints + constr_expr_lb = Expr(:call, :(>=), constr_func_expr, lb) constr_expr_ub = Expr(:call, :(<=), constr_func_expr, ub) + lb_constr = add_nonlinear_constraint(m, constr_expr_lb) ub_constr = add_nonlinear_constraint(m, constr_expr_ub) + delete(m, constr) #delete original constraint - return [constr, ub_constr] + return [lb_constr, ub_constr] end split_constraint(args...) = nothing @@ -177,21 +169,10 @@ function parse_constraint(constr::ConstraintRef) end """ + replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) +Replace nonlinear or quadratic constraint with its hull reformulation. """ -function replace_constraint(constr::NonlinearConstraintRef, sym_expr, op, rhs) - #convert symbolic function to expression - expr = Base.remove_linenums!(build_function(sym_expr)).args[2].args[1] - #replace symbolic variables by their JuMP variables and math operators with their symbols - m = constr.model - replace_JuMPvars!(expr, m) - replace_operators!(expr) - # determine bounds of original constraint (if op is ==, both bounds are set to rhs) - upper_b = (op == :(>=)) ? Inf : rhs - lower_b = (op == :(<=)) ? -Inf : rhs - # replace NL constraint currently in the model with the reformulated one - m.nlp_data.nlconstr[constr.index.value] = JuMP._NonlinearConstraint(JuMP._NonlinearExprData(m, expr), lower_b, upper_b) -end function replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) #convert symbolic function to expression op = eval(op) @@ -201,6 +182,6 @@ function replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) replace_JuMPvars!(expr, m) replace_operators!(expr) #add a nonlinear constraint with the perspective function and delete old constraint + delete(m, constr) #delete original constraint add_nonlinear_constraint(m, expr) - delete(m, constr) end \ No newline at end of file diff --git a/src/hull.jl b/src/hull.jl index a36f70d..e16f4eb 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -1,8 +1,5 @@ -CI = MOI.ConstraintIndex -SAF = MOI.ScalarAffineFunction - """ - hull_reformulation!(constr::ConstraintRef{<:AbstractModel, CI{SAF{T},V}}, bin_var, args...) where {T,V} + hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, bin_var, args...) where {T,V} Apply the hull reformulation to a linear constraint. @@ -14,12 +11,12 @@ Apply the hull reformulation to a nonlinear constraint (includes quadratic) at i Call the hull reformulation on a constraint at index k of constraint j in disjunct i. """ -function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, CI{SAF{T},V}}, bin_var, args...) where {T,V} +function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, bin_var, args...) where {T,V} #check constraint type i = args[2] #get disjunct index bin_var_ref = constr.model[bin_var][i] #replace each variable with its disaggregated version - for var_ref in constr.model[:gdp_variable_refs] + for var_ref in get_constraint_variables(constr.model, constr) #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) var_i_ref = variable_by_name(constr.model, var_name_i) @@ -40,7 +37,7 @@ function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) #create symbolic variables (using Symbolics.jl) sym_vars = Dict( symbolic_variable(var_ref) => symbolic_variable(name_disaggregated_variable(var_ref, bin_var, i)) - for var_ref in constr.model[:gdp_variable_refs] + for var_ref in get_constraint_variables(constr.model, constr) ) ϵ = eps #epsilon parameter for perspective function (See Furman, Sawaya, Grossmann [2020] perspecive function) bin_var_sym = Symbol("$bin_var[$i]") @@ -78,20 +75,18 @@ Disaggregate all variables in the model and tag them with the disjunction name. """ function disaggregate_variables(m::Model, disj, bin_var) #check that variables are bounded - var_refs = m[:gdp_variable_refs] + var_refs = get_constraint_variables(m, disj) @assert all((has_upper_bound.(var_refs) .&& has_lower_bound.(var_refs)) .|| is_binary.(var_refs)) "All variables must be bounded to perform the Hull reformulation." #reformulate variables obj_dict = object_dictionary(m) bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument - for var in get_constraint_variables(m,disj)#var_name in m[:gdp_variable_names] - # var = m[var_name] - var_name = name(var) + for var in var_refs #define UB and LB LB, UB = get_bounds(var, bounds_dict) #disaggregate variable and add bounding constraints sum_vars = AffExpr(0) #initialize sum of disaggregated variables for i in eachindex(disj) - var_name_i_str = "$(var_name)_$(bin_var)_$i" + var_name_i_str = name_disaggregated_variable(var,bin_var,i) var_name_i = Symbol(var_name_i_str) #create disaggregated variable m[var_name_i] = add_disaggregated_variable(m, var, LB, UB, var_name_i_str) @@ -158,13 +153,15 @@ Add constraint that global variable is equal to the sum of the disaggregated cop """ function sum_disaggregated_variables(m::Model, disj, bin_var) for var in m[:gdp_variable_refs] - dis_vars = [] + disag_vars = [] for i in eachindex(disj) var_name_i = name_disaggregated_variable(var, bin_var, i) var_i = variable_by_name(m, var_name_i) - push!(dis_vars, var_i) + push!(disag_vars, var_i) + end + if !isempty(disag_vars) + aggr_con = "$(var)_$(bin_var)_aggregation" + m[Symbol(aggr_con)] = @constraint(m, var == sum(disag_vars), base_name = aggr_con) end - aggr_con = "$(var)_$(bin_var)_aggregation" - m[Symbol(aggr_con)] = @constraint(m, var == sum(dis_vars), base_name = aggr_con) end end \ No newline at end of file diff --git a/src/macros.jl b/src/macros.jl index c0da064..824cdb2 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -56,9 +56,9 @@ macro disjunction(m, args...) #build disjunction code = quote @assert !in($name, keys(object_dictionary($m))) "The disjunction name $name is already registered in the model. Specify new name." - $m[$name] = @variable($m, [eachindex($disjunction)], Bin, base_name = string($name), lower_bound = 0, upper_bound = 1) + $m[$name] = @variable($m, [eachindex($disjunction)], Bin, base_name = string($name)) # @constraint($m, $xor_con, sum($m[$name]) == 1) - reformulate_disjunction($m, $(disjunction...); bin_var = $name, reformulation = $reformulation, param = $param) + DisjunctiveProgramming.reformulate_disjunction($m, $(disjunction...); bin_var = $name, reformulation = $reformulation, param = $param) end return esc(code) @@ -112,21 +112,15 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e #get kw_args and set defaults if missing param = reformulation == :big_m ? M : ϵ bin_var = ismissing(name) ? Symbol("disj",gensym()) : name - disj_name = ismissing(name) ? bin_var : Symbol("disj_",name) - - # #XOR constraint name - # xor_con = "XOR($disj_name)" #apply reformulation - # @assert !in(bin_var, keys(object_dictionary(m))) "The disjunction name $bin_var is already registered in the model. Specify new name." if bin_var in keys(object_dictionary(m)) @assert length(disj) <= length(m[bin_var]) "The disjunction name $bin_var is already registered in the model and its size is smaller than the number of disjunts. Specify new name." else #create indicator variable - m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var), lower_bound = 0, upper_bound = 1) + m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var)) end - # #add xor constraint on binary variable - # m[Symbol(xor_con)] = @constraint(m, sum(m[bin_var]) == 1, base_name = xor_con) + #reformulate disjunction reformulate_disjunction(m, disj...; bin_var, reformulation, param) end diff --git a/src/reformulate.jl b/src/reformulate.jl index 680a6ad..865b07a 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -12,13 +12,9 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) #get original variable refs and variable names vars = setdiff(all_variables(m), m[bin_var]) - var_names = unique(Symbol.([split("$var","[")[1] for var in vars])) if !in(:gdp_variable_refs, keys(object_dictionary(m))) @expression(m, gdp_variable_refs, vars) end - if !in(:gdp_variable_names, keys(object_dictionary(m))) - @expression(m, gdp_variable_names, var_names) - end #run reformulation if reformulation == :hull disaggregate_variables(m, disj, bin_var) @@ -26,18 +22,18 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para end reformulate_disjunction(disj, bin_var, reformulation, param) - #show new constraints as a Dict - new_constraints = Dict{Symbol,Any}( - Symbol(bin_var,"[$i]") => disj[i] for i in eachindex(disj) - ) + # #show new constraints as a Dict + # new_constraints = Dict{Symbol,Any}( + # Symbol(bin_var,"[$i]") => disj[i] for i in eachindex(disj) + # ) # new_constraints[Symbol(bin_var,"_XOR")] = constraint_by_name(m, "XOR(disj_$bin_var)") - if reformulation == :hull - for var in get_constraint_variables(m,disj)#m[:gdp_variable_refs] - agg_con_name = "$(var)_$(bin_var)_aggregation" - new_constraints[Symbol(agg_con_name)] = constraint_by_name(m, agg_con_name) - end - end - return new_constraints + # if reformulation == :hull + # for var in get_constraint_variables(m,disj) + # agg_con_name = "$(var)_$(bin_var)_aggregation" + # new_constraints[Symbol(agg_con_name)] = constraint_by_name(m, agg_con_name) + # end + # end + # return new_constraints #remove model.optimize_hook ? diff --git a/src/utils.jl b/src/utils.jl index 9642d01..3d97553 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -26,14 +26,20 @@ end Get variables that have non-zero coefficients in the passed constraint, constraint container, or disjunction """ -function get_constraint_variables(m::Model, con::ConstraintRef) +function get_constraint_variables(m::Model, con::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}) where {T,V} return filter( var_ref -> !iszero(normalized_coefficient(con, var_ref)), - m[:gdp_variable_refs] + all_variables(m) ) end +function get_constraint_variables(m::Model, con::ConstraintRef) + var_list = [] + constr_expr = parse_constraint(con)[2] + constraint_variables!(constr_expr, m, var_list) + return var_list +end function get_constraint_variables(m::Model, con::Union{Containers.SparseAxisArray, Containers.DenseAxisArray, Array{<:ConstraintRef}}) return union( [ @@ -69,7 +75,7 @@ function gen_constraint_name(constr) end end - return Symbol("$(constr_name)_split") + return Symbol(constr_name) end function replace_Symvars!(expr, model; logical_proposition = false) @@ -139,14 +145,8 @@ function symbolic_variable(var_ref) end function name_disaggregated_variable(var_ref, bin_var, i) - # #get disaggregated variable reference - # if occursin("[", string(var_ref)) - # var_name_i = replace(string(var_ref), "[" => "_$bin_var$i[") - # else - # var_name_i = "$(var_ref)_$bin_var$i" - # end var_name = name(var_ref) - var_name_i = "$(var_name)_$(bin_var)_$i" + var_name_i = "$(var_name)_$(bin_var)$i" return var_name_i end @@ -161,3 +161,15 @@ function name_split_constraint(con_name, side) return con_name end + +function constraint_variables!(expr, model, var_list=[]) + name = join(split(string(expr)," ")) + var = variable_by_name(model, name) + if !isnothing(var) + push!(var_list, var) + elseif expr isa Expr + for i in eachindex(expr.args) + constraint_variables!(expr.args[i], model, var_list) + end + end +end \ No newline at end of file From ea2dc0c2f580f657672e9695f268da78ca6860b5 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 03:04:36 -0400 Subject: [PATCH 11/63] remove old commented lines --- src/reformulate.jl | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/reformulate.jl b/src/reformulate.jl index 865b07a..c0a3028 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -18,7 +18,6 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para #run reformulation if reformulation == :hull disaggregate_variables(m, disj, bin_var) - # sum_disaggregated_variables(m, disj, bin_var) end reformulate_disjunction(disj, bin_var, reformulation, param) @@ -34,10 +33,6 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para # end # end # return new_constraints - - #remove model.optimize_hook ? - - # return m[bin_var] end function reformulate_disjunction(disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) From 3c6b643a764179890cf52a69b3630b5dc15ff0af Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 03:51:11 -0400 Subject: [PATCH 12/63] update named reformulated nl constraint --- examples/ex3.jl | 15 ++++++--------- src/constraint.jl | 7 ++++++- src/hull.jl | 22 +--------------------- src/macros.jl | 5 +++-- src/reformulate.jl | 1 + 5 files changed, 17 insertions(+), 33 deletions(-) diff --git a/examples/ex3.jl b/examples/ex3.jl index dc4e2d3..43eea25 100644 --- a/examples/ex3.jl +++ b/examples/ex3.jl @@ -3,20 +3,21 @@ using DisjunctiveProgramming m = Model() @variable(m, -5 ≤ x ≤ 10) +@variable(m, z[i = 1:2], Bin) @disjunction( m, begin - exp(x) ≤ 2 - -3 ≤ x + con1, exp(x) ≤ 2 + con2, -3 ≤ x end, begin - 3 ≤ exp(x) - 5 ≤ x + con3, 3 ≤ exp(x) + con4, 5 ≤ x end, reformulation=:hull, name=:z ) -choose!(m, 1, m[:z]...; mode = :exactly, name = "XOR") #XOR constraint +choose!(m, 1, z...; mode = :exactly, name = "XOR") #XOR constraint print(m) # Feasibility @@ -33,10 +34,6 @@ print(m) # x <= 10.0 <- upper-bound on x # x_z1 <= 10.0 <- upper-bound on x_z1 (disaggregated x in 1st disjunct) # x_z2 <= 10.0 <- upper-bound on x_z2 (disaggregated x in 2nd disjunct) -# z[1] >= 0.0 <- lower bound on binary -# z[2] >= 0.0 <- lower bound on binary -# z[1] <= 1.0 <- upper bound on binary -# z[2] <= 1.0 <- upper bound on binary # z[1] binary <- indicator variable (1st disjunct) is binary # z[2] binary <- indicator variable (2nd disjunct) is binary # Perspective Functions: diff --git a/src/constraint.jl b/src/constraint.jl index bbfd725..0976b2f 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -182,6 +182,11 @@ function replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) replace_JuMPvars!(expr, m) replace_operators!(expr) #add a nonlinear constraint with the perspective function and delete old constraint + # constr_name = name(constr) + constr_name = findfirst(==(constr), m[:original_object_dict]) delete(m, constr) #delete original constraint - add_nonlinear_constraint(m, expr) + new_constr = add_nonlinear_constraint(m, expr) + if !isnothing(constr_name) + m[constr_name] = new_constr + end end \ No newline at end of file diff --git a/src/hull.jl b/src/hull.jl index e16f4eb..8b3bf83 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -144,24 +144,4 @@ function add_disaggregated_variable(m::Model, var::Containers.SparseAxisArray, L return Containers.SparseAxisArray(var_i_dict) end containerize(var::Array, arr) = arr -containerize(var::Containers.DenseAxisArray, arr) = Containers.DenseAxisArray(arr, axes(var)...) - -""" - sum_disaggregated_variables(m::Model, disj, bin_var) - -Add constraint that global variable is equal to the sum of the disaggregated copies. -""" -function sum_disaggregated_variables(m::Model, disj, bin_var) - for var in m[:gdp_variable_refs] - disag_vars = [] - for i in eachindex(disj) - var_name_i = name_disaggregated_variable(var, bin_var, i) - var_i = variable_by_name(m, var_name_i) - push!(disag_vars, var_i) - end - if !isempty(disag_vars) - aggr_con = "$(var)_$(bin_var)_aggregation" - m[Symbol(aggr_con)] = @constraint(m, var == sum(disag_vars), base_name = aggr_con) - end - end -end \ No newline at end of file +containerize(var::Containers.DenseAxisArray, arr) = Containers.DenseAxisArray(arr, axes(var)...) \ No newline at end of file diff --git a/src/macros.jl b/src/macros.jl index 824cdb2..c756c40 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -55,8 +55,9 @@ macro disjunction(m, args...) #build disjunction code = quote - @assert !in($name, keys(object_dictionary($m))) "The disjunction name $name is already registered in the model. Specify new name." - $m[$name] = @variable($m, [eachindex($disjunction)], Bin, base_name = string($name)) + if !in($name, keys(object_dictionary($m))) + $m[$name] = @variable($m, [eachindex($disjunction)], Bin, base_name = string($name)) + end # @constraint($m, $xor_con, sum($m[$name]) == 1) DisjunctiveProgramming.reformulate_disjunction($m, $(disjunction...); bin_var = $name, reformulation = $reformulation, param = $param) end diff --git a/src/reformulate.jl b/src/reformulate.jl index c0a3028..2a13346 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -15,6 +15,7 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para if !in(:gdp_variable_refs, keys(object_dictionary(m))) @expression(m, gdp_variable_refs, vars) end + @expression(m, original_object_dict, object_dictionary(m)) #run reformulation if reformulation == :hull disaggregate_variables(m, disj, bin_var) From 6e7b55c88373c4d3579c24dd78cedb08fba3a0fb Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 03:55:54 -0400 Subject: [PATCH 13/63] up example --- examples/ex3.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ex3.jl b/examples/ex3.jl index 43eea25..8e39c6c 100644 --- a/examples/ex3.jl +++ b/examples/ex3.jl @@ -23,7 +23,7 @@ print(m) # Feasibility # Subject to # XOR(disj_z) : z[1] + z[2] == 1.0 <- XOR constraint -# x_aggregation : x - x_z1 - x_z2 == 0.0 <- aggregation of disaggregated variables +# x_z_aggregation : x - x_z1 - x_z2 == 0.0 <- aggregation of disaggregated variables # x_z1_lb : -5 z[1] - x_z1 <= 0.0 <- lower-bound constraint on disaggregated variable x_z1 (x in 1st disjunct) # x_z1_ub : -10 z[1] + x_z1 <= 0.0 <- upper-bound constraint on disaggregated variable x_z1 (x in 1st disjunct) # x_z2_lb : -5 z[2] - x_z2 <= 0.0 <- lower-bound constraint on disaggregated variable x_z2 (x in 2nd disjunct) From e35b79f7ecd38523dfd3f8171dd0805bc359f94c Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 12:54:39 -0400 Subject: [PATCH 14/63] bug fixes & clean --- examples/ex3.jl | 8 ++++---- src/constraint.jl | 30 ++++++++++++++---------------- src/logic.jl | 1 - src/macros.jl | 2 +- src/reformulate.jl | 17 ++--------------- src/utils.jl | 39 +++++++++++++++++++++++++++++---------- 6 files changed, 50 insertions(+), 47 deletions(-) diff --git a/examples/ex3.jl b/examples/ex3.jl index 8e39c6c..1994c2f 100644 --- a/examples/ex3.jl +++ b/examples/ex3.jl @@ -7,12 +7,12 @@ m = Model() @disjunction( m, begin - con1, exp(x) ≤ 2 - con2, -3 ≤ x + con1A, exp(x) ≤ 2 + con1B, -3 ≤ x end, begin - con3, 3 ≤ exp(x) - con4, 5 ≤ x + con2A, 3 ≤ exp(x) + con2B, 5 ≤ x end, reformulation=:hull, name=:z diff --git a/src/constraint.jl b/src/constraint.jl index 0976b2f..dfae060 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -42,8 +42,9 @@ function check_constraint!(m::Model, constr::ConstraintRef) new_constr = constr else constr_name = gen_constraint_name(constr) + delete_constraint!(m, constr, constr_name) m[constr_name] = new_constr - delete_original_constraint!(m, constr) + m[:original_object_dict][constr_name] = new_constr end return new_constr end @@ -64,8 +65,9 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) )) new_constr = Containers.SparseAxisArray(constr_dict) constr_name = gen_constraint_name(constr) + delete_constraint!.(m, constr, constr_name) m[constr_name] = new_constr - delete_original_constraint!(m, constr) + m[:original_object_dict][constr_name] = new_constr end return new_constr end @@ -136,23 +138,18 @@ end function split_constraint(m::Model, constr_obj::ScalarConstraint{T,<:MOI.Interval}, lb_name::String, ub_name::String) where T split_constraint(m, constr_obj.func, constr_obj.set.lower, constr_obj.set.upper, lb_name, ub_name) end -function split_constraint(m::Model, constr::ConstraintRef, constr_func_expr::Expr, lb::Float64, ub::Float64) +function split_constraint(m::Model, constr::ConstraintRef, constr_func_expr::Expr, lb::Real, ub::Real) replace_JuMPvars!(constr_func_expr, m) #replace Expr with JuMP vars #create split constraints constr_expr_lb = Expr(:call, :(>=), constr_func_expr, lb) constr_expr_ub = Expr(:call, :(<=), constr_func_expr, ub) lb_constr = add_nonlinear_constraint(m, constr_expr_lb) ub_constr = add_nonlinear_constraint(m, constr_expr_ub) - delete(m, constr) #delete original constraint return [lb_constr, ub_constr] end split_constraint(args...) = nothing -delete_original_constraint!(m::Model, constr::ConstraintRef) = delete(m,constr) -delete_original_constraint!(m::Model, constr::NonlinearConstraintRef) = nothing -delete_original_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) = map(c -> delete_original_constraint!(m,c), constr) - """ parse_constraint(constr::ConstraintRef) @@ -181,12 +178,13 @@ function replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) m = constr.model replace_JuMPvars!(expr, m) replace_operators!(expr) - #add a nonlinear constraint with the perspective function and delete old constraint - # constr_name = name(constr) - constr_name = findfirst(==(constr), m[:original_object_dict]) - delete(m, constr) #delete original constraint - new_constr = add_nonlinear_constraint(m, expr) - if !isnothing(constr_name) - m[constr_name] = new_constr - end + #replace constraint with prespective function + constr_name = gen_constraint_name(constr) + delete_constraint!(m, constr, constr_name) + m[constr_name] = add_nonlinear_constraint(m, expr) +end + +function delete_constraint!(m, constr, constr_name) + delete(m, constr) + unregister(m, constr_name) end \ No newline at end of file diff --git a/src/logic.jl b/src/logic.jl index 2043732..ac19157 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -14,7 +14,6 @@ function choose!(m::Model, var::VariableRef, vars::VariableRef...; mode=:exactly add_selection!(m, var, vars...; mode, name) end function add_selection!(m::Model, n, vars::VariableRef...; mode::Symbol, name::String) - display(n) if mode == :exactly con = @constraint(m, sum(vars) == n) elseif mode == :at_least diff --git a/src/macros.jl b/src/macros.jl index c756c40..74a9ef7 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -89,7 +89,7 @@ function add_disjunction_constraint(m, d, dname) @constraint($m,$dname,$d) catch e if e isa ErrorException - @NLconstraint($m,$d) + @NLconstraint($m,$dname,$d) else throw(e) end diff --git a/src/reformulate.jl b/src/reformulate.jl index 2a13346..b29e84b 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -8,32 +8,19 @@ Reformulate disjunction on a JuMP model. Reformulate disjunction. """ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) - #check disj - disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) #get original variable refs and variable names vars = setdiff(all_variables(m), m[bin_var]) if !in(:gdp_variable_refs, keys(object_dictionary(m))) @expression(m, gdp_variable_refs, vars) end @expression(m, original_object_dict, object_dictionary(m)) + #check disj + disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) #run reformulation if reformulation == :hull disaggregate_variables(m, disj, bin_var) end reformulate_disjunction(disj, bin_var, reformulation, param) - - # #show new constraints as a Dict - # new_constraints = Dict{Symbol,Any}( - # Symbol(bin_var,"[$i]") => disj[i] for i in eachindex(disj) - # ) - # new_constraints[Symbol(bin_var,"_XOR")] = constraint_by_name(m, "XOR(disj_$bin_var)") - # if reformulation == :hull - # for var in get_constraint_variables(m,disj) - # agg_con_name = "$(var)_$(bin_var)_aggregation" - # new_constraints[Symbol(agg_con_name)] = constraint_by_name(m, agg_con_name) - # end - # end - # return new_constraints end function reformulate_disjunction(disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) diff --git a/src/utils.jl b/src/utils.jl index 3d97553..be3c754 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -62,17 +62,36 @@ end Generate constraint name for a constraint to be split (Interval or EqualTo). """ -function gen_constraint_name(constr) - constr_name = name.(constr) - if any(isempty.(constr_name)) +function gen_constraint_name(constr::ConstraintRef) + constr_name = name(constr) + if isempty(constr_name) + constr_name = gensym("constraint") + end + + return Symbol(constr_name) +end +function gen_constraint_name(constr::NonlinearConstraintRef) + constr_name = findfirst(==(constr), constr.model[:original_object_dict]) + if isnothing(constr_name) + constr_name = gensym("constraint") + end + + return Symbol(constr_name) +end +function gen_constraint_name(constr::AbstractArray{<:NonlinearConstraintRef}) + constr_name = findfirst(==(constr), first(constr).model[:original_object_dict]) + if isnothing(constr_name) + constr_name = gensym("constraint") + end + + return Symbol(constr_name) +end +function gen_constraint_name(constr::AbstractArray{<:ConstraintRef}) + constr_name_set = union(first.(split.(string.(gen_constraint_name.(constr)), "["))) + if length(constr_name_set) == 1 + constr_name = constr_name_set[1] + else constr_name = gensym("constraint") - elseif !isa(constr_name, String) - c_names = union(first.(split.(constr_name,"["))) - if length(c_names) == 1 - constr_name = c_names[1] - else - constr_name = gensym("constraint") - end end return Symbol(constr_name) From 5f19e5a3916cf55143e177ee0d5a27eb3c601bfe Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Sat, 10 Sep 2022 15:47:53 -0400 Subject: [PATCH 15/63] Update Project.toml --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index eae6ba9..346a16e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.4.0" +version = "0.3.0" [deps] IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" From ed22679d6e3f2a244b978fe60554e1427351fd46 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 15:54:25 -0400 Subject: [PATCH 16/63] update julia compat --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 346a16e..57f99f1 100644 --- a/Project.toml +++ b/Project.toml @@ -14,7 +14,7 @@ IntervalArithmetic = "0.20" JuMP = "1.2" Suppressor = "0.2" Symbolics = "4" -julia = "1" +julia = "1.6" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" From 2460400f4f6f73cd5c22517c22a1f485d2c03741 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 20:15:35 -0400 Subject: [PATCH 17/63] clean up @disjunction --- src/macros.jl | 57 +++++++++++++++------------------------------------ 1 file changed, 17 insertions(+), 40 deletions(-) diff --git a/src/macros.jl b/src/macros.jl index 74a9ef7..555fcfd 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -4,43 +4,27 @@ Add disjunction macro. """ macro disjunction(m, args...) - #get disjunction (pos_args) and keyword arguments - pos_args, kw_args, _ = Containers._extract_kw_args(args) - @assert length(pos_args) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." + #get disjunction (args) and keyword arguments + disjuncts, kwargs, _ = Containers._extract_kw_args(args) - #get kw_args and set defaults if missing - reformulation = filter(i -> i.args[1] == :reformulation, kw_args) - if !isempty(reformulation) - reformulation = reformulation[1].args[2] - reformulation_kind = eval(reformulation) - @assert reformulation_kind in [:big_m, :hull] "Invalid reformulation method passed to keyword argument `:reformulation`. Valid options are :big_m (Big-M Reformulation) and :hull (Hull Reformulation)." - if reformulation_kind == :big_m - M = filter(i -> i.args[1] == :M, kw_args) - param = !isempty(M) ? M[1].args[2] : :(missing) - elseif reformulation_kind == :hull - ϵ = filter(i -> i.args[1] == :ϵ, kw_args) - param = !isempty(ϵ) ? ϵ[1].args[2] : :(1e-6) - else - end - else - throw(UndefKeywordError(:reformulation)) - end - name = filter(i -> i.args[1] == :name, kw_args) - if !isempty(name) - name = name[1].args[2] - disj_name = Symbol("disj_",eval(name)) - else - name = :(Symbol("disj",gensym())) - disj_name = eval(name) - end + #get kwargs and set defaults if missing + reformulation_kwarg = filter(i -> i.args[1] == :reformulation, kwargs) + reformulation = isempty(reformulation_kwarg) ? throw(UndefKeywordError(:reformulation)) : reformulation_kwarg[1].args[2] + M_kwarg = filter(i -> i.args[1] == :M, kwargs) + M = isempty(M_kwarg) ? :missing : M_kwarg[1].args[2] + ϵ_kwarg = filter(i -> i.args[1] == :ϵ, kwargs) + ϵ = isempty(ϵ_kwarg) ? :(1e-6) : ϵ_kwarg[1].args[2] + name_kwarg = filter(i -> i.args[1] == :name, kwargs) + name = isempty(name_kwarg) ? Symbol("disj_",gensym()) : name_kwarg[1].args[2] + disj_name = isempty(name_kwarg) ? name : Symbol("disj_",eval(name)) #create constraints for each disjunction - disj_names = [Symbol("$(disj_name)[$i]") for i in eachindex(pos_args)] + disj_names = [Symbol("$(disj_name)[$i]") for i in eachindex(disjuncts)] disjunction = [] - for (d,dname) in zip(pos_args,disj_names) + for (d,dname) in zip(disjuncts,disj_names) if Meta.isexpr(d, :tuple) for (j,di) in enumerate(d.args) - i = findfirst(x -> x == d, pos_args) + i = findfirst(x -> x == d, disjuncts) dname_j = Symbol("$(disj_name)[$i,$j]") d.args[j] = add_disjunction_constraint(m, di, dname_j) end @@ -49,17 +33,10 @@ macro disjunction(m, args...) push!(disjunction, add_disjunction_constraint(m, d, dname)) end end - - # #XOR constraint name - # xor_con = Symbol("XOR($disj_name)") #build disjunction code = quote - if !in($name, keys(object_dictionary($m))) - $m[$name] = @variable($m, [eachindex($disjunction)], Bin, base_name = string($name)) - end - # @constraint($m, $xor_con, sum($m[$name]) == 1) - DisjunctiveProgramming.reformulate_disjunction($m, $(disjunction...); bin_var = $name, reformulation = $reformulation, param = $param) + DisjunctiveProgramming.add_disjunction!($m, $(disjunction...); reformulation = $reformulation, M = $M, ϵ = $ϵ, name = $name) end return esc(code) @@ -110,7 +87,7 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e @assert reformulation in [:big_m, :hull] "Invalid reformulation method passed to keyword argument `:reformulation`. Valid options are :big_m (Big-M Reformulation) and :hull (Hull Reformulation)." @assert length(disj) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." - #get kw_args and set defaults if missing + #get kwargs and set defaults if missing param = reformulation == :big_m ? M : ϵ bin_var = ismissing(name) ? Symbol("disj",gensym()) : name From 25025621ab4757b32d0f5533788cb711705001e2 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 20:20:31 -0400 Subject: [PATCH 18/63] close #24 --- src/macros.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/macros.jl b/src/macros.jl index 555fcfd..b7f6dd0 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -93,7 +93,8 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e #apply reformulation if bin_var in keys(object_dictionary(m)) - @assert length(disj) <= length(m[bin_var]) "The disjunction name $bin_var is already registered in the model and its size is smaller than the number of disjunts. Specify new name." + @assert m[bin_var] isa Vector{VariableRef} "The binary variable $bin_var is already registered in the model and is not of type Vector{VariableRef}. Specify a new name for the disjunction." + @assert length(disj) <= length(m[bin_var]) "The binary variable $bin_var is already registered in the model and its size is smaller than the number of disjunts. Specify a new name for the disjunction." else #create indicator variable m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var)) From 7a8aebfd772d0c4728c8a139be855d45a975c247 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 10 Sep 2022 20:25:12 -0400 Subject: [PATCH 19/63] compact add_disjunction! --- src/macros.jl | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/macros.jl b/src/macros.jl index b7f6dd0..f46d3df 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -86,21 +86,18 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e #run checks @assert reformulation in [:big_m, :hull] "Invalid reformulation method passed to keyword argument `:reformulation`. Valid options are :big_m (Big-M Reformulation) and :hull (Hull Reformulation)." @assert length(disj) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." - - #get kwargs and set defaults if missing - param = reformulation == :big_m ? M : ϵ - bin_var = ismissing(name) ? Symbol("disj",gensym()) : name - #apply reformulation + #create indicator variable + bin_var = ismissing(name) ? Symbol("disj_",gensym()) : name if bin_var in keys(object_dictionary(m)) - @assert m[bin_var] isa Vector{VariableRef} "The binary variable $bin_var is already registered in the model and is not of type Vector{VariableRef}. Specify a new name for the disjunction." - @assert length(disj) <= length(m[bin_var]) "The binary variable $bin_var is already registered in the model and its size is smaller than the number of disjunts. Specify a new name for the disjunction." + @assert m[bin_var] isa AbstractArray{VariableRef} "The binary variable $bin_var is already registered in the model and is not of type AbstractArray{VariableRef}. Specify a new name for the disjunction." + @assert length(disj) <= prod(size(m[bin_var])) "The binary variable $bin_var is already registered in the model and its size is smaller than the number of disjunts. Specify a new name for the disjunction." else - #create indicator variable m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var)) end #reformulate disjunction + param = reformulation == :big_m ? M : ϵ reformulate_disjunction(m, disj...; bin_var, reformulation, param) end From a5c6d6e6250a78e683587dc9f5989a3fee22dd7f Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 12 Sep 2022 00:30:11 -0400 Subject: [PATCH 20/63] use .ext dictionary to store object dict --- README.md | 2 +- src/constraint.jl | 4 ++-- src/reformulate.jl | 7 +------ src/utils.jl | 4 ++-- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 70a52be..dd82676 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ When a disjunction is defined using the `@disjunction` macro, the disjunctions a For empty disjuncts, use `nothing` for their positional argument (e.g., `@disjunction(m, x <= 1, nothing, reformulation = :big_m)`). -NOTE: `:gdp_variable_refs` are forbidden JuMP model object names when using *DisjunctiveProgramming.jl*. They are used to store the variable names and variable references in the original model. +NOTE: `:object_dict` is used in the extension dictionary to store the object dictionary of models using *DisjunctiveProgramming.jl*. ## Logical Propositions diff --git a/src/constraint.jl b/src/constraint.jl index dfae060..021a098 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -44,7 +44,7 @@ function check_constraint!(m::Model, constr::ConstraintRef) constr_name = gen_constraint_name(constr) delete_constraint!(m, constr, constr_name) m[constr_name] = new_constr - m[:original_object_dict][constr_name] = new_constr + m.ext[:object_dict][constr_name] = new_constr end return new_constr end @@ -67,7 +67,7 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) constr_name = gen_constraint_name(constr) delete_constraint!.(m, constr, constr_name) m[constr_name] = new_constr - m[:original_object_dict][constr_name] = new_constr + m.ext[:object_dict][constr_name] = new_constr end return new_constr end diff --git a/src/reformulate.jl b/src/reformulate.jl index b29e84b..9a44809 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -8,12 +8,7 @@ Reformulate disjunction on a JuMP model. Reformulate disjunction. """ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) - #get original variable refs and variable names - vars = setdiff(all_variables(m), m[bin_var]) - if !in(:gdp_variable_refs, keys(object_dictionary(m))) - @expression(m, gdp_variable_refs, vars) - end - @expression(m, original_object_dict, object_dictionary(m)) + m.ext[:object_dict] = copy(object_dictionary(m)) #check disj disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) #run reformulation diff --git a/src/utils.jl b/src/utils.jl index be3c754..762bbb0 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -71,7 +71,7 @@ function gen_constraint_name(constr::ConstraintRef) return Symbol(constr_name) end function gen_constraint_name(constr::NonlinearConstraintRef) - constr_name = findfirst(==(constr), constr.model[:original_object_dict]) + constr_name = findfirst(==(constr), constr.model.ext[:object_dict]) if isnothing(constr_name) constr_name = gensym("constraint") end @@ -79,7 +79,7 @@ function gen_constraint_name(constr::NonlinearConstraintRef) return Symbol(constr_name) end function gen_constraint_name(constr::AbstractArray{<:NonlinearConstraintRef}) - constr_name = findfirst(==(constr), first(constr).model[:original_object_dict]) + constr_name = findfirst(==(constr), first(constr).model.ext[:object_dict]) if isnothing(constr_name) constr_name = gensym("constraint") end From 88867e49e3dfc93b5096630e9e02d4da6937776b Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 12 Sep 2022 01:31:07 -0400 Subject: [PATCH 21/63] -store constraints in a disjunctions in m.ext -add name to @proposition remove storing object_dictionary (use annonymous constraints) --- Project.toml | 2 +- examples/ex1.jl | 2 +- examples/ex2.jl | 2 -- src/bigm.jl | 2 +- src/constraint.jl | 22 +++++----------------- src/hull.jl | 14 ++++++++++---- src/logic.jl | 12 +++++++----- src/macros.jl | 7 +++++-- src/reformulate.jl | 4 +++- src/utils.jl | 46 +++++----------------------------------------- 10 files changed, 38 insertions(+), 75 deletions(-) diff --git a/Project.toml b/Project.toml index 57f99f1..40cdfd3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.0" +version = "0.3.1" [deps] IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" diff --git a/examples/ex1.jl b/examples/ex1.jl index f05b2d7..0412afc 100644 --- a/examples/ex1.jl +++ b/examples/ex1.jl @@ -11,7 +11,7 @@ m = Model() name=:y ) choose!(m, 1, m[:y]...; mode = :exactly, name = "XOR") #XOR constraint -@proposition(m, y[1] ∨ y[2]) #this is a redundant proposition +@proposition(m, y[1] ∨ y[2], name = "prop") #this is a redundant proposition print(m) diff --git a/examples/ex2.jl b/examples/ex2.jl index 53ec0c7..992012b 100644 --- a/examples/ex2.jl +++ b/examples/ex2.jl @@ -18,8 +18,6 @@ m = Model() choose!(m, 1, m[:y]...; mode = :exactly, name = "XOR") #XOR constraint print(m) -# ┌ Warning: [con1[1] : x[1] in [0.0, 3.0], con1[2] : x[2] in [0.0, 4.0]] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. -# ┌ Warning: [con2[1] : x[1] in [5.0, 9.0], con2[2] : x[2] in [4.0, 6.0]] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. # Feasibility # Subject to # XOR(disj_y) : y[1] + y[2] == 1.0 <- XOR constraint diff --git a/src/bigm.jl b/src/bigm.jl index b3e13f0..6b09281 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -33,7 +33,7 @@ function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, gx = gx - M*(1-λ) #add bigM #update constraint - replace_constraint(constr, gx, op, rhs) + replace_constraint(constr, bin_var, gx, op, rhs) end big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k) = big_m_reformulation(constr[k], bin_var, M, i, j, k) \ No newline at end of file diff --git a/src/constraint.jl b/src/constraint.jl index 021a098..910dc34 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -41,10 +41,7 @@ function check_constraint!(m::Model, constr::ConstraintRef) if isnothing(new_constr) new_constr = constr else - constr_name = gen_constraint_name(constr) - delete_constraint!(m, constr, constr_name) - m[constr_name] = new_constr - m.ext[:object_dict][constr_name] = new_constr + delete(m, constr) end return new_constr end @@ -64,10 +61,7 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) ]... )) new_constr = Containers.SparseAxisArray(constr_dict) - constr_name = gen_constraint_name(constr) - delete_constraint!.(m, constr, constr_name) - m[constr_name] = new_constr - m.ext[:object_dict][constr_name] = new_constr + delete(m, constr) end return new_constr end @@ -166,11 +160,11 @@ function parse_constraint(constr::ConstraintRef) end """ - replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) + replace_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) Replace nonlinear or quadratic constraint with its hull reformulation. """ -function replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) +function replace_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) #convert symbolic function to expression op = eval(op) expr = Base.remove_linenums!(build_function(op(sym_expr,rhs))).args[2].args[1] @@ -179,12 +173,6 @@ function replace_constraint(constr::ConstraintRef, sym_expr, op, rhs) replace_JuMPvars!(expr, m) replace_operators!(expr) #replace constraint with prespective function - constr_name = gen_constraint_name(constr) - delete_constraint!(m, constr, constr_name) - m[constr_name] = add_nonlinear_constraint(m, expr) -end - -function delete_constraint!(m, constr, constr_name) + push!(m.ext[bin_var], add_nonlinear_constraint(m, expr)) delete(m, constr) - unregister(m, constr_name) end \ No newline at end of file diff --git a/src/hull.jl b/src/hull.jl index 8b3bf83..ba0ac95 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -63,7 +63,7 @@ function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) pers_func = substitute(pers_func, Dict(FSG1 => (1-ϵ)*λ+ϵ, FSG2 => ϵ*(1-λ))) pers_func = simplify(pers_func) - replace_constraint(constr, pers_func, op, rhs) + replace_constraint(constr, bin_var, pers_func, op, rhs) end hull_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, eps, i, j, k) = hull_reformulation!(constr[k], bin_var, eps, i, j, k) @@ -93,14 +93,20 @@ function disaggregate_variables(m::Model, disj, bin_var) #apply bounding constraints on disaggregated variable var_i_lb = "$(var_name_i)_lb" var_i_ub = "$(var_name_i)_ub" - m[Symbol(var_i_lb)] = @constraint(m, LB * m[bin_var][i] .- m[var_name_i] .<= 0, base_name = var_i_lb) - m[Symbol(var_i_ub)] = @constraint(m, m[var_name_i] .- UB * m[bin_var][i] .<= 0, base_name = var_i_ub) + push!( + m.ext[bin_var], + @constraint(m, LB * m[bin_var][i] .- m[var_name_i] .<= 0, base_name = var_i_lb), + @constraint(m, m[var_name_i] .- UB * m[bin_var][i] .<= 0, base_name = var_i_ub) + ) #update disaggregated sum expression add_to_expression!(sum_vars, 1, m[var_name_i]) end #sum disaggregated variables aggr_con = "$(var)_$(bin_var)_aggregation" - m[Symbol(aggr_con)] = @constraint(m, var == sum_vars, base_name = aggr_con) + push!( + m.ext[bin_var], + @constraint(m, var == sum_vars, base_name = aggr_con) + ) end end diff --git a/src/logic.jl b/src/logic.jl index ac19157..a4b7b89 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -28,12 +28,14 @@ function add_selection!(m::Model, n, vars::VariableRef...; mode::Symbol, name::S end """ - add_proposition!(m::Model, expr::Expr) + add_proposition!(m::Model, expr::Expr; name::String = "") Convert logical proposition expression into conjunctive normal form. """ -function add_proposition!(m::Model, expr::Expr) - expr_name = Symbol("{$expr}") #get name to register reformulated logical proposition +function add_proposition!(m::Model, expr::Expr; name::String = "") + if isempty(name) + name = "{$expr}" #get name to register reformulated logical proposition + end replace_Symvars!(expr, m; logical_proposition = true) #replace all JuMP variables with Symbolic variables clause_list = to_cnf!(expr) #replace symbolic variables with JuMP variables and boolean operators with their algebraic counterparts @@ -47,9 +49,9 @@ function add_proposition!(m::Model, expr::Expr) unique!(lhs) #generate JuMP constraints for the logical proposition if length(lhs) == 1 - m[expr_name] = @constraint(m, lhs[1] >= 1, base_name = string(expr_name)) + m[Symbol(name)] = @constraint(m, lhs[1] >= 1, base_name = name) else - m[expr_name] = @constraint(m, [i = eachindex(lhs)], lhs[i] >= 1, base_name = string(expr_name)) + m[Symbol(name)] = @constraint(m, [i = eachindex(lhs)], lhs[i] >= 1, base_name = name) end end diff --git a/src/macros.jl b/src/macros.jl index f46d3df..a12c75c 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -106,10 +106,13 @@ end Add logical proposition macro. """ -macro proposition(m, expr) +macro proposition(m, args...) + expr, kwargs, _ = Containers._extract_kw_args(args) + name_kwarg = filter(i -> i.args[1] == :name, kwargs) + name = isempty(name_kwarg) ? Symbol("") : name_kwarg[1].args[2] #get args expr = QuoteNode(expr) - code = :(DisjunctiveProgramming.add_proposition!($m, $expr)) + code = :(DisjunctiveProgramming.add_proposition!($m, $expr[1]; name = $name)) return esc(code) end diff --git a/src/reformulate.jl b/src/reformulate.jl index 9a44809..dd2fc6d 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -8,7 +8,8 @@ Reformulate disjunction on a JuMP model. Reformulate disjunction. """ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) - m.ext[:object_dict] = copy(object_dictionary(m)) + #placeholder to store new constraints (reformulated) + m.ext[bin_var] = [] #check disj disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) #run reformulation @@ -16,6 +17,7 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para disaggregate_variables(m, disj, bin_var) end reformulate_disjunction(disj, bin_var, reformulation, param) + push!(m.ext[bin_var], Iterators.flatten(filter(i -> is_constraint(m, i), disj))...) end function reformulate_disjunction(disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) diff --git a/src/utils.jl b/src/utils.jl index 762bbb0..33beef6 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -57,46 +57,6 @@ function get_constraint_variables(m::Model, disjunction) ) end -""" - gen_constraint_name(constr) - -Generate constraint name for a constraint to be split (Interval or EqualTo). -""" -function gen_constraint_name(constr::ConstraintRef) - constr_name = name(constr) - if isempty(constr_name) - constr_name = gensym("constraint") - end - - return Symbol(constr_name) -end -function gen_constraint_name(constr::NonlinearConstraintRef) - constr_name = findfirst(==(constr), constr.model.ext[:object_dict]) - if isnothing(constr_name) - constr_name = gensym("constraint") - end - - return Symbol(constr_name) -end -function gen_constraint_name(constr::AbstractArray{<:NonlinearConstraintRef}) - constr_name = findfirst(==(constr), first(constr).model.ext[:object_dict]) - if isnothing(constr_name) - constr_name = gensym("constraint") - end - - return Symbol(constr_name) -end -function gen_constraint_name(constr::AbstractArray{<:ConstraintRef}) - constr_name_set = union(first.(split.(string.(gen_constraint_name.(constr)), "["))) - if length(constr_name_set) == 1 - constr_name = constr_name_set[1] - else - constr_name = gensym("constraint") - end - - return Symbol(constr_name) -end - function replace_Symvars!(expr, model; logical_proposition = false) #replace JuMP variables with symbolic variables name = join(split(string(expr)," ")) @@ -191,4 +151,8 @@ function constraint_variables!(expr, model, var_list=[]) constraint_variables!(expr.args[i], model, var_list) end end -end \ No newline at end of file +end + +is_constraint(m::Model, constr::ConstraintRef) = is_valid(m,constr) +is_constraint(m::Model, constr::AbstractArray{<:ConstraintRef}) = all(is_valid.(m,constr)) +is_constraint(m::Model, constr::Tuple) = all([is_constraint(m,i) for i in constr]) \ No newline at end of file From 21df5c22a90d419bffead3c9d4baf3a71bfa4cf8 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 12 Sep 2022 01:33:37 -0400 Subject: [PATCH 22/63] update docstring --- src/macros.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/macros.jl b/src/macros.jl index a12c75c..d1a0f19 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -102,7 +102,7 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e end """ - proposition(m, expr) + proposition(m, expr; [name::String = ""]) Add logical proposition macro. """ From e11566ae4438d1c02a4654ad9f232fd5b9773e7b Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 12 Sep 2022 09:26:43 -0400 Subject: [PATCH 23/63] bug fix --- src/DisjunctiveProgramming.jl | 1 - src/bigm.jl | 33 +++++++++++++-- src/bounds.jl | 77 ----------------------------------- src/constraint.jl | 2 +- src/utils.jl | 67 +++++++++++++++++++++++++++--- 5 files changed, 92 insertions(+), 88 deletions(-) delete mode 100644 src/bounds.jl diff --git a/src/DisjunctiveProgramming.jl b/src/DisjunctiveProgramming.jl index 833dd5a..2b1749e 100644 --- a/src/DisjunctiveProgramming.jl +++ b/src/DisjunctiveProgramming.jl @@ -8,7 +8,6 @@ export choose! include("constraint.jl") include("logic.jl") -include("bounds.jl") include("utils.jl") include("bigm.jl") include("hull.jl") diff --git a/src/bigm.jl b/src/bigm.jl index 6b09281..36a60ce 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -13,9 +13,8 @@ Perform Big-M reformulation on a constraint at index k of constraint j in disjun """ function big_m_reformulation!(constr::ConstraintRef, bin_var, M, i, j, k) M = get_reform_param(M, i, j, k; constr) - bin_var_ref = constr.model[bin_var][i] add_to_function_constant(constr, -M) - set_normalized_coefficient(constr, bin_var_ref , M) + set_normalized_coefficient(constr, constr.model[bin_var][i] , M) end function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, k) M = get_reform_param(M, i, j, k; constr) @@ -36,4 +35,32 @@ function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, replace_constraint(constr, bin_var, gx, op, rhs) end big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k) = - big_m_reformulation(constr[k], bin_var, M, i, j, k) \ No newline at end of file + big_m_reformulation(constr[k], bin_var, M, i, j, k) + +""" + infer_bigm(constr) + +Apply interval arithmetic on a constraint to infer the tightest Big-M value from the bounds on the constraint. +""" +function infer_bigm(constr::ConstraintRef) + #convert constraints into Expr to replace variables with interval sets and determine bounds + constr_type, constr_func_expr, constr_rhs = parse_constraint(constr) + #create a map of variables to their bounds + interval_map = Dict() + vars = all_variables(constr.model)#constr.model[:gdp_variable_constrs] + obj_dict = object_dictionary(constr.model) + bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument + for var in vars + LB, UB = get_bounds(var, bounds_dict) + interval_map[string(var)] = LB..UB + end + constr_func_expr = replace_intevals!(constr_func_expr, interval_map) + #get bounds on the entire expression + func_bounds = eval(constr_func_expr) + Mlo = func_bounds.lo - constr_rhs + Mhi = func_bounds.hi - constr_rhs + M = constr_type == :(<=) ? Mhi : Mlo + isinf(M) && error("M parameter for $constr cannot be infered due to lack of variable bounds.") + return M +end +infer_bigm(constr::NonlinearConstraintRef) = error("$constr is a nonlinear constraint and a tight Big-M parameter cannot be inferred via interval arithmetic.") \ No newline at end of file diff --git a/src/bounds.jl b/src/bounds.jl deleted file mode 100644 index ac2fa3b..0000000 --- a/src/bounds.jl +++ /dev/null @@ -1,77 +0,0 @@ -""" - apply_interval_arithmetic(constr) - -Apply interval arithmetic on a constraint to find the bounds on the constraint. -""" -function apply_interval_arithmetic(constr) - #convert constraints into Expr to replace variables with interval sets and determine bounds - constr_type, constr_func_expr, constr_rhs = parse_constraint(constr) - #create a map of variables to their bounds - interval_map = Dict() - vars = all_variables(constr.model)#constr.model[:gdp_variable_constrs] - obj_dict = object_dictionary(constr.model) - bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument - for var in vars - LB, UB = get_bounds(var, bounds_dict) - interval_map[string(var)] = LB..UB - end - constr_func_expr = replace_intevals!(constr_func_expr, interval_map) - #get bounds on the entire expression - func_bounds = eval(constr_func_expr) - Mlo = func_bounds.lo - constr_rhs - Mhi = func_bounds.hi - constr_rhs - M = constr_type == :(<=) ? Mhi : Mlo - isinf(M) && error("M parameter for $constr cannot be infered due to lack of variable bounds.") - return M -end - -""" - get_bounds(var::VariableRef) - -Get bounds on a variable. - - get_bounds(var, bounds_dict::Dict) - -Get bounds on a variable. Check if a bounds dictionary has been provided with bounds for that value. - - get_bounds(var::AbstractArray{VariableRef}, bounds_dict::Dict, LB, UB) - -Update lower bound `LB` and upper bound `UB` on a variable container. -""" -function get_bounds(var::VariableRef) - LB = has_lower_bound(var) ? lower_bound(var) : (is_binary(var) ? 0 : -Inf) - UB = has_upper_bound(var) ? upper_bound(var) : (is_binary(var) ? 1 : Inf) - return LB, UB -end -function get_bounds(var::VariableRef, bounds_dict::Dict) - if string(var) in keys(bounds_dict) - return bounds_dict[string(var)] - else - return get_bounds(var) - end -end -function get_bounds(var::AbstractArray{VariableRef}, bounds_dict::Dict, LB, UB) - #populate UB and LB - for idx in eachindex(var) - LB[idx], UB[idx] = get_bounds(var[idx], bounds_dict) - end - return LB, UB -end -function get_bounds(var::Array{VariableRef}, bounds_dict::Dict) - #initialize - LB, UB = zeros(size(var)), zeros(size(var)) - return get_bounds(var, bounds_dict, LB, UB) -end -function get_bounds(var::Containers.DenseAxisArray, bounds_dict::Dict) - #initialize - LB = Containers.DenseAxisArray(zeros(size(var)), axes(var)...) - UB = Containers.DenseAxisArray(zeros(size(var)), axes(var)...) - return get_bounds(var, bounds_dict, LB, UB) -end -function get_gounds(var::Containers.SparseAxisArray, bounds_dict::Dict) - #initialize - idxs = keys(var.data) - LB = Containers.SparseAxisArray(Dict(idx => 0. for idx in idxs)) - UB = Containers.SparseAxisArray(Dict(idx => 0. for idx in idxs)) - return get_bounds(var, bounds_dict, LB, UB) -end \ No newline at end of file diff --git a/src/constraint.jl b/src/constraint.jl index 910dc34..5ae148b 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -61,7 +61,7 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) ]... )) new_constr = Containers.SparseAxisArray(constr_dict) - delete(m, constr) + delete.(m, constr) end return new_constr end diff --git a/src/utils.jl b/src/utils.jl index 33beef6..98f62bb 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -10,13 +10,17 @@ Get indices in Array or DenseAxisArray. get_indices(arr::Containers.SparseAxisArray) = keys(arr.data) get_indices(arr) = Iterators.product(axes(arr)...) -get_reform_param(param::Missing, args...; constr) = - apply_interval_arithmetic(constr) -get_reform_param(param::Number, args...; kwargs...) = param -get_reform_param(param::Union{Vector,Tuple}, i::Int, args...; kwargs...) = - get_reform_param(param[i], args...; kwargs...) +""" + get_reform_param(param, args..., kwargs...) + +Get M or ϵ parameter for reformulation. +""" +get_reform_param(param::Missing, args...; constr) = infer_bigm(constr) #if param is missing, infer bigM (ϵ does not pass a kwarg) +get_reform_param(param::Number, args...; kwargs...) = param #if param is a number return it +get_reform_param(param::Union{Vector,Tuple}, idx::Int, args...; kwargs...) = #index param by next Integer arg (idx) + get_reform_param(param[idx], args...; kwargs...) function get_reform_param(param::Dict, args...; kwargs...) - arg_list = [arg for arg in args if !ismissing(arg)] #remove mising if j or k are missing + arg_list = [arg for arg in args if !ismissing(arg)] #remove mising args (if j or k indices are missing) get_reform_param(param[arg_list...]; kwargs...) end @@ -57,6 +61,57 @@ function get_constraint_variables(m::Model, disjunction) ) end +""" + get_bounds(var::VariableRef) + +Get bounds on a variable. + + get_bounds(var, bounds_dict::Dict) + +Get bounds on a variable. Check if a bounds dictionary has been provided with bounds for that value. + + get_bounds(var::AbstractArray{VariableRef}, bounds_dict::Dict, LB, UB) + +Update lower bound `LB` and upper bound `UB` on a variable container. +""" +function get_bounds(var::VariableRef) + LB = has_lower_bound(var) ? lower_bound(var) : (is_binary(var) ? 0 : -Inf) + UB = has_upper_bound(var) ? upper_bound(var) : (is_binary(var) ? 1 : Inf) + return LB, UB +end +function get_bounds(var::VariableRef, bounds_dict::Dict) + if string(var) in keys(bounds_dict) + return bounds_dict[string(var)] + else + return get_bounds(var) + end +end +function get_bounds(var::AbstractArray{VariableRef}, bounds_dict::Dict, LB, UB) + #populate UB and LB + for idx in eachindex(var) + LB[idx], UB[idx] = get_bounds(var[idx], bounds_dict) + end + return LB, UB +end +function get_bounds(var::Array{VariableRef}, bounds_dict::Dict) + #initialize + LB, UB = zeros(size(var)), zeros(size(var)) + return get_bounds(var, bounds_dict, LB, UB) +end +function get_bounds(var::Containers.DenseAxisArray, bounds_dict::Dict) + #initialize + LB = Containers.DenseAxisArray(zeros(size(var)), axes(var)...) + UB = Containers.DenseAxisArray(zeros(size(var)), axes(var)...) + return get_bounds(var, bounds_dict, LB, UB) +end +function get_gounds(var::Containers.SparseAxisArray, bounds_dict::Dict) + #initialize + idxs = keys(var.data) + LB = Containers.SparseAxisArray(Dict(idx => 0. for idx in idxs)) + UB = Containers.SparseAxisArray(Dict(idx => 0. for idx in idxs)) + return get_bounds(var, bounds_dict, LB, UB) +end + function replace_Symvars!(expr, model; logical_proposition = false) #replace JuMP variables with symbolic variables name = join(split(string(expr)," ")) From 06f0f079224023685868be8834fe5ae1955aa953 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Mon, 12 Sep 2022 11:36:08 -0700 Subject: [PATCH 24/63] indicator vars can't be used on more than 1 disj --- src/macros.jl | 2 +- src/reformulate.jl | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/macros.jl b/src/macros.jl index d1a0f19..8ba0320 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -91,7 +91,7 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e bin_var = ismissing(name) ? Symbol("disj_",gensym()) : name if bin_var in keys(object_dictionary(m)) @assert m[bin_var] isa AbstractArray{VariableRef} "The binary variable $bin_var is already registered in the model and is not of type AbstractArray{VariableRef}. Specify a new name for the disjunction." - @assert length(disj) <= prod(size(m[bin_var])) "The binary variable $bin_var is already registered in the model and its size is smaller than the number of disjunts. Specify a new name for the disjunction." + @assert length(disj) == prod(size(m[bin_var])) "The binary variable $bin_var is already registered in the model and its size is not equal to the number of disjunts. Specify a new name for the disjunction." else m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var)) end diff --git a/src/reformulate.jl b/src/reformulate.jl index dd2fc6d..06f13d4 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -9,6 +9,7 @@ Reformulate disjunction. """ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) #placeholder to store new constraints (reformulated) + @assert !in(bin_var, keys(m.ext)) "$bin_var cannot be used as the indicator variable for the disjunction because it has already been used on another disjunction." m.ext[bin_var] = [] #check disj disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) From ce0be3cdf09d55bbad75f8b3ac40989d57e4322e Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 13 Sep 2022 00:03:25 -0400 Subject: [PATCH 25/63] close #53 --- src/bigm.jl | 2 +- src/constraint.jl | 35 +++++++++------------ src/hull.jl | 6 ++-- src/reformulate.jl | 2 +- src/utils.jl | 78 ++++++++++++++++++++++------------------------ 5 files changed, 57 insertions(+), 66 deletions(-) diff --git a/src/bigm.jl b/src/bigm.jl index 36a60ce..aa0cc4a 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -19,7 +19,7 @@ end function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, k) M = get_reform_param(M, i, j, k; constr) #create symbolic variables (using Symbolics.jl) - for var_ref in get_constraint_variables(constr.model, constr) + for var_ref in get_constraint_variables(constr) symbolic_variable(var_ref) end bin_var_sym = Symbol("$bin_var[$i]") diff --git a/src/constraint.jl b/src/constraint.jl index 5ae148b..92d78ca 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -1,8 +1,8 @@ -is_interval_constraint(con_ref::ConstraintRef) = constraint_object(con_ref).set isa MOI.Interval -is_interval_constraint(con_ref::NonlinearConstraintRef) = count(i -> i == :(<=), Meta.parse(string(con_ref)).args) == 2 -is_equality_constraint(con_ref::ConstraintRef) = constraint_object(con_ref).set isa MOI.EqualTo -is_equality_constraint(con_ref::NonlinearConstraintRef) = Meta.parse(string(con_ref)).args[1] == :(==) -JuMP.name(con_ref::NonlinearConstraintRef) = "" +constraint_set(constr::ConstraintRef) = constraint_object(constr).set +constraint_set(constr::NonlinearConstraintRef) = nonlinear_model(constr.model)[index(constr)].set +is_interval(constr::ConstraintRef) = constraint_set(constr) isa MOI.Interval +is_equalto(constr::ConstraintRef) = constraint_set(constr) isa MOI.EqualTo +JuMP.name(constr::NonlinearConstraintRef) = "" """ check_constraint!(m::Model, constr::Tuple) @@ -47,7 +47,7 @@ function check_constraint!(m::Model, constr::ConstraintRef) end function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) @assert all(is_valid.(m, constr)) "$constr is not a valid constraint." - if !any(is_interval_constraint.(constr)) && !any(is_equality_constraint.(constr)) + if !any(is_interval.(constr)) && !any(is_equalto.(constr)) new_constr = constr else idxs = get_indices(constr) @@ -94,17 +94,15 @@ Return nothing for an empty disjunct. """ function split_constraint(m::Model, constr::NonlinearConstraintRef) constr_expr = Meta.parse(string(constr)) - if constr_expr.args[1] == :(==) #replace == for lb <= expr <= ub and split + if is_equalto(constr) #replace == for lb <= expr <= ub and split lb, ub = 0, 0#rhs is always 0, but could get obtained from: constr_expr.args[3] constr_func_expr = copy(constr_expr.args[2]) - new_constraints = split_constraint(m, constr, constr_func_expr, lb, ub) - return new_constraints - elseif count(x -> x == :(<=), constr_expr.args) == 2 #split lb <= expr <= ub + return split_constraint(m, constr_func_expr, lb, ub) + elseif is_interval(constr) #split lb <= expr <= ub lb = constr_expr.args[1] ub = constr_expr.args[5] constr_func_expr = copy(constr_expr.args[3]) #get func part of constraint - new_constraints = split_constraint(m, constr, constr_func_expr, lb, ub) - return new_constraints + return split_constraint(m, constr_func_expr, lb, ub) else return nothing end @@ -132,15 +130,12 @@ end function split_constraint(m::Model, constr_obj::ScalarConstraint{T,<:MOI.Interval}, lb_name::String, ub_name::String) where T split_constraint(m, constr_obj.func, constr_obj.set.lower, constr_obj.set.upper, lb_name, ub_name) end -function split_constraint(m::Model, constr::ConstraintRef, constr_func_expr::Expr, lb::Real, ub::Real) +function split_constraint(m::Model, constr_func_expr::Expr, lb::Real, ub::Real) replace_JuMPvars!(constr_func_expr, m) #replace Expr with JuMP vars - #create split constraints - constr_expr_lb = Expr(:call, :(>=), constr_func_expr, lb) - constr_expr_ub = Expr(:call, :(<=), constr_func_expr, ub) - lb_constr = add_nonlinear_constraint(m, constr_expr_lb) - ub_constr = add_nonlinear_constraint(m, constr_expr_ub) - - return [lb_constr, ub_constr] + return [ + add_nonlinear_constraint(m, :($lb <= $constr_func_expr)), + add_nonlinear_constraint(m, :($constr_func_expr <= $ub)) + ] end split_constraint(args...) = nothing diff --git a/src/hull.jl b/src/hull.jl index ba0ac95..3134761 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -16,7 +16,7 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai i = args[2] #get disjunct index bin_var_ref = constr.model[bin_var][i] #replace each variable with its disaggregated version - for var_ref in get_constraint_variables(constr.model, constr) + for var_ref in get_constraint_variables(constr) #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) var_i_ref = variable_by_name(constr.model, var_name_i) @@ -37,7 +37,7 @@ function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) #create symbolic variables (using Symbolics.jl) sym_vars = Dict( symbolic_variable(var_ref) => symbolic_variable(name_disaggregated_variable(var_ref, bin_var, i)) - for var_ref in get_constraint_variables(constr.model, constr) + for var_ref in get_constraint_variables(constr) ) ϵ = eps #epsilon parameter for perspective function (See Furman, Sawaya, Grossmann [2020] perspecive function) bin_var_sym = Symbol("$bin_var[$i]") @@ -75,7 +75,7 @@ Disaggregate all variables in the model and tag them with the disjunction name. """ function disaggregate_variables(m::Model, disj, bin_var) #check that variables are bounded - var_refs = get_constraint_variables(m, disj) + var_refs = get_constraint_variables(disj) @assert all((has_upper_bound.(var_refs) .&& has_lower_bound.(var_refs)) .|| is_binary.(var_refs)) "All variables must be bounded to perform the Hull reformulation." #reformulate variables obj_dict = object_dictionary(m) diff --git a/src/reformulate.jl b/src/reformulate.jl index dd2fc6d..3b24e64 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -17,7 +17,7 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para disaggregate_variables(m, disj, bin_var) end reformulate_disjunction(disj, bin_var, reformulation, param) - push!(m.ext[bin_var], Iterators.flatten(filter(i -> is_constraint(m, i), disj))...) + push!(m.ext[bin_var], Iterators.flatten(filter(i -> is_constraint(i), disj))...) end function reformulate_disjunction(disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) diff --git a/src/utils.jl b/src/utils.jl index 98f62bb..06aff4a 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -25,41 +25,21 @@ function get_reform_param(param::Dict, args...; kwargs...) end """ - get_constraint_variables(m::Model, con) + get_constraint_variables(con) Get variables that have non-zero coefficients in the passed constraint, constraint container, or disjunction """ -function get_constraint_variables(m::Model, con::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}) where {T,V} - return filter( - var_ref -> - !iszero(normalized_coefficient(con, var_ref)), - all_variables(m) - ) -end -function get_constraint_variables(m::Model, con::ConstraintRef) - var_list = [] - constr_expr = parse_constraint(con)[2] - constraint_variables!(constr_expr, m, var_list) - - return var_list -end -function get_constraint_variables(m::Model, con::Union{Containers.SparseAxisArray, Containers.DenseAxisArray, Array{<:ConstraintRef}}) - return union( - [ - get_constraint_variables(m,con[idx]) - for idx in eachindex(con) - ]... - ) -end -function get_constraint_variables(m::Model, disjunction) - return union( - [ - get_constraint_variables(m, disj) - for disj in disjunction if !isnothing(disj) - ]... - ) +function get_constraint_variables(c::NonlinearConstraintRef) + list = Set{Int}() + nlp = nonlinear_model(c.model) + constraint = nlp[index(c)] + constraint_variables!(list, nlp, constraint.expression) + return map(i -> VariableRef(c.model, MOI.VariableIndex(i)), collect(list)) end +get_constraint_variables(c::ConstraintRef) = constraint_variables(constraint_object(c).func) +get_constraint_variables(c::AbstractArray{<:ConstraintRef}) = union(get_constraint_variables.(c)...) +get_constraint_variables(disjunction) = union([get_constraint_variables(disj) for disj in disjunction if !isnothing(disj)]...) """ get_bounds(var::VariableRef) @@ -196,18 +176,34 @@ function name_split_constraint(con_name, side) return con_name end -function constraint_variables!(expr, model, var_list=[]) - name = join(split(string(expr)," ")) - var = variable_by_name(model, name) - if !isnothing(var) - push!(var_list, var) - elseif expr isa Expr - for i in eachindex(expr.args) - constraint_variables!(expr.args[i], model, var_list) +function constraint_variables!( + list::Set{Int}, + nlp::MOI.Nonlinear.Model, + expr::MOI.Nonlinear.Expression, +) + for node in expr.nodes + if node.type == MOI.Nonlinear.NODE_MOI_VARIABLE + push!(list, node.index) + elseif node.type == MOI.Nonlinear.NODE_SUBEXPRESSION + constraint_variables!(list, nlp, nlp.expressions[node.index].nodes) end end + return end +constraint_variables(constr::AffExpr) = collect(keys(constr.terms)) +constraint_variables(constr::QuadExpr) = union( + constraint_variables(constr.aff), + constraint_variables(constr.terms) +) +constraint_variables(constr::AbstractDict) = Iterators.flatten( + [(p.a,p.b) for p in keys(constr)] +) + +""" + is_constraint(constr) -is_constraint(m::Model, constr::ConstraintRef) = is_valid(m,constr) -is_constraint(m::Model, constr::AbstractArray{<:ConstraintRef}) = all(is_valid.(m,constr)) -is_constraint(m::Model, constr::Tuple) = all([is_constraint(m,i) for i in constr]) \ No newline at end of file +Check if a constraint or tuple of constraints is valid. +""" +is_constraint(constr::ConstraintRef) = is_valid(constr.model,constr) +is_constraint(constr::AbstractArray{<:ConstraintRef}) = all(is_constraint.(constr)) +is_constraint(constr::Tuple) = all(is_constraint.(constr)) \ No newline at end of file From 305ab9165f32284ebda56db919cc49626a6817ec Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 13 Sep 2022 00:04:28 -0400 Subject: [PATCH 26/63] up version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 40cdfd3..105fb5e 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.1" +version = "0.3.2" [deps] IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" From d074ecf3bb6e4948b33e557ae4ed2c2f467011df Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 13 Sep 2022 01:17:39 -0400 Subject: [PATCH 27/63] split nonlinearconstraint without parsing to Expr --- src/constraint.jl | 86 +++++++++++++++++++---------------------------- src/utils.jl | 1 - 2 files changed, 35 insertions(+), 52 deletions(-) diff --git a/src/constraint.jl b/src/constraint.jl index 92d78ca..e4dedcc 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -37,7 +37,7 @@ function check_constraint!(m::Model, constr_j::ConstraintRef, constr_list::Vecto end function check_constraint!(m::Model, constr::ConstraintRef) @assert all(is_valid(m, constr)) "$constr is not a valid constraint." - new_constr = split_constraint(m, constr) + new_constr = split_constraint(constr) if isnothing(new_constr) new_constr = constr else @@ -53,7 +53,7 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) idxs = get_indices(constr) constr_dict = Dict(union( [ - split_constraint(m, constr[idx...]) |> + split_constraint(constr[idx...]) |> i -> isnothing(i) ? (idx...,"") => constr[idx...] : [(idx...,"lb") => i[1], (idx...,"ub") => i[2]] @@ -68,75 +68,59 @@ end check_constraint!(m::Model, constr::Nothing) = nothing """ - split_constraint(m::Model, constr::NonlinearConstraintRef) + split_constraint(constr::ConstraintRef) -Split a nonlinear constraint that is an Interval or EqualTo constraint. - - split_constraint(m::Model, constr::ConstraintRef, constr_name::String = name(constr)) - -Split a linear or quadratic constraint. - - split_constraint(m::Model, constr_obj::ScalarConstraint, lb_name::String, ub_name::String) - -Split a constraint that is a MOI.EqualTo or MOI.Interval. - - split_constraint(m::Model, func::Union{AffExpr,QuadExpr}, lb::Float64, ub::Float64, lb_name::String, ub_name::String) - -Create split constraint for linear or quadratic constraint. - - split_constraint(m::Model, constr::ConstraintRef, constr_func_expr::Expr, lb::Float64, ub::Float64) - -Split a nonlinear constraint. +Split a constraint that is an Interval or EqualTo constraint. split_constraint(args...) Return nothing for an empty disjunct. """ -function split_constraint(m::Model, constr::NonlinearConstraintRef) - constr_expr = Meta.parse(string(constr)) - if is_equalto(constr) #replace == for lb <= expr <= ub and split - lb, ub = 0, 0#rhs is always 0, but could get obtained from: constr_expr.args[3] - constr_func_expr = copy(constr_expr.args[2]) - return split_constraint(m, constr_func_expr, lb, ub) - elseif is_interval(constr) #split lb <= expr <= ub - lb = constr_expr.args[1] - ub = constr_expr.args[5] - constr_func_expr = copy(constr_expr.args[3]) #get func part of constraint - return split_constraint(m, constr_func_expr, lb, ub) +function split_constraint(constr::ConstraintRef) + constr_set = constraint_set(constr) + if is_equalto(constr) + lb = ub = constr_set.value + return _split_constraint(constr.model, constr, lb, ub) + elseif is_interval(constr) + lb = constr_set.lower + ub = constr_set.upper + return _split_constraint(constr.model, constr, lb, ub) else return nothing end end -function split_constraint(m::Model, constr::ConstraintRef, constr_name::String = name(constr)) +function _split_constraint(m::Model, constr::NonlinearConstraintRef, lb::Float64, ub::Float64) + nlp = nonlinear_model(m) + nlconstr = nlp[index(constr)] + #add lb constraint + nlp.last_constraint_index += 1 + index1 = MOI.Nonlinear.ConstraintIndex(nlp.last_constraint_index) + nlp.constraints[index1] = + MOI.Nonlinear.Constraint(nlconstr.expression, MOI.LessThan(ub)) + #add ub constraint + nlp.last_constraint_index += 1 + index2 = MOI.Nonlinear.ConstraintIndex(nlp.last_constraint_index) + nlp.constraints[index2] = + MOI.Nonlinear.Constraint(nlconstr.expression, MOI.GreaterThan(lb)) + + return [ + ConstraintRef(m, index1, constr.shape), + ConstraintRef(m, index2, constr.shape) + ] +end +function _split_constraint(m::Model, constr::ConstraintRef, lb::Float64, ub::Float64) + constr_name = name(constr) if isempty(constr_name) constr_name = "[$constr]" end lb_name = name_split_constraint(constr_name, :lb) ub_name = name_split_constraint(constr_name, :ub) - constr_obj = constraint_object(constr) - new_constraints = split_constraint(m, constr_obj, lb_name, ub_name) - - return new_constraints -end -function split_constraint(m::Model, func::Union{AffExpr,QuadExpr}, lb::Float64, ub::Float64, lb_name::String, ub_name::String) + func = constraint_object(constr).func return [ @constraint(m, lb <= func, base_name = lb_name), @constraint(m, func <= ub, base_name = ub_name) ] end -function split_constraint(m::Model, constr_obj::ScalarConstraint{T,<:MOI.EqualTo}, lb_name::String, ub_name::String) where T - split_constraint(m, constr_obj.func, constr_obj.set.value, constr_obj.set.value, lb_name, ub_name) -end -function split_constraint(m::Model, constr_obj::ScalarConstraint{T,<:MOI.Interval}, lb_name::String, ub_name::String) where T - split_constraint(m, constr_obj.func, constr_obj.set.lower, constr_obj.set.upper, lb_name, ub_name) -end -function split_constraint(m::Model, constr_func_expr::Expr, lb::Real, ub::Real) - replace_JuMPvars!(constr_func_expr, m) #replace Expr with JuMP vars - return [ - add_nonlinear_constraint(m, :($lb <= $constr_func_expr)), - add_nonlinear_constraint(m, :($constr_func_expr <= $ub)) - ] -end split_constraint(args...) = nothing """ diff --git a/src/utils.jl b/src/utils.jl index 06aff4a..1b89073 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -172,7 +172,6 @@ function name_split_constraint(con_name, side) else con_name = "$(con_name)[$side]" end - return con_name end From 2e9f250c108f96b850c5723cac0faa31c835d3b5 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 13 Sep 2022 01:18:57 -0400 Subject: [PATCH 28/63] clean --- src/constraint.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/constraint.jl b/src/constraint.jl index e4dedcc..33f5841 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -17,7 +17,7 @@ Check nested constraint and update `constr_list`. Check constraint in a Model. - check_constraint!(m::Model, constr::Nothing) + check_constraint!(args...) Return nothing for an empty disjunct. """ @@ -65,7 +65,7 @@ function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) end return new_constr end -check_constraint!(m::Model, constr::Nothing) = nothing +check_constraint!(args...) = nothing """ split_constraint(constr::ConstraintRef) From 02b6fa3df892ca9e864578052ab9111a20bc2e51 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 13 Sep 2022 02:08:28 -0400 Subject: [PATCH 29/63] close #55 --- Project.toml | 4 ---- src/DisjunctiveProgramming.jl | 2 +- src/bigm.jl | 42 ++++++++++++++++++++++------------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/Project.toml b/Project.toml index 105fb5e..fd8554b 100644 --- a/Project.toml +++ b/Project.toml @@ -4,15 +4,11 @@ authors = ["hdavid16 "] version = "0.3.2" [deps] -IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" JuMP = "4076af6c-e467-56ae-b986-b466b2749572" -Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] -IntervalArithmetic = "0.20" JuMP = "1.2" -Suppressor = "0.2" Symbolics = "4" julia = "1.6" diff --git a/src/DisjunctiveProgramming.jl b/src/DisjunctiveProgramming.jl index 2b1749e..c03fc66 100644 --- a/src/DisjunctiveProgramming.jl +++ b/src/DisjunctiveProgramming.jl @@ -1,6 +1,6 @@ module DisjunctiveProgramming -using JuMP, IntervalArithmetic, Symbolics, Suppressor +using JuMP, Symbolics export add_disjunction!, add_proposition! export @disjunction, @proposition diff --git a/src/bigm.jl b/src/bigm.jl index aa0cc4a..14c72a5 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -43,23 +43,35 @@ big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k Apply interval arithmetic on a constraint to infer the tightest Big-M value from the bounds on the constraint. """ function infer_bigm(constr::ConstraintRef) - #convert constraints into Expr to replace variables with interval sets and determine bounds - constr_type, constr_func_expr, constr_rhs = parse_constraint(constr) + constr_obj = constraint_object(constr) + constr_terms = constr_obj.func.terms + constr_set = constr_obj.set #create a map of variables to their bounds - interval_map = Dict() - vars = all_variables(constr.model)#constr.model[:gdp_variable_constrs] - obj_dict = object_dictionary(constr.model) - bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument - for var in vars - LB, UB = get_bounds(var, bounds_dict) - interval_map[string(var)] = LB..UB + bounds_dict = :variable_bounds_dict in keys(constr.model.ext) ? constr.model.ext[:variable_bounds_dict] : Dict() + bounds_map = Dict( + var => get_bounds(var, bounds_dict) + for var in get_constraint_variables(constr) + ) + #apply interval arithmetic + if constr_set isa MOI.LessThan + M = -constr_set.upper + for (var,coeff) in constr_terms + if coeff > 0 + M += coeff*bounds_map[var][2] + else + M += coeff*bounds_map[var][1] + end + end + elseif constr_set isa MOI.GreaterThan + M = -constr_st.lower + for (var,coeff) in constr_terms + if coeff < 0 + M += coeff*bounds_map[var][2] + else + M += coeff*bounds_map[var][1] + end + end end - constr_func_expr = replace_intevals!(constr_func_expr, interval_map) - #get bounds on the entire expression - func_bounds = eval(constr_func_expr) - Mlo = func_bounds.lo - constr_rhs - Mhi = func_bounds.hi - constr_rhs - M = constr_type == :(<=) ? Mhi : Mlo isinf(M) && error("M parameter for $constr cannot be infered due to lack of variable bounds.") return M end From a8cc06c109582aa4a694a05429376fb7225982ab Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Wed, 28 Sep 2022 11:53:41 -0400 Subject: [PATCH 30/63] add Suppressor as dep --- Project.toml | 2 ++ src/DisjunctiveProgramming.jl | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index fd8554b..222f04c 100644 --- a/Project.toml +++ b/Project.toml @@ -5,10 +5,12 @@ version = "0.3.2" [deps] JuMP = "4076af6c-e467-56ae-b986-b466b2749572" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] JuMP = "1.2" +Suppressor = "0.2" Symbolics = "4" julia = "1.6" diff --git a/src/DisjunctiveProgramming.jl b/src/DisjunctiveProgramming.jl index c03fc66..5cfedb1 100644 --- a/src/DisjunctiveProgramming.jl +++ b/src/DisjunctiveProgramming.jl @@ -1,6 +1,6 @@ module DisjunctiveProgramming -using JuMP, Symbolics +using JuMP, Symbolics, Suppressor export add_disjunction!, add_proposition! export @disjunction, @proposition From d390986f782ba5dbe2842b2b3fc0e8c09f7e49af Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 10 Oct 2022 10:54:39 -0400 Subject: [PATCH 31/63] JuliaCon 2022 Paper --- .gitignore | 8 + paper/.latexmkrc | 6 + paper/bib.tex | 4 + paper/bigm.png | Bin 0 -> 16157 bytes paper/chr.png | Bin 0 -> 20097 bytes paper/header.tex | 19 + paper/jlcode.sty | 420 ++++++++++++ paper/journal_dat.tex | 6 + paper/juliacon.bst | 1189 ++++++++++++++++++++++++++++++++++ paper/juliacon.cls | 944 +++++++++++++++++++++++++++ paper/logojuliacon.pdf | Bin 0 -> 4937 bytes paper/paper.pdf | Bin 0 -> 348475 bytes paper/paper.tex | 386 +++++++++++ paper/paper.yml | 20 + paper/prep.rb | 57 ++ paper/ref.bib | 353 ++++++++++ paper/solnspace.png | Bin 0 -> 8537 bytes paper/superstructure_pfd.png | Bin 0 -> 71484 bytes 18 files changed, 3412 insertions(+) create mode 100644 paper/.latexmkrc create mode 100644 paper/bib.tex create mode 100644 paper/bigm.png create mode 100644 paper/chr.png create mode 100644 paper/header.tex create mode 100644 paper/jlcode.sty create mode 100644 paper/journal_dat.tex create mode 100644 paper/juliacon.bst create mode 100644 paper/juliacon.cls create mode 100644 paper/logojuliacon.pdf create mode 100644 paper/paper.pdf create mode 100644 paper/paper.tex create mode 100644 paper/paper.yml create mode 100644 paper/prep.rb create mode 100644 paper/ref.bib create mode 100644 paper/solnspace.png create mode 100644 paper/superstructure_pfd.png diff --git a/.gitignore b/.gitignore index b067edd..a605485 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ /Manifest.toml +*.aux +*.bbl +*.blg +*.fdb_latexmk +*.fls +*.log +*.out +*.gz \ No newline at end of file diff --git a/paper/.latexmkrc b/paper/.latexmkrc new file mode 100644 index 0000000..ddcb138 --- /dev/null +++ b/paper/.latexmkrc @@ -0,0 +1,6 @@ + +sub build_header { + system("ruby ./prep.rb") +} + +build_header() diff --git a/paper/bib.tex b/paper/bib.tex new file mode 100644 index 0000000..8e1819a --- /dev/null +++ b/paper/bib.tex @@ -0,0 +1,4 @@ +% **************GENERATED FILE, DO NOT EDIT************** + +\bibliographystyle{juliacon} +\bibliography{ref.bib} diff --git a/paper/bigm.png b/paper/bigm.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b8c356b38f670e0eb5adcdb58d42d63394b447 GIT binary patch literal 16157 zcmeHuXH-;Mw(bT&QA`{_lA;JGpnxbyPAWO)92Cg{lBI|yFpwoEIp-u%GDidyBqs%- z$WbWCP^34vcHeXQzP`8nym8;3H{K711F713t+{6SzHiR;Tv<`-*b&+z2!b4wk-nvh zAcQ^$LNG#d5dMd!^V~6iwu_L;=cc&FoKtS*Ax49A0)w)T%r6Fh(i{Dkr&D z*i%e)N${VSa6W(QR(aSrGY7hB>-1*9Z*aIE{-Uo%eqU*G-c%d5H<{4q;0&=PqSozE zJUE^C%035b6MtBZF`a1+2mFgrQ4yR(kUBFGANb|^O@s(R3TOz=A&5`wNrV7F?)f4l z@bPOzV(|B9280knz8wAkU-=6bJN1}Ll0HbPkvdxr>`6jRP(Xe4+O_#S1-Qb zbjn+@J6%aMzl9hHlQ+%fsB3eXZRvbJ^tvq8LB!bU~^TN;G zQ9mVg-S%6?TazZM)+nBVTJPE{^~@ySV{}>8{du$kPBRj@rhPd&0{2IJ=skY?{t{m! zu{H5ZY4!89c8is%Rsn~JXLn3Y!o$K+9v(Q9WzrO=8F>g1_d_f~hALC>YpEtpIl0L< zh%M*)M9&g3&wjcXuf8x);yIA_ZtTS!&GqT(J^XxgYir5(U8S-+4M$2WyCr$7dOAja ze@sb7mo4nRK2wRS>F&u?V?XQ@ecfi6)Q88qPu<0(v^o5etIB*xig}!yWWC=Bt!&L) zZifkJjT~*2+C6-B1cyP^#;|)3xIYy_&~e_SHHQ%?mc#ODCF;;+;m34N9QbS(z z$?I!0ytXm=9FefiWZ7`Gttyw1Is)q#Y)|S(m7gA=lA*# zt%a`A5Qts5ee@j1JBgR4GEG||j+{85b@y(Hfa_vTychnHdE8m=9hKefjsDa~!>l8e zY%JHWYaTdsyeILdpT|_o=g&QlPl#mbmRPZJbE|7)Yiew-FO=903E+f?n~=E0^65A= zI1kEGr_wZYbuGKo6bN$b1#wl$jRAC*E?<^cQBj%e&5m6E{#EU6?ZRN${BjHD2B~+b zdWn@r{OryZ^>oEEPknu};LDirZ=0NUHkXQOnpS7KC-3tWgCoVSPqsw1jNZ4{TAmDD zZamJR|4zBmWg)bFG`N2BhnJ!`?Sak7NFz+GYdD)m7kk;aq}FKO?a!}7ZI}Cvyfyas zb~Q3pnalM#j!|C`)6vl}&lP58SAaNyk8!T9b&DqNthw#)ZmfMV31WqvkB*Mc4U}YK zH^!pvYE**gh1HWKkHG@j7#PIseUGWZfnwe7eJzxL6IYj)_kaKXy?U*er|{n9xX4OM zTAI~J-9y++)Qy`rowp_<=X1-31?DRV#AF)D#3-T%7c_Mr{_fw|*%_Mh=9+nyQLWcp zN8;lP@~;zeaxPadH(#>qOnU0IIeN$r+1goYUmLWmwXE|Yco7iLt0cOc0`{FvkN4_w z#d=OxUorU@%n-$E7q?iu@5OWPi?ZMGGhN>M+eS9SRXPE*JOb9S`+FO;;cwn#ZZB3U zH3gnQ-P5`L7_Y^6V*o62fMz>@j#p7hXz2-N{d=bPJU2)E%opgMHJ$a= zw=L5H$HjnqFv*aSk(tMM&vvEG^<=){s9seKpt&ab_3KykMLkt+j=6eeZJc*Ez(Y!` z`}@#`fqPXiHPU72mSllx?l*3L|7C%tS0O4bW;zmIym-OpAPgRM(XT#H>a3^wq2s4J z!dTUM@(cuXjcN^V-@YB1Qtmj-cIlGb#y7_xG*k3uYt28UGE|n8eKFM*J8#ezB)XRo z!LFC3U+z#bpI51#t;ueKtucuASbmN^Sq4opd6kO-kjjR<_jg}Bf8LoS@zQBJ*0p(j zDeT=+7;^IDW6{9P1h-_p3K#8~QF4k+?hB32))5QPN=g-{WnpYnm zIBt-SlmlP9n3#~Zh*nqbWeUkgol2S{}b z?>;|#_%Ig(149}(jM;~0WM)fa4O1VUlZ&i?d4{F0K0bJC+0uI=M9QCO1&y9Th;LK) znT&1Q7y16>ZGAef(6q&$sp#Ijzo#2iOHkJ6fYz4^lt&kzAZ0N4v zyJFfL#^t%azE(QvZ3d}hRmZH%c1Rv}-L~5K06ei-`YOa#np(P|*|&H0W;P6TrhE7g z4GlCwP2)E4*USS$?xrcm&e>eL=T0l?Rb|h2+N?j%V7PQXzjpYRq$IwW#zfxMHg99! zb=WOE)3CZiMowS) zS2t?o5);#{enapHa)v) z4SRe0;n@ocQ8NS9`MutIEAiLXw?-bH2#b!+juUpr=iIz^FNdS@`_*`77I`!$I!wws zFAQjaJvzYBy@@vuH8eC>{{Dz~cx&1E!Azo`2VQjNM}26@Q&Ot975u5D;cE91uU*U< z4vU@6_-3@XOjTlst?6jL2VpJJ&8}C9rr?RC2W@ymC|A8XIz>*cJpC4Ml$f2Rrrvk< zCQyJr;+%?@))oe}LPA1@XBUSmvoULPB0RA*!e@jr>Xw$4R(&~d{JHR>erK6v4xOOy zfvlK|RzS&z;ssk$F#%jrqTV$XPP6At{M)a0z^coKY~vTm5m{12g5)nz+?J{{66b1n zmR~Z>`qJ656vubZuI`Bn3mc$oa>rFq^ZvjtxVZ0&+K=5@o9|Zw&$IgW?yYUb>;-gL zk%kz{5NAV|uclr$YjeHbG5n5gU#26Cyh6CrI%-snsbZKeUYv&#)A5}AV)52( z^F~j#yDJ*Y$LOv@SXZj2$h-7Ff!WzKvQi8xT`0Firq%YgA!4w&l7q)+QPT)u zRx{q$*H9MS`Ch-ez`%+ko__QX3u)si!)aOzA`i1y%6 zX5Fm5&v!aYuPm>f`r}Zgt94I?if)1N!>d=XdQ7!rn8c~jD#eys-w>%;u0d;I{K5)hj8)z9gho3)xzSwD2HCLxdvR!2R zUdUQcuAUaGxI=j3Tk?2QkacqyYnE#23rT-!`$iGxxt>lnCE?T%Mky;OJ{4iNw0J37hah;YY zWNO{$cx`jg=baE<4Gw+vijs^hk;9;ZqT(CGD}Oo$Y{3OE%U$W(hgj`x&uXq@++TZu*I4JfQ#s3`_YtgXRH zy6^5M_T?LK%3$!b>5y5j8n`c%&B!>nDgLm7yjEp1|j&+S2 z|88TvY%5v_(N)w|24Cui3IGU29{7ZOtbnsT0O(fOKQ8tnGjoH}d|#`2mini6`W)TK zQYTinakX?ZW~(!ujnpQAXGLux(b?uz%(0Qv&{#qeZq?8-Fg5hrGL7F5?6xt6T6#Cm zb6w|EaIi7JV+9D>R^V?Q_)}HK>%N98L{3j{`x`lVtLMg$d8zFXrq9`^ z*dm06?|y=eygWB#(KL^(iB` z{`rMexyY!g*68Shf-B=r0t%5F2A|>c`ZMM(KSspk*RKu5rHu$cewm-@)3f6Ny2qWE zn3#5_;l)&xbspEN3kp}8g3fNVMSIh|{#s-n4ek{MwI>Q5*In*tUOV`12OxeL6tWBF z&%eJVB^CYq<3rIBg9P5}VB*4}=`b^&KjQBn&6Dm9GesQoo~);55p+ZZlx9_^o_y zxVo};5)sR6WHo*Xu}xKVL`ZBr>1E)B9RkFdmq?7XH$!|A^cSkLS_B7B8O8*8naF2? zsx&$8$^Mc)^XxZMC|VADr*&&Q%6n5|Lh465UUQiMQw;Qjl2TvXBL6OV@xNAz~*?&;UJRu0JyHOi^jz5z3TYy_ajsV;AE+R8fWk62$6| zE7lSgh{t*FX9F?Hyz%tN^xH38jF3KLWMq~f2+@MKf)6{-bTI60jt5~T!?m2+g*Wt9 z5k8mi+9>AZM8JbJOq=z0UJ+c<%u$9TN4X{%{BW`ZMdm>@+lzt#?!G;orjgY6G# z;LhKr0hv&4i;i;=Qc~7{9Zx_&oeUimRM`0rlb(9(%b_&1|+6p zv0{G5&`}`POG*;*Ts9yHR9OHLU9r197#D%~H?wEf1xL=x5{Nl#I>^Mb}KTYyz zy`NmDRev74Up)ix#8^RBSvHTOBLHjC=!G#XY;3ZWmo$6O#1DuZ50ZhQV_OVAEodxb z1ro@bUOZ$zBV5gP-dulvK4>Nxz`^iP3O%O= zOROUot2Yb*lo|mIMQa*nb!OC{zZ(M-3MsTVI_c8l&Uop|c!XAO%(DO8E9oA6(A}xB>>m31*q{@^Vz|*xSbL z&jHs}1zuQeKQ0MH*>RxMCRzkP!-(5HPRlKgt6B*Je@})wF$;!JhjTc9KMLF;6L4f} z48Phgeob(`YRiNbFes1L&VvPPtr3*R-ZHFLHVSdSn5^#snz8~A7A5Rn8t1;q4_+%5 z3ZUdjEI`g(l&8RER_hL&KsWPKV}PIp8*F*zg92z7&Z;IEB((hOn{C+z#h8pi+e!uC z!~)g^ka&AQWCKO+f`NSlr9@tnmXT-b&!R2#!v`wO8Wi|!pev|>%Jv}|ib22wj3&3V zv@`&YgCZT!9CStZcZ%3Fb68|hu~4`4UM9dOYtVC01O!~M*!Xusuq}wOa5@B&Z zy2o8MXv0KPHt4w++n>iH$wp&j-M^Q)=Dod87Qj>lfX5LkMUiig3xUc46-xq4w_iw=>6AF zD7K0>7KaAabF@3}4VJdbM{$3WzIxVkHDqHA)TF4Zrp>SIYPK5FvA{O0nBIV=_feaC z#;?r>FgXIE!GG>gS31l1$)8>rpA+9&Z0vpwb1T zR31i2|0^%4IImw+jA3!|WO{?E-5(w-g;cKwq1m0Q$7`o|d$1V}K7eTj((vHmb*mm0 zkW+sAe#mQOdTNT+gb=HVByf*WTzQcTwgUl21%MbTTmi;_JSGOmAG*x(Y!lq07ucAo znHd{sgTR?VO%8^i1S7Al$((e-`uFdv_CG0~W;0u0^!yp3YuNry~8+L*ED z7oD2UxXwiA*)G+HxGw7RSagU1CLI<)RR+-9q(k9cFUa8Az4sVpFe48Sc|`03*E_iS z29zfSR5gGj2nz{G1n1QNETRH6Zw)@&?H+}PY|{^%-3dLzm{SnjMQ~)hij{^(_qW=; zds1Y`0S~?(JO$viao~fXer4`#uB*JQ}&DP7rJ^lwsTOB9PSk!D48NwfRyY zPJU5Q9UwFX6_wUZhYwKNEXZTSv$Q-`=sr53w1&TW#rVlpZ)-eA)Co!%FmNrvNL>}q z^Huq+@uEh6?KKjm;#TZR$Y)9kkyJ8*lm8*Z^jEp9ICU%Vva++cPQQO-5Lal2!pC%>%gzYnki< zX$QB0=d9gHLWS%6Kwu?XJ#WDy(9{5&VQCih)LkFZNPzhB;aY~BsKVkruPMC0vx3TZ z;J&L<(RLW@w0w(#y!>j77Z(uF><$bqx5bF(t`pA@eX%g_IZ;N&uMNJJQw7-)nZjUAIyQ*+Ii z@_Qyey(0Cj1#!@)Ur-rz1azs@n6(~&odzJqU;svfeILm?P3o#4Phw3G~so+RXPno+KXdW(Vh>MgcZ1MC3GC_Fg3!)Eec&KFH& zuW%TETDQq{aDb6&r$(_6!vNb zm{3Hj9_0v%YgA6NsgYR@lg$GlBW!psM@D;FEv;@edso9A2Y`Ql?>79RQt#;YNE)Oc zQiFC-*fx7S5-0Y#LiTAUw?PNpnHqws2PI&pI>B_f$_-rs%2;qhpxLZ!`-Ae445=x$ zB=Fa1@)7&5L;2p2djsi(*;sMIzM(sc z3`%dVPF}Y5Y6ccj)gmwiwny=$U531@tSXu==Cbqg-*oSSPCWpzr;{(>A`pw}B9)Y~ zdz9_zq$f^9PMkeO>Igw;2`2}-L2B8;OlNY`b(<(ycPg;4Q|10*m-R|>I+CAkjdPO5 z`5MB9+WBhG1{WlOK3MF`km8LSH+CYn-ji}}o}t_w#O|d5YeA{`s{8)V-b33j3`+_0RW42~;s;B2n3Xg_gDe~HusE2yC~43=}QoQ90twC z{MtQTz&tC_ocm+X(as2jp=!CqWKXIbmE9GgAr#yJBG3b_-Gw4FNP{5p+!S>A-m$Z_ z(mtqm)AzsCINUxbFrlaiZ6meY7&BP{2_AN{t=Td|_reh=hw7&&Is&UfC#=C-2iyJpLkCC`gQ+-mSvvtL&)QF96MngJkB{U&-Rr8sIsgTYxDr5lfacDiKaQY_ znD}!Imf7(_UgAMnC`!0FINH8>thAaz*bI9;9XdEQ9q)Y|((5(g>lXwB29DATeYy9g z;P>fMEYNU#8}d^Mh!+r|56XlFQ#qVoRT&jO0FO6UZa*sDS#D7Pnv$tsUT6twG7T`c z_KmB8f`dXo>JFpVA`XIVo;O6eRB_Z(!@MCLAO3LPEwIA27G)@eyPqYc*xH%$Qpy3b& z5G@KC85FwXqWfD)RL+*V&Gh=~%7qEzNDQLwr0`vk-AHP923N?2ar_u0-rlx4GUHqHkVs4z! z&%hht^XK;q8Tc`}^kBlFe8Q!2(n+8_*YPAO19SjIf-aK?nwT{s2@&y!YIT~KDvX>D zV%NX0%H5J8-}^b1kq~axbIyYR@p&1T?elXugV6_(74l^}P`B0a*A#$%XQ<;%p(d5j zZ|7KL2FluNcgKTL8v~RSyz!abccnX9UOo#hy|-jTC!!xETscz{D=3#=eM;MtSRsaG zZPw8WGq0IxGnlk3(-p;|x;B@dmagzB&ZBU~Yi&-($ZK}cWzeQe%ZPHw^@p+Lss*-m za})inAWj+v5uyxh^npUw;nPw!6@$)Ps@}tN?gIE2_UtcP@TE(!8GNxQXcguJ3^8qE zF+B9u%f*W_Mji~k`QBETzRQ*$o+WKJG|GZHHt4c3)b;+U#Kyvq9)R*Pb}khGhm@I` z{2I0)kCn{X66;hwTh@wrCY#~Q5|VLIaYFpKY?c688PZdmrOpd%0IQs^e)P@T&5>_d zc`Qz9SAS=Gu}GD({p`J0jdIpWB&2LyUSZ8n)c(DzfMDg1ts?@vRN6KE{;>A+Lxx7; zIyyDo7nKh7DTO*Xc%%oNKAe-^GKr0dIHhe=HdxEvfdL^Z{&=z7ZD*n`UiQ{noBh2y z{Hddg{QM95-Ir5vPMUr3M*XX+b$GM8n`OIu?uLA9vM!~#)#v07`>p+P#ZBbe*e68$ zrH>CCm=m139n>h|VI`m{Nl&b4*PTL+Uo4(oZ0`Gp;4u`ek@aN@&ZZX1i08DToL0MK zjg5P;(h|Yy87IAn;i`omr<<`oN(6bo&n6pkn0lrlLCRE!No)uIH5I$W2j z%joIH2h9j`%5FxF>pBdq1_WNhe^uPOU@s$fnc_OfrT)_9LbaN@Qx+OH|7 zv{oI?pWhi|(>k7Gryl05ckf>3E>q?m3G8g4=>c~onIngnVgsL%dVtTc# zQU`72FYP2<31ibIQavi}NJiq5(1>;6i(s5N;6A>yGY_FH-0bMiFxfj?y-7==m6Ge~`WXoZ9Dw$M3bt>)8SseUa~-NkE0 zKE5+Tat@6A@p^A0M_I*@m=pd4Kd0vcksHmQ!~8!9DpAl_I`bgN2q7cbsY6UwA$)8s zC5$3Fn*a$@uI7=$Fv?|VtITyb%{eF^MJMb|20y1|IJSo+I6!Ee`PYu(j~z9gmAj}Y zJ=vo7(@KNs+6_%IF9J#`C@5alQ=8;)Bo%`W`b&w1R+?ty0p#hg4L*T0;Uhl!$G9JQ zCQ72=g+-|aS7xW8bMs&*Qr{Sk_@=LPW~QosOjzh0*r3mEa~ebJYtoTPNh$q?MHQzh z4xkf)L@7n5WLNfF>yT91pDOjgKTDYMjD+>-Rh$u6Wc3{xcM7{68~~zxsT^7%bw5&c{*sth}t2{q(+_w=J>_uO8p_DdPS6lxVxspJpwfCh-v){gNGa zdB1qz|8Yt0>d~|0F-n+fdYM801MS!r3 ziuAFo7OAsxD9XybMIVmlg1_qS6dZgTY^g9yJ55S( zfl#%5H(yO@VyJ!MfS*bh%K_)tv!tS_1FP z(teu+8Y&FHWB?HF93TX1UjD6^>LDt(gI0j5wYKj@56X1Gu#pq+aW)Ve&ImYl06j3Z z4~OJOWz<1W;Iw1c(K1Wr1^ovx==!QSITas2&6fbP26`IwU_jGH*OA7?M%hqc=X2e| z3E~IX4Xd;j)74my8WTe?p(rM}!q2bMNL{@(744Oe_CwJQCXjCnaZ`9n-;n_>ADCvt zhDSu8J+fKgsW7^@;Z}_jwjcE;)_T;G+?1%$4wZPv@Sz`fNTRlp#i8s?Ift<1lM8Cj z+1cVJjq_CtfADg&MF#b17~~7GG<^73Hjckw$OuH@`0Q`Mbm0k$Vd!yWO9s$Vy-QL} z!Z@eu8XWK;^%VdDsP%+-E-L(9-D6%`s}FfbFw4e~t@Y;ApJ1W5&DLe(mZg38>PnI$bjfH;Oz zM8pv720*tv@HGE<8MH?Sdc5=|97HKq7{PrQ!a=1CAa-cuIXL(vsv4o~u)?CET#gfv zg;d2U5l5KufCg-)<8+&>oLo1!8an&~l8k($zQc2~$^Q-%CTXo5&b)Q9xj3vuNuO8hPBtb;!#sw47?fr_rts+Asqx#JSOp-u*k5=TZX|3}041cnVPx zc23-x?ltgQk%XdA*goAMK zpjgaQ3#aqb`nmH6!aV#F38+WKdlAcsZ?e35$!bAQeDRYw^1O6)QREJ;<)PV0HtX}}DlYotem@I8%R$0(Dfu<3hf>)j?9q3!e4^zJ zR#i)V$H&UtFlVKF^k+@^YvcCy0SOGp=yN`qd~;|qbp}ruIe#BU`gQ2pI$-X4c#qZD6ICoz5(x2!6l)8o+$cL?; z?sQ%8R}=r&T?(jpmfy97FO_|Bn3V}Ag{p?!f5>&PfclZyQDcv)u&6AG23B!aSogU) zLt+wD8JVscPt|)ltGgTMUVb6b&+uPXS-lz~LdHk`t=0d!^il7LFqBxOHWYP*rCIzc z;si>BtiB0uzdd8}tDie^QvOReB5u`pnf21&@#=r;L@0zH1-}cgO!Tj$f?Na}3LKlCXRReB)=ZkRc50`Wf_S#G|LL9NO?_NY8TcAHwb5 zKLN}}A6@%hmYd;dmI8kJuU)DoQm!dTE-_JczV8pq9Zlr4_y?q3&uT3F{JF!t>u#Q0 zj~LLKgNU*!*TE|mV5u|w=hLrFc9Nl%3cFi|<@lMQRAu3Gz(xN|(EhdAe?odX@tc@6 zjkTH3+TUjh$WNQ6dtxs^35(Yqx$NaC}91}aK%zDnW@3bD8y6B zBFQW}$h9J_bdI!yy)d4M**ai7v%(cqkY*VccexOIy;n`obGCau&{pk|r^a1uKaaMO zRk6|_eZwJj+yX|*D6_=1B0NHFsq9csKTd|wq)9fv*3hX|GdIN*yJk~4deCyPG-*4K zmKmnRGiR&aQzs@+^^nR)dTl;FDvn2vmMdw->+RdF4eWO5kY`!({o9?MFl2l|VcAAb zJ}i*v$3&c#Q8=jaJ*xvHa65%!NGbHXUBr1tB?YCpm<^3E$$%8%nr#wP0=$GdoA@6R zAj!S6i9wjlzlCKr?jG23ZuJ%ABLs z*~DDE)KUJlcY8!`bf?KEovIE}uEuml!g~NntZH;_lN_VJ96;aNE&7Or;ACjZ zr)1%-FFog{U)FMno0&drOgof{1Lf1LSn5?%Oy3AsX!eX(Xt7Jf;mldfV~$0saRjRY z{$WcL7Ia|@)jCet%F6Wl#d2cW@r_C0gP9~nhV5NB;^{m)PO25>3!H~4FG`7gwO%Hh z9Ytz*j~QGQrL_1Se1V;{0{7*%Z2SN@YkfQl;(V3UOk*ht>JLegzh_&=%Ebt0d zuc^X0X=@vMGX9sMqfvkGN$l*iXLWeZ>?!Q2GiS81@4dK){)y&Dye^kDa-HnA-yT$( zl77E>N%Lrq-R(gIb#-IUOIqu8l@pNcL@BS6P0G^h&lSoP)MR3hf>M2$`)eMB%yTE(fUBA(J5UZ8kaLpA{;_-#7FBi6=V1k zp))y;PIaIyeYnsyusvWN@0k{DTOk9pS-O=jxoE5Cb}Djz6p-+jHW;af`v{CM6u}Pn z-=J5h3fGwO%BN^kQ&TOW;fc=T^_mja5ktC1O4TY|Y|xf#BQ-j|Jpgk#==?Uch|qgX zUZXhZE%(9zV{YxvBqxw47|MjZbRBK6g1I_?E-!#cQjm+@?Rs@lDdML(si~?OTC=;Z z7Y-dK^BQ!Fd8op9Wxm#=={U5V=g(`9BGV^8*7?%+I&^9k-dvSHo0$#agmq8BBaG?bhK)M(mSJor8E(GF zK=XCgts0btD7erH%{REyTIab3Bc^$T2aW0A;(@G!g7CZ$TtiWT`%OxN@Gyq5!G&FK zXzd(@iI5DKD}C|o8Q(tffjZ*%0SN>NBrTDgS}-cwwuwRK+F?-WrPfJ=g8Xkt7W#BR lE$aX0dvyOpceVFVh%f!n+B(_n1?xm)BouGu-7tRizW@aezQ_Oo literal 0 HcmV?d00001 diff --git a/paper/chr.png b/paper/chr.png new file mode 100644 index 0000000000000000000000000000000000000000..e249526300cf69537e80ef4fa9f2e1af551127d7 GIT binary patch literal 20097 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 K_57>1AO0^@5^v!E literal 0 HcmV?d00001 diff --git a/paper/header.tex b/paper/header.tex new file mode 100644 index 0000000..604ae8d --- /dev/null +++ b/paper/header.tex @@ -0,0 +1,19 @@ +% **************GENERATED FILE, DO NOT EDIT************** + +\title{My JuliaCon proceeding} + +\author[1]{1st author} +\author[1, 2]{2nd author} +\author[2]{3rd author} +\affil[1]{University} +\affil[2]{National Lab} + +\keywords{Julia, Optimization, Game theory, Compiler} + +\hypersetup{ +pdftitle = {My JuliaCon proceeding}, +pdfsubject = {JuliaCon 2019 Proceedings}, +pdfauthor = {1st author, 2nd author, 3rd author}, +pdfkeywords = {Julia, Optimization, Game theory, Compiler}, +} + diff --git a/paper/jlcode.sty b/paper/jlcode.sty new file mode 100644 index 0000000..affd6a3 --- /dev/null +++ b/paper/jlcode.sty @@ -0,0 +1,420 @@ +%% +%% Julia definition (c) 2018 by wg030 +%% +%% +%% +% keywords, literals and built-ins from: +% https://github.com/isagalaev/highlight.js/blob/master/src/languages/julia.js +% colors from: +% https://docs.julialang.org/en/stable/assets/highlightjs/default.css +% https://docs.julialang.org/en/stable/assets/documenter.css +% special unicode characters from: +% https://docs.julialang.org/en/stable/manual/unicode-input/ + + + + + +% defining the jlcode package +\def\fileversion{2.1} +\def\filedate{2018/03/06} + +\typeout{-- Package: `jlcode' \fileversion\space <\filedate> --} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{jlcode}[\filedate\space\fileversion] + + + + + +% loading required packages +\RequirePackage{listings} +\RequirePackage{xcolor} % for coloring +\RequirePackage{textcomp} % for upright single quotes +\RequirePackage{amssymb} % for the ϰ symbol +\RequirePackage{eurosym} % for the € symbol +\PassOptionsToPackage{T1}{fontenc} +\RequirePackage{fontenc} % for the « and » symbols +\RequirePackage{calc} % for the creation of the code box + + + + + +% julia language definition +\lstdefinelanguage{julia} +{% +% +% julia's keywords: +% +morekeywords=[1] +{% +in,isa,where,baremodule,begin,break,catch,ccall,const,continue,do,else,elseif,% +end,export,finally,for,function,global,if,import,importall,let,local,macro,% +module,quote,return,try,using,while,struct,mutable,primitive,% +% legacy, to be deprecated in the next release +type,immutable,abstract,bitstype,typealias% +},% +% +% julia's literals: +% +morekeywords=[2] +{% +true,false,ARGS,C_NULL,DevNull,ENDIAN_BOM,ENV,I,Inf,Inf16,Inf32,Inf64,% +InsertionSort,JULIA_HOME,LOAD_PATH,MergeSort,NaN,NaN16,NaN32,NaN64,% +PROGRAM_FILE,QuickSort,RoundDown,RoundFromZero,RoundNearest,% +RoundNearestTiesAway,RoundNearestTiesUp,RoundToZero,RoundUp,STDERR,STDIN,% +STDOUT,VERSION,catalan,e,eu,eulergamma,golden,im,nothing,pi,γ,π,φ% +},% +% +% julia's built-ins: +% +morekeywords=[3] +{% +ANY,AbstractArray,AbstractChannel,AbstractFloat,AbstractMatrix,AbstractRNG,% +AbstractSerializer,AbstractSet,AbstractSparseArray,AbstractSparseMatrix,% +AbstractSparseVector,AbstractString,AbstractUnitRange,AbstractVecOrMat,% +AbstractVector,Any,ArgumentError,Array,AssertionError,Associative,% +Base64DecodePipe,Base64EncodePipe,Bidiagonal,BigFloat,BigInt,BitArray,% +BitMatrix,BitVector,Bool,BoundsError,BufferStream,CachingPool,% +CapturedException,CartesianIndex,CartesianRange,Cchar,Cdouble,Cfloat,Channel,% +Char,Cint,Cintmax_t,Clong,Clonglong,ClusterManager,Cmd,CodeInfo,Colon,Complex,% +Complex128,Complex32,Complex64,CompositeException,Condition,ConjArray,% +ConjMatrix,ConjVector,Cptrdiff_t,Cshort,Csize_t,Cssize_t,Cstring,Cuchar,Cuint,% +Cuintmax_t,Culong,Culonglong,Cushort,Cwchar_t,Cwstring,DataType,Date,% +DateFormat,DateTime,DenseArray,DenseMatrix,DenseVecOrMat,DenseVector,Diagonal,% +Dict,DimensionMismatch,Dims,DirectIndexString,Display,DivideError,DomainError,% +EOFError,EachLine,Enum,Enumerate,ErrorException,Exception,ExponentialBackOff,% +Expr,Factorization,FileMonitor,Float16,Float32,Float64,Function,Future,% +GlobalRef,GotoNode,HTML,Hermitian,IO,IOBuffer,IOContext,IOStream,IPAddr,IPv4,% +IPv6,IndexCartesian,IndexLinear,IndexStyle,InexactError,InitError,Int,Int128,% +Int16,Int32,Int64,Int8,IntSet,Integer,InterruptException,InvalidStateException,% +Irrational,KeyError,LabelNode,LinSpace,LineNumberNode,LoadError,% +LowerTriangular,MIME,Matrix,MersenneTwister,Method,MethodError,MethodTable,% +Module,NTuple,NewvarNode,NullException,Nullable,Number,ObjectIdDict,% +OrdinalRange,OutOfMemoryError,OverflowError,Pair,ParseError,PartialQuickSort,% +PermutedDimsArray,Pipe,PollingFileWatcher,ProcessExitedException,Ptr,QuoteNode,% +RandomDevice,Range,RangeIndex,Rational,RawFD,ReadOnlyMemoryError,Real,% +ReentrantLock,Ref,Regex,RegexMatch,RemoteChannel,RemoteException,RevString,% +RoundingMode,RowVector,SSAValue,SegmentationFault,SerializationState,Set,% +SharedArray,SharedMatrix,SharedVector,Signed,SimpleVector,Slot,SlotNumber,% +SparseMatrixCSC,SparseVector,StackFrame,StackOverflowError,StackTrace,% +StepRange,StepRangeLen,StridedArray,StridedMatrix,StridedVecOrMat,% +StridedVector,String,SubArray,SubString,SymTridiagonal,Symbol,Symmetric,% +SystemError,TCPSocket,Task,Text,TextDisplay,Timer,Tridiagonal,Tuple,Type,% +TypeError,TypeMapEntry,TypeMapLevel,TypeName,TypeVar,TypedSlot,UDPSocket,UInt,% +UInt128,UInt16,UInt32,UInt64,UInt8,UndefRefError,UndefVarError,UnicodeError,% +UniformScaling,Union,UnionAll,UnitRange,Unsigned,UpperTriangular,Val,Vararg,% +VecElement,VecOrMat,Vector,VersionNumber,Void,WeakKeyDict,WeakRef,WorkerConfig,% +WorkerPool% +},% +% +% +sensitive=true,% +% +alsoother={$},%$ +% +morecomment=[l]{\#},% +morecomment=[n]{\#=}{=\#},% +% +morestring=[b]{"},% +morestring=[m]{'},% +morestring=[s]{"""}{"""},% +morestring=[s]{r"}{"},% +morestring=[s]{b"}{"},% +morestring=[s]{v"}{"},% +morestring=[s]{raw"}{"},% +morestring=[s]{L"}{"},% +% +}[keywords,comments,strings] + + +% defining the colors for +\definecolor{jlbase}{rgb}{.28,.28,.28} % julia's base color +\definecolor{jlkeyword}{rgb}{0.4, 0.0, 0.3} % julia's keywords +\definecolor{jlliteral}{HTML}{78A960} % julia's literals +\definecolor{jlbuiltin}{HTML}{397300} % julia's built-ins +\definecolor{jlcomment}{HTML}{888888} % julia's comments +\definecolor{jlstring}{HTML}{880000} % julia's strings +\definecolor{jlbackground}{HTML}{F5F5F5} % the background of the code block +\definecolor{jlrule}{HTML}{DDDDDD} % the rule of the code block + + +% defining the ucc and the ucclit command +% for literating special unicode characters +\newcommand{\ucc}[1]{% +\ifnum\lst@mode=\lst@Pmode\relax% +{\color{jlbase}#1}% +\else% +#1% +\fi% +} + +\newcommand{\ucclit}[1]{% +\ifnum\lst@mode=\lst@Pmode\relax% +{\color{jlliteral}#1}% +\else% +#1% +\fi% +} + + +% defining a new opliterate key +\def\lst@OpLiteratekey#1\@nil@{\let\lst@ifxopliterate\lst@if + \def\lst@opliterate{#1}} +\lst@Key{opliterate}{}{\@ifstar{\lst@true \lst@OpLiteratekey} + {\lst@false\lst@OpLiteratekey}#1\@nil@} +\lst@AddToHook{SelectCharTable} + {\ifx\lst@opliterate\@empty\else + \expandafter\lst@OpLiterate\lst@opliterate{}\relax\z@ + \fi} +\def\lst@OpLiterate#1#2#3{% + \ifx\relax#2\@empty\else + \lst@CArgX #1\relax\lst@CDef + {} + {\let\lst@next\@empty + \lst@ifxopliterate + \lst@ifmode \let\lst@next\lst@CArgEmpty \fi + \fi + \ifx\lst@next\@empty + \ifx\lst@OutputBox\@gobble\else + \lst@XPrintToken \let\lst@scanmode\lst@scan@m + \lst@token{#2}\lst@length#3\relax + \lst@XPrintToken + \fi + \let\lst@next\lst@CArgEmptyGobble + \fi + \lst@next}% + \@empty + \expandafter\lst@OpLiterate + \fi} + + +% defining the \addlitjlbase and \addlitjlstring commands, +% which help a user to fix some of the known managable issues +\def\addToLiterate#1{% +\protected@edef\lst@literate{% +\unexpanded\expandafter{\lst@literate}\unexpanded{#1}}} +\lst@Key{expandliterate}{}{\addToLiterate{#1}} +\newcommand{\addlitjlbase}[3]{% +\lstset{expandliterate={#1}{{{\color{jlbase}#2}}}{#3}}} +\newcommand{\addlitjlstring}[3]{% +\lstset{expandliterate={#1}{{{\color{jlstring}#2}}}{#3}}} + + + + + +% defining the styles for +\lstset{keywordstyle={[1]\color{jlkeyword}\bfseries}} % julia's keywords +\lstset{keywordstyle={[2]\color{jlliteral}}} % julia's literals +\lstset{keywordstyle={[3]\color{jlbuiltin}}} % julia's built-ins +\lstset{commentstyle={\color{jlcomment}}} % julia's comments +\lstset{stringstyle={\color{jlstring}}} % julia's strings +\lstset{identifierstyle={\color{jlbase}}} % julia's identifiers + + +\lstset{opliterate=* +% +% julia's operators +% +{\\}{{{\color{jlbase}\lstum@backslash}}}{1} {\{}{{{\color{jlbase}\{}}}{1} +{\}}{{{\color{jlbase}\}}}}{1} {!}{{{\color{jlbase}!}}}{1} +{\%}{{{\color{jlbase}\%}}}{1} {&}{{{\color{jlbase}\&}}}{1} +{(}{{{\color{jlbase}(}}}{1} {)}{{{\color{jlbase})}}}{1} +{*}{{{\color{jlbase}*}}}{1} {+}{{{\color{jlbase}+}}}{1} +{,}{{{\color{jlbase},}}}{1} {-}{{{\color{jlbase}-}}}{1} +{.}{{{\color{jlbase}.}}}{1} {/}{{{\color{jlbase}/}}}{1} +{:}{{{\color{jlbase}:}}}{1} {;}{{{\color{jlbase};}}}{1} +{<}{{{\color{jlbase}<}}}{1} {=}{{{\color{jlbase}=}}}{1} +{>}{{{\color{jlbase}>}}}{1} {?}{{{\color{jlbase}?}}}{1} +{[}{{{\color{jlbase}[}}}{1} {]}{{{\color{jlbase}]}}}{1} +{^}{{{\color{jlbase}\^{}}}}{1} {|}{{{\color{jlbase}|}}}{1} +{~}{{{\color{jlbase}\textasciitilde{}}}}{1} +% +% julia's numbers +% +{.0}{{{\color{jlstring}.0}}}{2} {.1}{{{\color{jlstring}.1}}}{2} +{.2}{{{\color{jlstring}.2}}}{2} {.3}{{{\color{jlstring}.3}}}{2} +{.4}{{{\color{jlstring}.4}}}{2} {.5}{{{\color{jlstring}.5}}}{2} +{.6}{{{\color{jlstring}.6}}}{2} {.7}{{{\color{jlstring}.7}}}{2} +{.8}{{{\color{jlstring}.8}}}{2} {.9}{{{\color{jlstring}.9}}}{2} +% +{e+0}{{{\color{jlstring}e+0}}}{3} {e+1}{{{\color{jlstring}e+1}}}{3} +{e+2}{{{\color{jlstring}e+2}}}{3} {e+3}{{{\color{jlstring}e+3}}}{3} +{e+4}{{{\color{jlstring}e+4}}}{3} {e+5}{{{\color{jlstring}e+5}}}{3} +{e+6}{{{\color{jlstring}e+6}}}{3} {e+7}{{{\color{jlstring}e+7}}}{3} +{e+8}{{{\color{jlstring}e+8}}}{3} {e+9}{{{\color{jlstring}e+9}}}{3} +% +{0E+}{{{\color{jlstring}0E+}}}{3} {1E+}{{{\color{jlstring}1E+}}}{3} +{2E+}{{{\color{jlstring}2E+}}}{3} {3E+}{{{\color{jlstring}3E+}}}{3} +{4E+}{{{\color{jlstring}4E+}}}{3} {5E+}{{{\color{jlstring}5E+}}}{3} +{6E+}{{{\color{jlstring}6E+}}}{3} {7E+}{{{\color{jlstring}7E+}}}{3} +{8E+}{{{\color{jlstring}8E+}}}{3} {9E+}{{{\color{jlstring}9E+}}}{3} +% +{e-0}{{{\color{jlstring}e-0}}}{3} {e-1}{{{\color{jlstring}e-1}}}{3} +{e-2}{{{\color{jlstring}e-2}}}{3} {e-3}{{{\color{jlstring}e-3}}}{3} +{e-4}{{{\color{jlstring}e-4}}}{3} {e-5}{{{\color{jlstring}e-5}}}{3} +{e-6}{{{\color{jlstring}e-6}}}{3} {e-7}{{{\color{jlstring}e-7}}}{3} +{e-8}{{{\color{jlstring}e-8}}}{3} {e-9}{{{\color{jlstring}e-9}}}{3} +% +{0E-}{{{\color{jlstring}0E-}}}{3} {1E-}{{{\color{jlstring}1E-}}}{3} +{2E-}{{{\color{jlstring}2E-}}}{3} {3E-}{{{\color{jlstring}3E-}}}{3} +{4E-}{{{\color{jlstring}4E-}}}{3} {5E-}{{{\color{jlstring}5E-}}}{3} +{6E-}{{{\color{jlstring}6E-}}}{3} {7E-}{{{\color{jlstring}7E-}}}{3} +{8E-}{{{\color{jlstring}8E-}}}{3} {9E-}{{{\color{jlstring}9E-}}}{3} +} + + +% special unicode characters +%\lstset{inputencoding=utf8} +%\DeclareUnicodeCharacter{0391}{A} +\lstset{extendedchars=true} +\lstset{literate= +% +% characters that appear in latin languages +% +{á}{{\'a}}{1} {é}{{\'e}}{1} {í}{{\'i}}{1} {ó}{{\'o}}{1} {ú}{{\'u}}{1} +{Á}{{\'A}}{1} {É}{{\'E}}{1} {Í}{{\'I}}{1} {Ó}{{\'O}}{1} {Ú}{{\'U}}{1} +{à}{{\`a}}{1} {è}{{\`e}}{1} {ì}{{\`i}}{1} {ò}{{\`o}}{1} {ù}{{\`u}}{1} +{À}{{\`A}}{1} {È}{{\'E}}{1} {Ì}{{\`I}}{1} {Ò}{{\`O}}{1} {Ù}{{\`U}}{1} +{ä}{{\"a}}{1} {ë}{{\"e}}{1} {ï}{{\"i}}{1} {ö}{{\"o}}{1} {ü}{{\"u}}{1} +{Ä}{{\"A}}{1} {Ë}{{\"E}}{1} {Ï}{{\"I}}{1} {Ö}{{\"O}}{1} {Ü}{{\"U}}{1} +{â}{{\^a}}{1} {ê}{{\^e}}{1} {î}{{\^i}}{1} {ô}{{\^o}}{1} {û}{{\^u}}{1} +{Â}{{\^A}}{1} {Ê}{{\^E}}{1} {Î}{{\^I}}{1} {Ô}{{\^O}}{1} {Û}{{\^U}}{1} +{œ}{{\oe}}{1} {Œ}{{\OE}}{1} {æ}{{\ae}}{1} {Æ}{{\AE}}{1} {ß}{{\ss}}{1} +{ű}{{\H{u}}}{1} {Ű}{{\H{U}}}{1} {ő}{{\H{o}}}{1} {Ő}{{\H{O}}}{1} +{ç}{{\c c}}{1} {Ç}{{\c C}}{1} {ø}{{\o}}{1} {å}{{\r a}}{1} {Å}{{\r A}}{1} +{€}{{\euro}}{1} {£}{{\pounds}}{1} {«}{{\guillemotleft}}{1} +{»}{{\guillemotright}}{1} {ñ}{{\~n}}{1} {Ñ}{{\~N}}1 {¿}{{?`}}{1} +% +% greek capital letters +% +{Α}{{\ucc{A}}}{1} {Β}{{\ucc{B}}}{1} {Γ}{{\ucc{$\Gamma$}}}{1} +{Δ}{{\ucc{$\Delta$}}}{1} {Ε}{{\ucc{E}}}{1} {Ζ}{{\ucc{Z}}}{1} +{Η}{{\ucc{H}}}{1} {Θ}{{\ucc{$\Theta$}}}{1} {Ι}{{\ucc{I}}}{1} +{Κ}{{\ucc{K}}}{1} {Λ}{{\ucc{$\Lambda$}}}{1} {Μ}{{\ucc{M}}}{1} +{Ν}{{\ucc{N}}}{1} {Ξ}{{\ucc{$\Xi$}}}{1} {Ο}{{\ucc{O}}}{1} +{Π}{{\ucc{$\Pi$}}}{1} {Ρ}{{\ucc{P}}}{1} {Σ}{{\ucc{$\Sigma$}}}{1} +{Τ}{{\ucc{T}}}{1} {Υ}{{\ucc{$\Upsilon$}}}{1} {Φ}{{\ucc{$\Phi$}}}{1} +{Χ}{{\ucc{X}}}{1} {Ψ}{{\ucc{$\Psi$}}}{1} {Ω}{{\ucc{$\Omega$}}}{1} +% +% mircro sign + latin small letter open e +% +{µ}{{\ucc{$\mu$}}}{1} {ɛ}{{\ucc{$\varepsilon$}}}{1} +% +% greek small letters +% +{α}{{\ucc{$\alpha$}}}{1} {β}{{\ucc{$\beta$}}}{1} {γ}{{\ucclit{$\gamma$}}}{1} +{δ}{{\ucc{$\delta$}}}{1} {ε}{{\ucc{$\varepsilon$}}}{1} +{ϵ}{{\ucc{$\epsilon$}}}{1} {ζ}{{\ucc{$\zeta$}}}{1} {η}{{\ucc{$\eta$}}}{1} +{θ}{{\ucc{$\theta$}}}{1} {ϑ}{{\ucc{$\vartheta$}}}{1} {ι}{{\ucc{$\iota$}}}{1} +{κ}{{\ucc{$\kappa$}}}{1} {ϰ}{{\ucc{$\varkappa$}}}{1} {λ}{{\ucc{$\lambda$}}}{1} +{μ}{{\ucc{$\mu$}}}{1} {ν}{{\ucc{$\nu$}}}{1} {ξ}{{\ucc{$\xi$}}}{1} +{ο}{{\ucc{o}}}{1} {π}{{\ucclit{$\pi$}}}{1} {ϖ}{{\ucc{$\varpi$}}}{1} +{ρ}{{\ucc{$\rho$}}}{1} {ϱ}{{\ucc{$\varrho$}}}{1} {σ}{{\ucc{$\sigma$}}}{1} +{ς}{{\ucc{$\varsigma$}}}{1} {τ}{{\ucc{$\tau$}}}{1} {υ}{{\ucc{$\upsilon$}}}{1} +{φ}{{\ucclit{$\phi$}}}{1} {ϕ}{{\ucc{$\varphi$}}}{1} {χ}{{\ucc{$\chi$}}}{1} +{ψ}{{\ucc{$\psi$}}}{1} {ω}{{\ucc{$\omega$}}}{1} +% +% superscripts +% +{⁽}{{\ucc{${\scriptstyle {}^{(}}$}}}{1} {⁾}{{\ucc{${\scriptstyle {}^{)}}$}}}{1} +{⁺}{{\ucc{${\scriptstyle {}^{+}}$}}}{1} {⁻}{{\ucc{${\scriptstyle {}^{-}}$}}}{1} +{⁰}{{\ucc{${\scriptstyle {}^{0}}$}}}{1} {¹}{{\ucc{${\scriptstyle {}^{1}}$}}}{1} +{²}{{\ucc{${\scriptstyle {}^{2}}$}}}{1} {³}{{\ucc{${\scriptstyle {}^{3}}$}}}{1} +{⁴}{{\ucc{${\scriptstyle {}^{4}}$}}}{1} {⁵}{{\ucc{${\scriptstyle {}^{5}}$}}}{1} +{⁶}{{\ucc{${\scriptstyle {}^{6}}$}}}{1} {⁷}{{\ucc{${\scriptstyle {}^{7}}$}}}{1} +{⁸}{{\ucc{${\scriptstyle {}^{8}}$}}}{1} {⁹}{{\ucc{${\scriptstyle {}^{9}}$}}}{1} +{⁼}{{\ucc{${\scriptstyle {}^{=}}$}}}{1} {ᴬ}{{\ucc{${\scriptstyle {}^{A}}$}}}{1} +{ᴮ}{{\ucc{${\scriptstyle {}^{B}}$}}}{1} {ᴰ}{{\ucc{${\scriptstyle {}^{D}}$}}}{1} +{ᴱ}{{\ucc{${\scriptstyle {}^{E}}$}}}{1} {ᴳ}{{\ucc{${\scriptstyle {}^{G}}$}}}{1} +{ᴴ}{{\ucc{${\scriptstyle {}^{H}}$}}}{1} {ᴵ}{{\ucc{${\scriptstyle {}^{I}}$}}}{1} +{ᴶ}{{\ucc{${\scriptstyle {}^{J}}$}}}{1} {ᴷ}{{\ucc{${\scriptstyle {}^{K}}$}}}{1} +{ᴸ}{{\ucc{${\scriptstyle {}^{L}}$}}}{1} {ᴹ}{{\ucc{${\scriptstyle {}^{M}}$}}}{1} +{ᴺ}{{\ucc{${\scriptstyle {}^{N}}$}}}{1} {ᴼ}{{\ucc{${\scriptstyle {}^{O}}$}}}{1} +{ᴾ}{{\ucc{${\scriptstyle {}^{P}}$}}}{1} {ᴿ}{{\ucc{${\scriptstyle {}^{R}}$}}}{1} +{ᵀ}{{\ucc{${\scriptstyle {}^{T}}$}}}{1} {ᵁ}{{\ucc{${\scriptstyle {}^{U}}$}}}{1} +{ⱽ}{{\ucc{${\scriptstyle {}^{V}}$}}}{1} {ᵂ}{{\ucc{${\scriptstyle {}^{W}}$}}}{1} +{ᵃ}{{\ucc{${\scriptstyle {}^{a}}$}}}{1} {ᵇ}{{\ucc{${\scriptstyle {}^{b}}$}}}{1} +{ᶜ}{{\ucc{${\scriptstyle {}^{c}}$}}}{1} {ᵈ}{{\ucc{${\scriptstyle {}^{d}}$}}}{1} +{ᵉ}{{\ucc{${\scriptstyle {}^{e}}$}}}{1} {ᶠ}{{\ucc{${\scriptstyle {}^{f}}$}}}{1} +{ᵍ}{{\ucc{${\scriptstyle {}^{g}}$}}}{1} {ʰ}{{\ucc{${\scriptstyle {}^{h}}$}}}{1} +{ⁱ}{{\ucc{${\scriptstyle {}^{i}}$}}}{1} {ʲ}{{\ucc{${\scriptstyle {}^{j}}$}}}{1} +{ᵏ}{{\ucc{${\scriptstyle {}^{k}}$}}}{1} {ˡ}{{\ucc{${\scriptstyle {}^{l}}$}}}{1} +{ᵐ}{{\ucc{${\scriptstyle {}^{m}}$}}}{1} {ⁿ}{{\ucc{${\scriptstyle {}^{n}}$}}}{1} +{ᵒ}{{\ucc{${\scriptstyle {}^{o}}$}}}{1} {ᵖ}{{\ucc{${\scriptstyle {}^{p}}$}}}{1} +{ʳ}{{\ucc{${\scriptstyle {}^{r}}$}}}{1} {ˢ}{{\ucc{${\scriptstyle {}^{s}}$}}}{1} +{ᵗ}{{\ucc{${\scriptstyle {}^{t}}$}}}{1} {ᵘ}{{\ucc{${\scriptstyle {}^{u}}$}}}{1} +{ᵛ}{{\ucc{${\scriptstyle {}^{v}}$}}}{1} {ʷ}{{\ucc{${\scriptstyle {}^{w}}$}}}{1} +{ˣ}{{\ucc{${\scriptstyle {}^{x}}$}}}{1} {ʸ}{{\ucc{${\scriptstyle {}^{y}}$}}}{1} +{ᶻ}{{\ucc{${\scriptstyle {}^{z}}$}}}{1} +{ᵅ}{{\ucc{${\scriptstyle {}^{\alpha}}$}}}{1} +{ᵝ}{{\ucc{${\scriptstyle {}^{\beta}}$}}}{1} +{ᵞ}{{\ucc{${\scriptstyle {}^{\gamma}}$}}}{1} +{ᵟ}{{\ucc{${\scriptstyle {}^{\delta}}$}}}{1} +{ᵋ}{{\ucc{${\scriptstyle {}^{\varepsilon}}$}}}{1} +{ᶿ}{{\ucc{${\scriptstyle {}^{\theta}}$}}}{1} +{ᶥ}{{\ucc{${\scriptstyle {}^{\iota}}$}}}{1} +{ᶲ}{{\ucc{${\scriptstyle {}^{\phi}}$}}}{1} +{ᵡ}{{\ucc{${\scriptstyle {}^{\chi}}$}}}{1} +{ᵠ}{{\ucc{${\scriptstyle {}^{\psi}}$}}}{1} +% +% subscripts +% +{₍}{{\ucc{${\scriptstyle {}_{(}}$}}}{1} {₎}{{\ucc{${\scriptstyle {}_{)}}$}}}{1} +{₊}{{\ucc{${\scriptstyle {}_{+}}$}}}{1} {₋}{{\ucc{${\scriptstyle {}_{-}}$}}}{1} +{₀}{{\ucc{${\scriptstyle {}_{0}}$}}}{1} {₁}{{\ucc{${\scriptstyle {}_{1}}$}}}{1} +{₂}{{\ucc{${\scriptstyle {}_{2}}$}}}{1} {₃}{{\ucc{${\scriptstyle {}_{3}}$}}}{1} +{₄}{{\ucc{${\scriptstyle {}_{4}}$}}}{1} {₅}{{\ucc{${\scriptstyle {}_{5}}$}}}{1} +{₆}{{\ucc{${\scriptstyle {}_{6}}$}}}{1} {₇}{{\ucc{${\scriptstyle {}_{7}}$}}}{1} +{₈}{{\ucc{${\scriptstyle {}_{8}}$}}}{1} {₉}{{\ucc{${\scriptstyle {}_{9}}$}}}{1} +{₌}{{\ucc{${\scriptstyle {}_{=}}$}}}{1} {ₐ}{{\ucc{${\scriptstyle {}_{a}}$}}}{1} +{ₑ}{{\ucc{${\scriptstyle {}_{e}}$}}}{1} {ₕ}{{\ucc{${\scriptstyle {}_{h}}$}}}{1} +{ᵢ}{{\ucc{${\scriptstyle {}_{i}}$}}}{1} {ⱼ}{{\ucc{${\scriptstyle {}_{j}}$}}}{1} +{ₖ}{{\ucc{${\scriptstyle {}_{k}}$}}}{1} {ₗ}{{\ucc{${\scriptstyle {}_{l}}$}}}{1} +{ₘ}{{\ucc{${\scriptstyle {}_{m}}$}}}{1} {ₙ}{{\ucc{${\scriptstyle {}_{n}}$}}}{1} +{ₒ}{{\ucc{${\scriptstyle {}_{o}}$}}}{1} {ₚ}{{\ucc{${\scriptstyle {}_{p}}$}}}{1} +{ᵣ}{{\ucc{${\scriptstyle {}_{r}}$}}}{1} {ₛ}{{\ucc{${\scriptstyle {}_{s}}$}}}{1} +{ₜ}{{\ucc{${\scriptstyle {}_{t}}$}}}{1} {ᵤ}{{\ucc{${\scriptstyle {}_{u}}$}}}{1} +{ᵥ}{{\ucc{${\scriptstyle {}_{v}}$}}}{1} {ₓ}{{\ucc{${\scriptstyle {}_{x}}$}}}{1} +{ᵦ}{{\ucc{${\scriptstyle {}_{\beta}}$}}}{1} +{ᵧ}{{\ucc{${\scriptstyle {}_{\gamma}}$}}}{1} +{ᵨ}{{\ucc{${\scriptstyle {}_{\rho}}$}}}{1} +{ᵪ}{{\ucc{${\scriptstyle {}_{\chi}}$}}}{1} +{ᵩ}{{\ucc{${\scriptstyle {}_{\psi}}$}}}{1} +% +} + + + + + +% basic font +\makeatletter +\def\lstbasicfont{% + \color{jlstring}% + \ttfamily% + \lst@ifdisplaystyle\scriptsize\fi% +} +\makeatother + +% general style of the code block +\lstset{basicstyle={\lstbasicfont}} +\lstset{showstringspaces=false} +\lstset{upquote=true} +\lstset{tabsize=4} +\lstset{aboveskip={1.5\baselineskip},belowskip={1.5\baselineskip}} + +% creating the code box +\lstset{backgroundcolor=\color{jlbackground}, rulecolor=\color{jlrule}} +\lstset{frame=single, frameround=tttt} +\lstset{columns=fixed} +\newlength{\bfem} +\settowidth{\bfem}{\lstbasicfont{m}} +\newlength{\xmrgn} +\setlength{\xmrgn}{(\textwidth - 80\bfem)*\real{0.5}} +\lstset{basewidth=\bfem} + +% activating the julia style +\lstset{language=julia} diff --git a/paper/journal_dat.tex b/paper/journal_dat.tex new file mode 100644 index 0000000..a925030 --- /dev/null +++ b/paper/journal_dat.tex @@ -0,0 +1,6 @@ +% **************GENERATED FILE, DO NOT EDIT************** + +\def\@journalName{Proceedings of JuliaCon} +\def\@volume{1} +\def\@issue{1} +\def\@year{2021} diff --git a/paper/juliacon.bst b/paper/juliacon.bst new file mode 100644 index 0000000..aaf1930 --- /dev/null +++ b/paper/juliacon.bst @@ -0,0 +1,1189 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + eprint + eprinttype + eprintclass + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + doi + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "" write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprinttype empty$ + { eprintclass empty$ + { eprint } + { eprint " [" * eprintclass * "]" * } + if$ + } + { eprinttype "arxiv" = + { eprintclass empty$ + { eprinttype ":" * "\href{http://arxiv.org/abs/" * eprint * "}{" * eprint * "}" * } + { eprinttype ":" * "\href{http://arxiv.org/abs/" * eprint * "}{" * eprint * " [" * eprintclass * "]" * "}" * } + if$ + } + { eprintclass empty$ + { eprinttype ":" * eprint * } + { eprinttype ":" * eprint * " [" * eprintclass * "]" *} + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% based on +% https://tex.stackexchange.com/a/127819/245 +FUNCTION {output.doi} +{ + doi empty$ + { skip$ } + { "\href{http://dx.doi.org/" doi * "}{doi:" * doi * "}" * output } + if$ +} + + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + output.doi + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + output.doi + new.block + format.eprint output + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/paper/juliacon.cls b/paper/juliacon.cls new file mode 100644 index 0000000..e2c156f --- /dev/null +++ b/paper/juliacon.cls @@ -0,0 +1,944 @@ +%% juliacon.cls - version 1.0 + +%% Inspired by the template from the International Journal of Computer Applications (IJCA) + +\usepackage[scaled=0.92]{helvet} +\def\fileversion{v1.0} +\def\filedate{2019 04 07} +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{juliacon} +\RequirePackage{latexsym} +\RequirePackage{url} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} + +\newif\ifmanuscript +\@twosidetrue\@mparswitchtrue +% +\newdimen\trimheight +\newdimen\trimwidth +\newdimen\typeheight +\newdimen\typewidth +\newdimen\normaltextheight +\newdimen\blindfoliodrop +\newbox\tempbox +%% + +\input{journal_dat} + +% +\frenchspacing % oh lala bravo quelle belle idée +\DeclareOption{manuscript}{\manuscripttrue} +\DeclareOption{letterpaper} + {\setlength\paperheight {11.69in}% + \setlength\paperwidth {8.27in}% + \def\special@paper{8.5in,11in} + \special{papersize=8.5in,11in}} + +\DeclareOption{openbib}{% + \AtEndOfPackage{% + \renewcommand\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand\newblock{\par}}% +} +% +\ExecuteOptions{letterpaper} +\ProcessOptions +% +\newcommand\refname{References} +\newcommand{\ignoretwo}[2]{} +\newcommand{\yearTwoDigits}{\expandafter\ignoretwo\the\year} +\def\@setref#1#2#3{% + \ifx#1\relax + \number 0\relax + \protect\G@refundefinedtrue + \nfss@text{\reset@font\bfseries ??}% + \@latex@warning{Reference `#3' on page \thepage \space undefined}% + \else + \expandafter#2#1\null + \fi} +% +% +\lineskip 1pt \normallineskip 1pt +\ifmanuscript +\def\baselinestretch{2} +\else +\def\baselinestretch{1} +\fi +\def\@ixpt{9} +\renewcommand\normalsize{% + \@setfontsize\normalsize\@ixpt{10pt} + \abovedisplayskip 6pt plus2pt minus1pt\belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 6pt plus0pt minus 3pt + \belowdisplayshortskip 6pt plus0pt minus3pt\let\@listi\@listI} + +\newcommand\small{% + \@setfontsize\small\@ixpt{11pt}% + \abovedisplayskip 5pt plus 2pt minus 1pt\belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 5pt plus0pt minus2pt\belowdisplayshortskip 5pt plus0pt + minus 2pt + \def\@listi{\leftmargin\leftmargini \topsep 5pt plus 2pt minus 1pt\parsep 0pt + plus .7pt + \itemsep 1.6pt plus .8pt}} +\newcommand\footnotesize{% +% \@setfontsize\footnotesize\@viiipt{10pt} + \@setsize\footnotesize{10pt}\viiipt\@viiipt + \abovedisplayskip 4pt plus 1pt minus 0pt\belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 4pt plus 0pt minus 1pt\belowdisplayshortskip 4pt plus + 0pt minus 1pt + \def\@listi{\leftmargin\leftmargini \topsep 4pt plus 1pt minus + 0pt\parsep 0pt plus .5pt + \itemsep 1pt plus .7pt}} + +\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt} +\newcommand\large{\@setfontsize\large\@xiipt{14}} +\newcommand\Large{\@setfontsize\Large\@xivpt{18}} +\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20}} +\newcommand\huge{\@setfontsize\huge\@xxpt{25}} +\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}} +% +\normalsize +% +\newdimen\tempdimen +% +\setlength\trimheight{11in} +\setlength\trimwidth{8.5in} +% +\typeheight52.5pc +\typewidth42pc +\textheight52.5pc +\textwidth42pc +\advance\textheight-3pt +\newdimen\normaltextheight +\setlength\normaltextheight{\textheight} +\oddsidemargin4.5pc +\evensidemargin4.5pc +\topmargin20pt %.25in +\headheight 6pt% +\headsep 29.2pt% +\topskip6pt% +\footskip 100pt +% +\marginparwidth 0.5in +\marginparsep .125in +\columnsep24pt +\columnseprule 0pt +% +\def\titlefont{\huge\selectfont\centering\mathversion{bold}} +\def\authorfont{\fontfamily{phv}\fontsize{10}{12}\selectfont\rightskip0pt plus1fill} %\mathversion{sfnormal} +\def\rhfont{\fontfamily{phv}\fontsize{9}{10}\selectfont\mathversion{sfnormal}} + +\def\sectionfont{\fontfamily{ptm}\fontsize{9}{12}\capsshape\selectfont\raggedright} %\mathversion{rmnormal} +\def\subsectionfont{\fontfamily{ptm}\fontsize{9}{12}\selectfont} %\mathversion{rmnormal} +\def\figcaptionfont{\fontsize{8}{10}\selectfont\mathversion{normal}}% +\def\subcaptionfont{\fontsize{8}{10}\selectfont\mathversion{normal}}% +\def\subcaption#1{{\centering\subcaptionfont#1\par}} +% +\def\tablefont{\fontsize{8}{10}\selectfont}% +\def\tablecaptionfont{\fontsize{9}{11}\selectfont\centering}% +\def\tablenumfont{\fontsize{9}{11}\selectfont}% +\def\tabnotefont{\fontsize{7}{9}\selectfont} +% +\def\encodingdefault{OT1}% +\fontencoding{OT1}% +% +\DeclareFontShape{OMS}{cmsy}{m}{n}{<-> cmsy10 }{} +\DeclareFontShape{OMS}{cmsy}{b}{n}{<-> cmbsy10 }{} +\def\cal{\mathcal} +% +\def\boldmath{\mathversion{bold}} +\def\bm#1{\mathchoice + {\mbox{\boldmath$\displaystyle#1$}}% + {\mbox{\boldmath$#1$}}% + {\mbox{\boldmath$\scriptstyle#1$}}% + {\mbox{\boldmath$\scriptscriptstyle#1$}}} +% +\footnotesep 7pt +\skip\footins 15pt plus 4pt minus 3pt +\floatsep 12pt plus 2pt minus 2pt +\textfloatsep \floatsep +\intextsep 1pc plus 1pc +\dblfloatsep 12pt plus 2pt minus 2pt +\dbltextfloatsep 20pt plus 2pt minus 4pt +\@fptop 0pt plus 1fil \@fpsep 1pc plus 2fil \@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil +\marginparpush 6pt +\parskip 0pt \parindent 0pt \partopsep 0pt % plus .1pt FBU +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty +-\@lowpenalty +% +\def\part{\@ucheadtrue + \@startsection{part}{9}{\z@}{-10pt plus -4pt minus + -2pt}{4pt}{\reset@font\normalsize\rmfamily}} +\def\section{\@ucheadtrue + \@startsection{section}{1}{\z@}{-10pt plus -4pt minus + -2pt}{6pt}{\reset@font\fontsize{10}{12}\raggedright\rmfamily\bfseries}} +\def\subsection{\@ucheadfalse + \@startsection{subsection}{2}{\z@}{-8pt plus -2pt minus + -1pt}{6pt}{\reset@font\fontsize{10}{12}\raggedright\rmfamily\bfseries}} +\def\subsubsection{\@ucheadfalse + \@startsection{subsubsection}{3}{\parindent}{6pt plus +1pt}{-5pt}{\reset@font\fontsize{9}{10}\itshape}} +\def\paragraph{\@ucheadfalse + \@startsection{paragraph}{3}{\parindent}{6pt plus +1pt}{-5pt}{\reset@font\fontsize{10}{12}\itshape}} +%% +\renewcommand{\@seccntformat}[1]{\textup{\csname the#1\endcsname}} +\gdef\@period{.} +\def\@trivlist{\@topsepadd\topsep +\if@noskipsec \gdef\@period{}\leavevmode\gdef\@period{.}\fi + \ifvmode \advance\@topsepadd\partopsep \else \unskip\par\fi + \if@inlabel \@noparitemtrue \@noparlisttrue + \else \@noparlistfalse \@topsep\@topsepadd \fi + \advance\@topsep \parskip + \leftskip\z@\rightskip\@rightskip \parfillskip\@flushglue + \@setpar{\if@newlist\else{\@@par}\fi} \global\@newlisttrue +\@outerparskip\parskip} +% +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \ifnum#2=2 + \vskip-2pt + \fi + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +% +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \if@uchead% + \protected@edef\@svsec{\@seccntformat{#1}.\quad\relax}% + \else% + \protected@edef\@svsec{\@seccntformat{#1}\quad\relax}% + \fi% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8 \@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec \if@uchead\Makeuppercase{#8}\else#8\fi}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} + +\def\@xsect#1{\@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else \global\@nobreakfalse \global\@noskipsectrue + \everypar{\if@noskipsec \global\@noskipsecfalse + \clubpenalty\@M \hskip -\parindent + \begingroup \@svsechd\@period \endgroup \unskip + \hskip -#1 + \else \clubpenalty \@clubpenalty + \everypar{}\fi}\fi\ignorespaces} +\newif\if@uchead\@ucheadfalse +% +\setcounter{secnumdepth}{3} +\newcounter{secnumbookdepth} +\setcounter{secnumbookdepth}{3} +\newfont{\apbf}{cmbx9} +\def\appendix{\par + \setcounter{section}{0} + \setcounter{subsection}{0} + \section*{APPENDIX}\vskip10pt + \def\thesection{\Alph{section}} + \def\theHsection{\Alph{section}}} +% +\labelsep 4pt +\settowidth{\leftmargini}{(9)} \addtolength\leftmargini\labelsep +\settowidth{\leftmarginii}{(b)} \addtolength\leftmarginii\labelsep +\leftmarginiii \leftmarginii +\leftmarginiv \leftmarginii +\leftmarginv \leftmarginii +\leftmarginvi \leftmarginii +\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\def\@listI{\leftmargin\leftmargini \parsep 0pt plus 1pt\topsep 6pt plus 2pt +minus 2pt\itemsep 2pt plus 1pt minus .5pt} +\let\@listi\@listI +\@listi +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep 0pt plus 1pt + \parsep 0pt plus .5pt + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep 0pt plus 1pt + \parsep 0pt plus .5pt + \itemsep \parsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv\advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} +% +\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\def\makelabel##1{##1\hss}}\fi} +\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\labelwidth\z@}\fi} +\let\endlongenum\endlist +\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{{\rm (}\alph{enumii}\rm{)}} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}} +\def\labelenumiv{\Alph{enumiv}.} +\def\theenumiv{\Alph{enumiv}} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\def\p@enumiv{\p@enumiii\theenumiii} + +\def\p@enumiv{\p@enumiii\theenumiii} + +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} + +\def\itemize{\list{---\hskip -\labelsep}{\settowidth + {\leftmargin}{---}\labelwidth\leftmargin + \addtolength{\labelwidth}{-\labelsep}}} +\let\enditemize\endlist +\def\longitem{\list{---}{\labelwidth\z@ + \leftmargin\z@ \itemindent\parindent \advance\itemindent\labelsep}} +\let\endlongitem\endlist +\def\verse{\let\\=\@centercr + \list{}{\leftmargin 2pc + \itemindent -1.5em\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} +\let\endverse\endlist +\def\quotation{\list{}{\leftmargin 2pc \listparindent .5em + \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} +\let\endquotation=\endlist +\def\quote{\list{}{\leftmargin 2pc \rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +% +\newenvironment{unnumlist}{% + \list{}{% + \listparindent\parindent + \itemindent-1em + \leftmargin1em + \parsep0pt + \itemsep2pt + \partopsep0pt} + \def\makelable##1{##1}% +}{\endlist}% +% +\def\description{\list{}{\listparindent\parindent\labelwidth\z@ + \leftmargin\z@ \itemindent\parindent\advance\itemindent\labelsep + \def\makelabel##1{\it ##1}}} +\let\enddescription\endlist +% +\def\describe#1{\list{}{\listparindent\parindent\settowidth{\labelwidth}{#1}\leftmargin + \labelwidth\addtolength\leftmargin\labelsep\def\makelabel##1{##1\hfil}}} +\let\enddescribe\endlist +% +\def\program{\ifx\@currsize\normalsize\small \else \rm \fi\tabbing} +\let\endprogram\endtabbing +% +\newtheorem{theorem}{Theorem} +\newtheorem{strategy}{Strategy} +\newtheorem{property}{Property} +\newtheorem{proposition}{Proposition} +\newtheorem{lemma}[theorem]{Lemma} +\newtheorem{exam}{Example} +\newenvironment{example}{% +\italicenvfalse +\begin{exam}}{\end{exam}\italicenvtrue} +% +\newtheorem{defi}[theorem]{Definition} +\newenvironment{definition}{% +\italicenvfalse +\begin{defi}}{\end{defi}\italicenvtrue} +% +\def\@begintheorem#1#2{\trivlist \item[\hskip 10pt\hskip + \labelsep{\sc{#1}\hskip 5pt\relax #2.}] \itshape} +% +\def\@opargbegintheorem#1#2#3{\trivlist + \item[\hskip 10pt \hskip +\labelsep{\sc{#1}\savebox\@tempboxa{\sc{#3}}\ifdim + \wd\@tempboxa>\z@ \hskip 5pt\relax \sc{#2} \box\@tempboxa\fi.}] +\itshape} +% +\newif\if@qeded\global\@qededfalse +\def\proof{\global\@qededfalse\@ifnextchar[{\@xproof}{\@proof}} +\def\endproof{\if@qeded\else\qed\fi\endtrivlist} +\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(5,5){}} +\global\@qededtrue} +\def\@proof{\trivlist \item[\hskip 10pt\hskip + \labelsep{\sc Proof.}]\ignorespaces} +\def\@xproof[#1]{\trivlist \item[\hskip 10pt\hskip + \labelsep{\sc Proof #1.}]\ignorespaces} +% +\def\newdef#1#2{\expandafter\@ifdefinable\csname #1\endcsname +{\@definecounter{#1}\expandafter\xdef\csname +the#1\endcsname{\@thmcounter{#1}}\global + \@namedef{#1}{\@defthm{#1}{#2}}\global + \@namedef{end#1}{\@endtheorem}}} +\def\@defthm#1#2{\refstepcounter + {#1}\@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}} +\def\@xdefthm#1#2{\@begindef{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@ydefthm#1#2[#3]{\trivlist \item[\hskip 10pt\hskip + \labelsep{\it #2\savebox\@tempboxa{#3}\ifdim + \wd\@tempboxa>\z@ \ \box\@tempboxa\fi.}]\ignorespaces} +\def\@begindef#1#2{\trivlist \item[\hskip 10pt\hskip + \labelsep{\it #1\ \rm #2.}]} +% +\def\theequation{\arabic{equation}} +% +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} +% +\arraycolsep 2.5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt +\tabbingsep \labelsep +% +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt \fboxrule = .4pt +% +\newcounter{part} +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] +% +\def\thepart{\Roman{part}} +\def\thesection {\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +\def\thesubsubsection {\itshape\thesubsection.\arabic{subsubsection}} +\def\theparagraph {\thesubsubsection.\arabic{paragraph}} + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +\def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}} + \@starttoc{toc}} +\def\l@part#1#2{\addpenalty{\@secpenalty} + \addvspace{2.25em plus 1pt} \begingroup + \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip +-\@pnumwidth + {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par + \nobreak \endgroup} +\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt} +\@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par + \endgroup} +\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\def\listoffigures{\section*{List of Figures\@mkboth + {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\section*{List of Tables\@mkboth + {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}} +\let\l@table\l@figure +% +\newif\if@restonecol +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Index}] + \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ + \parskip\z@ plus .3pt\relax\let\item\@idxitem} +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hspace*{20pt}} +\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}} +\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} +% +\def\footnoterule{\kern-3\p@ + \hrule \@height 0.2\p@ \@width 47\p@ + \kern 2.6\p@ +} + +\long\def\@makefntext#1{\parindent 1em\noindent + $^{\@thefnmark}$#1} +% +\setcounter{topnumber}{3} +\def\topfraction{.99} +\setcounter{bottomnumber}{1} +\def\bottomfraction{.5} +\setcounter{totalnumber}{3} +\def\textfraction{.01} +\def\floatpagefraction{.85} +\setcounter{dbltopnumber}{2} +\def\dbltopfraction{.95} +\def\dblfloatpagefraction{.96} +% +\long\def\@makecaption#1#2{\vskip 1pc \setbox\@tempboxa\hbox{#1.\hskip +1em\relax #2} + \ifdim \wd\@tempboxa >\hsize #1. #2\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} + +\def\nocaption{\refstepcounter\@captype \par + \vskip 1pc \hbox to\hsize{\hfil \footnotesize Figure \thefigure + \hfil}} +% +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{Fig.\ \thefigure}% +\def\figure{\let\normalsize\footnotesize\normalsize\@float{figure}} +\let\endfigure\end@float +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} +% +\newcounter{table} +\def\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\newlength\belowcaptionskip +\setlength\belowcaptionskip{1\p@} +% +\def\FigName{figure}% +\long\def\@caption#1[#2]#3{\par\begingroup + \@parboxrestore + \normalsize \bf \centering + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} +% +% +\newbox\tbbox +\long\def\@makecaption#1#2{% + \ifx\FigName\@captype + \vskip 7.3pt + \setbox\@tempboxa\hbox{\figcaptionfont{#1}.\hskip7.3pt\relax #2\par}% + \ifdim \wd\@tempboxa >\hsize + \figcaptionfont{#1}.\hskip7.3pt\relax #2\par + \else + \centerline{\box\@tempboxa}% + \fi + \else% + \setbox\tbbox=\vbox{\hsize\tempdimen{\tablenumfont #1}\ {\tablecaptionfont #2\par}}% + \setbox\@tempboxa\hbox{\hsize\tempdimen{\tablenumfont #1}\ {\tablecaptionfont #2\par}\vphantom{jgq}}% + \ifdim \wd\@tempboxa >\tempdimen + \centerline{\box\tbbox}% + \else + \centerline{\box\@tempboxa}% + \fi + \vskip\belowcaptionskip + \fi} +% +\def\fnum@table{Table~\thetable.\ } +\def\table{\let\normalsize\footnotesize \normalsize\@float{table}} +\let\endtable\end@float +\@namedef{table*}{\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} +\def\ijcatable#1{\@narrowfig #1\relax + \let\caption\@atcap \let\nocaption\@atnocap + \def\@tmpnf{}\@ifnextchar[{\@xntab}{\@ntab}} +\def\endijcatable{\hbox to \textwidth{\hfil +\vbox{\hsize \@narrowfig +\box\@nfcapbox +{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}} +\vskip -1pt +\box\@nfigbox\vskip -1pt +{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}}\hfil} +\end@float} +\def\@xntab[#1]{\def\@tmpnf{[#1]}\@ntab} +\def\@ntab{\expandafter\table\@tmpnf + \setbox\@nfigbox\vbox\bgroup + \hsize \@narrowfig \@parboxrestore} +\def\@atmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2} + \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} +\def\@atcap{\par\egroup\refstepcounter\@captype + \@dblarg{\@atcapx\@captype}} +\long\def\@atcapx#1[#2]#3{\setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox + \@parboxrestore + \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par}} +\def\@atnocap{\egroup \refstepcounter\@captype + \setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox + \hbox to\hsize{\hfil \footnotesize Table \thetable\hfil}}} +% +\newdimen\tabledim +% +\long\def\tbl#1#2{% + \setbox\tempbox\hbox{\tablefont #2}% + \tabledim\hsize\advance\tabledim by -\wd\tempbox + \tempdimen\wd\tempbox + \global\divide\tabledim\tw@ + \caption{#1} + \centerline{\box\tempbox} + }% +% +\newenvironment{tabnote}{% +\par%\addvspace{-1pt} +\tabnotefont +\@ifnextchar[{\@tabnote}{\@tabnote[]}}{% +\par} +\def\@tabnote[#1]{\def\@Tempa{#1}\leftskip\tabledim\rightskip\leftskip\ifx\@Tempa\@empty\else{\it #1:}\ \fi\ignorespaces} +% +\def\tabnoteentry#1#2{\parindent0pt\par\@hangfrom{#1}{#2}} +\def\Note#1#2{\parindent0pt\par\hangindent3.7pt{\it #1}\ #2} +% + +\def\Hline{% + \noalign{\ifnum0=`}\fi\hrule \@height .5pt \futurelet + \@tempa\@xhline} +% +\def\narrowfig#1{\@narrowfig #1\relax + \let\caption\@nfcap \let\nocaption\@nfnocap + \def\@tmpnf{}\@ifnextchar[{\@xnfig}{\@nfig}} +\def\endnarrowfig{\hbox to \textwidth{\if@nfeven + \box\@nfcapbox\hfil\box\@nfigbox + \else \box\@nfigbox\hfil\box\@nfcapbox\fi}\end@float} +\def\@xnfig[#1]{\def\@tmpnf{[#1]}\@nfig} +\def\@nfig{\expandafter\figure\@tmpnf + \setbox\@nfigbox\vbox\bgroup + \hsize \@narrowfig \@parboxrestore} +\def\@nfmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2} + \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox +to\hsize{\if@nfeven\else\hfil\fi\box\@tempboxa\if@nfeven\hfil\fi} + \fi} +\def\@nfcap{\par\egroup\refstepcounter\@captype + \@dblarg{\@nfcapx\@captype}} +\long\def\@nfcapx#1[#2]#3{\@seteven + \setbox\@nfcapbox\vbox to \ht\@nfigbox + {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox + \@parboxrestore + \vfil + \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \vfil}} +\def\@nfnocap{\egroup \refstepcounter\@captype \@seteven + \setbox\@nfcapbox\vbox to \ht\@nfigbox + {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox + \@parboxrestore + \vfil + \hbox to\hsize{\if@nfeven\else\hfil\fi + \footnotesize Figure \thefigure + \if@nfeven\hfil\fi} + \vfil}} +\def\@seteven{\@nfeventrue + \@ifundefined{r@@nf\thefigure}{}{% + \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}% + \edef\@tmpnf{\expandafter\@getpagenum\@tmpnf}% + \ifodd\@tmpnf\relax\@nfevenfalse\fi}% +\label{@nf\thefigure}\edef\@tmpnfx{\if@nfeven e\else o\fi} +\edef\@tmpnf{\write\@unused {\noexpand\ifodd \noexpand\c@page + \noexpand\if \@tmpnfx e\noexpand\@nfmsg{\thefigure} \noexpand\fi + \noexpand\else + \noexpand\if \@tmpnfx o\noexpand\@nfmsg{\thefigure}\noexpand\fi + \noexpand\fi }}\@tmpnf} +\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage} + +\newdimen\@narrowfig +\newbox\@nfigbox +\newbox\@nfcapbox +\newif\if@nfeven + + +\def\maketitle{% + \thispagestyle{titlepage}% + \newpage + \global\@topnum\z@ + \twocolumn[\@maketitle]% + \let\maketitle\relax + \global\let\@sponsors\@empty +} +% +\def\@maketitle{\newpage \thispagestyle{titlepage}\par + \begingroup \lineskip = \z@\null + \vspace{-1.75em} + \begin{picture}(5,5) + \includegraphics[width=1in]{logojuliacon.pdf} + \end{picture} + \vspace{1.75em} + \vskip -7pt\relax %-18.5pt + \parindent\z@ \LARGE {\centering \hyphenpenalty\@M + {\titlefont \@title} \par + \global\firstfoot %aiellom + \global\runningfoot %aiellom +} +\label{@firstpg} +{ +\begin{center}% + \vskip 0.1em% + {\large + \lineskip .75em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1.5em% + \end{center}\par + \@thanks +} + \vskip 23pt\relax + \endgroup + } +\newbox\@abstract +\newbox\@terms +\newbox\@keywords + + +% +\newenvironment{abstract} +{\section*{ABSTRACT}\par\fontsize{10}{12}\indent\ignorespaces} +{ + { \ifvoid\@terms\else\box\@terms\fi + \@keywords \@juliaconformat\empty}\vskip6pt} +% +\def\terms#1{\setbox\@terms=\vbox{\hsize20pc% + \footnotesize% + \parindent 0pt \noindent + { \section*{General Terms}} \ignorespaces #1{\vspace{-0.75em}}}} +\def\keywords#1{\gdef\@keywords{\hsize20pc% + \parindent 0pt\noindent\ignorespaces% + {{\vspace{-0.75em}} \section*{Keywords}} \ignorespaces #1{\vspace{1em}}}} +%} + +\def\category#1#2#3{\@ifnextchar + [{\@category{#1}{#2}{#3}}{\@xcategory{#1}{#2}{#3}}} +\def\@category#1#2#3[#4]{\edef\@tempa{\ifx \@categories\@empty + \else ; \fi}{\def\protect{\noexpand\protect + \noexpand}\def\and{\noexpand\and}\xdef\@categories{\@categories\@tempa #1 +[{\bf #2}]: + #3\kern\z@---\hskip\z@{\it #4}}}} +\def\@xcategory#1#2#3{\edef\@tempa{\ifx \@categories\@empty \else ; +\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand + \and}\xdef\@categories{\@categories\@tempa #1 [{\bf #2}]: #3}}} +\def\@categories{} + +\newenvironment{ackslike}[1] + {\par \footnotesize + \@ucheadfalse + \@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus -1pt}{2pt}{\sf}* + {\uppercase{#1}}\par\normalsize + } + {\par} +\newenvironment{acks}{\begin{ackslike}{ \normalsize\rm\bf Acknowledgments}}{\end{ackslike}} +% + +\newcommand\headingtable{% + \begin{tabular}[b]{l} {\@journalName}\end{tabular}} +\markright{\protect\headingtable} +\mark{{}{}} +\def\bull{{\fontsize{7}{7}\selectfont\raise1.6pt\hbox{$\bullet$}}} +\def\ps@myheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{ \fontsize{9}{12} \rm {{\itshape\headingtable}\hfill \@volume(\@issue), \@year}} +\def\@oddfoot{\fontsize{9}{12}\@runningfoot} +\def\@evenhead{ \fontsize{9}{12} \rm {\itshape\headingtable}\hfill \@volume(\@issue), \@year} +\def\@evenfoot{\fontsize{9}{12}\@runningfoot} +\def\sectionmark##1{}\def\subsectionmark##1{}} +% +\def\@runningfoot{} +\def\runningfoot{\def\@runningfoot{ \fontsize{9}{12} \thepage}} +\def\@firstfoot{} +\def\firstfoot{\def\@firstfoot{\fontsize{9}{12} \thepage}} +\def\ps@titlepage{\let\@mkboth\@gobbletwo +\def\@oddhead{}\def\@oddfoot{\fontsize{9}{12}\@firstfoot}\def\@evenhead{}\def\@evenfoot{\fontsize{9}{12}\@firstfoot}} +% +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}} +\def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \fi +\edef\@preamble{\@preamble + \ifcase \@chnum + \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil + \or \hfil$\relax\displaystyle\@sharp$\fi}} +\def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz + \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray} +\def\endmarray{\crcr\egroup\egroup} +% +\ps@myheadings \pagenumbering{arabic} \onecolumn +% +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +% +\def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}} +\def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}} +\def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}} +\def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}} +\def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}} +\def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}} +\def\@xstartdef#1[#2]{\begin{italic@#1}[{\em #2}]\rm} +\def\@ystartdef#1{\begin{italic@#1}\rm} +% +%\def\@oddfoot{\hbox{}\hfill\@runningfoot \thepage} +%\def\@evenfoot{\@runningfoot\hfill\hbox{} \thepage } +%\def\firstfootsize{\@setsize\firstfootsize{9pt}\vipt\@vipt} +\def\ps@titlepage{\let\@mkboth\@gobbletwo +\def\@oddhead{\fontsize{9}{12} \rm {\hskip 19pt\itshape}}\def\@oddfoot{\hbox{}\hfill\fontsize{9}{12}\@firstfoot}% +\def\@evenhead{}\def\@evenfoot{\firstfootsize\@firstfoot\hfill\hbox{}}} +% +\def\@listI{\leftmargin\leftmargini + \labelwidth\leftmargini\advance\labelwidth-\labelsep + \parsep 0pt plus 1pt + \topsep 6pt plus 2pt minus 2pt + \itemsep 2pt plus 1pt minus .5pt} +\let\@listi\@listI +\@listi +% +\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\labelwidth\z@\leftmargin\z@ + \itemindent\parindent \advance\itemindent\labelsep}\fi} +% +\def\ack{ \par \footnotesize +\@ucheadfalse +\@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus + -1pt}{2pt}{\sf}*{ACKNOWLEDGMENT}\par\normalsize +} +\def\endack{\par} + +% provide both spellings of Acknowledgment(s) +\let\acknowledgments\acks +\let\endacknowledgments\endacks +\let\acknowledgment\ack +\let\endacknowledgment\endack +% +\newcommand{\bibemph}[1]{{\em#1}} +\newcommand{\bibemphic}[1]{{\em#1\/}} +\newcommand{\bibsc}[1]{{\sc#1}} + +\newcommand\bibyear[2]{% + \unskip{\hskip8pt}\ignorespaces#1\unskip + \if..#2{\hskip6pt}\else {\hskip8pt}#2 \fi +} +% +\let\l@table\l@figure +\newdimen\bibindent +\setlength\bibindent{1.5em} +\newenvironment{thebibliography}[1] + {\section{\refname}%% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty + +% +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +% +\def\@juliaconformat{} +\def\juliaconformat#1{\gdef\@juliaconformat{\noindent{\bf JuliaCon Reference Format:}\\[2pt] #1\par}} +% +\def\received#1#2{% + \par% + \tiny + \addvspace{12\p@}% + \parindent\z@% +\small\scriptsize{Received\ #1;\ accepted\ #2}% +\par% +} + +% +\sloppy +\clubpenalty10000 +\widowpenalty10000% +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +% +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty + +\voffset-5pc +\hoffset-6.03pc + +\usepackage{times} +%% \usepackage[mtbold]{mathtime} +\usepackage{bm} +\usepackage{graphicx}% Include figure files +\usepackage{hyperref} +%%\usepackage{microtype} +\renewcommand{\ttdefault}{cmtt} + +\usepackage{jlcode} + +\usepackage{authblk} + +\endinput + +% end of juliacon.cls diff --git a/paper/logojuliacon.pdf b/paper/logojuliacon.pdf new file mode 100644 index 0000000000000000000000000000000000000000..744eaee6a99483b8fadab7b8790156a2331cffdb GIT binary patch literal 4937 zcmZ8lc|4R|8@3d(lyyR4>^p-YCX`)d$&xi03aU>%PxF&n0ZCtt%}j1Ev?Q{#trS4+esONGA_^ zRaKzuO&G!r>kd>TLuT|qAW&8p?uCV+$*UI>3)6-gx0uEE)#ANAH*Z#MZD> zx`rv;lf#XAO+UM_XM;7Arc}+3S7`EDT(Q9D3XX@9=IH#WhoTO?L%^p;lGyZ+{iv)8 zSDj`kTXxt_`kq)8-^1%iB6dE+Jv`pNyT5bz(7eLC&&(lj{Z;S50bA3uqSZrPoSI;A zSp$G}A#ZBaq_dgtVZ{ep_CmGqPx_~9M zEJT)9{BGaa7xl_XOWzwSqYzn1q7={2api;R{rBbgYK}7Au8YRcgJ_Njn;xqqOX8&$ zCyn8;O%?vH#u0}J&puH2f)2CYxsuB+B?nfcVea-DNrTDXU1IpZtSAokYC1B-s3ZnP;NYE`|J+xa6vZgd==5lu5y5MlXuGKA-{jF4knzb<8SlMg z$;T4zI9^ITuHS3XkYafIc+Ge8^Bb?5nd%JaJBL0NipNnEDtRj(?CTsn0bK*44c*o5 zv=ce5VnInxQ!u>c{GD`0BD+EuWv>Qbk373&{mvz0Cu!(`eL7-Kq@JpiNv&j_2Vz9S zUzwU+OAxtyeeygW{#aDUSkA~iX%cv~5SD|qVE!TVYE>|O|O4mE~wQR~1+v~|1 z&(?=>e7fRx1txdH3$t<+EEsoRA%>N@7thOqpeOAtC(Yi29q;btK$IIiSW~jI+x?s2 zi&|eKhIntOiW{wgWi#ucM44LZJHT(Zg@&k5iMpcaHqFmD+ z8bckpinVwMhAHZobZRULtlpb=`}XGcd$ zHoAHrF6+)M14NVZ%=ZCqNoZlot-EX?YWDVzASPZJ6=?-oPQE$@68>F1E5S7z71U>! ziKJQxiY7mmLETbFNxNl+7so$amgLX8#$}^-r)8x0fac;|`91mjYK&l>84oMpQ6--9 zti}pAN~yv|+t`&6e$%ZlBg`gL8XS!-yjrJ=TtG?WUwhUTlyvQxTy*dMD zY;QS=AF5j24IzooW$56}H-CFVJy7gPF+uCznLj4eop4sNMPPE34-xzVFuLie5y~Hv zbIzdhh_^t63(G&dmGr?n1~2F174(4Lk!C*iL-5kY8f9knhJfTSGwN>F$JCm$DBcHh zQK&$s!Os1O01*I1s5>0;BWug1i>Isi^Uzu<975rK7~&XPbdeS~k=f5Tc==eJI`+ZO zJ(f$o@t9cEF2?H&5*z2QJqH?oM};1IC=B*%URG#MbfjBoV~E*frsmTZZOR-M+|OL% zLzp@e_Sg2W3rz&g`pP}9y(W_Wz4MD6p=>IF|7e2w%AD1kRy8{Y9Qa3e=KvK-`sKH2 zD%8u`xpw!og;jS{yPg)GpB>QQ+STZ#IlzR`1T!_qihgEnjn&e03w^u(Z zn|GNaFNU(f5cPc5#GVyp(om2rT~;A3a1(fjnOf`;kA`Uk-A$KUc^Z6=e8&wjlTsDx z%y;jaws@PZnqF^F`h=HIND0RU+f%Evlth)sM$?yj<**r?4wEVIzfwCbDHf z3oiw-34X30?~EX>2B8|owc0q^tu}+j!r`|=X8fM5R<}qcPSKAoMeWgNWD3BWXZ5{* zL};U&z8%AJAx60lF9KkM1*U#ZBc7Ep(U7pv67`hD1oc4o=QrL~az;q%#NRm+7~qrO z94!j-h+XP>&U+=t@BETKs-__@hMmxY({ShAPv%NW`|$Yn!Y3iim#x_i8yzn#qth|j zFVR=mP1|V?K`&oq%3m?w&7-}Y=<;+s{DtZp-dO)w@GaLEtZ3?cHx>0WL{TQGTDnP# zTV~z?1|PL!qTVPMH&wR}jfKgxzNM-|i|$)^-r`NGHSv*^ZbCCZJV+S-O0A zyMC}{c>8VhN=dJ&b-H~HH>M`cHl{#lX<|d-+D5W5BrR~@hfCOqz~gC~iVK2?%Qr6Y z(?wlazL%i9x8s9z%9GA*$_y`mM<=6gYr4~${2u#0>p5W9Ctu_sef7GkxNefVB1fUv z-L&Ttw5ustr?5*iWkqRFeyiITcY?L1e++~OR(@-V$cl)e-R_&G+qgPrE91Xzxa+5y zvLLp3Zwp$=pfI2LEreRQkS8nTx)Sk=LoPk1V|M--9?jc-{%*%Msd##Ff5Ib7D>ZjQfi5NQK^32fBt}+3V##e`alQ;ro#CxH$D-j?nE?zM0(pcS7ga3EpEfLAcUI+SNZGPvTMgr7t$=3iACkAb3Q>zHPkggN_#W{0%aMNMLY#suUu{ebQ%R24@IQc z7#W3q{rakIsl+(BqS^p!_263uJ+8m$reHK>-)HVY5Nae}GanHaN!Um#xhck5Wu$BE zRaYKaI97LFJW`KI7;mu1{b7YO#7Dbo@DcdY~WwsAgRfRJRo3gpBd` zvdWBl%AZ&w&B}9iIJj(TvEjzm9707+O(MrAXU?#8EPmyNe&MX}*rxwE>puPfy&}`T zgvlSb2Ut=k>iT0TFMu0Aa5DhdD_ncxZ73YPX1hrM-rkOUXT|D~`P$sz`GdGKUu-gZ z$40eurM%YPD9tf`lI?M_?9`kwO?G@fc#Z(M!pML7LY%y!Tcud+`(QI+BH9dO8mSxx z>C|xA!}vj>EO3vyq=Zo0}i$!`E=2I!u-$Wn&WI-{9y`0=03kCGWXKSr=}eIgO?%xtj! zqy95^)*GhYh412@|G{-<(luC?uuMVaah>I?{=&IKpA6@1R6FLr#etWHu{l_Dj$jfJ zSZ;sCnYEQ-?YYaPmA1KqAkk^rF6*MBK-`JG>ys3!3sT4Xm5|10PR>8qziJ2zp4loT zY6w#wSeRe)7n{xU0Y@1vcElN^wY_FTI7|8jW@mSD8p3@>l3bXddU1#))Sg@Welq!$ zr$HdFT)L|@c%IvdbpM+|oOP<4WafB5&X^6KLxm;RWhRu!x+mY+@WXT@u;J0pIy1#E zvq;yV**=j zeHrJE+Q>&5oD>W!H@`+jJD({MI3Ljte=hRcm1hsM$ujY0S4E4~IZF!BobOat$+V+_ z0tFGio!0}-LNcsuiUsrght`upWt< zo4<(&6FoDWRJmgDsq*IGWJA;0V42#!QI}X}Mw+Lo--*#Ejyr=%+`C(J#&6$ct&W|I z;4cfY@ehn{&rI9k)*WYrjBtMhiRA{K@m$Vh&JJ#;`0V%K%f04YN(Ww~8)wa1!-!za zw$4-S80nJ0Tvn@AH=uMGU`GjrT|005>dj^+L3T$|Icr&S@7##i9kyuvv`uf?FlJp^ zHgBrU&Jlc0T;x_{9sYh+sJ{dYQBC@lR{?{jzyjm8VE(vIxlwiDsQ9|F2?5e1CFJLS z>jh`eMpgTyWnl7dsupKd?jK6gmJasj{Wh1I-n!of--^E9Qr`{}`QtLbLcbn&omxGC zHU7jU`<+L*-6)Cq)zi<1j6y%MF%)7946f@A)vDtCxbnP+>B^a${LgbsbfO<61Nr>= zj^PC!Bzcl&)U?*zWxTFcPe($ZbdPaI1R^{^Ao%9juhVxMewGO?2v*1EDVrl*zyIWN zcX4BdT`B9ay*+m?fW_BPWM5<*t9I98-_JZfKAxzO`{&b+ksN4ozCMr-S3tkerIdk| zv=LspAA%ex%AXz?-h$g?j1^Fh7-xP_E!8%7?OG3)aPn(o&@=9TO2_E+vfIIc+v^Qw z-q)(Syx@tXv&^p=m4|J${Zt53tm(zsDpXI9S^8 zbG1WHeTQ&MxLEr@Wy{{|Wl9k60XILqG@p`O_*Xpb?Tnb)hRk#GC%>JF0;fvA=}OiDz#y>lsln-1;a|<*mr9`Hht)I3k`)4=s_H2~ z9|Qy(g4Z4F(hj%Kh?d3Pr;Z zSn|<-^;?R6Mf`>SleIZH4>S~kL7hf+_WuXI0mPzxVE^p2$X41gU$`^OOi%L^ z{EL~a84QE;K|8}Rz|;De{l@c@!9N9aH+P>?+P^ta`ptnU z8tLNWOjc#YoS|?u5-2Alrz8Ucin(L4C=5iFTx>GxhK8ct;m#NtB-%|}{8u0?vSx#Y zBN5uCjS|y_kgKHvQjn9Elao`B2ic1M7VgS#;r_~33yOt$A>DpCI_(kW@2>o}mwsrN zD?JFPOb_~Z0F@LK6%>K4z`rqaqsX352N3ZuCQr8be@sq^T*3df1Ce|C{}@;fOuh#H zYX??TAeZw0FeUJB{;+5$+zW>OC3u;`17PHoPy1koL}G!b#Q(Z1HxRB!;Az=^^$~-G UqOrdif|XPh>4k-LOmyl00}VI0$p8QV literal 0 HcmV?d00001 diff --git a/paper/paper.pdf b/paper/paper.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f440fefdb0acb0c7afd9b90e8b026460727c2bf3 GIT binary patch literal 348475 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�gP5_< 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


      !}~+XikuW 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 z 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 literal 0 HcmV?d00001 diff --git a/paper/paper.tex b/paper/paper.tex new file mode 100644 index 0000000..a7804b9 --- /dev/null +++ b/paper/paper.tex @@ -0,0 +1,386 @@ +\documentclass{juliacon} +\usepackage{amsmath} +\usepackage{float} +\setcounter{page}{1} + +\begin{document} + +\title{DisjunctiveProgramming.jl: Generalized Disjunctive Programming Models and Algorithms for JuMP} +\author{ + \large Hector D. Perez, Shivank Joshi, Ignacio E. Grossmann* + \\\normalsize Carnegie Mellon University, Pittsburgh, PA, USA + \\\normalsize *grossmann@cmu.edu +} + +\maketitle + +\section*{ABSTRACT} +We present a Julia package, \verb|DisjunctiveProgramming.jl|, that extends the functionality in \verb|JuMP.jl| to allow modeling problems via logical propositions and disjunctive constraints. Such models can then be reformulated into Mixed-Integer Programs (MIPs) that can be solved with the various MIP solvers supported by JuMP. To do so, logical propositions are converted to Conjunctive Normal Form (CNF) and reformulated into equivalent algebraic constraints. Disjunctions are reformulated into mixed-integer constraints via the reformulation technique specified by the user (Big-M or Hull reformulations). The package supports reformulations for disjunctions containing linear, quadratic, and nonlinear constraints. + +\section*{Keywords} +JuMP, Mathematical Optimization, Generalized Disjunctive Programming + +\section{Introduction} +The modeling of systems with discrete and continuous decisions is commonly done in algebraic form with mixed-integer programming (MIP) models. When the problems can be defined by purely linear constraints and a linear objective function, they are referred to as mixed-integer linear programs (MILP). When nonlinearities arrise in either the feasible space or the objective function, they are called mixed-integer nonlinear programs (MINLP). +\vskip 6pt +A more systematic approach to modeling such systems is to use Generalized Disjunctive Programming (GDP) \cite{chen_grossmann_2019, grossmann_trespalacios_2013}, which generalizes the Disjunctive Programming paradigm proposed by Balas \cite{balas_2018}. GDP enables the modeling of systems from a logic-based level of abstraction that captures the fundamental rules governing such systems via algebraic constraints and logic. This formulation is useful for expressing problems in an intuitive way that relies on their logical underpinnings without needing to introduce mixed-integer constraints. GDP models are often easier to understand as related constraints are grouped into disjuncts that describe clearly defined subsets of the feasible space. The models obtained via GDP can be reformulated into the pure algebraic form best suited for the application of interest. It is also often possible to exploit the explicit logical structure of a GDP model to provide tighter relaxations than corresponding MIP models, which may improve convergence speed and robustness for solutions via advanced solution algorithms \cite{chen_grossmann_2019}. +\vskip 6pt +Within the optimization community, there is a high volume of ongoing research that relies on GDP to formulate models for a variety of applications. Due to the combinatorial nature of system design problems, the GDP paradigm has been applied to the synthesis of complex processes and networks \cite{MATOVU2022107856, ZHOU202269}, the planning and optimal control of energy systems \cite{CHO2022841, kim2022generalized}, and the modeling of chemical synthesis under uncertainty \cite{CHEN2022107616}. These and numerous other applications of GDP illustrate the benefit of having a robust package for GDP that removes much of the overhead associated with developing and testing GDP models. Although packages with GDP capabilities exist for \verb|Pyomo| \cite{chen2022pyomo} and \verb|GAMS| \cite{vecchietti1999logmip}, having such a package available in Julia can greatly accelerate research in optimization, where packages like \verb|JuMP.jl| \cite{dunning_huchette_lubin_2017} are gaining significant traction. +\vskip 6pt +This paper provides background on the GDP paradigm, and the techniques for reformulating and solving such models. It then presents the package \verb|DisjunctiveProgramming.jl| as an extension to \verb|JuMP.jl| for creating models for optimization that follow the GDP modeling paradigm and can be solved using the vast list of supported solvers \cite{DunningHuchetteLubin2017}. A case study demonstrates the use of the package for chemical process superstructure optimization. + +\section{Generalized Disjunctive Programming} +The GDP form of modeling is an abstraction that uses both algebraic and logical constraints to capture the fundamental rules governing a system. The two main reformulation strategies to transform GDP models into their equivalent MIP models are the Big-M reformulation \cite{nemhauser_1999, TRESPALACIOS201598} and the Hull reformulation \cite{LEE20002125}, the latter of which yields tighter models at the expense of larger model sizes \cite{grossmann_lee_2003}. +\vskip 6pt + +\subsection{Model} + +The general notation for a GDP problem is given in Eq. \eqref{eq:general_gdp} - \eqref{eq:general_gdp1}. +\begin{align} + \label{eq:general_gdp} + \min \ &f(x) \\ + \text{s.t.} \ &g(x) \leq 0 \\ + &\bigvee_{i \in J_k} + \begin{bmatrix} + Y_{ik} \\ + h_{ik}(x) \leq 0 + \end{bmatrix} \quad \forall k \in K \\ + & \Omega(Y) = true \\ + & Y_{ik} \in \{true, false\} \quad \forall i \in J_k, k \in K\\ + \label{eq:general_gdp1} + & x \in X \subseteq \mathbb{R}^n +\end{align} +Here $f(x)$ is the objective function to be minimized over the continuous variable $x$, $g(x)$ represents the global constraints, $h(x)$ represents the disjunct-specific constraints, and $Y$ is the Boolean variable governing each disjunction. In this notation, there are $k$ disjunctions with $i$ disjuncts in each. Constraints $h_{ik}(x) \le 0$, are applied only if the Boolean indicator variable for the respective disjunct, $Y_{ik}$, is denoted as being active (i.e., \textit{true}) \cite{chen_grossmann_2019}. The set of logical constraints, $\Omega(Y)$, describe the logical relationships between the selections of indicator variables. These can take the form of logical propositions or constraint programming expressions. +\vskip 6pt + +In the case of a linear objective function and constraint set, the GDP model can be written as Eq. \eqref{eq:lgdp} - \eqref{eq:lgdp2}. +\begin{align} + \label{eq:lgdp} + \min \ & c^Tx \\ + \text{s.t.} \ &Ax \leq b \\ + &\bigvee_{i \in J_k} + \begin{bmatrix} + Y_{ik} \\ + B_{ik}x \leq d_{ik} + \end{bmatrix}, \quad \forall k \in K \\ + & \Omega(Y) = true \\ + \label{eq:lgdp2} + & Y_{ik} \in \{true, false\} \quad \forall i \in J_k, k \in K +\end{align} +\vskip 6pt + +\subsection{Linear GDP reformulation example} +The simplest example of a linear GDP system is given in \eqref{eq:ex} - \eqref{eq:y}, where $Y_i$ is a Boolean indicator variable that enforces the constraints in the disjunct ($Ax \le b$ or $Cx \le d$) when $true$. +\vskip 6pt +\begin{equation} + \label{eq:ex} + \begin{bmatrix} + Y_1 \\ Ax \leq b + \end{bmatrix} + \lor + \begin{bmatrix} + Y_2 \\ Cx \leq d + \end{bmatrix} +\end{equation} +\begin{equation} + \label{eq:x} + 0 \leq x \leq U +\end{equation} +\begin{equation} + \label{eq:simple_xor} + Y_1 \ \underline{\vee} \ Y_2 +\end{equation} +\begin{equation} + \label{eq:y} + Y_1, Y_2 \in \{true, false\} +\end{equation} +\vskip 6pt + +For visualization purposes and without loss of generality, the simple linear example is used to illustrate the Big-M and Hull reformulations. Figure \ref{fig:reform_figure} illustrates the feasible space of a simple linear GDP with one disjunction and two continuous variables, $x_1$ and $x_2$. The rectangle on the left is described by the constraints in the left disjunct, $Ax \leq b$. The rectangle on the right is defined by the constraints in the right disjunct, $Cx \le d$. The non-overlapping nature of the two regions is supported by the exclusive-OR relationship in Eq. \eqref{eq:simple_xor}. + +\begin{figure}%[H] + \centering + \includegraphics[scale=0.5]{solnspace.png} + \caption{Feasible solution space for example disjunction} + \label{fig:reform_figure} +\end{figure} +\vskip 6pt + + \subsubsection{Big-M Reformulation} + The Big-M reformulation for this problem is given by \eqref{eq:x}, \eqref{eq:ex_bigm1} - \eqref{eq:ex_bigm4}, where $M$ is a sufficiently large scalar that makes the particular constraint redundant when its indicator variable is not selected (i.e., $y_i = 0$). Note that the Boolean variables, $Y_i$, are replaced by binary variables, $y_i$. When the integrality constraint in Eq. \eqref{eq:ex_bigm4} is relaxed to $0 \leq x_1, x_2 \leq 1$, the resulting feasible region can be visualized by projecting the relaxed model onto the $x_1, x_2$ plane. This results in the region encapsulated by the dashed line in Figure \ref{fig:bigm}. It should be noted that the relaxed feasible region is not as tight as possible around the original feasible solution space. The choice of the large $M$ value determines the tightness of this relaxation, and the minimal value of $M$ for the optimal relaxation can be found through interval arithmetic when the model is linear. For nonlinear models, the tightest $M$ can be obtained by solving the maximization problem $\{\max h_{ik}(x): x \in X\}$. An alternate method for tight Big-M relaxations is given in \cite{TRESPALACIOS201598}. + +\begin{equation} + \label{eq:ex_bigm1} + Ax \leq b + M \cdot (1 - y_1) +\end{equation} +\begin{equation} + \label{eq:ex_bigm2} + Cx \leq d + M \cdot (1 - y_2) +\end{equation} +\begin{equation} + \label{eq:ex_bigm3} + y_1 + y_2 = 1 +\end{equation} +\begin{equation} + \label{eq:ex_bigm4} + y_1, y_2 \in \{0,1\} +\end{equation} + +\begin{figure} + \centering + \includegraphics[scale=0.5]{bigm.png} + \caption{Relaxed solution space using Big-M Reformulation} + \label{fig:bigm} +\end{figure} + +\subsubsection{Hull Reformulation} +The Hull reformulation is given by \eqref{eq:x}, \eqref{eq:ex_bigm3} - \eqref{eq:ex_hull3}, which requires lifting the model to a higher-dimensional space. When projected to the original space, the continuous relaxation of the model is tighter than its Big-M equivalent \cite{grossmann_trespalacios_2013}. The reformulation relaxation can be visualized by the region encapsulated by the dashed line in Figure \ref{fig:chr}. Note that this reformulation provides a tighter relaxation than the Big-M reformulation in Figure \ref{fig:bigm}. Also note that describing the geometry of this relaxation is more complex than the Big-M relaxation, which is made possible by the increased number of constraints and variables in the model. + +\begin{equation} + \label{eq:ex_hull1} + Ax_1 \leq by_1 +\end{equation} +\begin{equation} + \label{eq:ex_hull0} + Cx_2 \leq dy_2 +\end{equation} +\begin{equation} + \label{eq:ex_hull2} + x = x_1 + x_2 +\end{equation} +\begin{equation} + \label{eq:ex_hull3} + 0 \leq x_i \leq U y_i \quad \forall i \in \{1,2\} +\end{equation} + +\begin{figure}%[H] + \centering + \includegraphics[scale=0.5]{chr.png} + \caption{Relaxed solution space using Hull Reformulation} + \label{fig:chr} +\end{figure} +\vskip 6pt + +\subsection{Logic constraint reformulation} + +\subsubsection{Propositional Logic} +The logic propositions within the set of decision selection relationships, $\Omega$, must be converted into conjunctive normal form (CNF) to enable reformulating a GDP model as a MIP model. This means that each clause within the set of propositions must be formulated into a conjunction of disjunctions. This process can be accomplished by following the simplifying rules of propositional logic (De Morgan's laws). For boolean variables $A$, $B$, and $C$ the following rules are used for converting to CNF (in the order given below), +\begin{align*} + A \leftrightarrow B & \text{ is replaced by } (A \rightarrow B) \land (B \rightarrow A) \\ + A \rightarrow B & \text{ is replaced by } \lnot A \lor B \\ + \lnot(A \lor B) & \text{ is replaced by } \lnot A \land \lnot B \\ + \lnot(A \land B) & \text{ is replaced by } \lnot A \lor \lnot B \\ + (A \land B) \lor C & \text{ is replaced by } (A \lor C) \land (B \lor C) +\end{align*} + +Once the logic propositions are converted to CNF, each clause can be converted into an algebraic constraint with the following equivalence, + +\begin{align*} + \bigvee_{i \in I} Y_i & \ \ \text{becomes} \ \ \sum_{i\in I} y_i \geq 1 \\ +\end{align*} + +Alternate approaches exist for converting propositional logic statements into CNF, which involve preserving clause satisfiability rather than clause equivalence. These approaches prevent exponential size increase in clauses and yield logically consistent results \cite{jackson_sheridan_2005}. + +\subsubsection{Constraint Programming} +The constraint-programming selection requirements for constraints within $\Omega$ are reformulated as follows, + +\begin{align*} + \text{exactly}(n, Y) & \ \ \text{becomes} \ \ n = \sum_i Y_i \\ + \text{atleast}(n, Y) & \ \ \text{becomes} \ \ n \leq \sum_i Y_i \\ + \text{atmost}(n, Y) & \ \ \text{becomes} \ \ n \geq \sum_i Y_i +\end{align*} + +Exclusive-OR constraints as the one given in Eq. \eqref{eq:simple_xor} become constraints of the form $exactly(1,Y)$. +\vskip 6pt + +\subsection{Solution Techniques} + +\subsubsection{Disjunctive branch and bound} +The disjunctive branch and bound method closely mirrors the standard branch and bound approach for the solution of mixed-integer programming problems \cite{grossmann_lee_2003}. A search tree is initialized by solving the continuous relaxation of the Big-M or Hull reformulation of the original GDP to obtain a lower bound on the optimum. Branching is then done on the disjunction with an indicator binary variable closest to 1. Two nodes are created at this point: one where the respective indicator Boolean variable is fixed to $true$ (the disjunct is enforced) and another where it is fixed to $false$ (the disjunct is removed from the disjunction). Each node is reformulated and solved to obtain a candidate lower bound. If the solution to a node results in a feasible solution that satisfies all integrality constraints, the solution is an upper bound on the optimum. Any non-integral solutions that exceed an upper bound are pruned from the search tree. The process is repeated until the lower and upper bounds are within the desired tolerance. + +\subsubsection{Logic-based outer approximation} +Logic-based outer approximation is another algorithm which mirrors a standard technique for solving mixed-integer nonlinear programming problems \cite{E.Grossmann2009}. This approach starts by identifying a set of reduced Non-Linear Programming (NLP) sub-problems obtained by fixing Boolean variables in the different disjunctions such that each disjunct is selected at least once across the set of sub-problems (set covering step). +Each sub-problem is solved to obtain an upper bound and a feasible point, about which the objective and constraints of the original GDP are linearized, and solve the resulting problem (via direct reformulation to MILP or via disjunctive branch and bound) to find a lower bound. If the lower and upper bound solutions have not converged, the Boolean variables from the previous solution are fixed and the resulting NLP is solved to find a potentially tighter upper bound solution. The procedure is repeated until convergence is obtained. +\vskip 6pt + +\subsubsection{Hybrid cutting planes} +The cutting planes method is an algorithm for tightening the relaxed solution space of a problem reformulated with Big-M before solving it by adding additional constraints which remove parts of the relaxed space that are disjoint from the actual feasible solution space. These "cuts" to the relaxed solution space are derived from the tighter, hull relaxation of the problem. This algorithm provides a middle-ground for the tradeoff between the complexity and corresponding computational expense of the Hull reformulation with the less tight Big-M reformulation. \cite{trespalacios_grossmann_2016}. +\vskip 6pt + + +\section{DisjunctiveProgramming.jl} +The following section describes the features of the \verb|DisjunctiveProgramming.jl| package and illustrates its syntax with an example from the chemical processing industry for superstructure optimization. The use of nested disjunctions is also shown. + +\subsection{Features} +\verb|DisjunctiveProgramming.jl| allows for defining JuMP models with disjunctions that are directly reformulated via Big-M or Hull methods via the \verb|@disjunction| macro or \verb|add_disjunction!| function. Big-M values can be specified either for the entire disjunction, for each disjunct, or for each constraint in each disjunct. Alternately, if the constraints are linear, the code can use the variable bounds to perform interval arithmetic on each constraint to determine the tightest possible $M$ value to use \cite{agarwal2010automating}. For nonlinear GDP constraints, the epsilon approximation formulation for the perspective function in the Hull reformulation is used \cite{furman_sawaya_grossmann_2020}. Users can specify an epsilon tolerance value to use. Perspective functions are generated by relying on manipulation of symbolic expressions via \verb|Symbolics.jl| \cite{10.1145/3511528.3511535}. + +\vskip 6pt +Logical propositions can be added to JuMP models using expressions involving the disjunction indicator variables and the standard Boolean operators ($\Leftrightarrow, \Rightarrow, \vee, \wedge, \text{ and } \neg$) in an \verb|@proposition| macro. These are automatically converted into CNF and added as integer algebraic constraints to the model. The constraint programming constraints can also be added using the \verb|choose!| function. The expressions are also automatically reformulated into integer algebraic constraints. + +\vskip 6pt +Nesting of disjunctions is also supported. + +\subsection{Example} +To illustrate the syntax in \verb|DisjunctiveProgramming.jl| (Version 0.3.2), consider the simple superstructure optimization problem for the chemical process given in Figure \ref{fig:superstruct_opt_diagram}. In this problem a chemical plant with two candidate reactor technologies ($R_1$ and $R_2$) must be designed. If the second reactor technology is chosen, a separation system must also be installed, for which two separation technologies ($S_1$ and $S_2$) are available. The GDP model seeks to maximize the product flow ($F_7$), while discounting for reactor ($C_R$) and separator ($C_S$) installation costs as given in \eqref{eq:example_obj}, subject to the nested disjunction in \eqref{eq:example_gdp} and the global mass balances in \eqref{eq:example_global} +- \eqref{eq:example_global1}. The system variables are the flows on each stream $i$ ($F_i$) and the installation costs, with their respective bounds given in \eqref{eq:example_var1} - \eqref{eq:example_var3}. The fixed cost and process yield parameters are given by $\gamma$ and $\beta$, respectively. + +\begin{figure} + \centering + \includegraphics[scale=0.4]{superstructure_pfd.png} + \caption{Illustrative superstructure optimization problem} + \label{fig:superstruct_opt_diagram} +\end{figure} + +\begin{equation} + \label{eq:example_obj} + \max F_7 - C_R - C_S +\end{equation} +\begin{equation} + \label{eq:example_gdp} + \begin{bmatrix} + Y_{R1} \\ + F_6 = \beta_{R1} F_2 \\ + F_3 = 0 \\ + F_4 = 0 \\ + F_5 = 0 \\ + C_R = \gamma_{R1} \\ + CS = 0 + \end{bmatrix} \lor + \begin{bmatrix} + Y_{R2} \\ + F_2 = 0 \\ + F_6 = 0 \\ + F_4 = \beta_{R2} F_3 \\ + C_R = \gamma_{R2} \\ + \begin{bmatrix} + Y_{S1} \\ + F5 = \beta_{S1} F_4 \\ + C_S = \gamma_{S1} + \end{bmatrix} \lor + \begin{bmatrix} + Y_{S2} \\ + F5 = \beta_{S2} F_4 \\ + C_S = \gamma_{S2} + \end{bmatrix} + \end{bmatrix} +\end{equation} +\begin{equation} + \label{eq:example_global} + F_1 = F_2 + F_3 +\end{equation} +\begin{equation} + \label{eq:example_global1} + F_7 = F_5 + F_6 +\end{equation} +\begin{equation} + \label{eq:example_var1} + 0 \leq F_i \leq 10 \quad \forall i \in \{1,...,7\} +\end{equation} +\begin{equation} + \label{eq:example_var2} + 0 \leq C_S \leq C_S^{max} +\end{equation} +\begin{equation} + \label{eq:example_var3} + C_R^{min} \leq C_R \leq C_R^{max} +\end{equation} +\vskip 6pt + +The above system can be modeled and reformulated via the Big-M reformulation using \verb|DisjunctiveProgramming.jl|. The resulting JuMP model is then optimized using the HiGHS open-source MILP solver \cite{huangfu2018parallelizing} as shown below. + +\begin{enumerate} + \item Create the JuMP model and define the model variables and global constraints (mass balances). +\begin{lstlisting}[language = Julia] +using DisjunctiveProgramming, JuMP, HiGHS + +# create model +m = JuMP.Model(HiGHS.Optimizer) +# add variables to model +@variable(m, 0 <= F[i = 1:7] <= 10) +@variable(m, 0 <= CS <= CSmax) +@variable(m, CRmin <= CR <= CRmax) + +# add constraints to model +@constraints(m, + begin + F[1] == F[2] + F[3] + F[7] == F[5] + F[6] + end +) +\end{lstlisting} + \item Define the inner (nested) disjunction for the separation technologies in the superstructure using the \verb|@disjunction| macro. +\begin{lstlisting}[language = Julia] +# define inner disjunction +@disjunction(m, + begin + F[5] == β[:S1]*F[4] + CS == γ[:S1] + end, + begin + F[5] == β[:S2]*F[4] + CS == γ[:S2] + end, + reformulation = :big_m, # reformulation type + name = :YS # symbol for indicator variable +) +\end{lstlisting} + \item Define constraints in the outer disjunctions. +\begin{lstlisting}[language = Julia] +# define constraints in left disjunct +R1_con = @constraints(m, + begin + F[6] == β[:R1]*F[2] + [i = 3:5], F[i] == 0 + CR == γ[:R1] + CS == 0 + end +) + +# define constraints in right disjunct +R2_con = @constraints(m, + begin + F[6] == β[:R2]*F[3] + CR == γ[:R2] + end +) +\end{lstlisting} + \item Build the main disjunction using the constraint blocks defined in (3) and the \verb|add_disjunction!| function. Note that the reformulated constraints for the nested disjunction are stored in the \verb|.ext| dictionary of the model under the name of the disjunction (\verb|:YS| in this case). +\begin{lstlisting}[language = Julia] +# add nested disjunction to model +add_disjunction!(m, + R1_con, + # general constraints in R2 disjunction + ( + R2_con, + m.ext[:YS] #reformulated inner disj. + ), + reformulation = :big_m, # reformulation type + name = :YR # symbol for indicator variable +) +\end{lstlisting} + \item Add the selection logical constraints using the \verb|choose!| function. The first constraint enforces that only one reactor is selected. The second constraint enforces that the separation system be defined only if the second reactor ($R_2$) is selected. This constraint is equivalent to $Y_{R_2} \Leftrightarrow Y_{S_1} \underline{\vee} Y_{S_2}$. +\begin{lstlisting}[language = Julia] +choose!(1, YR[1], YR[2]; mode = :exactly) +choose!(YR[2], YS[1], YS[2]; mode = :exactly) +\end{lstlisting} + \item Add the objective function and optimize. +\begin{lstlisting}[language = Julia] +@objective(m, Max, F[7] - CS - CR) +optimize!(m) +\end{lstlisting} +\end{enumerate} + +\section{Future Work} +The next steps for the \verb|DisjunctivePrograming.jl| package rely on extending \verb|JuMP.jl| further to allow creating GDP models that are not necessarily reformulated at model creation. Such models will allow using the different GDP solution strategies, such as direct reformulation to MI(N)LP, disjunctive branch and bound, logic-based outer approximation, hybrid cutting planes, and basic steps. The updated package will leverage existing JuMP extension infrastructure and make it possible to define indexing notation for disjunctions, a new Boolean variable type, and a new disjunciton constraint type. These improvements are expected to make the package more usable, flexible, and performant for advanced applications of GDP in JuMP. + +\section{Related Work} +The popular Python package \verb|Pyomo| \cite{bynum2021pyomo, hart2011pyomo} is widely used for optimization development and includes an extension for generalized disjunctive programming \cite{chen2022pyomo}. \verb|GAMS| \cite{Bussieck2004} is a widely used optimization modeling language with support for GDP under the \verb|GAMS EMP| solver that uses \verb|LogMIP| \cite{vecchietti1999logmip}. Research is also being conducted to integrate modern process simulation technology, such as \verb|Aspen|, within the GDP paradigm \cite{NAVARROAMOROS201413}. + +\section{Conclusion} +\verb|DisjunctiveProgramming.jl| is an extension to \verb|JuMP| for creating models for optimization that are formulated according to the generalized disjunctive programming paradigm. The package provides several options for reformulations including the Big-M and Hull relaxations. This package can be used to model problems, reformulate them, and optimize them using existing mathematical programming infrastructure in \verb|JuMP|. This can be useful for industrial and academic applications of GDP, such as superstructure optimization. The capabilities of this package allow for this modeling paradigm to be exploited using \verb|Julia|'s efficient dynamically-typed systems for rapid development, building, and testing of optimization models. + +% References +\input{bib.tex} + + +\end{document} diff --git a/paper/paper.yml b/paper/paper.yml new file mode 100644 index 0000000..d403e6a --- /dev/null +++ b/paper/paper.yml @@ -0,0 +1,20 @@ +title: "DisjunctiveProgramming.jl: Generalized Disjunctive Programming Models and Algorithms for JuMP" +keywords: + - JuMP + - Mathematical Optimization + - Generalized Disjunctive Programming +authors: + - name: Hector D. Perez + orcid: 0000-0002-7374-1120 + affiliation: 1 + - name: Shivank Joshi + orcid: 0000-0002-1004-3173 + affiliation: 1 + - name: Ignacio E. Grossmann + orcid: 0000-0002-7210-084X + affiliation: 1 +affiliations: + - name: Carnegie Mellon University + index: 1 +date: 10 October 2022 +bibliography: ref.bib diff --git a/paper/prep.rb b/paper/prep.rb new file mode 100644 index 0000000..6da32f4 --- /dev/null +++ b/paper/prep.rb @@ -0,0 +1,57 @@ +# metadata generator for JuliaCon +# DO NOT EDIT + +require 'yaml' + +metadata = YAML.load_file('paper.yml') + +for k in ["title", "authors", "affiliations", "keywords", "bibliography"] + raise "Key #{k} not present in metadata" unless metadata.keys().include?(k) +end + +# ENV variables or default for issue/volume/year +issue = ENV["JLCON_ISSUE"] === nil ? 1 : ENV["JLCON_ISSUE"] +volume = ENV["JLCON_VOLUME"] === nil ? 1 : ENV["JLCON_VOLUME"] +year = ENV["JLCON_YEAR"] === nil ? 2021 : ENV["JLCON_YEAR"] +journal_name = "Proceedings of JuliaCon" # hard-coded for now + +open('header.tex', 'w') do |f| + f << "% **************GENERATED FILE, DO NOT EDIT**************\n\n" + f << "\\title{#{metadata["title"]}}\n\n" + for auth in metadata["authors"] + f << "\\author[#{auth["affiliation"]}]{#{auth["name"]}}\n" + end + for aff in metadata["affiliations"] + f << "\\affil[#{aff["index"]}]{#{aff["name"]}}\n" + end + f << "\n\\keywords{" + for i in 0...metadata["keywords"].length-1 + f << "#{metadata["keywords"][i]}, " + end + f << metadata["keywords"].last + f << "}\n\n" + + # hypersetup + f << "\\hypersetup{\n" + f << "pdftitle = {#{metadata["title"]}},\n" + f << "pdfsubject = {JuliaCon 2019 Proceedings},\n" + author_list = metadata['authors'].map { |a| a['name'] }.join(', ') + f << "pdfauthor = {#{author_list}},\n" + keyword_list = metadata['keywords'].join(', ') + f << "pdfkeywords = {#{keyword_list}},\n" + f << "}\n\n" +end + +open('journal_dat.tex', 'w') do |f| + f << "% **************GENERATED FILE, DO NOT EDIT**************\n\n" + f << "\\def\\@journalName{#{journal_name}}\n" + f << "\\def\\@volume{#{volume}}\n" + f << "\\def\\@issue{#{issue}}\n" + f << "\\def\\@year{#{year}}\n" +end + +open('bib.tex', 'w') do |f| + f << "% **************GENERATED FILE, DO NOT EDIT**************\n\n" + f << "\\bibliographystyle{juliacon}\n" + f << "\\bibliography{#{metadata["bibliography"]}}\n" +end diff --git a/paper/ref.bib b/paper/ref.bib new file mode 100644 index 0000000..1e86e9f --- /dev/null +++ b/paper/ref.bib @@ -0,0 +1,353 @@ +@inproceedings{agarwal2010automating, + title={Automating mathematical program transformations}, + author={Agarwal, Ashish and Bhat, Sooraj and Gray, Alexander and Grossmann, Ignacio E}, + booktitle={International Symposium on Practical Aspects of Declarative Languages}, + pages={134--148}, + year={2010}, + organization={Springer} +} +@article{huangfu2018parallelizing, + title={Parallelizing the dual revised simplex method}, + author={Huangfu, Qi and Hall, JA Julian}, + journal={Mathematical Programming Computation}, + volume={10}, + number={1}, + pages={119--142}, + year={2018}, + publisher={Springer} +} +@article{chen2022pyomo, + title={Pyomo. GDP: an ecosystem for logic based modeling and optimization development}, + author={Chen, Qi and Johnson, Emma S and Bernal, David E and Valentin, Romeo and Kale, Sunjeev and Bates, Johnny and Siirola, John D and Grossmann, Ignacio E}, + journal={Optimization and Engineering}, + volume={23}, + number={1}, + pages={607--642}, + year={2022}, + publisher={Springer} +} +@article{vecchietti1999logmip, + title={LOGMIP: a disjunctive 0--1 non-linear optimizer for process system models}, + author={Vecchietti, Aldo and Grossmann, Ignacio E}, + journal={Computers \& chemical engineering}, + volume={23}, + number={4-5}, + pages={555--565}, + year={1999}, + publisher={Elsevier} +} +@article{trespalacios_grossmann_2016, +title={Cutting plane algorithm for convex generalized disjunctive programs}, +volume={28}, +DOI={10.1287/ijoc.2015.0669}, +number={2}, +journal={INFORMS Journal on Computing}, +author={Trespalacios, Francisco and Grossmann, Ignacio E.}, +year={2016}, +pages={209–222} +} + +@Inbook{E.Grossmann2009, +author="E. Grossmann, Ignacio", +title="Logic-based outer approximationLogic-Based Outer Approximation", +bookTitle="Encyclopedia of Optimization", +year="2009", +publisher="Springer US", +address="Boston, MA", +pages="1928--1931", +abstract="Keywords", +isbn="978-0-387-74759-0", +doi="10.1007/978-0-387-74759-0\_348", +url="https://doi.org/10.1007/978-0-387-74759-0\_348" +} + +@article{NAVARROAMOROS201413, +title = {Integration of modular process simulators under the Generalized Disjunctive Programming framework for the structural flowsheet optimization}, +journal = {Computers \& Chemical Engineering}, +volume = {67}, +pages = {13-25}, +year = {2014}, +issn = {0098-1354}, +doi = {https://doi.org/10.1016/j.compchemeng.2014.03.014}, +url = {https://www.sciencedirect.com/science/article/pii/S0098135414000957}, +author = {Miguel A. Navarro-Amorós and Rubén Ruiz-Femenia and José A. Caballero}, +keywords = {Process synthesis, Generalized Disjunctive Programming, Modular simulators, Logic-based optimization algorithm}, +abstract = {The optimization of chemical processes where the flowsheet topology is not kept fixed is a challenging discrete-continuous optimization problem. Usually, this task has been performed through equation based models. This approach presents several problems, as tedious and complicated component properties estimation or the handling of huge problems (with thousands of equations and variables). We propose a GDP approach as an alternative to the MINLP models coupled with a flowsheet program. The novelty of this approach relies on using a commercial modular process simulator where the superstructure is drawn directly on the graphical use interface of the simulator. This methodology takes advantage of modular process simulators (specially tailored numerical methods, reliability, and robustness) and the flexibility of the GDP formulation for the modeling and solution. The optimization tool proposed is successfully applied to the synthesis of a methanol plant where different alternatives are available for the streams, equipment and process conditions.} +} + +@Inbook{Bussieck2004, +author="Bussieck, Michael R. and Meeraus, Alex", +title="General Algebraic Modeling System (GAMS)", +bookTitle="Modeling Languages in Mathematical Optimization", +year="2004", +publisher="Springer US", +address="Boston, MA", +pages="137--157", +abstract="In this chapter we will categorize the development of mathematical programming tools into three major phases and will define three major categories of models and their use. This classification will be used to describe some of the features found in GAMS to support different application environments. Selected language features, and examples of external functions and privacy and security issues are discussed and separate annexes. Finally, we will list the inputs to a problem that has been provided to all the authors by the editor of this volume.", +isbn="978-1-4613-0215-5", +doi="10.1007/978-1-4613-0215-5\_8", +url="https://doi.org/10.1007/978-1-4613-0215-5\_8" +} + +@book{bynum2021pyomo, +title={Pyomo--optimization modeling in python}, +author={Bynum, Michael L. and Hackebeil, Gabriel A. and Hart, William E. and Laird, Carl D. and Nicholson, Bethany L. and Siirola, John D. and Watson, Jean-Paul and Woodruff, David L.}, +edition={Third}, +volume={67}, +year={2021}, +publisher={Springer Science \& Business Media} +} + +@article{hart2011pyomo, +title={Pyomo: modeling and solving mathematical programs in Python}, +author={Hart, William E and Watson, Jean-Paul and Woodruff, David L}, +journal={Mathematical Programming Computation}, +volume={3}, +number={3}, +pages={219--260}, +year={2011}, +publisher={Springer} +} + +@incollection{CHO2022841, +title = {An Optimization Model for Expansion Planning of Reliable Power Generation Systems}, +editor = {Ludovic Montastruc and Stephane Negny}, +series = {Computer Aided Chemical Engineering}, +publisher = {Elsevier}, +volume = {51}, +pages = {841-846}, +year = {2022}, +booktitle = {32nd European Symposium on Computer Aided Process Engineering}, +issn = {1570-7946}, +doi = {https://doi.org/10.1016/B978-0-323-95879-0.50141-7}, +url = {https://www.sciencedirect.com/science/article/pii/B9780323958790501417}, +author = {Seolhee Cho and Ignacio E. Grossmann}, +keywords = {Reliability, Expansion Planning, Power systems, Optimization}, +abstract = {This paper aims to develop an optimization model for the expansion planning of reliable power generation systems. To achieve this goal, we propose an optimization model that minimizes the total cost using Generalized Disjunctive Programming (GDP). Specifically, the model determines both investment decisions (number, size, location, and time of generators to install, retire, and decommission) and operation decisions (number of operating/backup generators, operating capacity, and expected power output) by imposing penalties when the demand is not satisfied, and a system has low reliability. The model is verified through an illustrative example of two regions with four power stations over five operating periods.} +} + +@article{CHEN2022107616, +title = {Integrating stochastic programming and reliability in the optimal synthesis of chemical processes}, +journal = {Computers \& Chemical Engineering}, +volume = {157}, +pages = {107616}, +year = {2022}, +issn = {0098-1354}, +doi = {https://doi.org/10.1016/j.compchemeng.2021.107616}, +url = {https://www.sciencedirect.com/science/article/pii/S009813542100394X}, +author = {Ying Chen and Yixin Ye and Zhihong Yuan and Ignacio E. Grossmann and Bingzhen Chen}, +keywords = {Reliability-based superstructure optimization, Stochastic programming, Endogenous and exogenous uncertainties, Logic-based outer approximation algorithm}, +abstract = {Plant availability and operating uncertainties are critical considerations for the design and operation of chemical processes as they directly impact service level and economic performance. This paper proposes a two-stage stochastic programming GDP (Generalized Disjunctive Programming) model with reliability constraints to deal with both the exogenous and endogenous uncertainties in process synthesis, where the reliability model is incorporated into the flowsheet superstructure optimization. The proposed stochastic programming model anticipates the market uncertainties through scenarios for selecting the optimal flowsheet topology, equipment sizes and operating conditions, while considering the impact of selecting parallel units for improving plant availability. An improved logic-based outer approximation algorithm is applied to solve the resulting hybrid GDP model, which effectively avoids numerical difficulties with zero flows and provides high quality design solutions. The applicability of the proposed modeling framework and the efficiency of solution strategy are illustrated with two well-known conceptual design case studies: methanol synthesis process and toluene hydrodealkylation process. The model, which integrates reliability (endogenous uncertainty) and exogenous uncertainty, shows the best economic performance with the increasing operational flexibility and plant availability.} +} + +@article{MATOVU2022107856, +title = {Synthesis and optimization of multilevel refrigeration systems using generalized disjunctive programming}, +journal = {Computers \& Chemical Engineering}, +volume = {163}, +pages = {107856}, +year = {2022}, +issn = {0098-1354}, +doi = {https://doi.org/10.1016/j.compchemeng.2022.107856}, +url = {https://www.sciencedirect.com/science/article/pii/S0098135422001946}, +author = {Fahad Matovu and Shuhaimi Mahadzir and Rasel Ahmed and Nor Erniza Mohammad Rozali}, +keywords = {Multilevel refrigeration, GDP Modelling, Synthesis and optimization, Logic based branch and bound}, +abstract = {The synthesis and optimization of multilevel refrigeration systems is challenging because it’s a highly non-linear, multi-variable, and multi-modal problem. This work presents a novel approach to develop a complete generalized disjunctive programming model for the synthesis and optimization of multilevel refrigeration systems. The model is based on the application of mass, energy, and thermodynamic model equations and developed to optimize the total shaft work requirement of the system. The presented model is very systematic, easily manageable, and can be extendable to include all design features for refrigeration systems. The model is solvable using advanced solution algorithms such as the Logic-based branch and bound because of it’s disjunctive nature. Thus the solution is sought in reduced space and avoids the full scale as is the case with Mixed integer linear/non-linear models. The model solution yields optimal temperature/pressure levels, mass flow rates, and the shaft work consumption. A case study of the precooling cycle of the propane pre-cooled mixed refrigerant (C3MR) LNG process is used to test the proposed model. The model results are validated by simulation using Aspen Hysys software. Shaft work savings of up to 12.3% are obtained from the model results against the base case. Preliminary estimations show that cost savings of up to 2.55 MM$/y are realizable against the base case.} +} + +@article{kim2022generalized, + title={Generalized Disjunctive Programming-based, Mixed Integer Linear MPC Formulation for Optimal Operation of a District Energy System for PV Self-consumption and Grid Decarbonization: Field Implementation}, + author={Kim, Donghun}, + journal={International High Performance Buildings Conference}, + url={https://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1395\&context=ihpbc}, + year={2022} +} + +@article{ZHOU202269, +title = {Disjunctive programming model for the synthesis of property-based water supply network with multiple resources}, +journal = {Chemical Engineering Research and Design}, +volume = {187}, +pages = {69-83}, +year = {2022}, +issn = {0263-8762}, +doi = {https://doi.org/10.1016/j.cherd.2022.08.027}, +url = {https://www.sciencedirect.com/science/article/pii/S0263876222004397}, +author = {Wenjin Zhou and Kashif Iqbal and Xiaogang Sun and Dinghui Gan and Chun Deng and José María Ponce-Ortega and Chunmao Chen}, +keywords = {Mathematicalv programming: Water supply network: Multi-source: Desalination: Optimum design}, +abstract = {Industrial water supply networks can use multiple water resources (i.e., municipal water, surface water, municipal treated wastewater, groundwater, and seawater) with their respective pre-treatment technologies to meet the industrial water demand. The water quality of each water resource varies, and the associated pre-treatment technologies provide different technical and economic efficiencies that directly impact the overall cost of the water supply network. This paper proposed a superstructure-based mathematical modeling optimization to design the multi-resources industrial water supply network with optimal pre-treatment technologies. The established model includes the relative equations among different pre-treatment units and water sinks, flow rate constraints, property constraints, logic constraints, and cost constraints. These constraints are used to describe water treatment technologies selection through general disjunctive programming (GDP) and transform them into a mixed-integer nonlinear programming (MINLP) model for the problem solution. The minimum annualized cost of the water supply network is taken as an objective function. The optimization and comparison analysis of the coastal oil refinery water supply system is illustrated. The results show that an integrated water supply network of surface water and municipal treated wastewater has the lowest annualized cost of 12.3 million CNY/y. The cost is reduced by 7.44 million CNY/y compared to municipal water as the single water resource. This integrated water supply network saves freshwater resources, provides substantial economic gains, and encourages municipal treated wastewater reuse.} +} + +@article{belotti_liberti_lodi_nannicini_tramontani_2011, +title={Disjunctive inequalities: Applications and extensions}, +DOI={10.1002/9780470400531.eorms0537}, +journal={Wiley Encyclopedia of Operations Research and Management Science}, +author={Belotti, Pietro and Liberti, Leo and Lodi, Andrea and Nannicini,Giacomo and Tramontani,Andrea}, +year={2011} +} + +@article{jackson_sheridan_2005, +title={Clause form conversions for boolean circuits}, +DOI={10.1007/11527695\_15}, +journal={Theory and Applications of Satisfiability Testing}, +author={Jackson,Paul and Sheridan,Daniel}, +year={2005}, +pages={183–198} +} + +@article{dunning_huchette_lubin_2017, +title={Jump: A modeling language for mathematical optimization}, +volume={59}, +DOI={10.1137/15m1020575}, +number={2}, +journal={SIAM Review}, +author={Dunning, +Iain and Huchette, +Joey and Lubin, +Miles}, +year={2017}, +pages={295–320}, +URL = {https://doi.org/10.1137/15M1020575}, +eprint = {https://doi.org/10.1137/15M1020575}, +abstract = {JuMP is an open-source modeling language that allows users to express a wide range of optimization problems (linear, mixed-integer, quadratic, conic-quadratic, semidefinite, and nonlinear) in a high-level, algebraic syntax. JuMP takes advantage of advanced features of the Julia programming language to offer unique functionality while achieving performance on par with commercial modeling tools for standard tasks. In this work we will provide benchmarks, present the novel aspects of the implementation, and discuss how JuMP can be extended to new problem classes and composed with state-of-the-art tools for visualization and interactivity.} +} + +@article{DunningHuchetteLubin2017, +author = {Iain Dunning and Joey Huchette and Miles Lubin}, +title = {JuMP: A Modeling Language for Mathematical Optimization}, +journal = {SIAM Review}, +volume = {59}, +number = {2}, +url={https://jump.dev/JuMP.jl/stable/installation/#Supported-solvers}, +pages = {295-320}, +year = {2017}, +doi = {10.1137/15M1020575}, +} + +@Article{chen_grossmann_2019, +AUTHOR = {Chen, Qi and Grossmann, Ignacio}, +TITLE = {Modern Modeling Paradigms Using Generalized Disjunctive Programming}, +JOURNAL = {Processes}, +VOLUME = {7}, +YEAR = {2019}, +NUMBER = {11}, +ARTICLE-NUMBER = {839}, +URL = {https://www.mdpi.com/2227-9717/7/11/839}, +ISSN = {2227-9717}, +ABSTRACT = {Models involving decision variables in both discrete and continuous domain spaces are prevalent in process design. Generalized Disjunctive Programming (GDP) has emerged as a modeling framework to explicitly represent the relationship between algebraic descriptions and the logical structure of a design problem. However, fewer formulation examples exist for GDP compared to the traditional Mixed-Integer Nonlinear Programming (MINLP) modeling approach. In this paper, we propose the use of GDP as a modeling tool to organize model variants that arise due to characterization of different sections of an end-to-end process at different detail levels. We present an illustrative case study to demonstrate GDP usage for the generation of model variants catered to process synthesis integrated with purchasing and sales decisions in a techno-economic analysis. We also show how this GDP model can be used as part of a hierarchical decomposition scheme. These examples demonstrate how GDP can serve as a useful model abstraction layer for simplifying model development and upkeep, in addition to its traditional usage as a platform for advanced solution strategies.}, +DOI = {10.3390/pr7110839} +} + +@article{grossmann_trespalacios_2013, +author = {Grossmann, Ignacio E. and Trespalacios, Francisco}, +title = {Systematic modeling of discrete-continuous optimization models through generalized disjunctive programming}, +journal = {AIChE Journal}, +volume = {59}, +number = {9}, +pages = {3276-3295}, +keywords = {optimization, mixed-integer programming, logic-based optimization}, +doi = {https://doi.org/10.1002/aic.14088}, +url = {https://aiche.onlinelibrary.wiley.com/doi/abs/10.1002/aic.14088}, +eprint = {https://aiche.onlinelibrary.wiley.com/doi/pdf/10.1002/aic.14088}, +abstract = {Discrete-continuous optimization problems are commonly modeled in algebraic form as mixed-integer linear or nonlinear programming models. Since these models can be formulated in different ways, leading either to solvable or nonsolvable problems, there is a need for a systematic modeling framework that provides a fundamental understanding on the nature of these models. This work presents a modeling framework, generalized disjunctive programming (GDP), which represents problems in terms of Boolean and continuous variables, allowing the representation of constraints as algebraic equations, disjunctions and logic propositions. An overview is provided of major research results that have emerged in this area. Basic concepts are emphasized as well as the major classes of formulations that can be derived. These are illustrated with a number of examples in the area of process systems engineering. As will be shown, GDP provides a structured way for systematically deriving mixed-integer optimization models that exhibit strong continuous relaxations, which often translates into shorter computational times. © 2013 American Institute of Chemical Engineers AIChE J, 59: 3276–3295, 2013}, +year = {2013} +} + +@book{balas_2018, +place={Cham, Switzerland}, +title={Disjunctive programming}, +publisher={Springer}, +author={Balas, Egon}, +year={2018} +} + +@article{TRESPALACIOS201598, +title = {Improved Big-M reformulation for generalized disjunctive programs}, +journal = {Computers \& Chemical Engineering}, +volume = {76}, +pages = {98-103}, +year = {2015}, +issn = {0098-1354}, +doi = {https://doi.org/10.1016/j.compchemeng.2015.02.013}, +url = {https://www.sciencedirect.com/science/article/pii/S0098135415000587}, +author = {Francisco Trespalacios and Ignacio E. Grossmann}, +keywords = {Disjunctive programming, Mixed-integer programming, Big-M}, +abstract = {In this work, we present a new Big-M reformulation for Generalized Disjunctive Programs. Unlike the traditional Big-M reformulation that uses one M-parameter for each constraint, the new approach uses multiple M-parameters for each constraint. Each of these M-parameters is associated with each alternative in the disjunction to which the constraint belongs. In this way, the proposed MINLP reformulation is at least as tight as the traditional Big-M, and it does not require additional variables or constraints. We present the new Big-M, and analyze the strength in its continuous relaxation compared to that of the traditional Big-M. The new formulation is tested by solving several instances with an NLP-based branch and bound method. The results show that, in most cases, the new reformulation requires fewer nodes and less time to find the optimal solution.} +} + +@article{LEE20002125, +title = {New algorithms for nonlinear generalized disjunctive programming}, +journal = {Computers \& Chemical Engineering}, +volume = {24}, +number = {9}, +pages = {2125-2141}, +year = {2000}, +issn = {0098-1354}, +doi = {https://doi.org/10.1016/S0098-1354(00)00581-0}, +url = {https://www.sciencedirect.com/science/article/pii/S0098135400005810}, +author = {Sangbum Lee and Ignacio E. Grossmann}, +keywords = {Generalized disjunctive programming, Branch and bound, Mixed-integer nonlinear programming, Nonlinear convex hull}, +abstract = {Generalized disjunctive programming (GDP) has been introduced recently as an alternative model to MINLP for representing discrete/continuous optimization problems. The basic idea of GDP consists of representing discrete decisions in the continuous space with disjunctions, and constraints in the discrete space with logic propositions. In this paper, we describe a new convex nonlinear relaxation of the nonlinear GDP problem that relies on the use of the convex hull of each of the disjunctions involving nonlinear inequalities. The proposed nonlinear relaxation is used to reformulate the GDP problem as a tight MINLP problem, and for deriving a branch and bound method. Properties of these methods are given, and the relation of this method with the logic based outer-approximation method is established. Numerical results are presented for problems in jobshop scheduling, synthesis of process networks, optimal positioning of new products and batch process design.} +} + +@book{nemhauser_1999, +place={New York}, +title={Integer and combinatorial optimization}, +publisher={John Wiley and Sons}, +author={Nemhauser, George L.}, +year={1999} +} + +@article{grossmann_lee_2003, +title={Generalized Convex Disjunctive Programming: Nonlinear Convex Hull Relaxation}, +volume={26}, +DOI={10.1023/a:1025154322278}, +number={1}, +journal={Computational Optimization and Applications}, +author={Grossmann, Ignacio E. and Lee, Sangbum}, +year={2003}, +pages={83–100} +} + +@article{furman_sawaya_grossmann_2020, +title={A computationally useful algebraic representation of nonlinear disjunctive convex sets using the perspective function}, +volume={76}, +DOI={10.1007/s10589-020-00176-0}, +number={2}, +journal={Computational Optimization and Applications}, +author={Furman,Kevin C. and Sawaya, Nicolas W. and Grossmann, Ignacio E.}, +year={2020}, +pages={589–614} +} + +@article{10.1145/3511528.3511535, +author = {Gowda, Shashi and Ma, Yingbo and Cheli, Alessandro and Gw\'{o}\'{z}zd\'{z}, Maja and Shah, Viral B. and Edelman, Alan and Rackauckas, Christopher}, +title = {High-Performance Symbolic-Numerics via Multiple Dispatch}, +year = {2022}, +issue_date = {September 2021}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +volume = {55}, +number = {3}, +issn = {1932-2240}, +url = {https://doi.org/10.1145/3511528.3511535}, +doi = {10.1145/3511528.3511535}, +abstract = {As mathematical computing becomes more democratized in high-level languages, high-performance symbolic-numeric systems are necessary for domain scientists and engineers to get the best performance out of their machine without deep knowledge of code optimization. Naturally, users need different term types either to have different algebraic properties for them, or to use efficient data structures. To this end, we developed Symbolics.jl, an extendable symbolic system which uses dynamic multiple dispatch to change behavior depending on the domain needs. In this work we detail an underlying abstract term interface which allows for speed without sacrificing generality. We show that by formalizing a generic API on actions independent of implementation, we can retroactively add optimized data structures to our system without changing the pre-existing term rewriters. We showcase how this can be used to optimize term construction and give a 113x acceleration on general symbolic transformations. Further, we show that such a generic API allows for complementary term-rewriting implementations. Exploiting this feature, we demonstrate the ability to swap between classical term-rewriting simplifiers and e-graph-based term-rewriting simplifiers. We illustrate how this symbolic system improves numerical computing tasks by showcasing an e-graph ruleset which minimizes the number of CPU cycles during expression evaluation, and demonstrate how it simplifies a real-world reaction-network simulation to halve the runtime. Additionally, we show a reaction-diffusion partial differential equation solver which is able to be automatically converted into symbolic expressions via multiple dispatch tracing, which is subsequently accelerated and parallelized to give a 157x simulation speedup. Together, this presents Symbolics.jl as a next-generation symbolic-numeric computing environment geared towards modeling and simulation.}, +journal = {ACM Commun. Comput. Algebra}, +month = {jan}, +pages = {92–96}, +numpages = {5} +} + +@article{SAWAYA20051891, +title = {A cutting plane method for solving linear generalized disjunctive programming problems}, +journal = {Computers \& Chemical Engineering}, +volume = {29}, +number = {9}, +pages = {1891-1913}, +year = {2005}, +issn = {0098-1354}, +doi = {https://doi.org/10.1016/j.compchemeng.2005.04.004}, +url = {https://www.sciencedirect.com/science/article/pii/S0098135405000992}, +author = {Nicolas W. Sawaya and Ignacio E. Grossmann}, +keywords = {MIP, Disjunctive Programming, Cutting planes, Mixed integer linear programming, Strip-packing, Retrofit planning, Job-shop scheduling}, +abstract = {Raman and Grossmann [Raman, R., \& Grossmann, I.E. (1994). Modeling and computational techniques for logic based integer programming. Computers and Chemical Engineering, 18(7), 563–578] and Lee and Grossmann [Lee, S., \& Grossmann, I.E. (2000). New algorithms for nonlinear generalized disjunctive programming. Computers and Chemical Engineering, 24, 2125–2141] have developed a reformulation of Generalized Disjunctive Programming (GDP) problems that is based on determining the convex hull of each disjunction. Although the relaxation of the reformulated problem using this method will often produce a significantly tighter lower bound when compared with the traditional big-M reformulation, the limitation of this method is that the representation of the convex hull of every disjunction requires the introduction of new disaggregated variables and additional constraints that can greatly increase the size of the problem. In order to circumvent this issue, a cutting plane method that can be applied to linear GDP problems is proposed in this paper. The method relies on converting the GDP problem into an equivalent big-M reformulation that is successively strengthened by cuts generated from an LP or QP separation problem. The sequence of problems is repeatedly solved, either until the optimal integer solution is found, or else until there is no improvement within a specified tolerance, in which case one switches to a branch and bound method. The strip-packing, retrofit planning and zero-wait job-shop scheduling problems are presented as examples to illustrate the performance of the proposed cutting plane method.} +} diff --git a/paper/solnspace.png b/paper/solnspace.png new file mode 100644 index 0000000000000000000000000000000000000000..ec6a5593b28d9653f8e4614c59fec84b6bd9ee09 GIT binary patch literal 8537 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 I&MBb@0H|@+6aWAK literal 0 HcmV?d00001 From 928168317e899490d392fb1e98ab4d40409f9b02 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 10 Oct 2022 11:02:55 -0400 Subject: [PATCH 32/63] minor change --- paper/paper.pdf | Bin 348475 -> 348476 bytes paper/paper.tex | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index f440fefdb0acb0c7afd9b90e8b026460727c2bf3..cae782dfefb47951169dab547ae7591ff966a5c0 100644 GIT binary patch delta 5339 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 S6PFWF1tADH3MC~)PeuyC!XL%} diff --git a/paper/paper.tex b/paper/paper.tex index a7804b9..d7003cd 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -358,7 +358,7 @@ \subsection{Example} name = :YR # symbol for indicator variable ) \end{lstlisting} - \item Add the selection logical constraints using the \verb|choose!| function. The first constraint enforces that only one reactor is selected. The second constraint enforces that the separation system be defined only if the second reactor ($R_2$) is selected. This constraint is equivalent to $Y_{R_2} \Leftrightarrow Y_{S_1} \underline{\vee} Y_{S_2}$. + \item Add the selection logical constraints using the \verb|choose!| function. The first constraint enforces that only one reactor is selected. The second constraint enforces that the separation system be defined only if the second reactor ($R_2$) is selected. This constraint is equivalent to $Y_{R_2} \Leftrightarrow Y_{S_1} \ \underline{\vee} \ Y_{S_2}$. \begin{lstlisting}[language = Julia] choose!(1, YR[1], YR[2]; mode = :exactly) choose!(YR[2], YS[1], YS[2]; mode = :exactly) From 09639c95b17b94e2a3af5dcaaedbbd780439c70e Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 10 Oct 2022 14:43:46 -0400 Subject: [PATCH 33/63] update xor --- paper/paper.pdf | Bin 348476 -> 348550 bytes paper/paper.tex | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index cae782dfefb47951169dab547ae7591ff966a5c0..cb558175f857d14f7b44b9340888839d1e307e25 100644 GIT binary patch delta 14980 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 A$^dt%$>1e25Rf9}t@*sHtOs#@Jo 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 diff --git a/paper/paper.tex b/paper/paper.tex index d7003cd..b7b486a 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -358,7 +358,7 @@ \subsection{Example} name = :YR # symbol for indicator variable ) \end{lstlisting} - \item Add the selection logical constraints using the \verb|choose!| function. The first constraint enforces that only one reactor is selected. The second constraint enforces that the separation system be defined only if the second reactor ($R_2$) is selected. This constraint is equivalent to $Y_{R_2} \Leftrightarrow Y_{S_1} \ \underline{\vee} \ Y_{S_2}$. + \item Add the selection logical constraints using the \verb|choose!| function. The first constraint enforces that only one reactor is selected (i.e., $Y_{R_1} \ \underline{\vee} \ Y_{R_2}$). The second constraint enforces that the separation system be defined only if the second reactor ($R_2$) is selected. This constraint is equivalent to the proposition $Y_{R_2} \Leftrightarrow Y_{S_1} \ \underline{\vee} \ Y_{S_2}$. \begin{lstlisting}[language = Julia] choose!(1, YR[1], YR[2]; mode = :exactly) choose!(YR[2], YS[1], YS[2]; mode = :exactly) From 7e404e9949162dfb12ba3908729e3f4f343dfcaf Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 10 Oct 2022 15:23:22 -0400 Subject: [PATCH 34/63] clarify CP text --- paper/paper.pdf | Bin 348550 -> 348495 bytes paper/paper.tex | 16 +++++----------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index cb558175f857d14f7b44b9340888839d1e307e25..6f623e210051ceb53b7a63212d82481b05965b5a 100644 GIT binary patch delta 34473 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 delta 34532 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 ZU#E|3tPIPSCQ$_-2{bnfB_%~qMhc*OpUMCL diff --git a/paper/paper.tex b/paper/paper.tex index b7b486a..b52802f 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -98,7 +98,7 @@ \subsection{Linear GDP reformulation example} For visualization purposes and without loss of generality, the simple linear example is used to illustrate the Big-M and Hull reformulations. Figure \ref{fig:reform_figure} illustrates the feasible space of a simple linear GDP with one disjunction and two continuous variables, $x_1$ and $x_2$. The rectangle on the left is described by the constraints in the left disjunct, $Ax \leq b$. The rectangle on the right is defined by the constraints in the right disjunct, $Cx \le d$. The non-overlapping nature of the two regions is supported by the exclusive-OR relationship in Eq. \eqref{eq:simple_xor}. -\begin{figure}%[H] +\begin{figure} \centering \includegraphics[scale=0.5]{solnspace.png} \caption{Feasible solution space for example disjunction} @@ -182,7 +182,7 @@ \subsubsection{Propositional Logic} Alternate approaches exist for converting propositional logic statements into CNF, which involve preserving clause satisfiability rather than clause equivalence. These approaches prevent exponential size increase in clauses and yield logically consistent results \cite{jackson_sheridan_2005}. \subsubsection{Constraint Programming} -The constraint-programming selection requirements for constraints within $\Omega$ are reformulated as follows, +Selection constraints analogous to those used in Constraint Programming (CP) can also be included in $\Omega(Y)$. These constraints are of the form "allow exactly $n$ elements in a list of Boolean variables to be $true$." This type of constraint overcomes the limitations of the Boolean exclusive-OR ($\underline{\vee}$) operator, which can only enforce that an odd number of elements in a list of Booleans be $true$. Other CP-like constraints can be obtained by replacing "exactly" with "at most" or "at least". These constraints are reformulated as follows, \begin{align*} \text{exactly}(n, Y) & \ \ \text{becomes} \ \ n = \sum_i Y_i \\ @@ -190,8 +190,7 @@ \subsubsection{Constraint Programming} \text{atmost}(n, Y) & \ \ \text{becomes} \ \ n \geq \sum_i Y_i \end{align*} -Exclusive-OR constraints as the one given in Eq. \eqref{eq:simple_xor} become constraints of the form $exactly(1,Y)$. -\vskip 6pt +Exclusive-OR constraints as the one given in Eq. \eqref{eq:simple_xor} are more generally modeled as $exactly(1,\{Y_1,Y_2\})$. \subsection{Solution Techniques} @@ -201,12 +200,9 @@ \subsubsection{Disjunctive branch and bound} \subsubsection{Logic-based outer approximation} Logic-based outer approximation is another algorithm which mirrors a standard technique for solving mixed-integer nonlinear programming problems \cite{E.Grossmann2009}. This approach starts by identifying a set of reduced Non-Linear Programming (NLP) sub-problems obtained by fixing Boolean variables in the different disjunctions such that each disjunct is selected at least once across the set of sub-problems (set covering step). Each sub-problem is solved to obtain an upper bound and a feasible point, about which the objective and constraints of the original GDP are linearized, and solve the resulting problem (via direct reformulation to MILP or via disjunctive branch and bound) to find a lower bound. If the lower and upper bound solutions have not converged, the Boolean variables from the previous solution are fixed and the resulting NLP is solved to find a potentially tighter upper bound solution. The procedure is repeated until convergence is obtained. -\vskip 6pt \subsubsection{Hybrid cutting planes} The cutting planes method is an algorithm for tightening the relaxed solution space of a problem reformulated with Big-M before solving it by adding additional constraints which remove parts of the relaxed space that are disjoint from the actual feasible solution space. These "cuts" to the relaxed solution space are derived from the tighter, hull relaxation of the problem. This algorithm provides a middle-ground for the tradeoff between the complexity and corresponding computational expense of the Hull reformulation with the less tight Big-M reformulation. \cite{trespalacios_grossmann_2016}. -\vskip 6pt - \section{DisjunctiveProgramming.jl} The following section describes the features of the \verb|DisjunctiveProgramming.jl| package and illustrates its syntax with an example from the chemical processing industry for superstructure optimization. The use of nested disjunctions is also shown. @@ -290,6 +286,7 @@ \subsection{Example} \begin{enumerate} \item Create the JuMP model and define the model variables and global constraints (mass balances). + \begin{lstlisting}[language = Julia] using DisjunctiveProgramming, JuMP, HiGHS @@ -310,7 +307,6 @@ \subsection{Example} \end{lstlisting} \item Define the inner (nested) disjunction for the separation technologies in the superstructure using the \verb|@disjunction| macro. \begin{lstlisting}[language = Julia] -# define inner disjunction @disjunction(m, begin F[5] == β[:S1]*F[4] @@ -346,12 +342,10 @@ \subsection{Example} \end{lstlisting} \item Build the main disjunction using the constraint blocks defined in (3) and the \verb|add_disjunction!| function. Note that the reformulated constraints for the nested disjunction are stored in the \verb|.ext| dictionary of the model under the name of the disjunction (\verb|:YS| in this case). \begin{lstlisting}[language = Julia] -# add nested disjunction to model add_disjunction!(m, R1_con, - # general constraints in R2 disjunction ( - R2_con, + R2_con, #general constraints in R2 disj. m.ext[:YS] #reformulated inner disj. ), reformulation = :big_m, # reformulation type From e1c8a5a05ef5944a74373be246481aa952a1749d Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Mon, 10 Oct 2022 21:43:59 -0400 Subject: [PATCH 35/63] add note to CNF conversion --- paper/paper.pdf | Bin 348495 -> 348609 bytes paper/paper.tex | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index 6f623e210051ceb53b7a63212d82481b05965b5a..c91006c8377e5141d3ef2ebcc89b1aeec66830f0 100644 GIT binary patch delta 8334 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 QotKvjoq<74LmvIV0B6nWi2wiq delta 8222 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 Q1s@7BF*gb&B}Gq03JG+Avj6}9 diff --git a/paper/paper.tex b/paper/paper.tex index b52802f..0c84284 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -173,7 +173,7 @@ \subsubsection{Propositional Logic} (A \land B) \lor C & \text{ is replaced by } (A \lor C) \land (B \lor C) \end{align*} -Once the logic propositions are converted to CNF, each clause can be converted into an algebraic constraint with the following equivalence, +Once the logic propositions are converted to CNF, each clause can be converted into an algebraic constraint with the following equivalence (Note: any negated Boolean variables, $\neg Y_i$, are replaced with $1-y_i$ in the reformulation), \begin{align*} \bigvee_{i \in I} Y_i & \ \ \text{becomes} \ \ \sum_{i\in I} y_i \geq 1 \\ From 6065033e89322b0db45caded6b5020c191fb0296 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 11 Oct 2022 02:54:21 -0400 Subject: [PATCH 36/63] bug fixes: -don't disaggregate nested binaries -don't include nested binaries in big-M estimation --- src/bigm.jl | 2 +- src/hull.jl | 2 ++ src/logic.jl | 2 +- src/utils.jl | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bigm.jl b/src/bigm.jl index 14c72a5..3f8b494 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -49,7 +49,7 @@ function infer_bigm(constr::ConstraintRef) #create a map of variables to their bounds bounds_dict = :variable_bounds_dict in keys(constr.model.ext) ? constr.model.ext[:variable_bounds_dict] : Dict() bounds_map = Dict( - var => get_bounds(var, bounds_dict) + var => is_binary(var) ? (0,0) : get_bounds(var, bounds_dict) #NOTE: ignore binaries in tight-M calculation for var in get_constraint_variables(constr) ) #apply interval arithmetic diff --git a/src/hull.jl b/src/hull.jl index 3134761..ebc01e6 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -17,6 +17,7 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai bin_var_ref = constr.model[bin_var][i] #replace each variable with its disaggregated version for var_ref in get_constraint_variables(constr) + is_binary(var_ref) && continue #NOTE: binaries from nested disjunctions are not disaggregated and don't need to be swapped out #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) var_i_ref = variable_by_name(constr.model, var_name_i) @@ -81,6 +82,7 @@ function disaggregate_variables(m::Model, disj, bin_var) obj_dict = object_dictionary(m) bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument for var in var_refs + is_binary(var) && continue #NOTE: don't disaggregate binary variables from nested disjunctions #define UB and LB LB, UB = get_bounds(var, bounds_dict) #disaggregate variable and add bounding constraints diff --git a/src/logic.jl b/src/logic.jl index a4b7b89..e137dfa 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -10,7 +10,7 @@ function choose!(m::Model, n::Int, vars::VariableRef...; mode=:exactly, name="") add_selection!(m, n, vars...; mode, name) end function choose!(m::Model, var::VariableRef, vars::VariableRef...; mode=:exactly, name="") - @assert all(is_valid.(m, vcat(var,vars))) "Invalid VariableRefs passed." + @assert all(is_valid.(m, vcat(var,vars...))) "Invalid VariableRefs passed." add_selection!(m, var, vars...; mode, name) end function add_selection!(m::Model, n, vars::VariableRef...; mode::Symbol, name::String) diff --git a/src/utils.jl b/src/utils.jl index 1b89073..a108668 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -205,4 +205,5 @@ Check if a constraint or tuple of constraints is valid. """ is_constraint(constr::ConstraintRef) = is_valid(constr.model,constr) is_constraint(constr::AbstractArray{<:ConstraintRef}) = all(is_constraint.(constr)) -is_constraint(constr::Tuple) = all(is_constraint.(constr)) \ No newline at end of file +is_constraint(constr::Tuple) = all(is_constraint.(constr)) +is_constraint(constr::Nothing) = false \ No newline at end of file From 234801764985a1e5fc49b319769f8fe39907aeef Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Tue, 11 Oct 2022 13:43:58 -0700 Subject: [PATCH 37/63] bug fix when disjunct has single ConstraintRef Don't specify AbstractArray parameter type so m.ext can be used without splatting (nested disjunction) --- src/constraint.jl | 4 ++-- src/reformulate.jl | 16 ++++++++++++---- src/utils.jl | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/constraint.jl b/src/constraint.jl index 33f5841..3de112a 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -29,7 +29,7 @@ end function check_constraint!(m::Model, constr_j::Tuple, constr_list::Vector) map(constr_jk -> check_constraint!(m, constr_jk, constr_list), constr_j) end -function check_constraint!(m::Model, constr_j::AbstractArray{<:ConstraintRef}, constr_list::Vector) +function check_constraint!(m::Model, constr_j::AbstractArray, constr_list::Vector) push!(constr_list, check_constraint!(m, constr_j)) end function check_constraint!(m::Model, constr_j::ConstraintRef, constr_list::Vector) @@ -45,7 +45,7 @@ function check_constraint!(m::Model, constr::ConstraintRef) end return new_constr end -function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) +function check_constraint!(m::Model, constr::AbstractArray) @assert all(is_valid.(m, constr)) "$constr is not a valid constraint." if !any(is_interval.(constr)) && !any(is_equalto.(constr)) new_constr = constr diff --git a/src/reformulate.jl b/src/reformulate.jl index 3daad12..1bee86c 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -17,10 +17,18 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para if reformulation == :hull disaggregate_variables(m, disj, bin_var) end - reformulate_disjunction(disj, bin_var, reformulation, param) - push!(m.ext[bin_var], Iterators.flatten(filter(i -> is_constraint(i), disj))...) + _reformulate_disjunction(disj, bin_var, reformulation, param) + for item in filter(is_constraint, disj) + if item isa ConstraintRef + push!(m.ext[bin_var], item) + else + append!(m.ext[bin_var], item) + end + end + # NOTE: Next line files when a disjunct has a single ConstraintRef since iterate is not defined for this type + # push!(m.ext[bin_var], Iterators.flatten(filter(is_constraint, disj))...) end -function reformulate_disjunction(disj, bin_var, reformulation, param) +function _reformulate_disjunction(disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) reformulate_constraint(constr, bin_var, reformulation, param, i) end @@ -44,7 +52,7 @@ function reformulate_constraint(constr::Tuple, bin_var, reformulation, param, i) reformulate_constraint(constr_j, bin_var, reformulation, param, i, j) end end -function reformulate_constraint(constr::AbstractArray{<:ConstraintRef}, bin_var, reformulation, param, i, j = missing) +function reformulate_constraint(constr::AbstractArray, bin_var, reformulation, param, i, j = missing) for k in eachindex(constr) reformulate_constraint(constr[k], bin_var, reformulation, param, i, j, k) end diff --git a/src/utils.jl b/src/utils.jl index a108668..167851c 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -204,6 +204,6 @@ constraint_variables(constr::AbstractDict) = Iterators.flatten( Check if a constraint or tuple of constraints is valid. """ is_constraint(constr::ConstraintRef) = is_valid(constr.model,constr) -is_constraint(constr::AbstractArray{<:ConstraintRef}) = all(is_constraint.(constr)) +is_constraint(constr::AbstractArray) = all(is_constraint.(constr)) is_constraint(constr::Tuple) = all(is_constraint.(constr)) is_constraint(constr::Nothing) = false \ No newline at end of file From 6a858dac81edbf0a5feee8cbfed0e9618a4fa9e5 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Tue, 11 Oct 2022 13:44:19 -0700 Subject: [PATCH 38/63] up version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 222f04c..7b834fb 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.2" +version = "0.3.3" [deps] JuMP = "4076af6c-e467-56ae-b986-b466b2749572" From d5937eb87f7aea238dfcd77f8a280d0d7644da5c Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Tue, 11 Oct 2022 17:06:05 -0700 Subject: [PATCH 39/63] fix bugs to make more robust --- src/constraint.jl | 5 ++++- src/reformulate.jl | 16 +++++----------- src/utils.jl | 20 +++++++++++++++++++- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/constraint.jl b/src/constraint.jl index 3de112a..757c3b0 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -30,6 +30,9 @@ function check_constraint!(m::Model, constr_j::Tuple, constr_list::Vector) map(constr_jk -> check_constraint!(m, constr_jk, constr_list), constr_j) end function check_constraint!(m::Model, constr_j::AbstractArray, constr_list::Vector) + map(constr_jk -> check_constraint!(m, constr_jk, constr_list), constr_j) +end +function check_constraint!(m::Model, constr_j::AbstractArray{<:ConstraintRef}, constr_list::Vector) push!(constr_list, check_constraint!(m, constr_j)) end function check_constraint!(m::Model, constr_j::ConstraintRef, constr_list::Vector) @@ -45,7 +48,7 @@ function check_constraint!(m::Model, constr::ConstraintRef) end return new_constr end -function check_constraint!(m::Model, constr::AbstractArray) +function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) @assert all(is_valid.(m, constr)) "$constr is not a valid constraint." if !any(is_interval.(constr)) && !any(is_equalto.(constr)) new_constr = constr diff --git a/src/reformulate.jl b/src/reformulate.jl index 1bee86c..2c91613 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -17,21 +17,15 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para if reformulation == :hull disaggregate_variables(m, disj, bin_var) end - _reformulate_disjunction(disj, bin_var, reformulation, param) - for item in filter(is_constraint, disj) - if item isa ConstraintRef - push!(m.ext[bin_var], item) - else - append!(m.ext[bin_var], item) - end - end - # NOTE: Next line files when a disjunct has a single ConstraintRef since iterate is not defined for this type - # push!(m.ext[bin_var], Iterators.flatten(filter(is_constraint, disj))...) + reformulate_disjunction(m, disj, bin_var, reformulation, param) end -function _reformulate_disjunction(disj, bin_var, reformulation, param) +function reformulate_disjunction(m::Model, disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) reformulate_constraint(constr, bin_var, reformulation, param, i) end + update_constraint_list!(disj, m.ext[bin_var]) + # NOTE: Next line files when a disjunct has a single ConstraintRef since iterate is not defined for this type + # push!(m.ext[bin_var], Iterators.flatten(filter(is_constraint, disj))...) end """ diff --git a/src/utils.jl b/src/utils.jl index 167851c..880b243 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -206,4 +206,22 @@ Check if a constraint or tuple of constraints is valid. is_constraint(constr::ConstraintRef) = is_valid(constr.model,constr) is_constraint(constr::AbstractArray) = all(is_constraint.(constr)) is_constraint(constr::Tuple) = all(is_constraint.(constr)) -is_constraint(constr::Nothing) = false \ No newline at end of file +is_constraint(constr::Nothing) = false + +""" + update_constraint_list!(disj, list::Vector) + +Update constraint list (for disjunction constraints stored in .ext Dict) +""" +function update_constraint_list!(disj, list::Vector) + disj_constraints = filter(is_constraint, disj) + for item in disj_constraints + update_constraint_list!(item, list) + end +end +function update_constraint_list!(item::AbstractArray{<:ConstraintRef}, list::Vector) + for idx in eachindex(item) + update_constraint_list!(item[idx], list) + end +end +update_constraint_list!(item::ConstraintRef, list::Vector) = push!(list, item) \ No newline at end of file From 87592d404bde3b94b8f96f8a40a6e9f83620d713 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Wed, 12 Oct 2022 00:49:50 -0400 Subject: [PATCH 40/63] fix bug when only positive BigM is passed by user (make it negative) --- src/bigm.jl | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/bigm.jl b/src/bigm.jl index 3f8b494..dc2e946 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -11,13 +11,16 @@ Perform Big-M reformulaiton on a nonlinear constraint at index k of constraint j Perform Big-M reformulation on a constraint at index k of constraint j in disjunct i. """ -function big_m_reformulation!(constr::ConstraintRef, bin_var, M, i, j, k) - M = get_reform_param(M, i, j, k; constr) +function big_m_reformulation!(constr::ConstraintRef, bin_var, M0, i, j, k) + M = get_reform_param(M0, i, j, k; constr) + if !ismissing(M0) && constraint_object(constr).set isa MOI.GreaterThan && M > 0 + M = -M #if a positive bigM value was provided and constraint is GreaterThan, use the negative of this number (-M*(1-y) <= func) + end add_to_function_constant(constr, -M) - set_normalized_coefficient(constr, constr.model[bin_var][i] , M) + set_normalized_coefficient(constr, constr.model[bin_var][i], M) end -function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, k) - M = get_reform_param(M, i, j, k; constr) +function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M0, i, j, k) + M = get_reform_param(M0, i, j, k; constr) #create symbolic variables (using Symbolics.jl) for var_ref in get_constraint_variables(constr) symbolic_variable(var_ref) From 29faaf2a20b9957bb5ed4b75415aeac02a6229cc Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Wed, 12 Oct 2022 14:32:03 -0700 Subject: [PATCH 41/63] bug fix --- src/bigm.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bigm.jl b/src/bigm.jl index dc2e946..8e60bed 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -66,7 +66,7 @@ function infer_bigm(constr::ConstraintRef) end end elseif constr_set isa MOI.GreaterThan - M = -constr_st.lower + M = -constr_set.lower for (var,coeff) in constr_terms if coeff < 0 M += coeff*bounds_map[var][2] From 896293ec1ad2b1305af84a526b95f0996f5ad7eb Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 13 Oct 2022 03:37:22 -0400 Subject: [PATCH 42/63] fix bug: don't disaggregate boolean variables and disaggregated vars (from nested disjunctions) --- src/hull.jl | 30 ++++++++++++++++++++++-------- src/macros.jl | 6 ++++++ src/reformulate.jl | 5 ++++- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/hull.jl b/src/hull.jl index ebc01e6..1d768a0 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -13,14 +13,20 @@ Call the hull reformulation on a constraint at index k of constraint j in disjun """ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, bin_var, args...) where {T,V} #check constraint type + m = constr.model i = args[2] #get disjunct index - bin_var_ref = constr.model[bin_var][i] + bin_var_ref = m[bin_var][i] #replace each variable with its disaggregated version - for var_ref in get_constraint_variables(constr) + var_refs = setdiff( + get_constraint_variables(constr), + m.ext[:disaggregated_variables], + m.ext[:boolean_variables] + ) + for var_ref in var_refs is_binary(var_ref) && continue #NOTE: binaries from nested disjunctions are not disaggregated and don't need to be swapped out #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) - var_i_ref = variable_by_name(constr.model, var_name_i) + var_i_ref = variable_by_name(m, var_name_i) #check var_ref is present in the constraint coeff = normalized_coefficient(constr, var_ref) iszero(coeff) && continue #if not present, skip @@ -76,7 +82,11 @@ Disaggregate all variables in the model and tag them with the disjunction name. """ function disaggregate_variables(m::Model, disj, bin_var) #check that variables are bounded - var_refs = get_constraint_variables(disj) + var_refs = setdiff( + get_constraint_variables(disj), + m.ext[:disaggregated_variables], + m.ext[:boolean_variables] + ) @assert all((has_upper_bound.(var_refs) .&& has_lower_bound.(var_refs)) .|| is_binary.(var_refs)) "All variables must be bounded to perform the Hull reformulation." #reformulate variables obj_dict = object_dictionary(m) @@ -91,17 +101,21 @@ function disaggregate_variables(m::Model, disj, bin_var) var_name_i_str = name_disaggregated_variable(var,bin_var,i) var_name_i = Symbol(var_name_i_str) #create disaggregated variable - m[var_name_i] = add_disaggregated_variable(m, var, LB, UB, var_name_i_str) + var_i = add_disaggregated_variable(m, var, LB, UB, var_name_i_str) + push!( + m.ext[:disaggregated_variables], + var_i + ) #apply bounding constraints on disaggregated variable var_i_lb = "$(var_name_i)_lb" var_i_ub = "$(var_name_i)_ub" push!( m.ext[bin_var], - @constraint(m, LB * m[bin_var][i] .- m[var_name_i] .<= 0, base_name = var_i_lb), - @constraint(m, m[var_name_i] .- UB * m[bin_var][i] .<= 0, base_name = var_i_ub) + @constraint(m, LB * m[bin_var][i] .- var_i .<= 0, base_name = var_i_lb), + @constraint(m, var_i .- UB * m[bin_var][i] .<= 0, base_name = var_i_ub) ) #update disaggregated sum expression - add_to_expression!(sum_vars, 1, m[var_name_i]) + add_to_expression!(sum_vars, 1, var_i) end #sum disaggregated variables aggr_con = "$(var)_$(bin_var)_aggregation" diff --git a/src/macros.jl b/src/macros.jl index 8ba0320..e13ec93 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -96,6 +96,12 @@ function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var)) end + #record boolean variable + if !in(:boolean_variables, keys(m.ext)) + m.ext[:boolean_variables] = [] #store boolean variables to avoid disaggregating (nested disjunctions) + end + push!(m.ext[:boolean_variables], m[bin_var]) + #reformulate disjunction param = reformulation == :big_m ? M : ϵ reformulate_disjunction(m, disj...; bin_var, reformulation, param) diff --git a/src/reformulate.jl b/src/reformulate.jl index 2c91613..055ba2d 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -10,11 +10,14 @@ Reformulate disjunction. function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) #placeholder to store new constraints (reformulated) @assert !in(bin_var, keys(m.ext)) "$bin_var cannot be used as the indicator variable for the disjunction because it has already been used on another disjunction." - m.ext[bin_var] = [] + m.ext[bin_var] = [] #store constraints associated with indicator variable #check disj disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) #run reformulation if reformulation == :hull + if !in(:disaggregated_variables, keys(m.ext)) + m.ext[:disaggregated_variables] = [] #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) + end disaggregate_variables(m, disj, bin_var) end reformulate_disjunction(m, disj, bin_var, reformulation, param) From 8fc934f236b7fe5d64215e72e0d9e16126e8d4f7 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 13 Oct 2022 03:44:08 -0400 Subject: [PATCH 43/63] update version in paper --- paper/paper.pdf | Bin 348609 -> 348609 bytes paper/paper.tex | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index c91006c8377e5141d3ef2ebcc89b1aeec66830f0..cc61f28ef66d7450764e01e84fb3ac8a63ade672 100644 GIT binary patch delta 142 zcmX@OSoGjx(GB_6nLO1t7hX5!XW3w~K&5%bv-TCw7=f4xh?%#qc*fF`!e(q>Y+`IW z-O8I)7Rufp>&<$E(b>$@+1b*?!obzp!qU;n)XCJ)+|0?<+{M7qz{uRy#mG*h0Vao(8Sny zx|KJpER?-H)|>SRqqC)(shgRbxuK((laaBDqp6#dfwQBFk&z2f%*4su%ud0Ekdo~w IzO1n<0H8-K-2eap diff --git a/paper/paper.tex b/paper/paper.tex index 0c84284..b58cfb4 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -217,7 +217,7 @@ \subsection{Features} Nesting of disjunctions is also supported. \subsection{Example} -To illustrate the syntax in \verb|DisjunctiveProgramming.jl| (Version 0.3.2), consider the simple superstructure optimization problem for the chemical process given in Figure \ref{fig:superstruct_opt_diagram}. In this problem a chemical plant with two candidate reactor technologies ($R_1$ and $R_2$) must be designed. If the second reactor technology is chosen, a separation system must also be installed, for which two separation technologies ($S_1$ and $S_2$) are available. The GDP model seeks to maximize the product flow ($F_7$), while discounting for reactor ($C_R$) and separator ($C_S$) installation costs as given in \eqref{eq:example_obj}, subject to the nested disjunction in \eqref{eq:example_gdp} and the global mass balances in \eqref{eq:example_global} +To illustrate the syntax in \verb|DisjunctiveProgramming.jl| (Version 0.3.3), consider the simple superstructure optimization problem for the chemical process given in Figure \ref{fig:superstruct_opt_diagram}. In this problem a chemical plant with two candidate reactor technologies ($R_1$ and $R_2$) must be designed. If the second reactor technology is chosen, a separation system must also be installed, for which two separation technologies ($S_1$ and $S_2$) are available. The GDP model seeks to maximize the product flow ($F_7$), while discounting for reactor ($C_R$) and separator ($C_S$) installation costs as given in \eqref{eq:example_obj}, subject to the nested disjunction in \eqref{eq:example_gdp} and the global mass balances in \eqref{eq:example_global} - \eqref{eq:example_global1}. The system variables are the flows on each stream $i$ ($F_i$) and the installation costs, with their respective bounds given in \eqref{eq:example_var1} - \eqref{eq:example_var3}. The fixed cost and process yield parameters are given by $\gamma$ and $\beta$, respectively. \begin{figure} From 5a0321755022852bc5703a6024b7762fd4241add Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 3 Nov 2022 22:29:58 -0400 Subject: [PATCH 44/63] reduce allocaitons --- src/hull.jl | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/hull.jl b/src/hull.jl index 1d768a0..7fc5c69 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -17,13 +17,9 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai i = args[2] #get disjunct index bin_var_ref = m[bin_var][i] #replace each variable with its disaggregated version - var_refs = setdiff( - get_constraint_variables(constr), - m.ext[:disaggregated_variables], - m.ext[:boolean_variables] - ) - for var_ref in var_refs + for var_ref in get_constraint_variables(constr) is_binary(var_ref) && continue #NOTE: binaries from nested disjunctions are not disaggregated and don't need to be swapped out + var_ref in m.ext[:disaggregated_variables] && continue #disaggregated variables are not touched #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) var_i_ref = variable_by_name(m, var_name_i) @@ -82,17 +78,14 @@ Disaggregate all variables in the model and tag them with the disjunction name. """ function disaggregate_variables(m::Model, disj, bin_var) #check that variables are bounded - var_refs = setdiff( - get_constraint_variables(disj), - m.ext[:disaggregated_variables], - m.ext[:boolean_variables] - ) + var_refs = get_constraint_variables(disj) @assert all((has_upper_bound.(var_refs) .&& has_lower_bound.(var_refs)) .|| is_binary.(var_refs)) "All variables must be bounded to perform the Hull reformulation." #reformulate variables obj_dict = object_dictionary(m) bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument for var in var_refs is_binary(var) && continue #NOTE: don't disaggregate binary variables from nested disjunctions + var in m.ext[:disaggregated_variables] && continue #skip already disaggregated variables #define UB and LB LB, UB = get_bounds(var, bounds_dict) #disaggregate variable and add bounding constraints From a7bf32405e66fa40657a1864932cdcf04930761e Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 3 Nov 2022 22:30:27 -0400 Subject: [PATCH 45/63] attempt to improve speed using by storing disaggregated vars in a Set instead of vector --- src/reformulate.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reformulate.jl b/src/reformulate.jl index 055ba2d..2f6e54a 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -16,7 +16,7 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para #run reformulation if reformulation == :hull if !in(:disaggregated_variables, keys(m.ext)) - m.ext[:disaggregated_variables] = [] #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) + m.ext[:disaggregated_variables] = Set([]) #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) end disaggregate_variables(m, disj, bin_var) end From 2592c941ac5d04683698f6ce3809f515b4fb6004 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 3 Nov 2022 22:30:52 -0400 Subject: [PATCH 46/63] avoid stackoverflow error for large disjunctions --- src/utils.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils.jl b/src/utils.jl index 880b243..88fa765 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -202,6 +202,8 @@ constraint_variables(constr::AbstractDict) = Iterators.flatten( is_constraint(constr) Check if a constraint or tuple of constraints is valid. + +NOTE: NOT USED CURRENTLY """ is_constraint(constr::ConstraintRef) = is_valid(constr.model,constr) is_constraint(constr::AbstractArray) = all(is_constraint.(constr)) @@ -214,7 +216,7 @@ is_constraint(constr::Nothing) = false Update constraint list (for disjunction constraints stored in .ext Dict) """ function update_constraint_list!(disj, list::Vector) - disj_constraints = filter(is_constraint, disj) + disj_constraints = filter(!isnothing, disj) #remove any empty disjuncts for item in disj_constraints update_constraint_list!(item, list) end From 1b1b49e93de1b86b4959ae52a44dc8ba25ab4f6b Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 3 Nov 2022 22:31:09 -0400 Subject: [PATCH 47/63] update version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 7b834fb..ab92a59 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.3" +version = "0.3.4" [deps] JuMP = "4076af6c-e467-56ae-b986-b466b2749572" From 591d71c0020617125824d515fe1397562206193d Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Tue, 8 Nov 2022 16:31:30 -0800 Subject: [PATCH 48/63] reduce allocations: don't use variable_by_name, but store this in .ext Dict --- Project.toml | 2 +- src/hull.jl | 9 +++------ src/reformulate.jl | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Project.toml b/Project.toml index ab92a59..09d81cc 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.4" +version = "0.3.5" [deps] JuMP = "4076af6c-e467-56ae-b986-b466b2749572" diff --git a/src/hull.jl b/src/hull.jl index 7fc5c69..efa2445 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -19,7 +19,7 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai #replace each variable with its disaggregated version for var_ref in get_constraint_variables(constr) is_binary(var_ref) && continue #NOTE: binaries from nested disjunctions are not disaggregated and don't need to be swapped out - var_ref in m.ext[:disaggregated_variables] && continue #disaggregated variables are not touched + var_ref in values(m.ext[:disaggregated_variables]) && continue #disaggregated variables are not touched #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) var_i_ref = variable_by_name(m, var_name_i) @@ -85,7 +85,7 @@ function disaggregate_variables(m::Model, disj, bin_var) bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument for var in var_refs is_binary(var) && continue #NOTE: don't disaggregate binary variables from nested disjunctions - var in m.ext[:disaggregated_variables] && continue #skip already disaggregated variables + var in values(m.ext[:disaggregated_variables]) && continue #skip already disaggregated variables #define UB and LB LB, UB = get_bounds(var, bounds_dict) #disaggregate variable and add bounding constraints @@ -95,10 +95,7 @@ function disaggregate_variables(m::Model, disj, bin_var) var_name_i = Symbol(var_name_i_str) #create disaggregated variable var_i = add_disaggregated_variable(m, var, LB, UB, var_name_i_str) - push!( - m.ext[:disaggregated_variables], - var_i - ) + m.ext[:disaggregated_variables][var_name_i_str] = var_i #apply bounding constraints on disaggregated variable var_i_lb = "$(var_name_i)_lb" var_i_ub = "$(var_name_i)_ub" diff --git a/src/reformulate.jl b/src/reformulate.jl index 2f6e54a..80384be 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -16,7 +16,7 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para #run reformulation if reformulation == :hull if !in(:disaggregated_variables, keys(m.ext)) - m.ext[:disaggregated_variables] = Set([]) #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) + m.ext[:disaggregated_variables] = Dict{String,VariableRef}() #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) end disaggregate_variables(m, disj, bin_var) end From afd934a981d0ec10b05cdd4f607dcf27945666dc Mon Sep 17 00:00:00 2001 From: Shivank Joshi <89424061+shivankj11@users.noreply.github.com> Date: Fri, 23 Dec 2022 18:37:24 -0500 Subject: [PATCH 49/63] Reference updates Fixed doi's and one duplicate reference --- paper/paper.tex | 2 +- paper/ref.bib | 29 +++++++++++++++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/paper/paper.tex b/paper/paper.tex index b58cfb4..8a44530 100644 --- a/paper/paper.tex +++ b/paper/paper.tex @@ -27,7 +27,7 @@ \section{Introduction} \vskip 6pt Within the optimization community, there is a high volume of ongoing research that relies on GDP to formulate models for a variety of applications. Due to the combinatorial nature of system design problems, the GDP paradigm has been applied to the synthesis of complex processes and networks \cite{MATOVU2022107856, ZHOU202269}, the planning and optimal control of energy systems \cite{CHO2022841, kim2022generalized}, and the modeling of chemical synthesis under uncertainty \cite{CHEN2022107616}. These and numerous other applications of GDP illustrate the benefit of having a robust package for GDP that removes much of the overhead associated with developing and testing GDP models. Although packages with GDP capabilities exist for \verb|Pyomo| \cite{chen2022pyomo} and \verb|GAMS| \cite{vecchietti1999logmip}, having such a package available in Julia can greatly accelerate research in optimization, where packages like \verb|JuMP.jl| \cite{dunning_huchette_lubin_2017} are gaining significant traction. \vskip 6pt -This paper provides background on the GDP paradigm, and the techniques for reformulating and solving such models. It then presents the package \verb|DisjunctiveProgramming.jl| as an extension to \verb|JuMP.jl| for creating models for optimization that follow the GDP modeling paradigm and can be solved using the vast list of supported solvers \cite{DunningHuchetteLubin2017}. A case study demonstrates the use of the package for chemical process superstructure optimization. +This paper provides background on the GDP paradigm, and the techniques for reformulating and solving such models. It then presents the package \verb|DisjunctiveProgramming.jl| as an extension to \verb|JuMP.jl| for creating models for optimization that follow the GDP modeling paradigm and can be solved using the vast list of supported solvers \cite{dunning_huchette_lubin_2017}. A case study demonstrates the use of the package for chemical process superstructure optimization. \section{Generalized Disjunctive Programming} The GDP form of modeling is an abstraction that uses both algebraic and logical constraints to capture the fundamental rules governing a system. The two main reformulation strategies to transform GDP models into their equivalent MIP models are the Big-M reformulation \cite{nemhauser_1999, TRESPALACIOS201598} and the Hull reformulation \cite{LEE20002125}, the latter of which yields tighter models at the expense of larger model sizes \cite{grossmann_lee_2003}. diff --git a/paper/ref.bib b/paper/ref.bib index 1e86e9f..e8fbeed 100644 --- a/paper/ref.bib +++ b/paper/ref.bib @@ -4,6 +4,7 @@ @inproceedings{agarwal2010automating booktitle={International Symposium on Practical Aspects of Declarative Languages}, pages={134--148}, year={2010}, + doi="10.1007/978-3-642-11503-5\_12", organization={Springer} } @article{huangfu2018parallelizing, @@ -14,6 +15,7 @@ @article{huangfu2018parallelizing number={1}, pages={119--142}, year={2018}, + doi={10.1007/s12532-017-0130-5}, publisher={Springer} } @article{chen2022pyomo, @@ -34,6 +36,7 @@ @article{vecchietti1999logmip number={4-5}, pages={555--565}, year={1999}, + doi={10.1016/s0098-1354(98)00293-2}, publisher={Elsevier} } @article{trespalacios_grossmann_2016, @@ -49,7 +52,7 @@ @article{trespalacios_grossmann_2016 @Inbook{E.Grossmann2009, author="E. Grossmann, Ignacio", -title="Logic-based outer approximationLogic-Based Outer Approximation", +title="Logic-based outer approximation", bookTitle="Encyclopedia of Optimization", year="2009", publisher="Springer US", @@ -68,7 +71,7 @@ @article{NAVARROAMOROS201413 pages = {13-25}, year = {2014}, issn = {0098-1354}, -doi = {https://doi.org/10.1016/j.compchemeng.2014.03.014}, +doi = {10.1016/j.compchemeng.2014.03.014}, url = {https://www.sciencedirect.com/science/article/pii/S0098135414000957}, author = {Miguel A. Navarro-Amorós and Rubén Ruiz-Femenia and José A. Caballero}, keywords = {Process synthesis, Generalized Disjunctive Programming, Modular simulators, Logic-based optimization algorithm}, @@ -106,6 +109,7 @@ @article{hart2011pyomo number={3}, pages={219--260}, year={2011}, +doi={10.1007/s12532-011-0026-8}, publisher={Springer} } @@ -119,7 +123,7 @@ @incollection{CHO2022841 year = {2022}, booktitle = {32nd European Symposium on Computer Aided Process Engineering}, issn = {1570-7946}, -doi = {https://doi.org/10.1016/B978-0-323-95879-0.50141-7}, +doi = {10.1016/B978-0-323-95879-0.50141-7}, url = {https://www.sciencedirect.com/science/article/pii/B9780323958790501417}, author = {Seolhee Cho and Ignacio E. Grossmann}, keywords = {Reliability, Expansion Planning, Power systems, Optimization}, @@ -133,7 +137,7 @@ @article{CHEN2022107616 pages = {107616}, year = {2022}, issn = {0098-1354}, -doi = {https://doi.org/10.1016/j.compchemeng.2021.107616}, +doi = {10.1016/j.compchemeng.2021.107616}, url = {https://www.sciencedirect.com/science/article/pii/S009813542100394X}, author = {Ying Chen and Yixin Ye and Zhihong Yuan and Ignacio E. Grossmann and Bingzhen Chen}, keywords = {Reliability-based superstructure optimization, Stochastic programming, Endogenous and exogenous uncertainties, Logic-based outer approximation algorithm}, @@ -147,7 +151,7 @@ @article{MATOVU2022107856 pages = {107856}, year = {2022}, issn = {0098-1354}, -doi = {https://doi.org/10.1016/j.compchemeng.2022.107856}, +doi = {10.1016/j.compchemeng.2022.107856}, url = {https://www.sciencedirect.com/science/article/pii/S0098135422001946}, author = {Fahad Matovu and Shuhaimi Mahadzir and Rasel Ahmed and Nor Erniza Mohammad Rozali}, keywords = {Multilevel refrigeration, GDP Modelling, Synthesis and optimization, Logic based branch and bound}, @@ -169,7 +173,7 @@ @article{ZHOU202269 pages = {69-83}, year = {2022}, issn = {0263-8762}, -doi = {https://doi.org/10.1016/j.cherd.2022.08.027}, +doi = {10.1016/j.cherd.2022.08.027}, url = {https://www.sciencedirect.com/science/article/pii/S0263876222004397}, author = {Wenjin Zhou and Kashif Iqbal and Xiaogang Sun and Dinghui Gan and Chun Deng and José María Ponce-Ortega and Chunmao Chen}, keywords = {Mathematicalv programming: Water supply network: Multi-source: Desalination: Optimum design}, @@ -196,7 +200,6 @@ @article{jackson_sheridan_2005 @article{dunning_huchette_lubin_2017, title={Jump: A modeling language for mathematical optimization}, volume={59}, -DOI={10.1137/15m1020575}, number={2}, journal={SIAM Review}, author={Dunning, @@ -205,8 +208,7 @@ @article{dunning_huchette_lubin_2017 Miles}, year={2017}, pages={295–320}, -URL = {https://doi.org/10.1137/15M1020575}, -eprint = {https://doi.org/10.1137/15M1020575}, +doi = {10.1137/15M1020575}, abstract = {JuMP is an open-source modeling language that allows users to express a wide range of optimization problems (linear, mixed-integer, quadratic, conic-quadratic, semidefinite, and nonlinear) in a high-level, algebraic syntax. JuMP takes advantage of advanced features of the Julia programming language to offer unique functionality while achieving performance on par with commercial modeling tools for standard tasks. In this work we will provide benchmarks, present the novel aspects of the implementation, and discuss how JuMP can be extended to new problem classes and composed with state-of-the-art tools for visualization and interactivity.} } @@ -244,9 +246,8 @@ @article{grossmann_trespalacios_2013 number = {9}, pages = {3276-3295}, keywords = {optimization, mixed-integer programming, logic-based optimization}, -doi = {https://doi.org/10.1002/aic.14088}, +doi = {10.1002/aic.14088}, url = {https://aiche.onlinelibrary.wiley.com/doi/abs/10.1002/aic.14088}, -eprint = {https://aiche.onlinelibrary.wiley.com/doi/pdf/10.1002/aic.14088}, abstract = {Discrete-continuous optimization problems are commonly modeled in algebraic form as mixed-integer linear or nonlinear programming models. Since these models can be formulated in different ways, leading either to solvable or nonsolvable problems, there is a need for a systematic modeling framework that provides a fundamental understanding on the nature of these models. This work presents a modeling framework, generalized disjunctive programming (GDP), which represents problems in terms of Boolean and continuous variables, allowing the representation of constraints as algebraic equations, disjunctions and logic propositions. An overview is provided of major research results that have emerged in this area. Basic concepts are emphasized as well as the major classes of formulations that can be derived. These are illustrated with a number of examples in the area of process systems engineering. As will be shown, GDP provides a structured way for systematically deriving mixed-integer optimization models that exhibit strong continuous relaxations, which often translates into shorter computational times. © 2013 American Institute of Chemical Engineers AIChE J, 59: 3276–3295, 2013}, year = {2013} } @@ -266,7 +267,7 @@ @article{TRESPALACIOS201598 pages = {98-103}, year = {2015}, issn = {0098-1354}, -doi = {https://doi.org/10.1016/j.compchemeng.2015.02.013}, +doi = {10.1016/j.compchemeng.2015.02.013}, url = {https://www.sciencedirect.com/science/article/pii/S0098135415000587}, author = {Francisco Trespalacios and Ignacio E. Grossmann}, keywords = {Disjunctive programming, Mixed-integer programming, Big-M}, @@ -281,7 +282,7 @@ @article{LEE20002125 pages = {2125-2141}, year = {2000}, issn = {0098-1354}, -doi = {https://doi.org/10.1016/S0098-1354(00)00581-0}, +doi = {10.1016/S0098-1354(00)00581-0}, url = {https://www.sciencedirect.com/science/article/pii/S0098135400005810}, author = {Sangbum Lee and Ignacio E. Grossmann}, keywords = {Generalized disjunctive programming, Branch and bound, Mixed-integer nonlinear programming, Nonlinear convex hull}, @@ -345,7 +346,7 @@ @article{SAWAYA20051891 pages = {1891-1913}, year = {2005}, issn = {0098-1354}, -doi = {https://doi.org/10.1016/j.compchemeng.2005.04.004}, +doi = {10.1016/j.compchemeng.2005.04.004}, url = {https://www.sciencedirect.com/science/article/pii/S0098135405000992}, author = {Nicolas W. Sawaya and Ignacio E. Grossmann}, keywords = {MIP, Disjunctive Programming, Cutting planes, Mixed integer linear programming, Strip-packing, Retrofit planning, Job-shop scheduling}, From 919c05b421f8161570228db35a93d1284ebfd699 Mon Sep 17 00:00:00 2001 From: Hector Perez Date: Fri, 23 Dec 2022 22:34:34 -0500 Subject: [PATCH 50/63] Delete linear_constraint_tests.jl focus on the paper for now --- test/linear_constraint_tests.jl | 137 -------------------------------- 1 file changed, 137 deletions(-) delete mode 100644 test/linear_constraint_tests.jl diff --git a/test/linear_constraint_tests.jl b/test/linear_constraint_tests.jl deleted file mode 100644 index 2e40c5d..0000000 --- a/test/linear_constraint_tests.jl +++ /dev/null @@ -1,137 +0,0 @@ -using Test -using JuMP -using DisjunctiveProgramming -using Symbolics - -@testset "linear constraints" begin - - function minimal() - m = Model() - @variable(m, -1<=x<=10) - - @constraint(m, con1, x<=3) - @constraint(m, con2, 0<=x) - @constraint(m, con3, x<=9) - @constraint(m, con4, 5<=x) - - @disjunction(m,(con1,con2),con3,con4,reformulation=:CHR,name=:y) - - @test true - end - - function simple_example(reform) - m = Model() - @variable(m, -10<=x<=10) - @constraint(m, con1, x<=-1) - @constraint(m, con2, 1<=x) - - if (reform == :BMR) - @disjunction(m, con1, con2, reformulation=:BMR, name=:y) - elseif (reform == :CHR) - @disjunction(m, con1, con2, reformulation=:CHR, name=:y) - end - return m - end - - function robustness() - unreg = m -> unregister(m, :original_model_variables) - - function fresh_model() - m = Model() - @variable(m, -10<=x<=10) - @constraint(m, con1, x<=-1) - @constraint(m, con2, 1<=x) - return m, con1, con2 - end - - # not enough constraints - m = fresh_model()[1] - # @test_throws DomainError @disjunction(m, (con1, con2), reformulation=:BMR, name=:y) - unreg(m) - # @test_throws DomainError @disjunction(m, con1, reformulation=:BMR, name=:y) - - # Big-M reformulation without variable bounds defined - # should only work if user specifies M value - m = Model() - @variable(m, x) - @constraint(m, con1, x<=-1) - @constraint(m, con2, 1<=x) - @test @disjunction(m, con1, con2, reformulation=:BMR, name=:y, M=11) == nothing - unreg(m) - @test_throws ErrorException @disjunction(m, con1, con2, reformulation=:BMR, name=:y) - - # CHR reformulation without variable bounds defined should fail - m = Model() - @variable(m, x) - @constraint(m, con1, x<=-1) - @constraint(m, con2, 1<=x) - @test_throws AssertionError @disjunction(m, con1, con2, reformulation=:CHR, name=:y) - - # empty constraints on one side of disjunction - m, con1, con2 = fresh_model() - @test @disjunction(m, con1, nothing, reformulation=:BMR, name=:y) == nothing - m, con1, con2 = fresh_model() - @test @disjunction(m, nothing, con2, reformulation=:CHR, name=:z) == nothing - m, con1, con2 = fresh_model() - @test @disjunction(m, (con1, con2), nothing, reformulation=:BMR, name=:y) == nothing - - end - - function model_BMR_valid(m) - # Expecting to see following constraints: - # x <= -1 + 11 * (1 - y1) - # -x <= -1 + 11 * (1 - y2) - # y1 + y2 = 1 - # -10<=x<=10 - cons = (L -> all_constraints(m, L...)).(list_of_constraint_types(m)) - @test sum(length.(cons)) == 5 + 2 # add 2 for y1/y2 binary statements - - con_strings = replace.(constraints_string(REPLMode, m), "[" => "", - "]" => "", "+ y" => "+y", " y" => "* y", - "con1 :" => "", "con2 :" => "") - cons_actual = Meta.parse.(con_strings[1:5]) - cons_expected = [:(y1 + y2 == 1), :(x + 11 * y1 <= 10), - :(-x + 11 * y2 <= 10), :(x >= -10), :(x <= 10)] - matches = sum(map(i->isequal(i[1], i[2]), - Base.product(cons_expected, cons_actual))) - @test matches == length(cons_actual) - end - - function model_CHR_valid(m) - # Expecting to see following constraints: - # x_y1 <= -1 * y1 - # -x_y2 <= -1 * y2 - # y1 + y2 = 1 - # x = x_y1 + x_y2 - # -10 * y1 <= x_y1 <= 10 * y1 - # -10 * y2 <= x_y2 <= 10 * y2 - # -10 <= x <= 10 - # -10 <= x_y1 <= 10 - # -10 <= x_y2 <= 10 - cons = (L -> all_constraints(m, L...)).(list_of_constraint_types(m)) - @test sum(length.(cons)) == 14 + 2 # add 2 for y1/y2 binary statements - - con_strings = replace.(constraints_string(REPLMode, m), "[" => "", - "]" => "", "+ y" => "+y", " y" => "* y", - "con1 :" => "", "con2 :" => "") - println.(con_strings) - cons_expected = [:(y1 + y2 == 1), :(x - x_1 - x_2 == 0), :(x >= -10), - :(x_1 + y1 <= 0), :(-x_2 + y2 <= 0), :(x <= 10), - :(x_1 >= -10), :(x_1 <= 10), :(x_2 >= -10), :(x_2 <= 10), - :(-10 * y1 - x_1 <= 0), :(-10 * y1 + x_1 <= 0), - :(-10 * y2 - x_2 <= 0), :(-10 * y2 + x_2 <= 0)] - cons_actual = Meta.parse.(con_strings[1:14]) - matches = sum(map(i->isequal(i[1], i[2]), - Base.product(cons_expected, cons_actual))) - @test matches == length(cons_actual) - end - - robustness() - - m1 = simple_example(:BMR) - model_BMR_valid(m1) - - m2 = simple_example(:CHR) - model_CHR_valid(m2) - -end From bc193fbacc9620071b7cacb5b67eb6244726f422 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Fri, 30 Dec 2022 21:50:36 -0500 Subject: [PATCH 51/63] update docstring and kwarg types --- src/logic.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/logic.jl b/src/logic.jl index e137dfa..23f592d 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -1,15 +1,17 @@ """ - choose!(m::Model, n::Int, vars::VariableRef...; mode) + choose!(m::Model, n::Union{Int,VariableRef}, vars::VariableRef...; mode::Symbol=:exactly, name::String="") Add constraint to select n elements from the list of variables. Options for mode -are `:at_least`, `:at_most`, `:exactly`. +are `:at_least`, `:at_most`, `:exactly`. Alternately, if `n` is a Binary variable, +it becomes the RHS of the constraint. If `name` is provided, it will be converted +to a Symbol and stored in the object dictionary. """ -function choose!(m::Model, n::Int, vars::VariableRef...; mode=:exactly, name="") +function choose!(m::Model, n::Int, vars::VariableRef...; mode::Symbol=:exactly, name::String="") @assert length(vars) >= n "Not enough variables passed." @assert all(is_valid.(m, vars)) "Invalid VariableRefs passed." add_selection!(m, n, vars...; mode, name) end -function choose!(m::Model, var::VariableRef, vars::VariableRef...; mode=:exactly, name="") +function choose!(m::Model, var::VariableRef, vars::VariableRef...; mode::Symbol=:exactly, name::String="") @assert all(is_valid.(m, vcat(var,vars...))) "Invalid VariableRefs passed." add_selection!(m, var, vars...; mode, name) end From f1be88aa2dcba66369fedcbdcbe2c6dc564fdc32 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 3 Jan 2023 14:59:24 -0500 Subject: [PATCH 52/63] single disjunct constraints are allowed (always selected as long as choose at least 1 is used for the binaries) --- src/macros.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/macros.jl b/src/macros.jl index e13ec93..c8db126 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -85,7 +85,7 @@ Add disjunction and reformulate. function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e-6,name=missing) #run checks @assert reformulation in [:big_m, :hull] "Invalid reformulation method passed to keyword argument `:reformulation`. Valid options are :big_m (Big-M Reformulation) and :hull (Hull Reformulation)." - @assert length(disj) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." + # @assert length(disj) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." #create indicator variable bin_var = ismissing(name) ? Symbol("disj_",gensym()) : name From e1bfb33ac49a801d424018dc907f9da45b56309d Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 5 Jan 2023 10:26:11 -0500 Subject: [PATCH 53/63] speed up by using filter! and disag. vars. Dict --- src/hull.jl | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/hull.jl b/src/hull.jl index efa2445..e179700 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -16,13 +16,13 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai m = constr.model i = args[2] #get disjunct index bin_var_ref = m[bin_var][i] - #replace each variable with its disaggregated version - for var_ref in get_constraint_variables(constr) + #replace each variable with its disaggregated version (skip disaggregated vars) + for var_ref in filter!(!in(values(m.ext[:disaggregated_variables])), get_constraint_variables(constr))#setdiff(get_constraint_variables(constr), values(m.ext[:disaggregated_variables])) is_binary(var_ref) && continue #NOTE: binaries from nested disjunctions are not disaggregated and don't need to be swapped out - var_ref in values(m.ext[:disaggregated_variables]) && continue #disaggregated variables are not touched + # var_ref in values(m.ext[:disaggregated_variables]) && continue #disaggregated variables are not touched #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) - var_i_ref = variable_by_name(m, var_name_i) + var_i_ref = m.ext[:disaggregated_variables][var_name_i] #NOTE: currently containerized variables are disaggregated individually, which makes this work and does not require using variable_by_name(m, var_name_i) #check var_ref is present in the constraint coeff = normalized_coefficient(constr, var_ref) iszero(coeff) && continue #if not present, skip @@ -83,15 +83,15 @@ function disaggregate_variables(m::Model, disj, bin_var) #reformulate variables obj_dict = object_dictionary(m) bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument - for var in var_refs - is_binary(var) && continue #NOTE: don't disaggregate binary variables from nested disjunctions - var in values(m.ext[:disaggregated_variables]) && continue #skip already disaggregated variables + for var in filter!(!in(values(m.ext[:disaggregated_variables])), var_refs) #skip already disaggregated variables + is_binary(var) && continue #NOTE: don't disaggregate binary variables (comes up when nesting disjunctions) + # var in values(m.ext[:disaggregated_variables]) && continue #skip already disaggregated variables #define UB and LB LB, UB = get_bounds(var, bounds_dict) #disaggregate variable and add bounding constraints sum_vars = AffExpr(0) #initialize sum of disaggregated variables for i in eachindex(disj) - var_name_i_str = name_disaggregated_variable(var,bin_var,i) + var_name_i_str = name_disaggregated_variable(var, bin_var, i) var_name_i = Symbol(var_name_i_str) #create disaggregated variable var_i = add_disaggregated_variable(m, var, LB, UB, var_name_i_str) @@ -128,6 +128,9 @@ Disaggregate a variable block stored in an Array or DenseAxisArray. add_disaggregated_variable(m::Model, var::Containers.SparseAxisArray, LB, UB, base_name) Disaggregate a variable block stored in a SparseAxisArray. + +NOTE: Because of the way variables are currently disaggregated (a list is made of all associated VariableRefs in the disjunction), +only the first function is used (not the containered ones). """ function add_disaggregated_variable(m::Model, var::VariableRef, LB, UB, base_name) @variable( @@ -139,6 +142,9 @@ function add_disaggregated_variable(m::Model, var::VariableRef, LB, UB, base_nam base_name = base_name ) end +################################################################################################# +# NOT USED CURRENTLY +################################################################################################# function add_disaggregated_variable(m::Model, var::AbstractArray{VariableRef}, LB, UB, base_name) idxs = Iterators.product(axes(var)...) var_i_array = [ @@ -153,7 +159,8 @@ function add_disaggregated_variable(m::Model, var::Containers.SparseAxisArray, L idx => add_disaggregated_variable(m, var[idx], LB[idx], UB[idx], "$base_name[$(join(idx,","))]") for idx in idxs ) - return Containers.SparseAxisArray(var_i_dict) + return containerize(var, var_i_dict) end containerize(var::Array, arr) = arr -containerize(var::Containers.DenseAxisArray, arr) = Containers.DenseAxisArray(arr, axes(var)...) \ No newline at end of file +containerize(var::Containers.DenseAxisArray, arr) = Containers.DenseAxisArray(arr, axes(var)...) +containerize(var::Containers.SparseAxisArray, arr::Dict) = Containers.SparseAxisArray(var) \ No newline at end of file From 7b494967eaae89c2a39f7cf94373ce0523351813 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 5 Jan 2023 10:26:42 -0500 Subject: [PATCH 54/63] check that disjunction is not empty --- src/macros.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/macros.jl b/src/macros.jl index c8db126..be4ad3c 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -85,6 +85,7 @@ Add disjunction and reformulate. function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e-6,name=missing) #run checks @assert reformulation in [:big_m, :hull] "Invalid reformulation method passed to keyword argument `:reformulation`. Valid options are :big_m (Big-M Reformulation) and :hull (Hull Reformulation)." + @assert !all(isnothing.(disj)) "Must have at least 1 disjunct that is not `nothing`." # @assert length(disj) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." #create indicator variable From e56e480f61f4564225e5dbfa5244bbd7f23b8f7b Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 5 Jan 2023 10:27:01 -0500 Subject: [PATCH 55/63] clean up --- src/reformulate.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/reformulate.jl b/src/reformulate.jl index 80384be..8096bf2 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -12,7 +12,7 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para @assert !in(bin_var, keys(m.ext)) "$bin_var cannot be used as the indicator variable for the disjunction because it has already been used on another disjunction." m.ext[bin_var] = [] #store constraints associated with indicator variable #check disj - disj = [check_constraint!(m, constr) for constr in disj]#check_disjunction!(m, disj) + disj = [check_constraint!(m, constr) for constr in disj] #run reformulation if reformulation == :hull if !in(:disaggregated_variables, keys(m.ext)) @@ -27,8 +27,6 @@ function reformulate_disjunction(m::Model, disj, bin_var, reformulation, param) reformulate_constraint(constr, bin_var, reformulation, param, i) end update_constraint_list!(disj, m.ext[bin_var]) - # NOTE: Next line files when a disjunct has a single ConstraintRef since iterate is not defined for this type - # push!(m.ext[bin_var], Iterators.flatten(filter(is_constraint, disj))...) end """ From 694eb85067d3e62f0217bd2fbbbedc654de9adb6 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 5 Jan 2023 10:28:43 -0500 Subject: [PATCH 56/63] up version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 09d81cc..2fc6858 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.5" +version = "0.3.6" [deps] JuMP = "4076af6c-e467-56ae-b986-b466b2749572" From 098c8d381477f007631dcfdfd802de44f3d627af Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 10 Jan 2023 11:23:41 -0500 Subject: [PATCH 57/63] update notation: constraint added, not replaced --- src/bigm.jl | 2 +- src/constraint.jl | 4 ++-- src/hull.jl | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bigm.jl b/src/bigm.jl index 8e60bed..e701393 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -35,7 +35,7 @@ function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M0, i, j, gx = gx - M*(1-λ) #add bigM #update constraint - replace_constraint(constr, bin_var, gx, op, rhs) + add_reformulated_constraint(constr, bin_var, gx, op, rhs) end big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k) = big_m_reformulation(constr[k], bin_var, M, i, j, k) diff --git a/src/constraint.jl b/src/constraint.jl index 757c3b0..ff49fda 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -142,11 +142,11 @@ function parse_constraint(constr::ConstraintRef) end """ - replace_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) + add_reformulated_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) Replace nonlinear or quadratic constraint with its hull reformulation. """ -function replace_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) +function add_reformulated_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) #convert symbolic function to expression op = eval(op) expr = Base.remove_linenums!(build_function(op(sym_expr,rhs))).args[2].args[1] diff --git a/src/hull.jl b/src/hull.jl index e179700..be53383 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -66,7 +66,7 @@ function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) pers_func = substitute(pers_func, Dict(FSG1 => (1-ϵ)*λ+ϵ, FSG2 => ϵ*(1-λ))) pers_func = simplify(pers_func) - replace_constraint(constr, bin_var, pers_func, op, rhs) + add_reformulated_constraint(constr, bin_var, pers_func, op, rhs) end hull_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, eps, i, j, k) = hull_reformulation!(constr[k], bin_var, eps, i, j, k) From 4d0f337b5befe2a1d1550684d1c6aae015345940 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 10 Jan 2023 11:23:56 -0500 Subject: [PATCH 58/63] fix bug in how m.ext is updated --- src/reformulate.jl | 6 +++++- src/utils.jl | 30 +++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/reformulate.jl b/src/reformulate.jl index 8096bf2..3e6fc6d 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -26,7 +26,11 @@ function reformulate_disjunction(m::Model, disj, bin_var, reformulation, param) for (i,constr) in enumerate(disj) reformulate_constraint(constr, bin_var, reformulation, param, i) end - update_constraint_list!(disj, m.ext[bin_var]) + if reformulation == :big_m + update_constraint_list!(disj, m.ext[bin_var]) + elseif reformulation == :hull + update_constraint_list2!(disj, m.ext[bin_var]) + end end """ diff --git a/src/utils.jl b/src/utils.jl index 88fa765..ee78559 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -160,7 +160,7 @@ end function name_disaggregated_variable(var_ref, bin_var, i) var_name = name(var_ref) - var_name_i = "$(var_name)_$(bin_var)$i" + var_name_i = "$(var_name)_$(bin_var)[$i]" return var_name_i end @@ -213,7 +213,8 @@ is_constraint(constr::Nothing) = false """ update_constraint_list!(disj, list::Vector) -Update constraint list (for disjunction constraints stored in .ext Dict) +Update constraint list (for disjunction constraints stored in .ext Dict) for big-M reformulations. +NOTE: for big-M reformulations, nonlinear constraints are added separately to the .ext Dict with `add_reformulated_constraint`. """ function update_constraint_list!(disj, list::Vector) disj_constraints = filter(!isnothing, disj) #remove any empty disjuncts @@ -226,4 +227,27 @@ function update_constraint_list!(item::AbstractArray{<:ConstraintRef}, list::Vec update_constraint_list!(item[idx], list) end end -update_constraint_list!(item::ConstraintRef, list::Vector) = push!(list, item) \ No newline at end of file +update_constraint_list!(item::ConstraintRef, list::Vector) = push!(list, item) +update_constraint_list!(item::NonlinearConstraintRef, list::Vector) = nothing + +""" + update_constraint_list2!(disj, list::Vector) + +Update constraint list (for disjunction constraints stored in .ext Dict) for hull reformulations. +NOTE: for big-M reformulations, nonlinear/quadratic constraints are added separately to the .ext Dict with `add_reformulated_constraint`. +""" +function update_constraint_list2!(disj, list::Vector) + disj_constraints = filter(!isnothing, disj) #remove any empty disjuncts + for item in disj_constraints + update_constraint_list2!(item, list) + end +end +function update_constraint_list2!(item::AbstractArray{<:ConstraintRef}, list::Vector) + for idx in eachindex(item) + update_constraint_list2!(item[idx], list) + end +end +function update_constraint_list2!(item::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, list::Vector) where {T,V} + push!(list, item) +end +update_constraint_list2!(item::ConstraintRef, list::Vector) = nothing \ No newline at end of file From 7c1bf502982f12794627b71d03ba5466c2b8ca83 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 10 Jan 2023 17:34:23 -0500 Subject: [PATCH 59/63] return new NL constraints; change name split func --- src/constraint.jl | 11 +++++++---- src/utils.jl | 17 ++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/constraint.jl b/src/constraint.jl index ff49fda..40534cc 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -116,8 +116,8 @@ function _split_constraint(m::Model, constr::ConstraintRef, lb::Float64, ub::Flo if isempty(constr_name) constr_name = "[$constr]" end - lb_name = name_split_constraint(constr_name, :lb) - ub_name = name_split_constraint(constr_name, :ub) + lb_name = name_split(constr_name; new_index = :lb) + ub_name = name_split(constr_name; new_index = :ub) func = constraint_object(constr).func return [ @constraint(m, lb <= func, base_name = lb_name), @@ -154,7 +154,10 @@ function add_reformulated_constraint(constr::ConstraintRef, bin_var::Symbol, sym m = constr.model replace_JuMPvars!(expr, m) replace_operators!(expr) - #replace constraint with prespective function - push!(m.ext[bin_var], add_nonlinear_constraint(m, expr)) + #add new constraint and delete old one + new_constr = add_nonlinear_constraint(m, expr) + push!(m.ext[bin_var], new_constr) delete(m, constr) + + return new_constr end \ No newline at end of file diff --git a/src/utils.jl b/src/utils.jl index ee78559..938f8e6 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -160,19 +160,18 @@ end function name_disaggregated_variable(var_ref, bin_var, i) var_name = name(var_ref) - var_name_i = "$(var_name)_$(bin_var)[$i]" - - return var_name_i + return name_split(var_name; post = string(bin_var), new_index = i) end -function name_split_constraint(con_name, side) - #get disaggregated variable reference - if occursin("[", string(con_name)) - con_name = replace(string(con_name), "]" => ",$side]") +function name_split(str; post="", new_index) + #add side as the last index of str (variable or constraint name) + if occursin("[", str) + new_str = replace(str, "]" => ",$new_index]") + new_str_spl = split(new_str, "[") #NOTE: assumes that [ only occurs once in the string + return string(new_str_spl[1],post,"[",new_str_spl[end]) else - con_name = "$(con_name)[$side]" + return "$(str)$(post)[$new_index]" end - return con_name end function constraint_variables!( From ee34be8876c664813922ca2d4030f5b0cae98605 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Tue, 10 Jan 2023 17:35:00 -0500 Subject: [PATCH 60/63] track nested perspective functions to avoid issues --- src/hull.jl | 18 ++++++++++++------ src/reformulate.jl | 3 +++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/hull.jl b/src/hull.jl index be53383..82ed4df 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -16,9 +16,8 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai m = constr.model i = args[2] #get disjunct index bin_var_ref = m[bin_var][i] - #replace each variable with its disaggregated version (skip disaggregated vars) - for var_ref in filter!(!in(values(m.ext[:disaggregated_variables])), get_constraint_variables(constr))#setdiff(get_constraint_variables(constr), values(m.ext[:disaggregated_variables])) - is_binary(var_ref) && continue #NOTE: binaries from nested disjunctions are not disaggregated and don't need to be swapped out + #replace each variable with its disaggregated version (skip disaggregated vars and binaries) + for var_ref in filter!(v -> !in(v, values(m.ext[:disaggregated_variables])) && !is_binary(v), get_constraint_variables(constr))#setdiff(get_constraint_variables(constr), values(m.ext[:disaggregated_variables])) # var_ref in values(m.ext[:disaggregated_variables]) && continue #disaggregated variables are not touched #get disaggregated variable reference var_name_i = name_disaggregated_variable(var_ref, bin_var, i) @@ -36,11 +35,17 @@ function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.Constrai set_normalized_coefficient(constr, bin_var_ref, -rhs) #add binary variable (same as multiplying rhs constant by binary variable) end function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) + m = constr.model #get model + if constr in values(m.ext[:perspective_functions]) #if constraint nested and was already reformulated, doesn't need to be reformulated again + push!(m.ext[bin_var], constr) + return + end eps = get_reform_param(eps, i, j, k) #create symbolic variables (using Symbolics.jl) sym_vars = Dict( - symbolic_variable(var_ref) => symbolic_variable(name_disaggregated_variable(var_ref, bin_var, i)) - for var_ref in get_constraint_variables(constr) + symbolic_variable(var_ref) => + symbolic_variable(m.ext[:disaggregated_variables][name_disaggregated_variable(var_ref, bin_var, i)]) + for var_ref in filter!(v -> !in(v, values(m.ext[:disaggregated_variables])) && !is_binary(v), get_constraint_variables(constr)) ) ϵ = eps #epsilon parameter for perspective function (See Furman, Sawaya, Grossmann [2020] perspecive function) bin_var_sym = Symbol("$bin_var[$i]") @@ -66,7 +71,8 @@ function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) pers_func = substitute(pers_func, Dict(FSG1 => (1-ϵ)*λ+ϵ, FSG2 => ϵ*(1-λ))) pers_func = simplify(pers_func) - add_reformulated_constraint(constr, bin_var, pers_func, op, rhs) + constr_str = string(constr) + m.ext[:perspective_functions][constr_str] = add_reformulated_constraint(constr, bin_var, pers_func, op, rhs) end hull_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, eps, i, j, k) = hull_reformulation!(constr[k], bin_var, eps, i, j, k) diff --git a/src/reformulate.jl b/src/reformulate.jl index 3e6fc6d..f144ece 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -18,6 +18,9 @@ function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, para if !in(:disaggregated_variables, keys(m.ext)) m.ext[:disaggregated_variables] = Dict{String,VariableRef}() #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) end + if !in(:perspective_functions, keys(m.ext)) + m.ext[:perspective_functions] = Dict() #record previously added nonlinear perspective functions + end disaggregate_variables(m, disj, bin_var) end reformulate_disjunction(m, disj, bin_var, reformulation, param) From b11f39c59eb816042239d2d61191718ecf33c8f1 Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Sat, 21 Jan 2023 09:35:21 -0500 Subject: [PATCH 61/63] fix Interval arithmetic can't be applied to quadratic constraints to insert big M value #62 --- examples/ex1.jl | 4 ++-- examples/ex2.jl | 2 +- src/bigm.jl | 8 ++++---- src/utils.jl | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/ex1.jl b/examples/ex1.jl index 0412afc..9dfb167 100644 --- a/examples/ex1.jl +++ b/examples/ex1.jl @@ -19,8 +19,8 @@ print(m) # ┌ Warning: disj_y[2] : x in [5.0, 9.0] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. # Feasibility # Subject to -# XOR(disj_y) : y[1] + y[2] == 1.0 <- XOR constraint -# y[1] ∨ y[2] : y[1] + y[2] >= 1.0 <- reformulated logical proposition (name is the proposition) +# XOR : y[1] + y[2] == 1.0 <- XOR constraint +# prop : y[1] + y[2] >= 1.0 <- reformulated logical proposition (name is the proposition) # disj_y[1,lb] : -x + 5 y[1] <= 5.0 <- left-side of constraint in 1st disjunct (name is assigned to disj_y[1][lb]) # disj_y[1,ub] : x + 7 y[1] <= 10.0 <- right-side of constraint in 1st disjunct (name is assigned to disj_y[1][ub]) # disj_y[2,lb] : -x + 10 y[2] <= 5.0 <- left-side of constraint in 2nd disjunct (name is assigned to disj_y[2][lb]) diff --git a/examples/ex2.jl b/examples/ex2.jl index 992012b..bf840cb 100644 --- a/examples/ex2.jl +++ b/examples/ex2.jl @@ -20,7 +20,7 @@ print(m) # Feasibility # Subject to -# XOR(disj_y) : y[1] + y[2] == 1.0 <- XOR constraint +# XOR : y[1] + y[2] == 1.0 <- XOR constraint # con1[1,lb] : -x[1] + 5 y[1] <= 5.0 <- left-side of con1[1] # con1[1,ub] : x[1] + 7 y[1] <= 10.0 <- right-side of con1[1] # con1[2,lb] : -x[2] + 5 y[1] <= 5.0 <- left-side of con1[2] diff --git a/src/bigm.jl b/src/bigm.jl index e701393..42d7425 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -41,11 +41,11 @@ big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k big_m_reformulation(constr[k], bin_var, M, i, j, k) """ - infer_bigm(constr) + calculate_tight_M(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}) where {T,V} -Apply interval arithmetic on a constraint to infer the tightest Big-M value from the bounds on the constraint. +Apply interval arithmetic on a linear constraint to infer the tightest Big-M value from the bounds on the constraint. """ -function infer_bigm(constr::ConstraintRef) +function calculate_tight_M(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}) where {T,V} constr_obj = constraint_object(constr) constr_terms = constr_obj.func.terms constr_set = constr_obj.set @@ -78,4 +78,4 @@ function infer_bigm(constr::ConstraintRef) isinf(M) && error("M parameter for $constr cannot be infered due to lack of variable bounds.") return M end -infer_bigm(constr::NonlinearConstraintRef) = error("$constr is a nonlinear constraint and a tight Big-M parameter cannot be inferred via interval arithmetic.") \ No newline at end of file +calculate_tight_M(constr::ConstraintRef) = error("$constr is a nonlinear or quadratic constraint and a tight Big-M parameter cannot be inferred via interval arithmetic.") \ No newline at end of file diff --git a/src/utils.jl b/src/utils.jl index 938f8e6..54af519 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -15,7 +15,7 @@ get_indices(arr) = Iterators.product(axes(arr)...) Get M or ϵ parameter for reformulation. """ -get_reform_param(param::Missing, args...; constr) = infer_bigm(constr) #if param is missing, infer bigM (ϵ does not pass a kwarg) +get_reform_param(param::Missing, args...; constr) = calculate_tight_M(constr) #if param is missing, infer bigM (ϵ does not pass a kwarg) get_reform_param(param::Number, args...; kwargs...) = param #if param is a number return it get_reform_param(param::Union{Vector,Tuple}, idx::Int, args...; kwargs...) = #index param by next Integer arg (idx) get_reform_param(param[idx], args...; kwargs...) From 5b1554e3dd59470a85a0b3bea04036eaa4c58dac Mon Sep 17 00:00:00 2001 From: hdavid16 Date: Thu, 11 May 2023 20:47:24 -0400 Subject: [PATCH 62/63] fix #63 --- paper/paper.pdf | Bin 348609 -> 348876 bytes paper/paper.tex | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/paper/paper.pdf b/paper/paper.pdf index cc61f28ef66d7450764e01e84fb3ac8a63ade672..5a5d12ab4f18ade00a4ca775bc01e8dbf8a074a3 100644 GIT binary patch delta 36089 zcmZ6RQ#dys+$c(2llont5+`4n8lagc-oO?N2-dL=2)L;x z6_rJ+0xb~WuwN(~0w-TG$&WEi${O>@h$|sdDqs^#J!b)9mEj2kio7}cg$!_YF_^j~ z!4eL@1Y+yaJ|uV4blBa4;t6M^SzBJEgSc^q@`BjyJx+bi(iLs&#t zAz|8K$HF+^aqU`>Yj7h36fERm2;Bm;w0~CGC$@nG&-uBXCi2v_`Y7RyY(Vuj^bmY@ z9NVuAgP|muaf1&4LE9IV*+vB%K_abf$C{=VM!KUNrsj2ZCnk9a#QZ+FTMXP6M21NM zEpyr*aXxjsM={R2_9d~JE$@cYX5hl}OjE>%q!Yzq_fkK*!f7Z5pwaf1tWQIj{^`d5 zEqOwpYACLX4%|G{Prwmqg4W1ch9=Abhlq7liGtub9t^6(6SIZGBvvUA9+%Q@bG;#wW!Ar^l(pTgsrvZyV@x+GGblE|jrH`ecR{+`s zx=%X~+SQ^1RYG&kvJKnVu~lM+rrJ)VqJDF{*~q^Yk5+?*4Q=a4$&k4JJBr2I@`^hm zK1^jb${r*F^>KJ&jNKy#R>YHBO54xX#|a^csg2l#A}##_VBc0cM_&FBk4~OS!~{vY z

        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

      1. ').append(link).append(" ").append(cat) - searchresults.append(li) - }) - } - - function update_search_box() { - querystring = searchbox.val() - update_search(querystring) - } - - searchbox.keyup(_.debounce(update_search_box, 250)) - searchbox.change(update_search_box) - - search_query_uri = parseUri(window.location).queryKey["q"] - if(search_query_uri !== undefined) { - search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20')) - searchbox.val(search_query) - } - update_search_box(); - }) -}) - -}) diff --git a/docs/build/assets/themes/documenter-dark.css b/docs/build/assets/themes/documenter-dark.css deleted file mode 100644 index ea7d803..0000000 --- a/docs/build/assets/themes/documenter-dark.css +++ /dev/null @@ -1,7638 +0,0 @@ -@charset "UTF-8"; -/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ -@keyframes spinAround { - from { - transform: rotate(0deg); } - to { - transform: rotate(359deg); } } - -html.theme--documenter-dark .delete, html.theme--documenter-dark .modal-close, .is-unselectable, html.theme--documenter-dark .button, html.theme--documenter-dark .file, html.theme--documenter-dark .breadcrumb, html.theme--documenter-dark .pagination-previous, -html.theme--documenter-dark .pagination-next, -html.theme--documenter-dark .pagination-link, -html.theme--documenter-dark .pagination-ellipsis, html.theme--documenter-dark .tabs { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after, html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { - border: 3px solid transparent; - border-radius: 2px; - border-right: 0; - border-top: 0; - content: " "; - display: block; - height: 0.625em; - margin-top: -0.4375em; - pointer-events: none; - position: absolute; - top: 50%; - transform: rotate(-45deg); - transform-origin: center; - width: 0.625em; } - -html.theme--documenter-dark .box:not(:last-child), html.theme--documenter-dark .content:not(:last-child), html.theme--documenter-dark .notification:not(:last-child), html.theme--documenter-dark .progress:not(:last-child), html.theme--documenter-dark .table:not(:last-child), html.theme--documenter-dark .table-container:not(:last-child), html.theme--documenter-dark .title:not(:last-child), -html.theme--documenter-dark .subtitle:not(:last-child), html.theme--documenter-dark .block:not(:last-child), html.theme--documenter-dark .highlight:not(:last-child), html.theme--documenter-dark .breadcrumb:not(:last-child), html.theme--documenter-dark .level:not(:last-child), html.theme--documenter-dark .list:not(:last-child), html.theme--documenter-dark .message:not(:last-child), html.theme--documenter-dark .tabs:not(:last-child), html.theme--documenter-dark .admonition:not(:last-child) { - margin-bottom: 1.5rem; } - -html.theme--documenter-dark .delete, html.theme--documenter-dark .modal-close { - -moz-appearance: none; - -webkit-appearance: none; - background-color: rgba(10, 10, 10, 0.2); - border: none; - border-radius: 290486px; - cursor: pointer; - pointer-events: auto; - display: inline-block; - flex-grow: 0; - flex-shrink: 0; - font-size: 0; - height: 20px; - max-height: 20px; - max-width: 20px; - min-height: 20px; - min-width: 20px; - outline: none; - position: relative; - vertical-align: top; - width: 20px; } - html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::before, html.theme--documenter-dark .delete::after, html.theme--documenter-dark .modal-close::after { - background-color: white; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::before { - height: 2px; - width: 50%; } - html.theme--documenter-dark .delete::after, html.theme--documenter-dark .modal-close::after { - height: 50%; - width: 2px; } - html.theme--documenter-dark .delete:hover, html.theme--documenter-dark .modal-close:hover, html.theme--documenter-dark .delete:focus, html.theme--documenter-dark .modal-close:focus { - background-color: rgba(10, 10, 10, 0.3); } - html.theme--documenter-dark .delete:active, html.theme--documenter-dark .modal-close:active { - background-color: rgba(10, 10, 10, 0.4); } - html.theme--documenter-dark .is-small.delete, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.delete, html.theme--documenter-dark .is-small.modal-close, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.modal-close { - height: 16px; - max-height: 16px; - max-width: 16px; - min-height: 16px; - min-width: 16px; - width: 16px; } - html.theme--documenter-dark .is-medium.delete, html.theme--documenter-dark .is-medium.modal-close { - height: 24px; - max-height: 24px; - max-width: 24px; - min-height: 24px; - min-width: 24px; - width: 24px; } - html.theme--documenter-dark .is-large.delete, html.theme--documenter-dark .is-large.modal-close { - height: 32px; - max-height: 32px; - max-width: 32px; - min-height: 32px; - min-width: 32px; - width: 32px; } - -html.theme--documenter-dark .button.is-loading::after, html.theme--documenter-dark .loader, html.theme--documenter-dark .select.is-loading::after, html.theme--documenter-dark .control.is-loading::after { - animation: spinAround 500ms infinite linear; - border: 2px solid #dbdee0; - border-radius: 290486px; - border-right-color: transparent; - border-top-color: transparent; - content: ""; - display: block; - height: 1em; - position: relative; - width: 1em; } - -.is-overlay, html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, -html.theme--documenter-dark .image.is-square .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, -html.theme--documenter-dark .image.is-1by1 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, -html.theme--documenter-dark .image.is-5by4 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, -html.theme--documenter-dark .image.is-4by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, -html.theme--documenter-dark .image.is-3by2 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, -html.theme--documenter-dark .image.is-5by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, -html.theme--documenter-dark .image.is-16by9 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, -html.theme--documenter-dark .image.is-2by1 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, -html.theme--documenter-dark .image.is-3by1 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, -html.theme--documenter-dark .image.is-4by5 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, -html.theme--documenter-dark .image.is-3by4 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, -html.theme--documenter-dark .image.is-2by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, -html.theme--documenter-dark .image.is-3by5 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, -html.theme--documenter-dark .image.is-9by16 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, -html.theme--documenter-dark .image.is-1by2 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, -html.theme--documenter-dark .image.is-1by3 .has-ratio, -html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, html.theme--documenter-dark .modal, html.theme--documenter-dark .modal-background, html.theme--documenter-dark .hero-video { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; } - -html.theme--documenter-dark .button, html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea, html.theme--documenter-dark .select select, html.theme--documenter-dark .file-cta, -html.theme--documenter-dark .file-name, html.theme--documenter-dark .pagination-previous, -html.theme--documenter-dark .pagination-next, -html.theme--documenter-dark .pagination-link, -html.theme--documenter-dark .pagination-ellipsis { - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - border: 1px solid transparent; - border-radius: 0.4em; - box-shadow: none; - display: inline-flex; - font-size: 15px; - height: 2.25em; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(0.375em - 1px); - padding-left: calc(0.625em - 1px); - padding-right: calc(0.625em - 1px); - padding-top: calc(0.375em - 1px); - position: relative; - vertical-align: top; } - html.theme--documenter-dark .button:focus, html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .file-cta:focus, - html.theme--documenter-dark .file-name:focus, html.theme--documenter-dark .pagination-previous:focus, - html.theme--documenter-dark .pagination-next:focus, - html.theme--documenter-dark .pagination-link:focus, - html.theme--documenter-dark .pagination-ellipsis:focus, html.theme--documenter-dark .is-focused.button, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .is-focused.file-cta, - html.theme--documenter-dark .is-focused.file-name, html.theme--documenter-dark .is-focused.pagination-previous, - html.theme--documenter-dark .is-focused.pagination-next, - html.theme--documenter-dark .is-focused.pagination-link, - html.theme--documenter-dark .is-focused.pagination-ellipsis, html.theme--documenter-dark .button:active, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .file-cta:active, - html.theme--documenter-dark .file-name:active, html.theme--documenter-dark .pagination-previous:active, - html.theme--documenter-dark .pagination-next:active, - html.theme--documenter-dark .pagination-link:active, - html.theme--documenter-dark .pagination-ellipsis:active, html.theme--documenter-dark .is-active.button, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .select select.is-active, html.theme--documenter-dark .is-active.file-cta, - html.theme--documenter-dark .is-active.file-name, html.theme--documenter-dark .is-active.pagination-previous, - html.theme--documenter-dark .is-active.pagination-next, - html.theme--documenter-dark .is-active.pagination-link, - html.theme--documenter-dark .is-active.pagination-ellipsis { - outline: none; } - html.theme--documenter-dark .button[disabled], html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .select select[disabled], html.theme--documenter-dark .file-cta[disabled], - html.theme--documenter-dark .file-name[disabled], html.theme--documenter-dark .pagination-previous[disabled], - html.theme--documenter-dark .pagination-next[disabled], - html.theme--documenter-dark .pagination-link[disabled], - html.theme--documenter-dark .pagination-ellipsis[disabled], - fieldset[disabled] html.theme--documenter-dark .button, - html.theme--documenter-dark fieldset[disabled] .button, - fieldset[disabled] html.theme--documenter-dark .input, - html.theme--documenter-dark fieldset[disabled] .input, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, - fieldset[disabled] html.theme--documenter-dark .textarea, - html.theme--documenter-dark fieldset[disabled] .textarea, - fieldset[disabled] html.theme--documenter-dark .select select, - html.theme--documenter-dark .select fieldset[disabled] select, - fieldset[disabled] html.theme--documenter-dark .file-cta, - html.theme--documenter-dark fieldset[disabled] .file-cta, - fieldset[disabled] html.theme--documenter-dark .file-name, - html.theme--documenter-dark fieldset[disabled] .file-name, - fieldset[disabled] html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark fieldset[disabled] .pagination-previous, - fieldset[disabled] html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark fieldset[disabled] .pagination-next, - fieldset[disabled] html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark fieldset[disabled] .pagination-link, - fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis, - html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis { - cursor: not-allowed; } - -/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ -html, -body, -p, -ol, -ul, -li, -dl, -dt, -dd, -blockquote, -figure, -fieldset, -legend, -textarea, -pre, -iframe, -hr, -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0; - padding: 0; } - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: 100%; - font-weight: normal; } - -ul { - list-style: none; } - -button, -input, -select, -textarea { - margin: 0; } - -html { - box-sizing: border-box; } - -*, *::before, *::after { - box-sizing: inherit; } - -img, -embed, -iframe, -object, -video { - height: auto; - max-width: 100%; } - -audio { - max-width: 100%; } - -iframe { - border: 0; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -td, -th { - padding: 0; } - td:not([align]), - th:not([align]) { - text-align: left; } - -.is-clearfix::after { - clear: both; - content: " "; - display: table; } - -.is-pulled-left { - float: left !important; } - -.is-pulled-right { - float: right !important; } - -.is-clipped { - overflow: hidden !important; } - -.is-size-1 { - font-size: 3rem !important; } - -.is-size-2 { - font-size: 2.5rem !important; } - -.is-size-3 { - font-size: 2rem !important; } - -.is-size-4 { - font-size: 1.5rem !important; } - -.is-size-5 { - font-size: 1.25rem !important; } - -.is-size-6 { - font-size: 15px !important; } - -.is-size-7, html.theme--documenter-dark .docstring > section > a.docs-sourcelink { - font-size: 0.85em !important; } - -@media screen and (max-width: 768px) { - .is-size-1-mobile { - font-size: 3rem !important; } - .is-size-2-mobile { - font-size: 2.5rem !important; } - .is-size-3-mobile { - font-size: 2rem !important; } - .is-size-4-mobile { - font-size: 1.5rem !important; } - .is-size-5-mobile { - font-size: 1.25rem !important; } - .is-size-6-mobile { - font-size: 15px !important; } - .is-size-7-mobile { - font-size: 0.85em !important; } } - -@media screen and (min-width: 769px), print { - .is-size-1-tablet { - font-size: 3rem !important; } - .is-size-2-tablet { - font-size: 2.5rem !important; } - .is-size-3-tablet { - font-size: 2rem !important; } - .is-size-4-tablet { - font-size: 1.5rem !important; } - .is-size-5-tablet { - font-size: 1.25rem !important; } - .is-size-6-tablet { - font-size: 15px !important; } - .is-size-7-tablet { - font-size: 0.85em !important; } } - -@media screen and (max-width: 1055px) { - .is-size-1-touch { - font-size: 3rem !important; } - .is-size-2-touch { - font-size: 2.5rem !important; } - .is-size-3-touch { - font-size: 2rem !important; } - .is-size-4-touch { - font-size: 1.5rem !important; } - .is-size-5-touch { - font-size: 1.25rem !important; } - .is-size-6-touch { - font-size: 15px !important; } - .is-size-7-touch { - font-size: 0.85em !important; } } - -@media screen and (min-width: 1056px) { - .is-size-1-desktop { - font-size: 3rem !important; } - .is-size-2-desktop { - font-size: 2.5rem !important; } - .is-size-3-desktop { - font-size: 2rem !important; } - .is-size-4-desktop { - font-size: 1.5rem !important; } - .is-size-5-desktop { - font-size: 1.25rem !important; } - .is-size-6-desktop { - font-size: 15px !important; } - .is-size-7-desktop { - font-size: 0.85em !important; } } - -@media screen and (min-width: 1216px) { - .is-size-1-widescreen { - font-size: 3rem !important; } - .is-size-2-widescreen { - font-size: 2.5rem !important; } - .is-size-3-widescreen { - font-size: 2rem !important; } - .is-size-4-widescreen { - font-size: 1.5rem !important; } - .is-size-5-widescreen { - font-size: 1.25rem !important; } - .is-size-6-widescreen { - font-size: 15px !important; } - .is-size-7-widescreen { - font-size: 0.85em !important; } } - -@media screen and (min-width: 1408px) { - .is-size-1-fullhd { - font-size: 3rem !important; } - .is-size-2-fullhd { - font-size: 2.5rem !important; } - .is-size-3-fullhd { - font-size: 2rem !important; } - .is-size-4-fullhd { - font-size: 1.5rem !important; } - .is-size-5-fullhd { - font-size: 1.25rem !important; } - .is-size-6-fullhd { - font-size: 15px !important; } - .is-size-7-fullhd { - font-size: 0.85em !important; } } - -.has-text-centered { - text-align: center !important; } - -.has-text-justified { - text-align: justify !important; } - -.has-text-left { - text-align: left !important; } - -.has-text-right { - text-align: right !important; } - -@media screen and (max-width: 768px) { - .has-text-centered-mobile { - text-align: center !important; } } - -@media screen and (min-width: 769px), print { - .has-text-centered-tablet { - text-align: center !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-centered-tablet-only { - text-align: center !important; } } - -@media screen and (max-width: 1055px) { - .has-text-centered-touch { - text-align: center !important; } } - -@media screen and (min-width: 1056px) { - .has-text-centered-desktop { - text-align: center !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-centered-desktop-only { - text-align: center !important; } } - -@media screen and (min-width: 1216px) { - .has-text-centered-widescreen { - text-align: center !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-centered-widescreen-only { - text-align: center !important; } } - -@media screen and (min-width: 1408px) { - .has-text-centered-fullhd { - text-align: center !important; } } - -@media screen and (max-width: 768px) { - .has-text-justified-mobile { - text-align: justify !important; } } - -@media screen and (min-width: 769px), print { - .has-text-justified-tablet { - text-align: justify !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-justified-tablet-only { - text-align: justify !important; } } - -@media screen and (max-width: 1055px) { - .has-text-justified-touch { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) { - .has-text-justified-desktop { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-justified-desktop-only { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) { - .has-text-justified-widescreen { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-justified-widescreen-only { - text-align: justify !important; } } - -@media screen and (min-width: 1408px) { - .has-text-justified-fullhd { - text-align: justify !important; } } - -@media screen and (max-width: 768px) { - .has-text-left-mobile { - text-align: left !important; } } - -@media screen and (min-width: 769px), print { - .has-text-left-tablet { - text-align: left !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-left-tablet-only { - text-align: left !important; } } - -@media screen and (max-width: 1055px) { - .has-text-left-touch { - text-align: left !important; } } - -@media screen and (min-width: 1056px) { - .has-text-left-desktop { - text-align: left !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-left-desktop-only { - text-align: left !important; } } - -@media screen and (min-width: 1216px) { - .has-text-left-widescreen { - text-align: left !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-left-widescreen-only { - text-align: left !important; } } - -@media screen and (min-width: 1408px) { - .has-text-left-fullhd { - text-align: left !important; } } - -@media screen and (max-width: 768px) { - .has-text-right-mobile { - text-align: right !important; } } - -@media screen and (min-width: 769px), print { - .has-text-right-tablet { - text-align: right !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-right-tablet-only { - text-align: right !important; } } - -@media screen and (max-width: 1055px) { - .has-text-right-touch { - text-align: right !important; } } - -@media screen and (min-width: 1056px) { - .has-text-right-desktop { - text-align: right !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-right-desktop-only { - text-align: right !important; } } - -@media screen and (min-width: 1216px) { - .has-text-right-widescreen { - text-align: right !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-right-widescreen-only { - text-align: right !important; } } - -@media screen and (min-width: 1408px) { - .has-text-right-fullhd { - text-align: right !important; } } - -.is-capitalized { - text-transform: capitalize !important; } - -.is-lowercase { - text-transform: lowercase !important; } - -.is-uppercase { - text-transform: uppercase !important; } - -.is-italic { - font-style: italic !important; } - -.has-text-white { - color: white !important; } - -a.has-text-white:hover, a.has-text-white:focus { - color: #e6e6e6 !important; } - -.has-background-white { - background-color: white !important; } - -.has-text-black { - color: #0a0a0a !important; } - -a.has-text-black:hover, a.has-text-black:focus { - color: black !important; } - -.has-background-black { - background-color: #0a0a0a !important; } - -.has-text-light { - color: #ecf0f1 !important; } - -a.has-text-light:hover, a.has-text-light:focus { - color: #cfd9db !important; } - -.has-background-light { - background-color: #ecf0f1 !important; } - -.has-text-dark { - color: #282f2f !important; } - -a.has-text-dark:hover, a.has-text-dark:focus { - color: #111414 !important; } - -.has-background-dark { - background-color: #282f2f !important; } - -.has-text-primary { - color: #375a7f !important; } - -a.has-text-primary:hover, a.has-text-primary:focus { - color: #28415b !important; } - -.has-background-primary { - background-color: #375a7f !important; } - -.has-text-link { - color: #1abc9c !important; } - -a.has-text-link:hover, a.has-text-link:focus { - color: #148f77 !important; } - -.has-background-link { - background-color: #1abc9c !important; } - -.has-text-info { - color: #024c7d !important; } - -a.has-text-info:hover, a.has-text-info:focus { - color: #012d4b !important; } - -.has-background-info { - background-color: #024c7d !important; } - -.has-text-success { - color: #008438 !important; } - -a.has-text-success:hover, a.has-text-success:focus { - color: #005122 !important; } - -.has-background-success { - background-color: #008438 !important; } - -.has-text-warning { - color: #ad8100 !important; } - -a.has-text-warning:hover, a.has-text-warning:focus { - color: #7a5b00 !important; } - -.has-background-warning { - background-color: #ad8100 !important; } - -.has-text-danger { - color: #9e1b0d !important; } - -a.has-text-danger:hover, a.has-text-danger:focus { - color: #6f1309 !important; } - -.has-background-danger { - background-color: #9e1b0d !important; } - -.has-text-black-bis { - color: #121212 !important; } - -.has-background-black-bis { - background-color: #121212 !important; } - -.has-text-black-ter { - color: #242424 !important; } - -.has-background-black-ter { - background-color: #242424 !important; } - -.has-text-grey-darker { - color: #282f2f !important; } - -.has-background-grey-darker { - background-color: #282f2f !important; } - -.has-text-grey-dark { - color: #343c3d !important; } - -.has-background-grey-dark { - background-color: #343c3d !important; } - -.has-text-grey { - color: #5e6d6f !important; } - -.has-background-grey { - background-color: #5e6d6f !important; } - -.has-text-grey-light { - color: #8c9b9d !important; } - -.has-background-grey-light { - background-color: #8c9b9d !important; } - -.has-text-grey-lighter { - color: #dbdee0 !important; } - -.has-background-grey-lighter { - background-color: #dbdee0 !important; } - -.has-text-white-ter { - color: #ecf0f1 !important; } - -.has-background-white-ter { - background-color: #ecf0f1 !important; } - -.has-text-white-bis { - color: #fafafa !important; } - -.has-background-white-bis { - background-color: #fafafa !important; } - -.has-text-weight-light { - font-weight: 300 !important; } - -.has-text-weight-normal { - font-weight: 400 !important; } - -.has-text-weight-medium { - font-weight: 500 !important; } - -.has-text-weight-semibold { - font-weight: 600 !important; } - -.has-text-weight-bold { - font-weight: 700 !important; } - -.is-family-primary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-secondary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-sans-serif { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-monospace { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-family-code { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-block { - display: block !important; } - -@media screen and (max-width: 768px) { - .is-block-mobile { - display: block !important; } } - -@media screen and (min-width: 769px), print { - .is-block-tablet { - display: block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-block-tablet-only { - display: block !important; } } - -@media screen and (max-width: 1055px) { - .is-block-touch { - display: block !important; } } - -@media screen and (min-width: 1056px) { - .is-block-desktop { - display: block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-block-desktop-only { - display: block !important; } } - -@media screen and (min-width: 1216px) { - .is-block-widescreen { - display: block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-block-widescreen-only { - display: block !important; } } - -@media screen and (min-width: 1408px) { - .is-block-fullhd { - display: block !important; } } - -.is-flex { - display: flex !important; } - -@media screen and (max-width: 768px) { - .is-flex-mobile { - display: flex !important; } } - -@media screen and (min-width: 769px), print { - .is-flex-tablet { - display: flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-flex-tablet-only { - display: flex !important; } } - -@media screen and (max-width: 1055px) { - .is-flex-touch { - display: flex !important; } } - -@media screen and (min-width: 1056px) { - .is-flex-desktop { - display: flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-flex-desktop-only { - display: flex !important; } } - -@media screen and (min-width: 1216px) { - .is-flex-widescreen { - display: flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-flex-widescreen-only { - display: flex !important; } } - -@media screen and (min-width: 1408px) { - .is-flex-fullhd { - display: flex !important; } } - -.is-inline { - display: inline !important; } - -@media screen and (max-width: 768px) { - .is-inline-mobile { - display: inline !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-tablet { - display: inline !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-tablet-only { - display: inline !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-touch { - display: inline !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-desktop { - display: inline !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-desktop-only { - display: inline !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-widescreen { - display: inline !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-widescreen-only { - display: inline !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-fullhd { - display: inline !important; } } - -.is-inline-block { - display: inline-block !important; } - -@media screen and (max-width: 768px) { - .is-inline-block-mobile { - display: inline-block !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-block-tablet { - display: inline-block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-block-tablet-only { - display: inline-block !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-block-touch { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-block-desktop { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-block-desktop-only { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-block-widescreen { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-block-widescreen-only { - display: inline-block !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-block-fullhd { - display: inline-block !important; } } - -.is-inline-flex { - display: inline-flex !important; } - -@media screen and (max-width: 768px) { - .is-inline-flex-mobile { - display: inline-flex !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-flex-tablet { - display: inline-flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-flex-tablet-only { - display: inline-flex !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-flex-touch { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-flex-desktop { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-flex-desktop-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-flex-widescreen { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-flex-widescreen-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-flex-fullhd { - display: inline-flex !important; } } - -.is-hidden { - display: none !important; } - -.is-sr-only { - border: none !important; - clip: rect(0, 0, 0, 0) !important; - height: 0.01em !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - white-space: nowrap !important; - width: 0.01em !important; } - -@media screen and (max-width: 768px) { - .is-hidden-mobile { - display: none !important; } } - -@media screen and (min-width: 769px), print { - .is-hidden-tablet { - display: none !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-hidden-tablet-only { - display: none !important; } } - -@media screen and (max-width: 1055px) { - .is-hidden-touch { - display: none !important; } } - -@media screen and (min-width: 1056px) { - .is-hidden-desktop { - display: none !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-hidden-desktop-only { - display: none !important; } } - -@media screen and (min-width: 1216px) { - .is-hidden-widescreen { - display: none !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-hidden-widescreen-only { - display: none !important; } } - -@media screen and (min-width: 1408px) { - .is-hidden-fullhd { - display: none !important; } } - -.is-invisible { - visibility: hidden !important; } - -@media screen and (max-width: 768px) { - .is-invisible-mobile { - visibility: hidden !important; } } - -@media screen and (min-width: 769px), print { - .is-invisible-tablet { - visibility: hidden !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-invisible-tablet-only { - visibility: hidden !important; } } - -@media screen and (max-width: 1055px) { - .is-invisible-touch { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) { - .is-invisible-desktop { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-invisible-desktop-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) { - .is-invisible-widescreen { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-invisible-widescreen-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1408px) { - .is-invisible-fullhd { - visibility: hidden !important; } } - -.is-marginless { - margin: 0 !important; } - -.is-paddingless { - padding: 0 !important; } - -.is-radiusless { - border-radius: 0 !important; } - -.is-shadowless { - box-shadow: none !important; } - -.is-relative { - position: relative !important; } - -html.theme--documenter-dark { - /* This file contain the overall layout. - * - * The main container is
        that is identified by id #documenter. - */ - /* a11y-dark theme */ - /* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ - /* @author: ericwbailey */ - /* Comment */ - /* Red */ - /* Orange */ - /* Yellow */ - /* Green */ - /* Blue */ - /* Purple */ } - html.theme--documenter-dark html { - background-color: #1f2424; - font-size: 16px; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - min-width: 300px; - overflow-x: auto; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; } - html.theme--documenter-dark article, - html.theme--documenter-dark aside, - html.theme--documenter-dark figure, - html.theme--documenter-dark footer, - html.theme--documenter-dark header, - html.theme--documenter-dark hgroup, - html.theme--documenter-dark section { - display: block; } - html.theme--documenter-dark body, - html.theme--documenter-dark button, - html.theme--documenter-dark input, - html.theme--documenter-dark select, - html.theme--documenter-dark textarea { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } - html.theme--documenter-dark code, - html.theme--documenter-dark pre { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } - html.theme--documenter-dark body { - color: #fff; - font-size: 1em; - font-weight: 400; - line-height: 1.5; } - html.theme--documenter-dark a { - color: #1abc9c; - cursor: pointer; - text-decoration: none; } - html.theme--documenter-dark a strong { - color: currentColor; } - html.theme--documenter-dark a:hover { - color: #1dd2af; } - html.theme--documenter-dark code { - background-color: rgba(255, 255, 255, 0.05); - color: #e74c3c; - font-size: 0.875em; - font-weight: normal; - padding: 0.1em; } - html.theme--documenter-dark hr { - background-color: #282f2f; - border: none; - display: block; - height: 2px; - margin: 1.5rem 0; } - html.theme--documenter-dark img { - height: auto; - max-width: 100%; } - html.theme--documenter-dark input[type="checkbox"], - html.theme--documenter-dark input[type="radio"] { - vertical-align: baseline; } - html.theme--documenter-dark small { - font-size: 0.875em; } - html.theme--documenter-dark span { - font-style: inherit; - font-weight: inherit; } - html.theme--documenter-dark strong { - color: #f2f2f2; - font-weight: 700; } - html.theme--documenter-dark fieldset { - border: none; } - html.theme--documenter-dark pre { - -webkit-overflow-scrolling: touch; - background-color: #282f2f; - color: #fff; - font-size: 0.875em; - overflow-x: auto; - padding: 1.25rem 1.5rem; - white-space: pre; - word-wrap: normal; } - html.theme--documenter-dark pre code { - background-color: transparent; - color: currentColor; - font-size: 1em; - padding: 0; } - html.theme--documenter-dark table td, - html.theme--documenter-dark table th { - vertical-align: top; } - html.theme--documenter-dark table td:not([align]), - html.theme--documenter-dark table th:not([align]) { - text-align: left; } - html.theme--documenter-dark table th { - color: #f2f2f2; } - html.theme--documenter-dark .box { - background-color: #343c3d; - border-radius: 8px; - box-shadow: none; - color: #fff; - display: block; - padding: 1.25rem; } - html.theme--documenter-dark a.box:hover, html.theme--documenter-dark a.box:focus { - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #1abc9c; } - html.theme--documenter-dark a.box:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #1abc9c; } - html.theme--documenter-dark .button { - background-color: #282f2f; - border-color: #4c5759; - border-width: 1px; - color: #375a7f; - cursor: pointer; - justify-content: center; - padding-bottom: calc(0.375em - 1px); - padding-left: 0.75em; - padding-right: 0.75em; - padding-top: calc(0.375em - 1px); - text-align: center; - white-space: nowrap; } - html.theme--documenter-dark .button strong { - color: inherit; } - html.theme--documenter-dark .button .icon, html.theme--documenter-dark .button .icon.is-small, html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search > input.icon, html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search > input.icon, html.theme--documenter-dark .button .icon.is-medium, html.theme--documenter-dark .button .icon.is-large { - height: 1.5em; - width: 1.5em; } - html.theme--documenter-dark .button .icon:first-child:not(:last-child) { - margin-left: calc(-0.375em - 1px); - margin-right: 0.1875em; } - html.theme--documenter-dark .button .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: calc(-0.375em - 1px); } - html.theme--documenter-dark .button .icon:first-child:last-child { - margin-left: calc(-0.375em - 1px); - margin-right: calc(-0.375em - 1px); } - html.theme--documenter-dark .button:hover, html.theme--documenter-dark .button.is-hovered { - border-color: #8c9b9d; - color: #f2f2f2; } - html.theme--documenter-dark .button:focus, html.theme--documenter-dark .button.is-focused { - border-color: #8c9b9d; - color: #17a689; } - html.theme--documenter-dark .button:focus:not(:active), html.theme--documenter-dark .button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .button:active, html.theme--documenter-dark .button.is-active { - border-color: #343c3d; - color: #f2f2f2; } - html.theme--documenter-dark .button.is-text { - background-color: transparent; - border-color: transparent; - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .button.is-text:hover, html.theme--documenter-dark .button.is-text.is-hovered, html.theme--documenter-dark .button.is-text:focus, html.theme--documenter-dark .button.is-text.is-focused { - background-color: #282f2f; - color: #f2f2f2; } - html.theme--documenter-dark .button.is-text:active, html.theme--documenter-dark .button.is-text.is-active { - background-color: #1d2122; - color: #f2f2f2; } - html.theme--documenter-dark .button.is-text[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-text { - background-color: transparent; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-white { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white:hover, html.theme--documenter-dark .button.is-white.is-hovered { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white:focus, html.theme--documenter-dark .button.is-white.is-focused { - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white:focus:not(:active), html.theme--documenter-dark .button.is-white.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white.is-active { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white { - background-color: white; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-white.is-inverted { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .button.is-white.is-inverted:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-hovered { - background-color: black; } - html.theme--documenter-dark .button.is-white.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; - color: white; } - html.theme--documenter-dark .button.is-white.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - html.theme--documenter-dark .button.is-white.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-outlined.is-focused { - background-color: white; - border-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-white.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black:hover, html.theme--documenter-dark .button.is-black.is-hovered { - background-color: #040404; - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black:focus, html.theme--documenter-dark .button.is-black.is-focused { - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black:focus:not(:active), html.theme--documenter-dark .button.is-black.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black.is-active { - background-color: black; - border-color: transparent; - color: white; } - html.theme--documenter-dark .button.is-black[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-black.is-inverted { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-inverted:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-black.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted { - background-color: white; - border-color: transparent; - box-shadow: none; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-loading::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-outlined.is-focused { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - html.theme--documenter-dark .button.is-black.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - html.theme--documenter-dark .button.is-light { - background-color: #ecf0f1; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light:hover, html.theme--documenter-dark .button.is-light.is-hovered { - background-color: #e5eaec; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light:focus, html.theme--documenter-dark .button.is-light.is-focused { - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light:focus:not(:active), html.theme--documenter-dark .button.is-light.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } - html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light.is-active { - background-color: #dde4e6; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .button.is-light[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light { - background-color: #ecf0f1; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-light.is-inverted { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-inverted:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-hovered { - background-color: #1d2122; } - html.theme--documenter-dark .button.is-light.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted { - background-color: #282f2f; - border-color: transparent; - box-shadow: none; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-loading::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-light.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-outlined.is-focused { - background-color: #ecf0f1; - border-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-light.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - box-shadow: none; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #282f2f; - color: #282f2f; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #282f2f; - box-shadow: none; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark, html.theme--documenter-dark .content kbd.button { - background-color: #282f2f; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover, html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered { - background-color: #232829; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused { - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark:focus:not(:active), html.theme--documenter-dark .content kbd.button:focus:not(:active), html.theme--documenter-dark .button.is-dark.is-focused:not(:active), html.theme--documenter-dark .content kbd.button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } - html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active { - background-color: #1d2122; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark[disabled], html.theme--documenter-dark .content kbd.button[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark, - fieldset[disabled] html.theme--documenter-dark .content kbd.button { - background-color: #282f2f; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-dark.is-inverted, html.theme--documenter-dark .content kbd.button.is-inverted { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-inverted:hover, html.theme--documenter-dark .content kbd.button.is-inverted:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered { - background-color: #dde4e6; } - html.theme--documenter-dark .button.is-dark.is-inverted[disabled], html.theme--documenter-dark .content kbd.button.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted, - fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted { - background-color: #ecf0f1; - border-color: transparent; - box-shadow: none; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-loading::after, html.theme--documenter-dark .content kbd.button.is-loading::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-dark.is-outlined, html.theme--documenter-dark .content kbd.button.is-outlined { - background-color: transparent; - border-color: #282f2f; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-outlined.is-focused { - background-color: #282f2f; - border-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } - html.theme--documenter-dark .button.is-dark.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined, - fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined { - background-color: transparent; - border-color: #282f2f; - box-shadow: none; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #282f2f #282f2f !important; } - html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, - fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: #ecf0f1; - box-shadow: none; - color: #ecf0f1; } - html.theme--documenter-dark .button.is-primary, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { - background-color: #375a7f; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink { - background-color: #335476; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary:focus:not(:active), html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus:not(:active), html.theme--documenter-dark .button.is-primary.is-focused:not(:active), html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { - box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } - html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink { - background-color: #2f4d6d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-primary[disabled], html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { - background-color: #375a7f; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-primary.is-inverted, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-inverted:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-primary.is-inverted[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-loading.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-primary.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #375a7f; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { - background-color: #375a7f; - border-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { - border-color: transparent transparent #375a7f #375a7f !important; } - html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-primary.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #375a7f; - box-shadow: none; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { - background-color: #fff; - color: #375a7f; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #375a7f #375a7f !important; } - html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, - fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-link { - background-color: #1abc9c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link:hover, html.theme--documenter-dark .button.is-link.is-hovered { - background-color: #18b193; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link:focus, html.theme--documenter-dark .button.is-link.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link:focus:not(:active), html.theme--documenter-dark .button.is-link.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link.is-active { - background-color: #17a689; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-link[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link { - background-color: #1abc9c; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-link.is-inverted { - background-color: #fff; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-inverted:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-link.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-link.is-outlined { - background-color: transparent; - border-color: #1abc9c; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-outlined.is-focused { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after { - border-color: transparent transparent #1abc9c #1abc9c !important; } - html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-link.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined { - background-color: transparent; - border-color: #1abc9c; - box-shadow: none; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #1abc9c; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #1abc9c #1abc9c !important; } - html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-info { - background-color: #024c7d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info:hover, html.theme--documenter-dark .button.is-info.is-hovered { - background-color: #024470; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info:focus, html.theme--documenter-dark .button.is-info.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info:focus:not(:active), html.theme--documenter-dark .button.is-info.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } - html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info.is-active { - background-color: #023d64; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-info[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info { - background-color: #024c7d; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-info.is-inverted { - background-color: #fff; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-inverted:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-info.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-info.is-outlined { - background-color: transparent; - border-color: #024c7d; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-outlined.is-focused { - background-color: #024c7d; - border-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after { - border-color: transparent transparent #024c7d #024c7d !important; } - html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-info.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined { - background-color: transparent; - border-color: #024c7d; - box-shadow: none; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #024c7d; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #024c7d #024c7d !important; } - html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-success { - background-color: #008438; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success:hover, html.theme--documenter-dark .button.is-success.is-hovered { - background-color: #007733; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success:focus, html.theme--documenter-dark .button.is-success.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success:focus:not(:active), html.theme--documenter-dark .button.is-success.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } - html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success.is-active { - background-color: #006b2d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-success[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success { - background-color: #008438; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-success.is-inverted { - background-color: #fff; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-inverted:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-success.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-success.is-outlined { - background-color: transparent; - border-color: #008438; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-outlined.is-focused { - background-color: #008438; - border-color: #008438; - color: #fff; } - html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after { - border-color: transparent transparent #008438 #008438 !important; } - html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-success.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined { - background-color: transparent; - border-color: #008438; - box-shadow: none; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #008438; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #008438 #008438 !important; } - html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-warning { - background-color: #ad8100; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning:hover, html.theme--documenter-dark .button.is-warning.is-hovered { - background-color: #a07700; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning:focus, html.theme--documenter-dark .button.is-warning.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning:focus:not(:active), html.theme--documenter-dark .button.is-warning.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } - html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning.is-active { - background-color: #946e00; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-warning[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning { - background-color: #ad8100; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-warning.is-inverted { - background-color: #fff; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-inverted:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-warning.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ad8100; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-outlined.is-focused { - background-color: #ad8100; - border-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after { - border-color: transparent transparent #ad8100 #ad8100 !important; } - html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-warning.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ad8100; - box-shadow: none; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #ad8100; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ad8100 #ad8100 !important; } - html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-danger { - background-color: #9e1b0d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger:hover, html.theme--documenter-dark .button.is-danger.is-hovered { - background-color: #92190c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger:focus, html.theme--documenter-dark .button.is-danger.is-focused { - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger:focus:not(:active), html.theme--documenter-dark .button.is-danger.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } - html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger.is-active { - background-color: #86170b; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .button.is-danger[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger { - background-color: #9e1b0d; - border-color: transparent; - box-shadow: none; } - html.theme--documenter-dark .button.is-danger.is-inverted { - background-color: #fff; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-inverted:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered { - background-color: #f2f2f2; } - html.theme--documenter-dark .button.is-danger.is-inverted[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-danger.is-outlined { - background-color: transparent; - border-color: #9e1b0d; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-outlined.is-focused { - background-color: #9e1b0d; - border-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after { - border-color: transparent transparent #9e1b0d #9e1b0d !important; } - html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - html.theme--documenter-dark .button.is-danger.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined { - background-color: transparent; - border-color: #9e1b0d; - box-shadow: none; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #9e1b0d; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #9e1b0d #9e1b0d !important; } - html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled], - fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - html.theme--documenter-dark .button.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .button.is-normal { - font-size: 15px; } - html.theme--documenter-dark .button.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .button.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .button[disabled], - fieldset[disabled] html.theme--documenter-dark .button { - background-color: #8c9b9d; - border-color: #dbdee0; - box-shadow: none; - opacity: 0.5; } - html.theme--documenter-dark .button.is-fullwidth { - display: flex; - width: 100%; } - html.theme--documenter-dark .button.is-loading { - color: transparent !important; - pointer-events: none; } - html.theme--documenter-dark .button.is-loading::after { - position: absolute; - left: calc(50% - (1em / 2)); - top: calc(50% - (1em / 2)); - position: absolute !important; } - html.theme--documenter-dark .button.is-static { - background-color: #282f2f; - border-color: #5e6d6f; - color: #dbdee0; - box-shadow: none; - pointer-events: none; } - html.theme--documenter-dark .button.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - html.theme--documenter-dark .buttons { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - html.theme--documenter-dark .buttons .button { - margin-bottom: 0.5rem; } - html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth) { - margin-right: 0.5rem; } - html.theme--documenter-dark .buttons:last-child { - margin-bottom: -0.5rem; } - html.theme--documenter-dark .buttons:not(:last-child) { - margin-bottom: 1rem; } - html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { - font-size: 1.25rem; } - html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { - font-size: 1.5rem; } - html.theme--documenter-dark .buttons.has-addons .button:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .buttons.has-addons .button:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - margin-right: -1px; } - html.theme--documenter-dark .buttons.has-addons .button:last-child { - margin-right: 0; } - html.theme--documenter-dark .buttons.has-addons .button:hover, html.theme--documenter-dark .buttons.has-addons .button.is-hovered { - z-index: 2; } - html.theme--documenter-dark .buttons.has-addons .button:focus, html.theme--documenter-dark .buttons.has-addons .button.is-focused, html.theme--documenter-dark .buttons.has-addons .button:active, html.theme--documenter-dark .buttons.has-addons .button.is-active, html.theme--documenter-dark .buttons.has-addons .button.is-selected { - z-index: 3; } - html.theme--documenter-dark .buttons.has-addons .button:focus:hover, html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover, html.theme--documenter-dark .buttons.has-addons .button:active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover { - z-index: 4; } - html.theme--documenter-dark .buttons.has-addons .button.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .buttons.is-centered { - justify-content: center; } - html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - html.theme--documenter-dark .buttons.is-right { - justify-content: flex-end; } - html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - html.theme--documenter-dark .container { - flex-grow: 1; - margin: 0 auto; - position: relative; - width: auto; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .container { - max-width: 992px; } - html.theme--documenter-dark .container.is-fluid { - margin-left: 32px; - margin-right: 32px; - max-width: none; } } - @media screen and (max-width: 1215px) { - html.theme--documenter-dark .container.is-widescreen { - max-width: 1152px; } } - @media screen and (max-width: 1407px) { - html.theme--documenter-dark .container.is-fullhd { - max-width: 1344px; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .container { - max-width: 1152px; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .container { - max-width: 1344px; } } - html.theme--documenter-dark .content li + li { - margin-top: 0.25em; } - html.theme--documenter-dark .content p:not(:last-child), - html.theme--documenter-dark .content dl:not(:last-child), - html.theme--documenter-dark .content ol:not(:last-child), - html.theme--documenter-dark .content ul:not(:last-child), - html.theme--documenter-dark .content blockquote:not(:last-child), - html.theme--documenter-dark .content pre:not(:last-child), - html.theme--documenter-dark .content table:not(:last-child) { - margin-bottom: 1em; } - html.theme--documenter-dark .content h1, - html.theme--documenter-dark .content h2, - html.theme--documenter-dark .content h3, - html.theme--documenter-dark .content h4, - html.theme--documenter-dark .content h5, - html.theme--documenter-dark .content h6 { - color: #f2f2f2; - font-weight: 600; - line-height: 1.125; } - html.theme--documenter-dark .content h1 { - font-size: 2em; - margin-bottom: 0.5em; } - html.theme--documenter-dark .content h1:not(:first-child) { - margin-top: 1em; } - html.theme--documenter-dark .content h2 { - font-size: 1.75em; - margin-bottom: 0.5714em; } - html.theme--documenter-dark .content h2:not(:first-child) { - margin-top: 1.1428em; } - html.theme--documenter-dark .content h3 { - font-size: 1.5em; - margin-bottom: 0.6666em; } - html.theme--documenter-dark .content h3:not(:first-child) { - margin-top: 1.3333em; } - html.theme--documenter-dark .content h4 { - font-size: 1.25em; - margin-bottom: 0.8em; } - html.theme--documenter-dark .content h5 { - font-size: 1.125em; - margin-bottom: 0.8888em; } - html.theme--documenter-dark .content h6 { - font-size: 1em; - margin-bottom: 1em; } - html.theme--documenter-dark .content blockquote { - background-color: #282f2f; - border-left: 5px solid #5e6d6f; - padding: 1.25em 1.5em; } - html.theme--documenter-dark .content ol { - list-style-position: outside; - margin-left: 2em; - margin-top: 1em; } - html.theme--documenter-dark .content ol:not([type]) { - list-style-type: decimal; } - html.theme--documenter-dark .content ol:not([type]).is-lower-alpha { - list-style-type: lower-alpha; } - html.theme--documenter-dark .content ol:not([type]).is-lower-roman { - list-style-type: lower-roman; } - html.theme--documenter-dark .content ol:not([type]).is-upper-alpha { - list-style-type: upper-alpha; } - html.theme--documenter-dark .content ol:not([type]).is-upper-roman { - list-style-type: upper-roman; } - html.theme--documenter-dark .content ul { - list-style: disc outside; - margin-left: 2em; - margin-top: 1em; } - html.theme--documenter-dark .content ul ul { - list-style-type: circle; - margin-top: 0.5em; } - html.theme--documenter-dark .content ul ul ul { - list-style-type: square; } - html.theme--documenter-dark .content dd { - margin-left: 2em; } - html.theme--documenter-dark .content figure { - margin-left: 2em; - margin-right: 2em; - text-align: center; } - html.theme--documenter-dark .content figure:not(:first-child) { - margin-top: 2em; } - html.theme--documenter-dark .content figure:not(:last-child) { - margin-bottom: 2em; } - html.theme--documenter-dark .content figure img { - display: inline-block; } - html.theme--documenter-dark .content figure figcaption { - font-style: italic; } - html.theme--documenter-dark .content pre { - -webkit-overflow-scrolling: touch; - overflow-x: auto; - padding: 0.7rem 0.5rem; - white-space: pre; - word-wrap: normal; } - html.theme--documenter-dark .content sup, - html.theme--documenter-dark .content sub { - font-size: 75%; } - html.theme--documenter-dark .content table { - width: 100%; } - html.theme--documenter-dark .content table td, - html.theme--documenter-dark .content table th { - border: 1px solid #5e6d6f; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - html.theme--documenter-dark .content table th { - color: #f2f2f2; } - html.theme--documenter-dark .content table th:not([align]) { - text-align: left; } - html.theme--documenter-dark .content table thead td, - html.theme--documenter-dark .content table thead th { - border-width: 0 0 2px; - color: #f2f2f2; } - html.theme--documenter-dark .content table tfoot td, - html.theme--documenter-dark .content table tfoot th { - border-width: 2px 0 0; - color: #f2f2f2; } - html.theme--documenter-dark .content table tbody tr:last-child td, - html.theme--documenter-dark .content table tbody tr:last-child th { - border-bottom-width: 0; } - html.theme--documenter-dark .content .tabs li + li { - margin-top: 0; } - html.theme--documenter-dark .content.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.content { - font-size: 0.85em; } - html.theme--documenter-dark .content.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .content.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .icon { - align-items: center; - display: inline-flex; - justify-content: center; - height: 1.5rem; - width: 1.5rem; } - html.theme--documenter-dark .icon.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.icon { - height: 1rem; - width: 1rem; } - html.theme--documenter-dark .icon.is-medium { - height: 2rem; - width: 2rem; } - html.theme--documenter-dark .icon.is-large { - height: 3rem; - width: 3rem; } - html.theme--documenter-dark .image, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { - display: block; - position: relative; } - html.theme--documenter-dark .image img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img { - display: block; - height: auto; - width: 100%; } - html.theme--documenter-dark .image img.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img.is-rounded { - border-radius: 290486px; } - html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, - html.theme--documenter-dark .image.is-square .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, - html.theme--documenter-dark .image.is-1by1 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, - html.theme--documenter-dark .image.is-5by4 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, - html.theme--documenter-dark .image.is-4by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, - html.theme--documenter-dark .image.is-3by2 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, - html.theme--documenter-dark .image.is-5by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, - html.theme--documenter-dark .image.is-16by9 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, - html.theme--documenter-dark .image.is-2by1 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, - html.theme--documenter-dark .image.is-3by1 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, - html.theme--documenter-dark .image.is-4by5 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, - html.theme--documenter-dark .image.is-3by4 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, - html.theme--documenter-dark .image.is-2by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, - html.theme--documenter-dark .image.is-3by5 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, - html.theme--documenter-dark .image.is-9by16 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, - html.theme--documenter-dark .image.is-1by2 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, - html.theme--documenter-dark .image.is-1by3 .has-ratio, - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { - height: 100%; - width: 100%; } - html.theme--documenter-dark .image.is-square, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square, html.theme--documenter-dark .image.is-1by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 { - padding-top: 100%; } - html.theme--documenter-dark .image.is-5by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 { - padding-top: 80%; } - html.theme--documenter-dark .image.is-4by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 { - padding-top: 75%; } - html.theme--documenter-dark .image.is-3by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 { - padding-top: 66.6666%; } - html.theme--documenter-dark .image.is-5by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 { - padding-top: 60%; } - html.theme--documenter-dark .image.is-16by9, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 { - padding-top: 56.25%; } - html.theme--documenter-dark .image.is-2by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 { - padding-top: 50%; } - html.theme--documenter-dark .image.is-3by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 { - padding-top: 33.3333%; } - html.theme--documenter-dark .image.is-4by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 { - padding-top: 125%; } - html.theme--documenter-dark .image.is-3by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 { - padding-top: 133.3333%; } - html.theme--documenter-dark .image.is-2by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 { - padding-top: 150%; } - html.theme--documenter-dark .image.is-3by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 { - padding-top: 166.6666%; } - html.theme--documenter-dark .image.is-9by16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 { - padding-top: 177.7777%; } - html.theme--documenter-dark .image.is-1by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 { - padding-top: 200%; } - html.theme--documenter-dark .image.is-1by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 { - padding-top: 300%; } - html.theme--documenter-dark .image.is-16x16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16x16 { - height: 16px; - width: 16px; } - html.theme--documenter-dark .image.is-24x24, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-24x24 { - height: 24px; - width: 24px; } - html.theme--documenter-dark .image.is-32x32, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-32x32 { - height: 32px; - width: 32px; } - html.theme--documenter-dark .image.is-48x48, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-48x48 { - height: 48px; - width: 48px; } - html.theme--documenter-dark .image.is-64x64, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-64x64 { - height: 64px; - width: 64px; } - html.theme--documenter-dark .image.is-96x96, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-96x96 { - height: 96px; - width: 96px; } - html.theme--documenter-dark .image.is-128x128, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-128x128 { - height: 128px; - width: 128px; } - html.theme--documenter-dark .notification { - background-color: #282f2f; - border-radius: 0.4em; - padding: 1.25rem 2.5rem 1.25rem 1.5rem; - position: relative; } - html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - html.theme--documenter-dark .notification strong { - color: currentColor; } - html.theme--documenter-dark .notification code, - html.theme--documenter-dark .notification pre { - background: white; } - html.theme--documenter-dark .notification pre code { - background: transparent; } - html.theme--documenter-dark .notification > .delete { - position: absolute; - right: 0.5rem; - top: 0.5rem; } - html.theme--documenter-dark .notification .title, - html.theme--documenter-dark .notification .subtitle, - html.theme--documenter-dark .notification .content { - color: currentColor; } - html.theme--documenter-dark .notification.is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .notification.is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .notification.is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .notification.is-dark, html.theme--documenter-dark .content kbd.notification { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .notification.is-primary, html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .notification.is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .notification.is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .notification.is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .notification.is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .notification.is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .progress { - -moz-appearance: none; - -webkit-appearance: none; - border: none; - border-radius: 290486px; - display: block; - height: 15px; - overflow: hidden; - padding: 0; - width: 100%; } - html.theme--documenter-dark .progress::-webkit-progress-bar { - background-color: #5e6d6f; } - html.theme--documenter-dark .progress::-webkit-progress-value { - background-color: #dbdee0; } - html.theme--documenter-dark .progress::-moz-progress-bar { - background-color: #dbdee0; } - html.theme--documenter-dark .progress::-ms-fill { - background-color: #dbdee0; - border: none; } - html.theme--documenter-dark .progress.is-white::-webkit-progress-value { - background-color: white; } - html.theme--documenter-dark .progress.is-white::-moz-progress-bar { - background-color: white; } - html.theme--documenter-dark .progress.is-white::-ms-fill { - background-color: white; } - html.theme--documenter-dark .progress.is-white:indeterminate { - background-image: linear-gradient(to right, white 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-black::-webkit-progress-value { - background-color: #0a0a0a; } - html.theme--documenter-dark .progress.is-black::-moz-progress-bar { - background-color: #0a0a0a; } - html.theme--documenter-dark .progress.is-black::-ms-fill { - background-color: #0a0a0a; } - html.theme--documenter-dark .progress.is-black:indeterminate { - background-image: linear-gradient(to right, #0a0a0a 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-light::-webkit-progress-value { - background-color: #ecf0f1; } - html.theme--documenter-dark .progress.is-light::-moz-progress-bar { - background-color: #ecf0f1; } - html.theme--documenter-dark .progress.is-light::-ms-fill { - background-color: #ecf0f1; } - html.theme--documenter-dark .progress.is-light:indeterminate { - background-image: linear-gradient(to right, #ecf0f1 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-dark::-webkit-progress-value, html.theme--documenter-dark .content kbd.progress::-webkit-progress-value { - background-color: #282f2f; } - html.theme--documenter-dark .progress.is-dark::-moz-progress-bar, html.theme--documenter-dark .content kbd.progress::-moz-progress-bar { - background-color: #282f2f; } - html.theme--documenter-dark .progress.is-dark::-ms-fill, html.theme--documenter-dark .content kbd.progress::-ms-fill { - background-color: #282f2f; } - html.theme--documenter-dark .progress.is-dark:indeterminate, html.theme--documenter-dark .content kbd.progress:indeterminate { - background-image: linear-gradient(to right, #282f2f 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-primary::-webkit-progress-value, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { - background-color: #375a7f; } - html.theme--documenter-dark .progress.is-primary::-moz-progress-bar, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { - background-color: #375a7f; } - html.theme--documenter-dark .progress.is-primary::-ms-fill, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-ms-fill { - background-color: #375a7f; } - html.theme--documenter-dark .progress.is-primary:indeterminate, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink:indeterminate { - background-image: linear-gradient(to right, #375a7f 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-link::-webkit-progress-value { - background-color: #1abc9c; } - html.theme--documenter-dark .progress.is-link::-moz-progress-bar { - background-color: #1abc9c; } - html.theme--documenter-dark .progress.is-link::-ms-fill { - background-color: #1abc9c; } - html.theme--documenter-dark .progress.is-link:indeterminate { - background-image: linear-gradient(to right, #1abc9c 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-info::-webkit-progress-value { - background-color: #024c7d; } - html.theme--documenter-dark .progress.is-info::-moz-progress-bar { - background-color: #024c7d; } - html.theme--documenter-dark .progress.is-info::-ms-fill { - background-color: #024c7d; } - html.theme--documenter-dark .progress.is-info:indeterminate { - background-image: linear-gradient(to right, #024c7d 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-success::-webkit-progress-value { - background-color: #008438; } - html.theme--documenter-dark .progress.is-success::-moz-progress-bar { - background-color: #008438; } - html.theme--documenter-dark .progress.is-success::-ms-fill { - background-color: #008438; } - html.theme--documenter-dark .progress.is-success:indeterminate { - background-image: linear-gradient(to right, #008438 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-warning::-webkit-progress-value { - background-color: #ad8100; } - html.theme--documenter-dark .progress.is-warning::-moz-progress-bar { - background-color: #ad8100; } - html.theme--documenter-dark .progress.is-warning::-ms-fill { - background-color: #ad8100; } - html.theme--documenter-dark .progress.is-warning:indeterminate { - background-image: linear-gradient(to right, #ad8100 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress.is-danger::-webkit-progress-value { - background-color: #9e1b0d; } - html.theme--documenter-dark .progress.is-danger::-moz-progress-bar { - background-color: #9e1b0d; } - html.theme--documenter-dark .progress.is-danger::-ms-fill { - background-color: #9e1b0d; } - html.theme--documenter-dark .progress.is-danger:indeterminate { - background-image: linear-gradient(to right, #9e1b0d 30%, #5e6d6f 30%); } - html.theme--documenter-dark .progress:indeterminate { - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: moveIndeterminate; - animation-timing-function: linear; - background-color: #5e6d6f; - background-image: linear-gradient(to right, #fff 30%, #5e6d6f 30%); - background-position: top left; - background-repeat: no-repeat; - background-size: 150% 150%; } - html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar { - background-color: transparent; } - html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar { - background-color: transparent; } - html.theme--documenter-dark .progress.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.progress { - height: 0.85em; } - html.theme--documenter-dark .progress.is-medium { - height: 1.25rem; } - html.theme--documenter-dark .progress.is-large { - height: 1.5rem; } - -@keyframes moveIndeterminate { - from { - background-position: 200% 0; } - to { - background-position: -200% 0; } } - html.theme--documenter-dark .table { - background-color: #343c3d; - color: #fff; } - html.theme--documenter-dark .table td, - html.theme--documenter-dark .table th { - border: 1px solid #5e6d6f; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - html.theme--documenter-dark .table td.is-white, - html.theme--documenter-dark .table th.is-white { - background-color: white; - border-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .table td.is-black, - html.theme--documenter-dark .table th.is-black { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .table td.is-light, - html.theme--documenter-dark .table th.is-light { - background-color: #ecf0f1; - border-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .table td.is-dark, - html.theme--documenter-dark .table th.is-dark { - background-color: #282f2f; - border-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .table td.is-primary, - html.theme--documenter-dark .table th.is-primary { - background-color: #375a7f; - border-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .table td.is-link, - html.theme--documenter-dark .table th.is-link { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .table td.is-info, - html.theme--documenter-dark .table th.is-info { - background-color: #024c7d; - border-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .table td.is-success, - html.theme--documenter-dark .table th.is-success { - background-color: #008438; - border-color: #008438; - color: #fff; } - html.theme--documenter-dark .table td.is-warning, - html.theme--documenter-dark .table th.is-warning { - background-color: #ad8100; - border-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .table td.is-danger, - html.theme--documenter-dark .table th.is-danger { - background-color: #9e1b0d; - border-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .table td.is-narrow, - html.theme--documenter-dark .table th.is-narrow { - white-space: nowrap; - width: 1%; } - html.theme--documenter-dark .table td.is-selected, - html.theme--documenter-dark .table th.is-selected { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .table td.is-selected a, - html.theme--documenter-dark .table td.is-selected strong, - html.theme--documenter-dark .table th.is-selected a, - html.theme--documenter-dark .table th.is-selected strong { - color: currentColor; } - html.theme--documenter-dark .table th { - color: #f2f2f2; } - html.theme--documenter-dark .table th:not([align]) { - text-align: left; } - html.theme--documenter-dark .table tr.is-selected { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .table tr.is-selected a, - html.theme--documenter-dark .table tr.is-selected strong { - color: currentColor; } - html.theme--documenter-dark .table tr.is-selected td, - html.theme--documenter-dark .table tr.is-selected th { - border-color: #fff; - color: currentColor; } - html.theme--documenter-dark .table thead { - background-color: transparent; } - html.theme--documenter-dark .table thead td, - html.theme--documenter-dark .table thead th { - border-width: 0 0 2px; - color: #f2f2f2; } - html.theme--documenter-dark .table tfoot { - background-color: transparent; } - html.theme--documenter-dark .table tfoot td, - html.theme--documenter-dark .table tfoot th { - border-width: 2px 0 0; - color: #f2f2f2; } - html.theme--documenter-dark .table tbody { - background-color: transparent; } - html.theme--documenter-dark .table tbody tr:last-child td, - html.theme--documenter-dark .table tbody tr:last-child th { - border-bottom-width: 0; } - html.theme--documenter-dark .table.is-bordered td, - html.theme--documenter-dark .table.is-bordered th { - border-width: 1px; } - html.theme--documenter-dark .table.is-bordered tr:last-child td, - html.theme--documenter-dark .table.is-bordered tr:last-child th { - border-bottom-width: 1px; } - html.theme--documenter-dark .table.is-fullwidth { - width: 100%; } - html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover { - background-color: #282f2f; } - html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { - background-color: #282f2f; } - html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { - background-color: #2d3435; } - html.theme--documenter-dark .table.is-narrow td, - html.theme--documenter-dark .table.is-narrow th { - padding: 0.25em 0.5em; } - html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even) { - background-color: #282f2f; } - html.theme--documenter-dark .table-container { - -webkit-overflow-scrolling: touch; - overflow: auto; - overflow-y: hidden; - max-width: 100%; } - html.theme--documenter-dark .tags { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - html.theme--documenter-dark .tags .tag, html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags .content kbd, html.theme--documenter-dark .content .tags kbd { - margin-bottom: 0.5rem; } - html.theme--documenter-dark .tags .tag:not(:last-child), html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags .content kbd:not(:last-child), html.theme--documenter-dark .content .tags kbd:not(:last-child) { - margin-right: 0.5rem; } - html.theme--documenter-dark .tags:last-child { - margin-bottom: -0.5rem; } - html.theme--documenter-dark .tags:not(:last-child) { - margin-bottom: 1rem; } - html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large), html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large) { - font-size: 15px; } - html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium), html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium) { - font-size: 1.25rem; } - html.theme--documenter-dark .tags.is-centered { - justify-content: center; } - html.theme--documenter-dark .tags.is-centered .tag, html.theme--documenter-dark .tags.is-centered .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags.is-centered .content kbd, html.theme--documenter-dark .content .tags.is-centered kbd { - margin-right: 0.25rem; - margin-left: 0.25rem; } - html.theme--documenter-dark .tags.is-right { - justify-content: flex-end; } - html.theme--documenter-dark .tags.is-right .tag:not(:first-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child) { - margin-left: 0.5rem; } - html.theme--documenter-dark .tags.is-right .tag:not(:last-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child) { - margin-right: 0; } - html.theme--documenter-dark .tags.has-addons .tag, html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags.has-addons .content kbd, html.theme--documenter-dark .content .tags.has-addons kbd { - margin-right: 0; } - html.theme--documenter-dark .tags.has-addons .tag:not(:first-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child) { - margin-left: 0; - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .tags.has-addons .tag:not(:last-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .tag:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body), html.theme--documenter-dark .content kbd:not(body) { - align-items: center; - background-color: #282f2f; - border-radius: 0.4em; - color: #fff; - display: inline-flex; - font-size: 0.85em; - height: 2em; - justify-content: center; - line-height: 1.5; - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - html.theme--documenter-dark .tag:not(body) .delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .delete, html.theme--documenter-dark .content kbd:not(body) .delete { - margin-left: 0.25rem; - margin-right: -0.375rem; } - html.theme--documenter-dark .tag:not(body).is-white, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-white, html.theme--documenter-dark .content kbd:not(body).is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .tag:not(body).is-black, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-black, html.theme--documenter-dark .content kbd:not(body).is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .tag:not(body).is-light, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-light, html.theme--documenter-dark .content kbd:not(body).is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .tag:not(body).is-dark, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-dark, html.theme--documenter-dark .content kbd:not(body) { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .tag:not(body).is-primary, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body), html.theme--documenter-dark .content kbd:not(body).is-primary { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-link, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-link, html.theme--documenter-dark .content kbd:not(body).is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-info, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-info, html.theme--documenter-dark .content kbd:not(body).is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-success, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-success, html.theme--documenter-dark .content kbd:not(body).is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-warning, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-warning, html.theme--documenter-dark .content kbd:not(body).is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-danger, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-danger, html.theme--documenter-dark .content kbd:not(body).is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .tag:not(body).is-normal, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-normal, html.theme--documenter-dark .content kbd:not(body).is-normal { - font-size: 0.85em; } - html.theme--documenter-dark .tag:not(body).is-medium, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-medium, html.theme--documenter-dark .content kbd:not(body).is-medium { - font-size: 15px; } - html.theme--documenter-dark .tag:not(body).is-large, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-large, html.theme--documenter-dark .content kbd:not(body).is-large { - font-size: 1.25rem; } - html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child) { - margin-left: -0.375em; - margin-right: 0.1875em; } - html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: -0.375em; } - html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child, html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child { - margin-left: -0.375em; - margin-right: -0.375em; } - html.theme--documenter-dark .tag:not(body).is-delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete, html.theme--documenter-dark .content kbd:not(body).is-delete { - margin-left: 1px; - padding: 0; - position: relative; - width: 2em; } - html.theme--documenter-dark .tag:not(body).is-delete::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::before, html.theme--documenter-dark .content kbd:not(body).is-delete::before, html.theme--documenter-dark .tag:not(body).is-delete::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::after, html.theme--documenter-dark .content kbd:not(body).is-delete::after { - background-color: currentColor; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - html.theme--documenter-dark .tag:not(body).is-delete::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::before, html.theme--documenter-dark .content kbd:not(body).is-delete::before { - height: 1px; - width: 50%; } - html.theme--documenter-dark .tag:not(body).is-delete::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::after, html.theme--documenter-dark .content kbd:not(body).is-delete::after { - height: 50%; - width: 1px; } - html.theme--documenter-dark .tag:not(body).is-delete:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:hover, html.theme--documenter-dark .content kbd:not(body).is-delete:hover, html.theme--documenter-dark .tag:not(body).is-delete:focus, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:focus, html.theme--documenter-dark .content kbd:not(body).is-delete:focus { - background-color: #1d2122; } - html.theme--documenter-dark .tag:not(body).is-delete:active, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:active, html.theme--documenter-dark .content kbd:not(body).is-delete:active { - background-color: #111414; } - html.theme--documenter-dark .tag:not(body).is-rounded, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-rounded, html.theme--documenter-dark .content kbd:not(body).is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tag:not(body) { - border-radius: 290486px; } - html.theme--documenter-dark a.tag:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:hover { - text-decoration: underline; } - html.theme--documenter-dark .title, - html.theme--documenter-dark .subtitle { - word-break: break-word; } - html.theme--documenter-dark .title em, - html.theme--documenter-dark .title span, - html.theme--documenter-dark .subtitle em, - html.theme--documenter-dark .subtitle span { - font-weight: inherit; } - html.theme--documenter-dark .title sub, - html.theme--documenter-dark .subtitle sub { - font-size: 0.75em; } - html.theme--documenter-dark .title sup, - html.theme--documenter-dark .subtitle sup { - font-size: 0.75em; } - html.theme--documenter-dark .title .tag, html.theme--documenter-dark .title .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .title .content kbd, html.theme--documenter-dark .content .title kbd, - html.theme--documenter-dark .subtitle .tag, - html.theme--documenter-dark .subtitle .docstring > section > a.docs-sourcelink, - html.theme--documenter-dark .subtitle .content kbd, - html.theme--documenter-dark .content .subtitle kbd { - vertical-align: middle; } - html.theme--documenter-dark .title { - color: #fff; - font-size: 2rem; - font-weight: 500; - line-height: 1.125; } - html.theme--documenter-dark .title strong { - color: inherit; - font-weight: inherit; } - html.theme--documenter-dark .title + .highlight { - margin-top: -0.75rem; } - html.theme--documenter-dark .title:not(.is-spaced) + .subtitle { - margin-top: -1.25rem; } - html.theme--documenter-dark .title.is-1 { - font-size: 3rem; } - html.theme--documenter-dark .title.is-2 { - font-size: 2.5rem; } - html.theme--documenter-dark .title.is-3 { - font-size: 2rem; } - html.theme--documenter-dark .title.is-4 { - font-size: 1.5rem; } - html.theme--documenter-dark .title.is-5 { - font-size: 1.25rem; } - html.theme--documenter-dark .title.is-6 { - font-size: 15px; } - html.theme--documenter-dark .title.is-7 { - font-size: 0.85em; } - html.theme--documenter-dark .subtitle { - color: #8c9b9d; - font-size: 1.25rem; - font-weight: 400; - line-height: 1.25; } - html.theme--documenter-dark .subtitle strong { - color: #8c9b9d; - font-weight: 600; } - html.theme--documenter-dark .subtitle:not(.is-spaced) + .title { - margin-top: -1.25rem; } - html.theme--documenter-dark .subtitle.is-1 { - font-size: 3rem; } - html.theme--documenter-dark .subtitle.is-2 { - font-size: 2.5rem; } - html.theme--documenter-dark .subtitle.is-3 { - font-size: 2rem; } - html.theme--documenter-dark .subtitle.is-4 { - font-size: 1.5rem; } - html.theme--documenter-dark .subtitle.is-5 { - font-size: 1.25rem; } - html.theme--documenter-dark .subtitle.is-6 { - font-size: 15px; } - html.theme--documenter-dark .subtitle.is-7 { - font-size: 0.85em; } - html.theme--documenter-dark .heading { - display: block; - font-size: 11px; - letter-spacing: 1px; - margin-bottom: 5px; - text-transform: uppercase; } - html.theme--documenter-dark .highlight { - font-weight: 400; - max-width: 100%; - overflow: hidden; - padding: 0; } - html.theme--documenter-dark .highlight pre { - overflow: auto; - max-width: 100%; } - html.theme--documenter-dark .number { - align-items: center; - background-color: #282f2f; - border-radius: 290486px; - display: inline-flex; - font-size: 1.25rem; - height: 2em; - justify-content: center; - margin-right: 1.5rem; - min-width: 2.5em; - padding: 0.25rem 0.5rem; - text-align: center; - vertical-align: top; } - html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea, html.theme--documenter-dark .select select { - background-color: #1f2424; - border-color: #5e6d6f; - border-radius: 0.4em; - color: #dbdee0; } - html.theme--documenter-dark .input::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, html.theme--documenter-dark .textarea::-moz-placeholder, html.theme--documenter-dark .select select::-moz-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, html.theme--documenter-dark .textarea::-webkit-input-placeholder, html.theme--documenter-dark .select select::-webkit-input-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, html.theme--documenter-dark .textarea:-moz-placeholder, html.theme--documenter-dark .select select:-moz-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, html.theme--documenter-dark .textarea:-ms-input-placeholder, html.theme--documenter-dark .select select:-ms-input-placeholder { - color: rgba(219, 222, 224, 0.3); } - html.theme--documenter-dark .input:hover, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:hover, html.theme--documenter-dark .textarea:hover, html.theme--documenter-dark .select select:hover, html.theme--documenter-dark .is-hovered.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-hovered, html.theme--documenter-dark .is-hovered.textarea, html.theme--documenter-dark .select select.is-hovered { - border-color: #8c9b9d; } - html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .select select.is-active { - border-color: #1abc9c; - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .select select[disabled], - fieldset[disabled] html.theme--documenter-dark .input, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - fieldset[disabled] html.theme--documenter-dark .textarea, - fieldset[disabled] html.theme--documenter-dark .select select { - background-color: #8c9b9d; - border-color: #282f2f; - box-shadow: none; - color: white; } - html.theme--documenter-dark .input[disabled]::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, html.theme--documenter-dark .textarea[disabled]::-moz-placeholder, html.theme--documenter-dark .select select[disabled]::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input[disabled]:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, html.theme--documenter-dark .textarea[disabled]:-moz-placeholder, html.theme--documenter-dark .select select[disabled]:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input[disabled]:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder, html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder, - fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder { - color: rgba(255, 255, 255, 0.3); } - html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - max-width: 100%; - width: 100%; } - html.theme--documenter-dark .input[readonly], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[readonly], html.theme--documenter-dark .textarea[readonly] { - box-shadow: none; } - html.theme--documenter-dark .is-white.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white, html.theme--documenter-dark .is-white.textarea { - border-color: white; } - html.theme--documenter-dark .is-white.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:focus, html.theme--documenter-dark .is-white.textarea:focus, html.theme--documenter-dark .is-white.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white.is-focused, html.theme--documenter-dark .is-white.is-focused.textarea, html.theme--documenter-dark .is-white.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:active, html.theme--documenter-dark .is-white.textarea:active, html.theme--documenter-dark .is-white.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white.is-active, html.theme--documenter-dark .is-white.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - html.theme--documenter-dark .is-black.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black, html.theme--documenter-dark .is-black.textarea { - border-color: #0a0a0a; } - html.theme--documenter-dark .is-black.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:focus, html.theme--documenter-dark .is-black.textarea:focus, html.theme--documenter-dark .is-black.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black.is-focused, html.theme--documenter-dark .is-black.is-focused.textarea, html.theme--documenter-dark .is-black.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:active, html.theme--documenter-dark .is-black.textarea:active, html.theme--documenter-dark .is-black.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black.is-active, html.theme--documenter-dark .is-black.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - html.theme--documenter-dark .is-light.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light, html.theme--documenter-dark .is-light.textarea { - border-color: #ecf0f1; } - html.theme--documenter-dark .is-light.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:focus, html.theme--documenter-dark .is-light.textarea:focus, html.theme--documenter-dark .is-light.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light.is-focused, html.theme--documenter-dark .is-light.is-focused.textarea, html.theme--documenter-dark .is-light.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:active, html.theme--documenter-dark .is-light.textarea:active, html.theme--documenter-dark .is-light.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light.is-active, html.theme--documenter-dark .is-light.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } - html.theme--documenter-dark .is-dark.input, html.theme--documenter-dark .content kbd.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark, html.theme--documenter-dark .is-dark.textarea, html.theme--documenter-dark .content kbd.textarea { - border-color: #282f2f; } - html.theme--documenter-dark .is-dark.input:focus, html.theme--documenter-dark .content kbd.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:focus, html.theme--documenter-dark .is-dark.textarea:focus, html.theme--documenter-dark .content kbd.textarea:focus, html.theme--documenter-dark .is-dark.is-focused.input, html.theme--documenter-dark .content kbd.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark.is-focused, html.theme--documenter-dark .is-dark.is-focused.textarea, html.theme--documenter-dark .content kbd.is-focused.textarea, html.theme--documenter-dark .is-dark.input:active, html.theme--documenter-dark .content kbd.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:active, html.theme--documenter-dark .is-dark.textarea:active, html.theme--documenter-dark .content kbd.textarea:active, html.theme--documenter-dark .is-dark.is-active.input, html.theme--documenter-dark .content kbd.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark.is-active, html.theme--documenter-dark .is-dark.is-active.textarea, html.theme--documenter-dark .content kbd.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } - html.theme--documenter-dark .is-primary.input, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary, html.theme--documenter-dark .is-primary.textarea, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink { - border-color: #375a7f; } - html.theme--documenter-dark .is-primary.input:focus, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:focus, html.theme--documenter-dark .is-primary.textarea:focus, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:focus, html.theme--documenter-dark .is-primary.is-focused.input, html.theme--documenter-dark .docstring > section > a.is-focused.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary.is-focused, html.theme--documenter-dark .is-primary.is-focused.textarea, html.theme--documenter-dark .docstring > section > a.is-focused.textarea.docs-sourcelink, html.theme--documenter-dark .is-primary.input:active, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:active, html.theme--documenter-dark .is-primary.textarea:active, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:active, html.theme--documenter-dark .is-primary.is-active.input, html.theme--documenter-dark .docstring > section > a.is-active.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary.is-active, html.theme--documenter-dark .is-primary.is-active.textarea, html.theme--documenter-dark .docstring > section > a.is-active.textarea.docs-sourcelink { - box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } - html.theme--documenter-dark .is-link.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link, html.theme--documenter-dark .is-link.textarea { - border-color: #1abc9c; } - html.theme--documenter-dark .is-link.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:focus, html.theme--documenter-dark .is-link.textarea:focus, html.theme--documenter-dark .is-link.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link.is-focused, html.theme--documenter-dark .is-link.is-focused.textarea, html.theme--documenter-dark .is-link.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:active, html.theme--documenter-dark .is-link.textarea:active, html.theme--documenter-dark .is-link.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link.is-active, html.theme--documenter-dark .is-link.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .is-info.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info, html.theme--documenter-dark .is-info.textarea { - border-color: #024c7d; } - html.theme--documenter-dark .is-info.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:focus, html.theme--documenter-dark .is-info.textarea:focus, html.theme--documenter-dark .is-info.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info.is-focused, html.theme--documenter-dark .is-info.is-focused.textarea, html.theme--documenter-dark .is-info.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:active, html.theme--documenter-dark .is-info.textarea:active, html.theme--documenter-dark .is-info.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info.is-active, html.theme--documenter-dark .is-info.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } - html.theme--documenter-dark .is-success.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success, html.theme--documenter-dark .is-success.textarea { - border-color: #008438; } - html.theme--documenter-dark .is-success.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:focus, html.theme--documenter-dark .is-success.textarea:focus, html.theme--documenter-dark .is-success.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success.is-focused, html.theme--documenter-dark .is-success.is-focused.textarea, html.theme--documenter-dark .is-success.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:active, html.theme--documenter-dark .is-success.textarea:active, html.theme--documenter-dark .is-success.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success.is-active, html.theme--documenter-dark .is-success.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } - html.theme--documenter-dark .is-warning.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning, html.theme--documenter-dark .is-warning.textarea { - border-color: #ad8100; } - html.theme--documenter-dark .is-warning.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:focus, html.theme--documenter-dark .is-warning.textarea:focus, html.theme--documenter-dark .is-warning.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning.is-focused, html.theme--documenter-dark .is-warning.is-focused.textarea, html.theme--documenter-dark .is-warning.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:active, html.theme--documenter-dark .is-warning.textarea:active, html.theme--documenter-dark .is-warning.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning.is-active, html.theme--documenter-dark .is-warning.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } - html.theme--documenter-dark .is-danger.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger, html.theme--documenter-dark .is-danger.textarea { - border-color: #9e1b0d; } - html.theme--documenter-dark .is-danger.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:focus, html.theme--documenter-dark .is-danger.textarea:focus, html.theme--documenter-dark .is-danger.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger.is-focused, html.theme--documenter-dark .is-danger.is-focused.textarea, html.theme--documenter-dark .is-danger.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:active, html.theme--documenter-dark .is-danger.textarea:active, html.theme--documenter-dark .is-danger.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger.is-active, html.theme--documenter-dark .is-danger.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } - html.theme--documenter-dark .is-small.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .is-small.textarea { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .is-medium.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-medium, html.theme--documenter-dark .is-medium.textarea { - font-size: 1.25rem; } - html.theme--documenter-dark .is-large.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-large, html.theme--documenter-dark .is-large.textarea { - font-size: 1.5rem; } - html.theme--documenter-dark .is-fullwidth.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-fullwidth, html.theme--documenter-dark .is-fullwidth.textarea { - display: block; - width: 100%; } - html.theme--documenter-dark .is-inline.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-inline, html.theme--documenter-dark .is-inline.textarea { - display: inline; - width: auto; } - html.theme--documenter-dark .input.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - html.theme--documenter-dark .input.is-static, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-static { - background-color: transparent; - border-color: transparent; - box-shadow: none; - padding-left: 0; - padding-right: 0; } - html.theme--documenter-dark .textarea { - display: block; - max-width: 100%; - min-width: 100%; - padding: 0.625em; - resize: vertical; } - html.theme--documenter-dark .textarea:not([rows]) { - max-height: 600px; - min-height: 120px; } - html.theme--documenter-dark .textarea[rows] { - height: initial; } - html.theme--documenter-dark .textarea.has-fixed-size { - resize: none; } - html.theme--documenter-dark .checkbox, html.theme--documenter-dark .radio { - cursor: pointer; - display: inline-block; - line-height: 1.25; - position: relative; } - html.theme--documenter-dark .checkbox input, html.theme--documenter-dark .radio input { - cursor: pointer; } - html.theme--documenter-dark .checkbox:hover, html.theme--documenter-dark .radio:hover { - color: #8c9b9d; } - html.theme--documenter-dark .checkbox[disabled], html.theme--documenter-dark .radio[disabled], - fieldset[disabled] html.theme--documenter-dark .checkbox, - fieldset[disabled] html.theme--documenter-dark .radio { - color: white; - cursor: not-allowed; } - html.theme--documenter-dark .radio + .radio { - margin-left: 0.5em; } - html.theme--documenter-dark .select { - display: inline-block; - max-width: 100%; - position: relative; - vertical-align: top; } - html.theme--documenter-dark .select:not(.is-multiple) { - height: 2.25em; } - html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after { - border-color: #1abc9c; - right: 1.125em; - z-index: 4; } - html.theme--documenter-dark .select.is-rounded select, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select select { - border-radius: 290486px; - padding-left: 1em; } - html.theme--documenter-dark .select select { - cursor: pointer; - display: block; - font-size: 1em; - max-width: 100%; - outline: none; } - html.theme--documenter-dark .select select::-ms-expand { - display: none; } - html.theme--documenter-dark .select select[disabled]:hover, - fieldset[disabled] html.theme--documenter-dark .select select:hover { - border-color: #282f2f; } - html.theme--documenter-dark .select select:not([multiple]) { - padding-right: 2.5em; } - html.theme--documenter-dark .select select[multiple] { - height: auto; - padding: 0; } - html.theme--documenter-dark .select select[multiple] option { - padding: 0.5em 1em; } - html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after { - border-color: #8c9b9d; } - html.theme--documenter-dark .select.is-white:not(:hover)::after { - border-color: white; } - html.theme--documenter-dark .select.is-white select { - border-color: white; } - html.theme--documenter-dark .select.is-white select:hover, html.theme--documenter-dark .select.is-white select.is-hovered { - border-color: #f2f2f2; } - html.theme--documenter-dark .select.is-white select:focus, html.theme--documenter-dark .select.is-white select.is-focused, html.theme--documenter-dark .select.is-white select:active, html.theme--documenter-dark .select.is-white select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - html.theme--documenter-dark .select.is-black:not(:hover)::after { - border-color: #0a0a0a; } - html.theme--documenter-dark .select.is-black select { - border-color: #0a0a0a; } - html.theme--documenter-dark .select.is-black select:hover, html.theme--documenter-dark .select.is-black select.is-hovered { - border-color: black; } - html.theme--documenter-dark .select.is-black select:focus, html.theme--documenter-dark .select.is-black select.is-focused, html.theme--documenter-dark .select.is-black select:active, html.theme--documenter-dark .select.is-black select.is-active { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - html.theme--documenter-dark .select.is-light:not(:hover)::after { - border-color: #ecf0f1; } - html.theme--documenter-dark .select.is-light select { - border-color: #ecf0f1; } - html.theme--documenter-dark .select.is-light select:hover, html.theme--documenter-dark .select.is-light select.is-hovered { - border-color: #dde4e6; } - html.theme--documenter-dark .select.is-light select:focus, html.theme--documenter-dark .select.is-light select.is-focused, html.theme--documenter-dark .select.is-light select:active, html.theme--documenter-dark .select.is-light select.is-active { - box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } - html.theme--documenter-dark .select.is-dark:not(:hover)::after, html.theme--documenter-dark .content kbd.select:not(:hover)::after { - border-color: #282f2f; } - html.theme--documenter-dark .select.is-dark select, html.theme--documenter-dark .content kbd.select select { - border-color: #282f2f; } - html.theme--documenter-dark .select.is-dark select:hover, html.theme--documenter-dark .content kbd.select select:hover, html.theme--documenter-dark .select.is-dark select.is-hovered, html.theme--documenter-dark .content kbd.select select.is-hovered { - border-color: #1d2122; } - html.theme--documenter-dark .select.is-dark select:focus, html.theme--documenter-dark .content kbd.select select:focus, html.theme--documenter-dark .select.is-dark select.is-focused, html.theme--documenter-dark .content kbd.select select.is-focused, html.theme--documenter-dark .select.is-dark select:active, html.theme--documenter-dark .content kbd.select select:active, html.theme--documenter-dark .select.is-dark select.is-active, html.theme--documenter-dark .content kbd.select select.is-active { - box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } - html.theme--documenter-dark .select.is-primary:not(:hover)::after, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink:not(:hover)::after { - border-color: #375a7f; } - html.theme--documenter-dark .select.is-primary select, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select { - border-color: #375a7f; } - html.theme--documenter-dark .select.is-primary select:hover, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:hover, html.theme--documenter-dark .select.is-primary select.is-hovered, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-hovered { - border-color: #2f4d6d; } - html.theme--documenter-dark .select.is-primary select:focus, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:focus, html.theme--documenter-dark .select.is-primary select.is-focused, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-focused, html.theme--documenter-dark .select.is-primary select:active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:active, html.theme--documenter-dark .select.is-primary select.is-active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-active { - box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } - html.theme--documenter-dark .select.is-link:not(:hover)::after { - border-color: #1abc9c; } - html.theme--documenter-dark .select.is-link select { - border-color: #1abc9c; } - html.theme--documenter-dark .select.is-link select:hover, html.theme--documenter-dark .select.is-link select.is-hovered { - border-color: #17a689; } - html.theme--documenter-dark .select.is-link select:focus, html.theme--documenter-dark .select.is-link select.is-focused, html.theme--documenter-dark .select.is-link select:active, html.theme--documenter-dark .select.is-link select.is-active { - box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } - html.theme--documenter-dark .select.is-info:not(:hover)::after { - border-color: #024c7d; } - html.theme--documenter-dark .select.is-info select { - border-color: #024c7d; } - html.theme--documenter-dark .select.is-info select:hover, html.theme--documenter-dark .select.is-info select.is-hovered { - border-color: #023d64; } - html.theme--documenter-dark .select.is-info select:focus, html.theme--documenter-dark .select.is-info select.is-focused, html.theme--documenter-dark .select.is-info select:active, html.theme--documenter-dark .select.is-info select.is-active { - box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } - html.theme--documenter-dark .select.is-success:not(:hover)::after { - border-color: #008438; } - html.theme--documenter-dark .select.is-success select { - border-color: #008438; } - html.theme--documenter-dark .select.is-success select:hover, html.theme--documenter-dark .select.is-success select.is-hovered { - border-color: #006b2d; } - html.theme--documenter-dark .select.is-success select:focus, html.theme--documenter-dark .select.is-success select.is-focused, html.theme--documenter-dark .select.is-success select:active, html.theme--documenter-dark .select.is-success select.is-active { - box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } - html.theme--documenter-dark .select.is-warning:not(:hover)::after { - border-color: #ad8100; } - html.theme--documenter-dark .select.is-warning select { - border-color: #ad8100; } - html.theme--documenter-dark .select.is-warning select:hover, html.theme--documenter-dark .select.is-warning select.is-hovered { - border-color: #946e00; } - html.theme--documenter-dark .select.is-warning select:focus, html.theme--documenter-dark .select.is-warning select.is-focused, html.theme--documenter-dark .select.is-warning select:active, html.theme--documenter-dark .select.is-warning select.is-active { - box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } - html.theme--documenter-dark .select.is-danger:not(:hover)::after { - border-color: #9e1b0d; } - html.theme--documenter-dark .select.is-danger select { - border-color: #9e1b0d; } - html.theme--documenter-dark .select.is-danger select:hover, html.theme--documenter-dark .select.is-danger select.is-hovered { - border-color: #86170b; } - html.theme--documenter-dark .select.is-danger select:focus, html.theme--documenter-dark .select.is-danger select.is-focused, html.theme--documenter-dark .select.is-danger select:active, html.theme--documenter-dark .select.is-danger select.is-active { - box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } - html.theme--documenter-dark .select.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select { - border-radius: 3px; - font-size: 0.85em; } - html.theme--documenter-dark .select.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .select.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .select.is-disabled::after { - border-color: white; } - html.theme--documenter-dark .select.is-fullwidth { - width: 100%; } - html.theme--documenter-dark .select.is-fullwidth select { - width: 100%; } - html.theme--documenter-dark .select.is-loading::after { - margin-top: 0; - position: absolute; - right: 0.625em; - top: 0.625em; - transform: none; } - html.theme--documenter-dark .select.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select.is-loading:after { - font-size: 0.85em; } - html.theme--documenter-dark .select.is-loading.is-medium:after { - font-size: 1.25rem; } - html.theme--documenter-dark .select.is-loading.is-large:after { - font-size: 1.5rem; } - html.theme--documenter-dark .file { - align-items: stretch; - display: flex; - justify-content: flex-start; - position: relative; } - html.theme--documenter-dark .file.is-white .file-cta { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .file.is-white:hover .file-cta, html.theme--documenter-dark .file.is-white.is-hovered .file-cta { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .file.is-white:focus .file-cta, html.theme--documenter-dark .file.is-white.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); - color: #0a0a0a; } - html.theme--documenter-dark .file.is-white:active .file-cta, html.theme--documenter-dark .file.is-white.is-active .file-cta { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - html.theme--documenter-dark .file.is-black .file-cta { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - html.theme--documenter-dark .file.is-black:hover .file-cta, html.theme--documenter-dark .file.is-black.is-hovered .file-cta { - background-color: #040404; - border-color: transparent; - color: white; } - html.theme--documenter-dark .file.is-black:focus .file-cta, html.theme--documenter-dark .file.is-black.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); - color: white; } - html.theme--documenter-dark .file.is-black:active .file-cta, html.theme--documenter-dark .file.is-black.is-active .file-cta { - background-color: black; - border-color: transparent; - color: white; } - html.theme--documenter-dark .file.is-light .file-cta { - background-color: #ecf0f1; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .file.is-light:hover .file-cta, html.theme--documenter-dark .file.is-light.is-hovered .file-cta { - background-color: #e5eaec; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .file.is-light:focus .file-cta, html.theme--documenter-dark .file.is-light.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(236, 240, 241, 0.25); - color: #282f2f; } - html.theme--documenter-dark .file.is-light:active .file-cta, html.theme--documenter-dark .file.is-light.is-active .file-cta { - background-color: #dde4e6; - border-color: transparent; - color: #282f2f; } - html.theme--documenter-dark .file.is-dark .file-cta, html.theme--documenter-dark .content kbd.file .file-cta { - background-color: #282f2f; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .file.is-dark:hover .file-cta, html.theme--documenter-dark .content kbd.file:hover .file-cta, html.theme--documenter-dark .file.is-dark.is-hovered .file-cta, html.theme--documenter-dark .content kbd.file.is-hovered .file-cta { - background-color: #232829; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .file.is-dark:focus .file-cta, html.theme--documenter-dark .content kbd.file:focus .file-cta, html.theme--documenter-dark .file.is-dark.is-focused .file-cta, html.theme--documenter-dark .content kbd.file.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(40, 47, 47, 0.25); - color: #ecf0f1; } - html.theme--documenter-dark .file.is-dark:active .file-cta, html.theme--documenter-dark .content kbd.file:active .file-cta, html.theme--documenter-dark .file.is-dark.is-active .file-cta, html.theme--documenter-dark .content kbd.file.is-active .file-cta { - background-color: #1d2122; - border-color: transparent; - color: #ecf0f1; } - html.theme--documenter-dark .file.is-primary .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink .file-cta { - background-color: #375a7f; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-primary:hover .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:hover .file-cta, html.theme--documenter-dark .file.is-primary.is-hovered .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { - background-color: #335476; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-primary:focus .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:focus .file-cta, html.theme--documenter-dark .file.is-primary.is-focused .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(55, 90, 127, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-primary:active .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:active .file-cta, html.theme--documenter-dark .file.is-primary.is-active .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-active.docs-sourcelink .file-cta { - background-color: #2f4d6d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-link .file-cta { - background-color: #1abc9c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-link:hover .file-cta, html.theme--documenter-dark .file.is-link.is-hovered .file-cta { - background-color: #18b193; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-link:focus .file-cta, html.theme--documenter-dark .file.is-link.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(26, 188, 156, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-link:active .file-cta, html.theme--documenter-dark .file.is-link.is-active .file-cta { - background-color: #17a689; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-info .file-cta { - background-color: #024c7d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-info:hover .file-cta, html.theme--documenter-dark .file.is-info.is-hovered .file-cta { - background-color: #024470; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-info:focus .file-cta, html.theme--documenter-dark .file.is-info.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(2, 76, 125, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-info:active .file-cta, html.theme--documenter-dark .file.is-info.is-active .file-cta { - background-color: #023d64; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-success .file-cta { - background-color: #008438; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-success:hover .file-cta, html.theme--documenter-dark .file.is-success.is-hovered .file-cta { - background-color: #007733; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-success:focus .file-cta, html.theme--documenter-dark .file.is-success.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(0, 132, 56, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-success:active .file-cta, html.theme--documenter-dark .file.is-success.is-active .file-cta { - background-color: #006b2d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-warning .file-cta { - background-color: #ad8100; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-warning:hover .file-cta, html.theme--documenter-dark .file.is-warning.is-hovered .file-cta { - background-color: #a07700; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-warning:focus .file-cta, html.theme--documenter-dark .file.is-warning.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(173, 129, 0, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-warning:active .file-cta, html.theme--documenter-dark .file.is-warning.is-active .file-cta { - background-color: #946e00; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-danger .file-cta { - background-color: #9e1b0d; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-danger:hover .file-cta, html.theme--documenter-dark .file.is-danger.is-hovered .file-cta { - background-color: #92190c; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-danger:focus .file-cta, html.theme--documenter-dark .file.is-danger.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(158, 27, 13, 0.25); - color: #fff; } - html.theme--documenter-dark .file.is-danger:active .file-cta, html.theme--documenter-dark .file.is-danger.is-active .file-cta { - background-color: #86170b; - border-color: transparent; - color: #fff; } - html.theme--documenter-dark .file.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file { - font-size: 0.85em; } - html.theme--documenter-dark .file.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .file.is-medium .file-icon .fa { - font-size: 21px; } - html.theme--documenter-dark .file.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .file.is-large .file-icon .fa { - font-size: 28px; } - html.theme--documenter-dark .file.has-name .file-cta { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .file.has-name .file-name { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .file.has-name.is-empty .file-cta { - border-radius: 0.4em; } - html.theme--documenter-dark .file.has-name.is-empty .file-name { - display: none; } - html.theme--documenter-dark .file.is-boxed .file-label { - flex-direction: column; } - html.theme--documenter-dark .file.is-boxed .file-cta { - flex-direction: column; - height: auto; - padding: 1em 3em; } - html.theme--documenter-dark .file.is-boxed .file-name { - border-width: 0 1px 1px; } - html.theme--documenter-dark .file.is-boxed .file-icon { - height: 1.5em; - width: 1.5em; } - html.theme--documenter-dark .file.is-boxed .file-icon .fa { - font-size: 21px; } - html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file.is-boxed .file-icon .fa { - font-size: 14px; } - html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa { - font-size: 28px; } - html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa { - font-size: 35px; } - html.theme--documenter-dark .file.is-boxed.has-name .file-cta { - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .file.is-boxed.has-name .file-name { - border-radius: 0 0 0.4em 0.4em; - border-width: 0 1px 1px; } - html.theme--documenter-dark .file.is-centered { - justify-content: center; } - html.theme--documenter-dark .file.is-fullwidth .file-label { - width: 100%; } - html.theme--documenter-dark .file.is-fullwidth .file-name { - flex-grow: 1; - max-width: none; } - html.theme--documenter-dark .file.is-right { - justify-content: flex-end; } - html.theme--documenter-dark .file.is-right .file-cta { - border-radius: 0 0.4em 0.4em 0; } - html.theme--documenter-dark .file.is-right .file-name { - border-radius: 0.4em 0 0 0.4em; - border-width: 1px 0 1px 1px; - order: -1; } - html.theme--documenter-dark .file-label { - align-items: stretch; - display: flex; - cursor: pointer; - justify-content: flex-start; - overflow: hidden; - position: relative; } - html.theme--documenter-dark .file-label:hover .file-cta { - background-color: #e5eaec; - color: #282f2f; } - html.theme--documenter-dark .file-label:hover .file-name { - border-color: #596668; } - html.theme--documenter-dark .file-label:active .file-cta { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .file-label:active .file-name { - border-color: #535f61; } - html.theme--documenter-dark .file-input { - height: 100%; - left: 0; - opacity: 0; - outline: none; - position: absolute; - top: 0; - width: 100%; } - html.theme--documenter-dark .file-cta, - html.theme--documenter-dark .file-name { - border-color: #5e6d6f; - border-radius: 0.4em; - font-size: 1em; - padding-left: 1em; - padding-right: 1em; - white-space: nowrap; } - html.theme--documenter-dark .file-cta { - background-color: #ecf0f1; - color: #343c3d; } - html.theme--documenter-dark .file-name { - border-color: #5e6d6f; - border-style: solid; - border-width: 1px 1px 1px 0; - display: block; - max-width: 16em; - overflow: hidden; - text-align: left; - text-overflow: ellipsis; } - html.theme--documenter-dark .file-icon { - align-items: center; - display: flex; - height: 1em; - justify-content: center; - margin-right: 0.5em; - width: 1em; } - html.theme--documenter-dark .file-icon .fa { - font-size: 14px; } - html.theme--documenter-dark .label { - color: #282f2f; - display: block; - font-size: 15px; - font-weight: 700; } - html.theme--documenter-dark .label:not(:last-child) { - margin-bottom: 0.5em; } - html.theme--documenter-dark .label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.label { - font-size: 0.85em; } - html.theme--documenter-dark .label.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .label.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .help { - display: block; - font-size: 0.85em; - margin-top: 0.25rem; } - html.theme--documenter-dark .help.is-white { - color: white; } - html.theme--documenter-dark .help.is-black { - color: #0a0a0a; } - html.theme--documenter-dark .help.is-light { - color: #ecf0f1; } - html.theme--documenter-dark .help.is-dark, html.theme--documenter-dark .content kbd.help { - color: #282f2f; } - html.theme--documenter-dark .help.is-primary, html.theme--documenter-dark .docstring > section > a.help.docs-sourcelink { - color: #375a7f; } - html.theme--documenter-dark .help.is-link { - color: #1abc9c; } - html.theme--documenter-dark .help.is-info { - color: #024c7d; } - html.theme--documenter-dark .help.is-success { - color: #008438; } - html.theme--documenter-dark .help.is-warning { - color: #ad8100; } - html.theme--documenter-dark .help.is-danger { - color: #9e1b0d; } - html.theme--documenter-dark .field:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .field.has-addons { - display: flex; - justify-content: flex-start; } - html.theme--documenter-dark .field.has-addons .control:not(:last-child) { - margin-right: -1px; } - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button, - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input, - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, - html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select { - border-radius: 0; } - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button, - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input, - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, - html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button, - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input, - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, - html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-hovered, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-hovered, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-hovered, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-hovered, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-hovered { - z-index: 2; } - html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-focused, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-active, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-focused, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-active, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-focused, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-active { - z-index: 3; } - html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-focused:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-active:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-focused:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, - html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-active:hover, - html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active:hover, - html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-focused:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover, - html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-active:hover { - z-index: 4; } - html.theme--documenter-dark .field.has-addons .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .field.has-addons.has-addons-centered { - justify-content: center; } - html.theme--documenter-dark .field.has-addons.has-addons-right { - justify-content: flex-end; } - html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control { - flex-grow: 1; - flex-shrink: 0; } - html.theme--documenter-dark .field.is-grouped { - display: flex; - justify-content: flex-start; } - html.theme--documenter-dark .field.is-grouped > .control { - flex-shrink: 0; } - html.theme--documenter-dark .field.is-grouped > .control:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - html.theme--documenter-dark .field.is-grouped > .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .field.is-grouped.is-grouped-centered { - justify-content: center; } - html.theme--documenter-dark .field.is-grouped.is-grouped-right { - justify-content: flex-end; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline { - flex-wrap: wrap; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:last-child, html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child { - margin-bottom: -0.75rem; } - html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child) { - margin-bottom: 0; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .field.is-horizontal { - display: flex; } } - html.theme--documenter-dark .field-label .label { - font-size: inherit; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .field-label { - margin-bottom: 0.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .field-label { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - margin-right: 1.5rem; - text-align: right; } - html.theme--documenter-dark .field-label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.field-label { - font-size: 0.85em; - padding-top: 0.375em; } - html.theme--documenter-dark .field-label.is-normal { - padding-top: 0.375em; } - html.theme--documenter-dark .field-label.is-medium { - font-size: 1.25rem; - padding-top: 0.375em; } - html.theme--documenter-dark .field-label.is-large { - font-size: 1.5rem; - padding-top: 0.375em; } } - html.theme--documenter-dark .field-body .field .field { - margin-bottom: 0; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .field-body { - display: flex; - flex-basis: 0; - flex-grow: 5; - flex-shrink: 1; } - html.theme--documenter-dark .field-body .field { - margin-bottom: 0; } - html.theme--documenter-dark .field-body > .field { - flex-shrink: 1; } - html.theme--documenter-dark .field-body > .field:not(.is-narrow) { - flex-grow: 1; } - html.theme--documenter-dark .field-body > .field:not(:last-child) { - margin-right: 0.75rem; } } - html.theme--documenter-dark .control { - box-sizing: border-box; - clear: both; - font-size: 15px; - position: relative; - text-align: left; } - html.theme--documenter-dark .control.has-icons-left .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select:focus ~ .icon { - color: #5e6d6f; } - html.theme--documenter-dark .control.has-icons-left .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select.is-small ~ .icon, - html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.select ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select.is-small ~ .icon, - html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.select ~ .icon { - font-size: 0.85em; } - html.theme--documenter-dark .control.has-icons-left .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select.is-medium ~ .icon { - font-size: 1.25rem; } - html.theme--documenter-dark .control.has-icons-left .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, - html.theme--documenter-dark .control.has-icons-left .select.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, - html.theme--documenter-dark .control.has-icons-right .select.is-large ~ .icon { - font-size: 1.5rem; } - html.theme--documenter-dark .control.has-icons-left .icon, html.theme--documenter-dark .control.has-icons-right .icon { - color: #dbdee0; - height: 2.25em; - pointer-events: none; - position: absolute; - top: 0; - width: 2.25em; - z-index: 4; } - html.theme--documenter-dark .control.has-icons-left .input, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, - html.theme--documenter-dark .control.has-icons-left .select select { - padding-left: 2.25em; } - html.theme--documenter-dark .control.has-icons-left .icon.is-left { - left: 0; } - html.theme--documenter-dark .control.has-icons-right .input, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, - html.theme--documenter-dark .control.has-icons-right .select select { - padding-right: 2.25em; } - html.theme--documenter-dark .control.has-icons-right .icon.is-right { - right: 0; } - html.theme--documenter-dark .control.is-loading::after { - position: absolute !important; - right: 0.625em; - top: 0.625em; - z-index: 4; } - html.theme--documenter-dark .control.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.control.is-loading:after { - font-size: 0.85em; } - html.theme--documenter-dark .control.is-loading.is-medium:after { - font-size: 1.25rem; } - html.theme--documenter-dark .control.is-loading.is-large:after { - font-size: 1.5rem; } - html.theme--documenter-dark .breadcrumb { - font-size: 15px; - white-space: nowrap; } - html.theme--documenter-dark .breadcrumb a { - align-items: center; - color: #1abc9c; - display: flex; - justify-content: center; - padding: 0 0.75em; } - html.theme--documenter-dark .breadcrumb a:hover { - color: #1dd2af; } - html.theme--documenter-dark .breadcrumb li { - align-items: center; - display: flex; } - html.theme--documenter-dark .breadcrumb li:first-child a { - padding-left: 0; } - html.theme--documenter-dark .breadcrumb li.is-active a { - color: #f2f2f2; - cursor: default; - pointer-events: none; } - html.theme--documenter-dark .breadcrumb li + li::before { - color: #8c9b9d; - content: "\0002f"; } - html.theme--documenter-dark .breadcrumb ul, - html.theme--documenter-dark .breadcrumb ol { - align-items: flex-start; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - html.theme--documenter-dark .breadcrumb .icon:first-child { - margin-right: 0.5em; } - html.theme--documenter-dark .breadcrumb .icon:last-child { - margin-left: 0.5em; } - html.theme--documenter-dark .breadcrumb.is-centered ol, - html.theme--documenter-dark .breadcrumb.is-centered ul { - justify-content: center; } - html.theme--documenter-dark .breadcrumb.is-right ol, - html.theme--documenter-dark .breadcrumb.is-right ul { - justify-content: flex-end; } - html.theme--documenter-dark .breadcrumb.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.breadcrumb { - font-size: 0.85em; } - html.theme--documenter-dark .breadcrumb.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .breadcrumb.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .breadcrumb.has-arrow-separator li + li::before { - content: "\02192"; } - html.theme--documenter-dark .breadcrumb.has-bullet-separator li + li::before { - content: "\02022"; } - html.theme--documenter-dark .breadcrumb.has-dot-separator li + li::before { - content: "\000b7"; } - html.theme--documenter-dark .breadcrumb.has-succeeds-separator li + li::before { - content: "\0227B"; } - html.theme--documenter-dark .card { - background-color: white; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - color: #fff; - max-width: 100%; - position: relative; } - html.theme--documenter-dark .card-header { - background-color: transparent; - align-items: stretch; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - display: flex; } - html.theme--documenter-dark .card-header-title { - align-items: center; - color: #f2f2f2; - display: flex; - flex-grow: 1; - font-weight: 700; - padding: 0.75rem; } - html.theme--documenter-dark .card-header-title.is-centered { - justify-content: center; } - html.theme--documenter-dark .card-header-icon { - align-items: center; - cursor: pointer; - display: flex; - justify-content: center; - padding: 0.75rem; } - html.theme--documenter-dark .card-image { - display: block; - position: relative; } - html.theme--documenter-dark .card-content { - background-color: transparent; - padding: 1rem 1.25rem; } - html.theme--documenter-dark .card-footer { - background-color: transparent; - border-top: 1px solid #5e6d6f; - align-items: stretch; - display: flex; } - html.theme--documenter-dark .card-footer-item { - align-items: center; - display: flex; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - justify-content: center; - padding: 0.75rem; } - html.theme--documenter-dark .card-footer-item:not(:last-child) { - border-right: 1px solid #5e6d6f; } - html.theme--documenter-dark .card .media:not(:last-child) { - margin-bottom: 1.5rem; } - html.theme--documenter-dark .dropdown { - display: inline-flex; - position: relative; - vertical-align: top; } - html.theme--documenter-dark .dropdown.is-active .dropdown-menu, html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu { - display: block; } - html.theme--documenter-dark .dropdown.is-right .dropdown-menu { - left: auto; - right: 0; } - html.theme--documenter-dark .dropdown.is-up .dropdown-menu { - bottom: 100%; - padding-bottom: 4px; - padding-top: initial; - top: auto; } - html.theme--documenter-dark .dropdown-menu { - display: none; - left: 0; - min-width: 12rem; - padding-top: 4px; - position: absolute; - top: 100%; - z-index: 20; } - html.theme--documenter-dark .dropdown-content { - background-color: #282f2f; - border-radius: 0.4em; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - html.theme--documenter-dark .dropdown-item { - color: #fff; - display: block; - font-size: 0.875rem; - line-height: 1.5; - padding: 0.375rem 1rem; - position: relative; } - html.theme--documenter-dark a.dropdown-item, - html.theme--documenter-dark button.dropdown-item { - padding-right: 3rem; - text-align: left; - white-space: nowrap; - width: 100%; } - html.theme--documenter-dark a.dropdown-item:hover, - html.theme--documenter-dark button.dropdown-item:hover { - background-color: #282f2f; - color: #0a0a0a; } - html.theme--documenter-dark a.dropdown-item.is-active, - html.theme--documenter-dark button.dropdown-item.is-active { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .dropdown-divider { - background-color: #5e6d6f; - border: none; - display: block; - height: 1px; - margin: 0.5rem 0; } - html.theme--documenter-dark .level { - align-items: center; - justify-content: space-between; } - html.theme--documenter-dark .level code { - border-radius: 0.4em; } - html.theme--documenter-dark .level img { - display: inline-block; - vertical-align: top; } - html.theme--documenter-dark .level.is-mobile { - display: flex; } - html.theme--documenter-dark .level.is-mobile .level-left, - html.theme--documenter-dark .level.is-mobile .level-right { - display: flex; } - html.theme--documenter-dark .level.is-mobile .level-left + .level-right { - margin-top: 0; } - html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow) { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level { - display: flex; } - html.theme--documenter-dark .level > .level-item:not(.is-narrow) { - flex-grow: 1; } } - html.theme--documenter-dark .level-item { - align-items: center; - display: flex; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; } - html.theme--documenter-dark .level-item .title, - html.theme--documenter-dark .level-item .subtitle { - margin-bottom: 0; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .level-item:not(:last-child) { - margin-bottom: 0.75rem; } } - html.theme--documenter-dark .level-left, - html.theme--documenter-dark .level-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .level-left .level-item.is-flexible, - html.theme--documenter-dark .level-right .level-item.is-flexible { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level-left .level-item:not(:last-child), - html.theme--documenter-dark .level-right .level-item:not(:last-child) { - margin-right: 0.75rem; } } - html.theme--documenter-dark .level-left { - align-items: center; - justify-content: flex-start; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .level-left + .level-right { - margin-top: 1.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level-left { - display: flex; } } - html.theme--documenter-dark .level-right { - align-items: center; - justify-content: flex-end; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .level-right { - display: flex; } } - html.theme--documenter-dark .list { - background-color: white; - border-radius: 0.4em; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .list-item { - display: block; - padding: 0.5em 1em; } - html.theme--documenter-dark .list-item:not(a) { - color: #fff; } - html.theme--documenter-dark .list-item:first-child { - border-top-left-radius: 0.4em; - border-top-right-radius: 0.4em; } - html.theme--documenter-dark .list-item:last-child { - border-bottom-left-radius: 0.4em; - border-bottom-right-radius: 0.4em; } - html.theme--documenter-dark .list-item:not(:last-child) { - border-bottom: 1px solid #5e6d6f; } - html.theme--documenter-dark .list-item.is-active { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark a.list-item { - background-color: #282f2f; - cursor: pointer; } - html.theme--documenter-dark .media { - align-items: flex-start; - display: flex; - text-align: left; } - html.theme--documenter-dark .media .content:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .media .media { - border-top: 1px solid rgba(94, 109, 111, 0.5); - display: flex; - padding-top: 0.75rem; } - html.theme--documenter-dark .media .media .content:not(:last-child), - html.theme--documenter-dark .media .media .control:not(:last-child) { - margin-bottom: 0.5rem; } - html.theme--documenter-dark .media .media .media { - padding-top: 0.5rem; } - html.theme--documenter-dark .media .media .media + .media { - margin-top: 0.5rem; } - html.theme--documenter-dark .media + .media { - border-top: 1px solid rgba(94, 109, 111, 0.5); - margin-top: 1rem; - padding-top: 1rem; } - html.theme--documenter-dark .media.is-large + .media { - margin-top: 1.5rem; - padding-top: 1.5rem; } - html.theme--documenter-dark .media-left, - html.theme--documenter-dark .media-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .media-left { - margin-right: 1rem; } - html.theme--documenter-dark .media-right { - margin-left: 1rem; } - html.theme--documenter-dark .media-content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: left; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .media-content { - overflow-x: auto; } } - html.theme--documenter-dark .menu { - font-size: 15px; } - html.theme--documenter-dark .menu.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.menu { - font-size: 0.85em; } - html.theme--documenter-dark .menu.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .menu.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .menu-list { - line-height: 1.25; } - html.theme--documenter-dark .menu-list a { - border-radius: 3px; - color: #fff; - display: block; - padding: 0.5em 0.75em; } - html.theme--documenter-dark .menu-list a:hover { - background-color: #282f2f; - color: #f2f2f2; } - html.theme--documenter-dark .menu-list a.is-active { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .menu-list li ul { - border-left: 1px solid #5e6d6f; - margin: 0.75em; - padding-left: 0.75em; } - html.theme--documenter-dark .menu-label { - color: white; - font-size: 0.75em; - letter-spacing: 0.1em; - text-transform: uppercase; } - html.theme--documenter-dark .menu-label:not(:first-child) { - margin-top: 1em; } - html.theme--documenter-dark .menu-label:not(:last-child) { - margin-bottom: 1em; } - html.theme--documenter-dark .message { - background-color: #282f2f; - border-radius: 0.4em; - font-size: 15px; } - html.theme--documenter-dark .message strong { - color: currentColor; } - html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - html.theme--documenter-dark .message.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.message { - font-size: 0.85em; } - html.theme--documenter-dark .message.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .message.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .message.is-white { - background-color: white; } - html.theme--documenter-dark .message.is-white .message-header { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .message.is-white .message-body { - border-color: white; - color: #4d4d4d; } - html.theme--documenter-dark .message.is-black { - background-color: #fafafa; } - html.theme--documenter-dark .message.is-black .message-header { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .message.is-black .message-body { - border-color: #0a0a0a; - color: #090909; } - html.theme--documenter-dark .message.is-light { - background-color: #f9fafb; } - html.theme--documenter-dark .message.is-light .message-header { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .message.is-light .message-body { - border-color: #ecf0f1; - color: #505050; } - html.theme--documenter-dark .message.is-dark, html.theme--documenter-dark .content kbd.message { - background-color: #f9fafa; } - html.theme--documenter-dark .message.is-dark .message-header, html.theme--documenter-dark .content kbd.message .message-header { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .message.is-dark .message-body, html.theme--documenter-dark .content kbd.message .message-body { - border-color: #282f2f; - color: #212526; } - html.theme--documenter-dark .message.is-primary, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink { - background-color: #f8fafc; } - html.theme--documenter-dark .message.is-primary .message-header, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-header { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .message.is-primary .message-body, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-body { - border-color: #375a7f; - color: #2b4159; } - html.theme--documenter-dark .message.is-link { - background-color: #f6fefc; } - html.theme--documenter-dark .message.is-link .message-header { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .message.is-link .message-body { - border-color: #1abc9c; - color: #0b2f28; } - html.theme--documenter-dark .message.is-info { - background-color: #f5fbff; } - html.theme--documenter-dark .message.is-info .message-header { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .message.is-info .message-body { - border-color: #024c7d; - color: #033659; } - html.theme--documenter-dark .message.is-success { - background-color: #f5fff9; } - html.theme--documenter-dark .message.is-success .message-header { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .message.is-success .message-body { - border-color: #008438; - color: #023518; } - html.theme--documenter-dark .message.is-warning { - background-color: #fffcf5; } - html.theme--documenter-dark .message.is-warning .message-header { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .message.is-warning .message-body { - border-color: #ad8100; - color: #3d2e03; } - html.theme--documenter-dark .message.is-danger { - background-color: #fef6f6; } - html.theme--documenter-dark .message.is-danger .message-header { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .message.is-danger .message-body { - border-color: #9e1b0d; - color: #7a170c; } - html.theme--documenter-dark .message-header { - align-items: center; - background-color: #fff; - border-radius: 0.4em 0.4em 0 0; - color: rgba(0, 0, 0, 0.7); - display: flex; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - html.theme--documenter-dark .message-header .delete { - flex-grow: 0; - flex-shrink: 0; - margin-left: 0.75em; } - html.theme--documenter-dark .message-header + .message-body { - border-width: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; } - html.theme--documenter-dark .message-body { - border-color: #5e6d6f; - border-radius: 0.4em; - border-style: solid; - border-width: 0 0 0 4px; - color: #fff; - padding: 1em 1.25em; } - html.theme--documenter-dark .message-body code, - html.theme--documenter-dark .message-body pre { - background-color: white; } - html.theme--documenter-dark .message-body pre code { - background-color: transparent; } - html.theme--documenter-dark .modal { - align-items: center; - display: none; - flex-direction: column; - justify-content: center; - overflow: hidden; - position: fixed; - z-index: 40; } - html.theme--documenter-dark .modal.is-active { - display: flex; } - html.theme--documenter-dark .modal-background { - background-color: rgba(10, 10, 10, 0.86); } - html.theme--documenter-dark .modal-content, - html.theme--documenter-dark .modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .modal-content, - html.theme--documenter-dark .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; } } - html.theme--documenter-dark .modal-close { - background: none; - height: 40px; - position: fixed; - right: 20px; - top: 20px; - width: 40px; } - html.theme--documenter-dark .modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; - -ms-overflow-y: visible; } - html.theme--documenter-dark .modal-card-head, - html.theme--documenter-dark .modal-card-foot { - align-items: center; - background-color: #282f2f; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; } - html.theme--documenter-dark .modal-card-head { - border-bottom: 1px solid #5e6d6f; - border-top-left-radius: 8px; - border-top-right-radius: 8px; } - html.theme--documenter-dark .modal-card-title { - color: #f2f2f2; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; } - html.theme--documenter-dark .modal-card-foot { - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark .modal-card-foot .button:not(:last-child) { - margin-right: 0.5em; } - html.theme--documenter-dark .modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: white; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; } - html.theme--documenter-dark .navbar { - background-color: #375a7f; - min-height: 4rem; - position: relative; - z-index: 30; } - html.theme--documenter-dark .navbar.is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link { - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after { - border-color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-burger { - color: #0a0a0a; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-white .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-white .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link { - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after { - border-color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active { - background-color: white; - color: #0a0a0a; } } - html.theme--documenter-dark .navbar.is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link { - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active { - background-color: black; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after { - border-color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-burger { - color: white; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-black .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-black .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link { - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active { - background-color: black; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after { - border-color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { - background-color: black; - color: white; } - html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active { - background-color: #0a0a0a; - color: white; } } - html.theme--documenter-dark .navbar.is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link { - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after { - border-color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-burger { - color: #282f2f; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-light .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-light .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link { - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after { - border-color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active { - background-color: #ecf0f1; - color: #282f2f; } } - html.theme--documenter-dark .navbar.is-dark, html.theme--documenter-dark .content kbd.navbar { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-brand > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link { - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after { - border-color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-burger, html.theme--documenter-dark .content kbd.navbar .navbar-burger { - color: #ecf0f1; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-dark .navbar-start > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-dark .navbar-end > .navbar-item, - html.theme--documenter-dark .content kbd.navbar .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link { - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after, - html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after { - border-color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, - html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { - background-color: #282f2f; - color: #ecf0f1; } } - html.theme--documenter-dark .navbar.is-primary, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-brand > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-burger, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-primary .navbar-start > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-primary .navbar-end > .navbar-item, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, - html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { - background-color: #375a7f; - color: #fff; } } - html.theme--documenter-dark .navbar.is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-link .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-link .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active { - background-color: #1abc9c; - color: #fff; } } - html.theme--documenter-dark .navbar.is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-info .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-info .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active { - background-color: #024c7d; - color: #fff; } } - html.theme--documenter-dark .navbar.is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-success .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-success .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active { - background-color: #008438; - color: #fff; } } - html.theme--documenter-dark .navbar.is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-warning .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-warning .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { - background-color: #ad8100; - color: #fff; } } - html.theme--documenter-dark .navbar.is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-brand > .navbar-item, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar.is-danger .navbar-start > .navbar-item, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link, - html.theme--documenter-dark .navbar.is-danger .navbar-end > .navbar-item, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link { - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after, - html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after { - border-color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, - html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, - html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { - background-color: #9e1b0d; - color: #fff; } } - html.theme--documenter-dark .navbar > .container { - align-items: stretch; - display: flex; - min-height: 4rem; - width: 100%; } - html.theme--documenter-dark .navbar.has-shadow { - box-shadow: 0 2px 0 0 #282f2f; } - html.theme--documenter-dark .navbar.is-fixed-bottom, html.theme--documenter-dark .navbar.is-fixed-top { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - html.theme--documenter-dark .navbar.is-fixed-bottom { - bottom: 0; } - html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow { - box-shadow: 0 -2px 0 0 #282f2f; } - html.theme--documenter-dark .navbar.is-fixed-top { - top: 0; } - html.theme--documenter-dark html.has-navbar-fixed-top, - html.theme--documenter-dark body.has-navbar-fixed-top { - padding-top: 4rem; } - html.theme--documenter-dark html.has-navbar-fixed-bottom, - html.theme--documenter-dark body.has-navbar-fixed-bottom { - padding-bottom: 4rem; } - html.theme--documenter-dark .navbar-brand, - html.theme--documenter-dark .navbar-tabs { - align-items: stretch; - display: flex; - flex-shrink: 0; - min-height: 4rem; } - html.theme--documenter-dark .navbar-brand a.navbar-item:focus, html.theme--documenter-dark .navbar-brand a.navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .navbar-tabs { - -webkit-overflow-scrolling: touch; - max-width: 100vw; - overflow-x: auto; - overflow-y: hidden; } - html.theme--documenter-dark .navbar-burger { - color: #fff; - cursor: pointer; - display: block; - height: 4rem; - position: relative; - width: 4rem; - margin-left: auto; } - html.theme--documenter-dark .navbar-burger span { - background-color: currentColor; - display: block; - height: 1px; - left: calc(50% - 8px); - position: absolute; - transform-origin: center; - transition-duration: 86ms; - transition-property: background-color, opacity, transform; - transition-timing-function: ease-out; - width: 16px; } - html.theme--documenter-dark .navbar-burger span:nth-child(1) { - top: calc(50% - 6px); } - html.theme--documenter-dark .navbar-burger span:nth-child(2) { - top: calc(50% - 1px); } - html.theme--documenter-dark .navbar-burger span:nth-child(3) { - top: calc(50% + 4px); } - html.theme--documenter-dark .navbar-burger:hover { - background-color: rgba(0, 0, 0, 0.05); } - html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1) { - transform: translateY(5px) rotate(45deg); } - html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2) { - opacity: 0; } - html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); } - html.theme--documenter-dark .navbar-menu { - display: none; } - html.theme--documenter-dark .navbar-item, - html.theme--documenter-dark .navbar-link { - color: #fff; - display: block; - line-height: 1.5; - padding: 0.5rem 0.75rem; - position: relative; } - html.theme--documenter-dark .navbar-item .icon:only-child, - html.theme--documenter-dark .navbar-link .icon:only-child { - margin-left: -0.25rem; - margin-right: -0.25rem; } - html.theme--documenter-dark a.navbar-item, - html.theme--documenter-dark .navbar-link { - cursor: pointer; } - html.theme--documenter-dark a.navbar-item:focus, html.theme--documenter-dark a.navbar-item:focus-within, html.theme--documenter-dark a.navbar-item:hover, html.theme--documenter-dark a.navbar-item.is-active, - html.theme--documenter-dark .navbar-link:focus, - html.theme--documenter-dark .navbar-link:focus-within, - html.theme--documenter-dark .navbar-link:hover, - html.theme--documenter-dark .navbar-link.is-active { - background-color: transparent; - color: #1abc9c; } - html.theme--documenter-dark .navbar-item { - display: block; - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .navbar-item img { - max-height: 1.75rem; } - html.theme--documenter-dark .navbar-item.has-dropdown { - padding: 0; } - html.theme--documenter-dark .navbar-item.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .navbar-item.is-tab { - border-bottom: 1px solid transparent; - min-height: 4rem; - padding-bottom: calc(0.5rem - 1px); } - html.theme--documenter-dark .navbar-item.is-tab:focus, html.theme--documenter-dark .navbar-item.is-tab:hover { - background-color: transparent; - border-bottom-color: #1abc9c; } - html.theme--documenter-dark .navbar-item.is-tab.is-active { - background-color: transparent; - border-bottom-color: #1abc9c; - border-bottom-style: solid; - border-bottom-width: 3px; - color: #1abc9c; - padding-bottom: calc(0.5rem - 3px); } - html.theme--documenter-dark .navbar-content { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .navbar-link:not(.is-arrowless) { - padding-right: 2.5em; } - html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { - border-color: #fff; - margin-top: -0.375em; - right: 1.125em; } - html.theme--documenter-dark .navbar-dropdown { - font-size: 0.875rem; - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - html.theme--documenter-dark .navbar-dropdown .navbar-item { - padding-left: 1.5rem; - padding-right: 1.5rem; } - html.theme--documenter-dark .navbar-divider { - background-color: rgba(0, 0, 0, 0.2); - border: none; - display: none; - height: 2px; - margin: 0.5rem 0; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .navbar > .container { - display: block; } - html.theme--documenter-dark .navbar-brand .navbar-item, - html.theme--documenter-dark .navbar-tabs .navbar-item { - align-items: center; - display: flex; } - html.theme--documenter-dark .navbar-link::after { - display: none; } - html.theme--documenter-dark .navbar-menu { - background-color: #375a7f; - box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); - padding: 0.5rem 0; } - html.theme--documenter-dark .navbar-menu.is-active { - display: block; } - html.theme--documenter-dark .navbar.is-fixed-bottom-touch, html.theme--documenter-dark .navbar.is-fixed-top-touch { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - html.theme--documenter-dark .navbar.is-fixed-bottom-touch { - bottom: 0; } - html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .navbar.is-fixed-top-touch { - top: 0; } - html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu, html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu { - -webkit-overflow-scrolling: touch; - max-height: calc(100vh - 4rem); - overflow: auto; } - html.theme--documenter-dark html.has-navbar-fixed-top-touch, - html.theme--documenter-dark body.has-navbar-fixed-top-touch { - padding-top: 4rem; } - html.theme--documenter-dark html.has-navbar-fixed-bottom-touch, - html.theme--documenter-dark body.has-navbar-fixed-bottom-touch { - padding-bottom: 4rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .navbar, - html.theme--documenter-dark .navbar-menu, - html.theme--documenter-dark .navbar-start, - html.theme--documenter-dark .navbar-end { - align-items: stretch; - display: flex; } - html.theme--documenter-dark .navbar { - min-height: 4rem; } - html.theme--documenter-dark .navbar.is-spaced { - padding: 1rem 2rem; } - html.theme--documenter-dark .navbar.is-spaced .navbar-start, - html.theme--documenter-dark .navbar.is-spaced .navbar-end { - align-items: center; } - html.theme--documenter-dark .navbar.is-spaced a.navbar-item, - html.theme--documenter-dark .navbar.is-spaced .navbar-link { - border-radius: 0.4em; } - html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover, html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active, - html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus, - html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover, - html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active { - background-color: transparent !important; } - html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { - background-color: transparent !important; } - html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { - background-color: transparent; - color: #dbdee0; } - html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { - background-color: transparent; - color: #1abc9c; } - html.theme--documenter-dark .navbar-burger { - display: none; } - html.theme--documenter-dark .navbar-item, - html.theme--documenter-dark .navbar-link { - align-items: center; - display: flex; } - html.theme--documenter-dark .navbar-item { - display: flex; } - html.theme--documenter-dark .navbar-item.has-dropdown { - align-items: stretch; } - html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after { - transform: rotate(135deg) translate(0.25em, -0.25em); } - html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 8px 8px 0 0; - border-top: none; - bottom: 100%; - box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); - top: auto; } - html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown { - display: block; } - .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { - opacity: 1; - pointer-events: auto; - transform: translateY(0); } - html.theme--documenter-dark .navbar-menu { - flex-grow: 1; - flex-shrink: 0; } - html.theme--documenter-dark .navbar-start { - justify-content: flex-start; - margin-right: auto; } - html.theme--documenter-dark .navbar-end { - justify-content: flex-end; - margin-left: auto; } - html.theme--documenter-dark .navbar-dropdown { - background-color: #375a7f; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - border-top: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); - display: none; - font-size: 0.875rem; - left: 0; - min-width: 100%; - position: absolute; - top: 100%; - z-index: 20; } - html.theme--documenter-dark .navbar-dropdown .navbar-item { - padding: 0.375rem 1rem; - white-space: nowrap; } - html.theme--documenter-dark .navbar-dropdown a.navbar-item { - padding-right: 3rem; } - html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover { - background-color: transparent; - color: #dbdee0; } - html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active { - background-color: transparent; - color: #1abc9c; } - .navbar.is-spaced html.theme--documenter-dark .navbar-dropdown, html.theme--documenter-dark .navbar-dropdown.is-boxed { - border-radius: 8px; - border-top: none; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - display: block; - opacity: 0; - pointer-events: none; - top: calc(100% + (-4px)); - transform: translateY(-5px); - transition-duration: 86ms; - transition-property: opacity, transform; } - html.theme--documenter-dark .navbar-dropdown.is-right { - left: auto; - right: 0; } - html.theme--documenter-dark .navbar-divider { - display: block; } - html.theme--documenter-dark .navbar > .container .navbar-brand, - html.theme--documenter-dark .container > .navbar .navbar-brand { - margin-left: -.75rem; } - html.theme--documenter-dark .navbar > .container .navbar-menu, - html.theme--documenter-dark .container > .navbar .navbar-menu { - margin-right: -.75rem; } - html.theme--documenter-dark .navbar.is-fixed-bottom-desktop, html.theme--documenter-dark .navbar.is-fixed-top-desktop { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - html.theme--documenter-dark .navbar.is-fixed-bottom-desktop { - bottom: 0; } - html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .navbar.is-fixed-top-desktop { - top: 0; } - html.theme--documenter-dark html.has-navbar-fixed-top-desktop, - html.theme--documenter-dark body.has-navbar-fixed-top-desktop { - padding-top: 4rem; } - html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop, - html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop { - padding-bottom: 4rem; } - html.theme--documenter-dark html.has-spaced-navbar-fixed-top, - html.theme--documenter-dark body.has-spaced-navbar-fixed-top { - padding-top: 6rem; } - html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom, - html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom { - padding-bottom: 6rem; } - html.theme--documenter-dark a.navbar-item.is-active, - html.theme--documenter-dark .navbar-link.is-active { - color: #1abc9c; } - html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover), - html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover) { - background-color: transparent; } - html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link { - background-color: transparent; } } - html.theme--documenter-dark .hero.is-fullheight-with-navbar { - min-height: calc(100vh - 4rem); } - html.theme--documenter-dark .pagination { - font-size: 15px; - margin: -0.25rem; } - html.theme--documenter-dark .pagination.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination { - font-size: 0.85em; } - html.theme--documenter-dark .pagination.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .pagination.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .pagination.is-rounded .pagination-previous, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, - html.theme--documenter-dark .pagination.is-rounded .pagination-next, - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { - padding-left: 1em; - padding-right: 1em; - border-radius: 290486px; } - html.theme--documenter-dark .pagination.is-rounded .pagination-link, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { - border-radius: 290486px; } - html.theme--documenter-dark .pagination, - html.theme--documenter-dark .pagination-list { - align-items: center; - display: flex; - justify-content: center; - text-align: center; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark .pagination-ellipsis { - font-size: 1em; - justify-content: center; - margin: 0.25rem; - padding-left: 0.5em; - padding-right: 0.5em; - text-align: center; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-link { - border-color: #5e6d6f; - color: #1abc9c; - min-width: 2.25em; } - html.theme--documenter-dark .pagination-previous:hover, - html.theme--documenter-dark .pagination-next:hover, - html.theme--documenter-dark .pagination-link:hover { - border-color: #8c9b9d; - color: #1dd2af; } - html.theme--documenter-dark .pagination-previous:focus, - html.theme--documenter-dark .pagination-next:focus, - html.theme--documenter-dark .pagination-link:focus { - border-color: #8c9b9d; } - html.theme--documenter-dark .pagination-previous:active, - html.theme--documenter-dark .pagination-next:active, - html.theme--documenter-dark .pagination-link:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } - html.theme--documenter-dark .pagination-previous[disabled], - html.theme--documenter-dark .pagination-next[disabled], - html.theme--documenter-dark .pagination-link[disabled] { - background-color: #dbdee0; - border-color: #dbdee0; - box-shadow: none; - color: #5e6d6f; - opacity: 0.5; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next { - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - html.theme--documenter-dark .pagination-link.is-current { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .pagination-ellipsis { - color: #8c9b9d; - pointer-events: none; } - html.theme--documenter-dark .pagination-list { - flex-wrap: wrap; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .pagination { - flex-wrap: wrap; } - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .pagination-next { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .pagination-list li { - flex-grow: 1; - flex-shrink: 1; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .pagination-list { - flex-grow: 1; - flex-shrink: 1; - justify-content: flex-start; - order: 1; } - html.theme--documenter-dark .pagination-previous { - order: 2; } - html.theme--documenter-dark .pagination-next { - order: 3; } - html.theme--documenter-dark .pagination { - justify-content: space-between; } - html.theme--documenter-dark .pagination.is-centered .pagination-previous { - order: 1; } - html.theme--documenter-dark .pagination.is-centered .pagination-list { - justify-content: center; - order: 2; } - html.theme--documenter-dark .pagination.is-centered .pagination-next { - order: 3; } - html.theme--documenter-dark .pagination.is-right .pagination-previous { - order: 1; } - html.theme--documenter-dark .pagination.is-right .pagination-next { - order: 2; } - html.theme--documenter-dark .pagination.is-right .pagination-list { - justify-content: flex-end; - order: 3; } } - html.theme--documenter-dark .panel { - font-size: 15px; } - html.theme--documenter-dark .panel:not(:last-child) { - margin-bottom: 1.5rem; } - html.theme--documenter-dark .panel-heading, - html.theme--documenter-dark .panel-tabs, - html.theme--documenter-dark .panel-block { - border-bottom: 1px solid #5e6d6f; - border-left: 1px solid #5e6d6f; - border-right: 1px solid #5e6d6f; } - html.theme--documenter-dark .panel-heading:first-child, - html.theme--documenter-dark .panel-tabs:first-child, - html.theme--documenter-dark .panel-block:first-child { - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark .panel-heading { - background-color: #282f2f; - border-radius: 0.4em 0.4em 0 0; - color: #f2f2f2; - font-size: 1.25em; - font-weight: 300; - line-height: 1.25; - padding: 0.5em 0.75em; } - html.theme--documenter-dark .panel-tabs { - align-items: flex-end; - display: flex; - font-size: 0.875em; - justify-content: center; } - html.theme--documenter-dark .panel-tabs a { - border-bottom: 1px solid #5e6d6f; - margin-bottom: -1px; - padding: 0.5em; } - html.theme--documenter-dark .panel-tabs a.is-active { - border-bottom-color: #343c3d; - color: #17a689; } - html.theme--documenter-dark .panel-list a { - color: #fff; } - html.theme--documenter-dark .panel-list a:hover { - color: #1abc9c; } - html.theme--documenter-dark .panel-block { - align-items: center; - color: #f2f2f2; - display: flex; - justify-content: flex-start; - padding: 0.5em 0.75em; } - html.theme--documenter-dark .panel-block input[type="checkbox"] { - margin-right: 0.75em; } - html.theme--documenter-dark .panel-block > .control { - flex-grow: 1; - flex-shrink: 1; - width: 100%; } - html.theme--documenter-dark .panel-block.is-wrapped { - flex-wrap: wrap; } - html.theme--documenter-dark .panel-block.is-active { - border-left-color: #1abc9c; - color: #17a689; } - html.theme--documenter-dark .panel-block.is-active .panel-icon { - color: #1abc9c; } - html.theme--documenter-dark a.panel-block, - html.theme--documenter-dark label.panel-block { - cursor: pointer; } - html.theme--documenter-dark a.panel-block:hover, - html.theme--documenter-dark label.panel-block:hover { - background-color: #282f2f; } - html.theme--documenter-dark .panel-icon { - display: inline-block; - font-size: 14px; - height: 1em; - line-height: 1em; - text-align: center; - vertical-align: top; - width: 1em; - color: white; - margin-right: 0.75em; } - html.theme--documenter-dark .panel-icon .fa { - font-size: inherit; - line-height: inherit; } - html.theme--documenter-dark .tabs { - -webkit-overflow-scrolling: touch; - align-items: stretch; - display: flex; - font-size: 15px; - justify-content: space-between; - overflow: hidden; - overflow-x: auto; - white-space: nowrap; } - html.theme--documenter-dark .tabs a { - align-items: center; - border-bottom-color: #5e6d6f; - border-bottom-style: solid; - border-bottom-width: 1px; - color: #fff; - display: flex; - justify-content: center; - margin-bottom: -1px; - padding: 0.5em 1em; - vertical-align: top; } - html.theme--documenter-dark .tabs a:hover { - border-bottom-color: #f2f2f2; - color: #f2f2f2; } - html.theme--documenter-dark .tabs li { - display: block; } - html.theme--documenter-dark .tabs li.is-active a { - border-bottom-color: #1abc9c; - color: #1abc9c; } - html.theme--documenter-dark .tabs ul { - align-items: center; - border-bottom-color: #5e6d6f; - border-bottom-style: solid; - border-bottom-width: 1px; - display: flex; - flex-grow: 1; - flex-shrink: 0; - justify-content: flex-start; } - html.theme--documenter-dark .tabs ul.is-left { - padding-right: 0.75em; } - html.theme--documenter-dark .tabs ul.is-center { - flex: none; - justify-content: center; - padding-left: 0.75em; - padding-right: 0.75em; } - html.theme--documenter-dark .tabs ul.is-right { - justify-content: flex-end; - padding-left: 0.75em; } - html.theme--documenter-dark .tabs .icon:first-child { - margin-right: 0.5em; } - html.theme--documenter-dark .tabs .icon:last-child { - margin-left: 0.5em; } - html.theme--documenter-dark .tabs.is-centered ul { - justify-content: center; } - html.theme--documenter-dark .tabs.is-right ul { - justify-content: flex-end; } - html.theme--documenter-dark .tabs.is-boxed a { - border: 1px solid transparent; - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .tabs.is-boxed a:hover { - background-color: #282f2f; - border-bottom-color: #5e6d6f; } - html.theme--documenter-dark .tabs.is-boxed li.is-active a { - background-color: white; - border-color: #5e6d6f; - border-bottom-color: transparent !important; } - html.theme--documenter-dark .tabs.is-fullwidth li { - flex-grow: 1; - flex-shrink: 0; } - html.theme--documenter-dark .tabs.is-toggle a { - border-color: #5e6d6f; - border-style: solid; - border-width: 1px; - margin-bottom: 0; - position: relative; } - html.theme--documenter-dark .tabs.is-toggle a:hover { - background-color: #282f2f; - border-color: #8c9b9d; - z-index: 2; } - html.theme--documenter-dark .tabs.is-toggle li + li { - margin-left: -1px; } - html.theme--documenter-dark .tabs.is-toggle li:first-child a { - border-radius: 0.4em 0 0 0.4em; } - html.theme--documenter-dark .tabs.is-toggle li:last-child a { - border-radius: 0 0.4em 0.4em 0; } - html.theme--documenter-dark .tabs.is-toggle li.is-active a { - background-color: #1abc9c; - border-color: #1abc9c; - color: #fff; - z-index: 1; } - html.theme--documenter-dark .tabs.is-toggle ul { - border-bottom: none; } - html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a { - border-bottom-left-radius: 290486px; - border-top-left-radius: 290486px; - padding-left: 1.25em; } - html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a { - border-bottom-right-radius: 290486px; - border-top-right-radius: 290486px; - padding-right: 1.25em; } - html.theme--documenter-dark .tabs.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tabs { - font-size: 0.85em; } - html.theme--documenter-dark .tabs.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .tabs.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .column { - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - padding: 0.75rem; } - .columns.is-mobile > html.theme--documenter-dark .column.is-narrow { - flex: none; } - .columns.is-mobile > html.theme--documenter-dark .column.is-full { - flex: none; - width: 100%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-three-quarters { - flex: none; - width: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-two-thirds { - flex: none; - width: 66.6666%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-half { - flex: none; - width: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-one-third { - flex: none; - width: 33.3333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-one-quarter { - flex: none; - width: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-one-fifth { - flex: none; - width: 20%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-two-fifths { - flex: none; - width: 40%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-three-fifths { - flex: none; - width: 60%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-four-fifths { - flex: none; - width: 80%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-quarters { - margin-left: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-thirds { - margin-left: 66.6666%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-half { - margin-left: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-third { - margin-left: 33.3333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-quarter { - margin-left: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-fifth { - margin-left: 20%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-fifths { - margin-left: 40%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-fifths { - margin-left: 60%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-four-fifths { - margin-left: 80%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-0 { - flex: none; - width: 0%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-0 { - margin-left: 0%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-1 { - flex: none; - width: 8.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-1 { - margin-left: 8.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-2 { - flex: none; - width: 16.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-2 { - margin-left: 16.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-3 { - flex: none; - width: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-3 { - margin-left: 25%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-4 { - flex: none; - width: 33.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-4 { - margin-left: 33.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-5 { - flex: none; - width: 41.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-5 { - margin-left: 41.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-6 { - flex: none; - width: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-6 { - margin-left: 50%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-7 { - flex: none; - width: 58.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-7 { - margin-left: 58.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-8 { - flex: none; - width: 66.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-8 { - margin-left: 66.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-9 { - flex: none; - width: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-9 { - margin-left: 75%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-10 { - flex: none; - width: 83.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-10 { - margin-left: 83.33333%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-11 { - flex: none; - width: 91.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-11 { - margin-left: 91.66667%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-12 { - flex: none; - width: 100%; } - .columns.is-mobile > html.theme--documenter-dark .column.is-offset-12 { - margin-left: 100%; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .column.is-narrow-mobile { - flex: none; } - html.theme--documenter-dark .column.is-full-mobile { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-mobile { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-mobile { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-mobile { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-mobile { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-mobile { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-mobile { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-mobile { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-mobile { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-mobile { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-mobile { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-mobile { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-mobile { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-mobile { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-mobile { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-mobile { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-mobile { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-mobile { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-mobile { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-mobile { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-mobile { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-mobile { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-mobile { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-mobile { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-mobile { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-mobile { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-mobile { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-mobile { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-mobile { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-mobile { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-mobile { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-mobile { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-mobile { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-mobile { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-mobile { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-mobile { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-mobile { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-mobile { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-mobile { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-mobile { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-mobile { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-mobile { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-mobile { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-mobile { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-mobile { - margin-left: 100%; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .column.is-narrow, html.theme--documenter-dark .column.is-narrow-tablet { - flex: none; } - html.theme--documenter-dark .column.is-full, html.theme--documenter-dark .column.is-full-tablet { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters, html.theme--documenter-dark .column.is-three-quarters-tablet { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds, html.theme--documenter-dark .column.is-two-thirds-tablet { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half, html.theme--documenter-dark .column.is-half-tablet { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third, html.theme--documenter-dark .column.is-one-third-tablet { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter, html.theme--documenter-dark .column.is-one-quarter-tablet { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth, html.theme--documenter-dark .column.is-one-fifth-tablet { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths, html.theme--documenter-dark .column.is-two-fifths-tablet { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths, html.theme--documenter-dark .column.is-three-fifths-tablet { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths, html.theme--documenter-dark .column.is-four-fifths-tablet { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters, html.theme--documenter-dark .column.is-offset-three-quarters-tablet { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds, html.theme--documenter-dark .column.is-offset-two-thirds-tablet { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half, html.theme--documenter-dark .column.is-offset-half-tablet { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third, html.theme--documenter-dark .column.is-offset-one-third-tablet { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter, html.theme--documenter-dark .column.is-offset-one-quarter-tablet { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth, html.theme--documenter-dark .column.is-offset-one-fifth-tablet { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths, html.theme--documenter-dark .column.is-offset-two-fifths-tablet { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths, html.theme--documenter-dark .column.is-offset-three-fifths-tablet { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths, html.theme--documenter-dark .column.is-offset-four-fifths-tablet { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0, html.theme--documenter-dark .column.is-0-tablet { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0, html.theme--documenter-dark .column.is-offset-0-tablet { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1, html.theme--documenter-dark .column.is-1-tablet { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1, html.theme--documenter-dark .column.is-offset-1-tablet { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2, html.theme--documenter-dark .column.is-2-tablet { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2, html.theme--documenter-dark .column.is-offset-2-tablet { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3, html.theme--documenter-dark .column.is-3-tablet { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3, html.theme--documenter-dark .column.is-offset-3-tablet { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4, html.theme--documenter-dark .column.is-4-tablet { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4, html.theme--documenter-dark .column.is-offset-4-tablet { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5, html.theme--documenter-dark .column.is-5-tablet { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5, html.theme--documenter-dark .column.is-offset-5-tablet { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6, html.theme--documenter-dark .column.is-6-tablet { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6, html.theme--documenter-dark .column.is-offset-6-tablet { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7, html.theme--documenter-dark .column.is-7-tablet { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7, html.theme--documenter-dark .column.is-offset-7-tablet { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8, html.theme--documenter-dark .column.is-8-tablet { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8, html.theme--documenter-dark .column.is-offset-8-tablet { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9, html.theme--documenter-dark .column.is-9-tablet { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9, html.theme--documenter-dark .column.is-offset-9-tablet { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10, html.theme--documenter-dark .column.is-10-tablet { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10, html.theme--documenter-dark .column.is-offset-10-tablet { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11, html.theme--documenter-dark .column.is-11-tablet { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11, html.theme--documenter-dark .column.is-offset-11-tablet { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12, html.theme--documenter-dark .column.is-12-tablet { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12, html.theme--documenter-dark .column.is-offset-12-tablet { - margin-left: 100%; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .column.is-narrow-touch { - flex: none; } - html.theme--documenter-dark .column.is-full-touch { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-touch { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-touch { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-touch { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-touch { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-touch { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-touch { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-touch { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-touch { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-touch { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-touch { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-touch { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-touch { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-touch { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-touch { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-touch { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-touch { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-touch { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-touch { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-touch { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-touch { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-touch { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-touch { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-touch { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-touch { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-touch { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-touch { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-touch { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-touch { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-touch { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-touch { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-touch { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-touch { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-touch { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-touch { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-touch { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-touch { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-touch { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-touch { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-touch { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-touch { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-touch { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-touch { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-touch { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-touch { - margin-left: 100%; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .column.is-narrow-desktop { - flex: none; } - html.theme--documenter-dark .column.is-full-desktop { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-desktop { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-desktop { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-desktop { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-desktop { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-desktop { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-desktop { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-desktop { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-desktop { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-desktop { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-desktop { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-desktop { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-desktop { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-desktop { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-desktop { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-desktop { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-desktop { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-desktop { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-desktop { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-desktop { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-desktop { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-desktop { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-desktop { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-desktop { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-desktop { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-desktop { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-desktop { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-desktop { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-desktop { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-desktop { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-desktop { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-desktop { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-desktop { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-desktop { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-desktop { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-desktop { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-desktop { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-desktop { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-desktop { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-desktop { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-desktop { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-desktop { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-desktop { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-desktop { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-desktop { - margin-left: 100%; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .column.is-narrow-widescreen { - flex: none; } - html.theme--documenter-dark .column.is-full-widescreen { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-widescreen { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-widescreen { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-widescreen { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-widescreen { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-widescreen { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-widescreen { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-widescreen { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-widescreen { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-widescreen { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-widescreen { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-widescreen { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-widescreen { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-widescreen { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-widescreen { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-widescreen { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-widescreen { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-widescreen { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-widescreen { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-widescreen { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-widescreen { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-widescreen { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-widescreen { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-widescreen { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-widescreen { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-widescreen { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-widescreen { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-widescreen { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-widescreen { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-widescreen { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-widescreen { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-widescreen { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-widescreen { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-widescreen { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-widescreen { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-widescreen { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-widescreen { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-widescreen { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-widescreen { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-widescreen { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-widescreen { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-widescreen { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-widescreen { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-widescreen { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-widescreen { - margin-left: 100%; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .column.is-narrow-fullhd { - flex: none; } - html.theme--documenter-dark .column.is-full-fullhd { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-three-quarters-fullhd { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-two-thirds-fullhd { - flex: none; - width: 66.6666%; } - html.theme--documenter-dark .column.is-half-fullhd { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-one-third-fullhd { - flex: none; - width: 33.3333%; } - html.theme--documenter-dark .column.is-one-quarter-fullhd { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-one-fifth-fullhd { - flex: none; - width: 20%; } - html.theme--documenter-dark .column.is-two-fifths-fullhd { - flex: none; - width: 40%; } - html.theme--documenter-dark .column.is-three-fifths-fullhd { - flex: none; - width: 60%; } - html.theme--documenter-dark .column.is-four-fifths-fullhd { - flex: none; - width: 80%; } - html.theme--documenter-dark .column.is-offset-three-quarters-fullhd { - margin-left: 75%; } - html.theme--documenter-dark .column.is-offset-two-thirds-fullhd { - margin-left: 66.6666%; } - html.theme--documenter-dark .column.is-offset-half-fullhd { - margin-left: 50%; } - html.theme--documenter-dark .column.is-offset-one-third-fullhd { - margin-left: 33.3333%; } - html.theme--documenter-dark .column.is-offset-one-quarter-fullhd { - margin-left: 25%; } - html.theme--documenter-dark .column.is-offset-one-fifth-fullhd { - margin-left: 20%; } - html.theme--documenter-dark .column.is-offset-two-fifths-fullhd { - margin-left: 40%; } - html.theme--documenter-dark .column.is-offset-three-fifths-fullhd { - margin-left: 60%; } - html.theme--documenter-dark .column.is-offset-four-fifths-fullhd { - margin-left: 80%; } - html.theme--documenter-dark .column.is-0-fullhd { - flex: none; - width: 0%; } - html.theme--documenter-dark .column.is-offset-0-fullhd { - margin-left: 0%; } - html.theme--documenter-dark .column.is-1-fullhd { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .column.is-offset-1-fullhd { - margin-left: 8.33333%; } - html.theme--documenter-dark .column.is-2-fullhd { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .column.is-offset-2-fullhd { - margin-left: 16.66667%; } - html.theme--documenter-dark .column.is-3-fullhd { - flex: none; - width: 25%; } - html.theme--documenter-dark .column.is-offset-3-fullhd { - margin-left: 25%; } - html.theme--documenter-dark .column.is-4-fullhd { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .column.is-offset-4-fullhd { - margin-left: 33.33333%; } - html.theme--documenter-dark .column.is-5-fullhd { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .column.is-offset-5-fullhd { - margin-left: 41.66667%; } - html.theme--documenter-dark .column.is-6-fullhd { - flex: none; - width: 50%; } - html.theme--documenter-dark .column.is-offset-6-fullhd { - margin-left: 50%; } - html.theme--documenter-dark .column.is-7-fullhd { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .column.is-offset-7-fullhd { - margin-left: 58.33333%; } - html.theme--documenter-dark .column.is-8-fullhd { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .column.is-offset-8-fullhd { - margin-left: 66.66667%; } - html.theme--documenter-dark .column.is-9-fullhd { - flex: none; - width: 75%; } - html.theme--documenter-dark .column.is-offset-9-fullhd { - margin-left: 75%; } - html.theme--documenter-dark .column.is-10-fullhd { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .column.is-offset-10-fullhd { - margin-left: 83.33333%; } - html.theme--documenter-dark .column.is-11-fullhd { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .column.is-offset-11-fullhd { - margin-left: 91.66667%; } - html.theme--documenter-dark .column.is-12-fullhd { - flex: none; - width: 100%; } - html.theme--documenter-dark .column.is-offset-12-fullhd { - margin-left: 100%; } } - html.theme--documenter-dark .columns { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - html.theme--documenter-dark .columns:last-child { - margin-bottom: -0.75rem; } - html.theme--documenter-dark .columns:not(:last-child) { - margin-bottom: calc(1.5rem - 0.75rem); } - html.theme--documenter-dark .columns.is-centered { - justify-content: center; } - html.theme--documenter-dark .columns.is-gapless { - margin-left: 0; - margin-right: 0; - margin-top: 0; } - html.theme--documenter-dark .columns.is-gapless > .column { - margin: 0; - padding: 0 !important; } - html.theme--documenter-dark .columns.is-gapless:not(:last-child) { - margin-bottom: 1.5rem; } - html.theme--documenter-dark .columns.is-gapless:last-child { - margin-bottom: 0; } - html.theme--documenter-dark .columns.is-mobile { - display: flex; } - html.theme--documenter-dark .columns.is-multiline { - flex-wrap: wrap; } - html.theme--documenter-dark .columns.is-vcentered { - align-items: center; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns:not(.is-desktop) { - display: flex; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-desktop { - display: flex; } } - html.theme--documenter-dark .columns.is-variable { - --columnGap: 0.75rem; - margin-left: calc(-1 * var(--columnGap)); - margin-right: calc(-1 * var(--columnGap)); } - html.theme--documenter-dark .columns.is-variable .column { - padding-left: var(--columnGap); - padding-right: var(--columnGap); } - html.theme--documenter-dark .columns.is-variable.is-0 { - --columnGap: 0rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-0-mobile { - --columnGap: 0rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-0-tablet { - --columnGap: 0rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-0-tablet-only { - --columnGap: 0rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-0-touch { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-0-desktop { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-0-desktop-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-0-widescreen { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-0-fullhd { - --columnGap: 0rem; } } - html.theme--documenter-dark .columns.is-variable.is-1 { - --columnGap: 0.25rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-1-mobile { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-1-tablet { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-1-tablet-only { - --columnGap: 0.25rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-1-touch { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-1-desktop { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-1-desktop-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-1-widescreen { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-1-fullhd { - --columnGap: 0.25rem; } } - html.theme--documenter-dark .columns.is-variable.is-2 { - --columnGap: 0.5rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-2-mobile { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-2-tablet { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-2-tablet-only { - --columnGap: 0.5rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-2-touch { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-2-desktop { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-2-desktop-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-2-widescreen { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-2-fullhd { - --columnGap: 0.5rem; } } - html.theme--documenter-dark .columns.is-variable.is-3 { - --columnGap: 0.75rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-3-mobile { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-3-tablet { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-3-tablet-only { - --columnGap: 0.75rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-3-touch { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-3-desktop { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-3-desktop-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-3-widescreen { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-3-fullhd { - --columnGap: 0.75rem; } } - html.theme--documenter-dark .columns.is-variable.is-4 { - --columnGap: 1rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-4-mobile { - --columnGap: 1rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-4-tablet { - --columnGap: 1rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-4-tablet-only { - --columnGap: 1rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-4-touch { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-4-desktop { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-4-desktop-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-4-widescreen { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-4-fullhd { - --columnGap: 1rem; } } - html.theme--documenter-dark .columns.is-variable.is-5 { - --columnGap: 1.25rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-5-mobile { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-5-tablet { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-5-tablet-only { - --columnGap: 1.25rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-5-touch { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-5-desktop { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-5-desktop-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-5-widescreen { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-5-fullhd { - --columnGap: 1.25rem; } } - html.theme--documenter-dark .columns.is-variable.is-6 { - --columnGap: 1.5rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-6-mobile { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-6-tablet { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-6-tablet-only { - --columnGap: 1.5rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-6-touch { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-6-desktop { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-6-desktop-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-6-widescreen { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-6-fullhd { - --columnGap: 1.5rem; } } - html.theme--documenter-dark .columns.is-variable.is-7 { - --columnGap: 1.75rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-7-mobile { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-7-tablet { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-7-tablet-only { - --columnGap: 1.75rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-7-touch { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-7-desktop { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-7-desktop-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-7-widescreen { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-7-fullhd { - --columnGap: 1.75rem; } } - html.theme--documenter-dark .columns.is-variable.is-8 { - --columnGap: 2rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .columns.is-variable.is-8-mobile { - --columnGap: 2rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .columns.is-variable.is-8-tablet { - --columnGap: 2rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-8-tablet-only { - --columnGap: 2rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .columns.is-variable.is-8-touch { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .columns.is-variable.is-8-desktop { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - html.theme--documenter-dark .columns.is-variable.is-8-desktop-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) { - html.theme--documenter-dark .columns.is-variable.is-8-widescreen { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1408px) { - html.theme--documenter-dark .columns.is-variable.is-8-fullhd { - --columnGap: 2rem; } } - html.theme--documenter-dark .tile { - align-items: stretch; - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - min-height: min-content; } - html.theme--documenter-dark .tile.is-ancestor { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - html.theme--documenter-dark .tile.is-ancestor:last-child { - margin-bottom: -0.75rem; } - html.theme--documenter-dark .tile.is-ancestor:not(:last-child) { - margin-bottom: 0.75rem; } - html.theme--documenter-dark .tile.is-child { - margin: 0 !important; } - html.theme--documenter-dark .tile.is-parent { - padding: 0.75rem; } - html.theme--documenter-dark .tile.is-vertical { - flex-direction: column; } - html.theme--documenter-dark .tile.is-vertical > .tile.is-child:not(:last-child) { - margin-bottom: 1.5rem !important; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .tile:not(.is-child) { - display: flex; } - html.theme--documenter-dark .tile.is-1 { - flex: none; - width: 8.33333%; } - html.theme--documenter-dark .tile.is-2 { - flex: none; - width: 16.66667%; } - html.theme--documenter-dark .tile.is-3 { - flex: none; - width: 25%; } - html.theme--documenter-dark .tile.is-4 { - flex: none; - width: 33.33333%; } - html.theme--documenter-dark .tile.is-5 { - flex: none; - width: 41.66667%; } - html.theme--documenter-dark .tile.is-6 { - flex: none; - width: 50%; } - html.theme--documenter-dark .tile.is-7 { - flex: none; - width: 58.33333%; } - html.theme--documenter-dark .tile.is-8 { - flex: none; - width: 66.66667%; } - html.theme--documenter-dark .tile.is-9 { - flex: none; - width: 75%; } - html.theme--documenter-dark .tile.is-10 { - flex: none; - width: 83.33333%; } - html.theme--documenter-dark .tile.is-11 { - flex: none; - width: 91.66667%; } - html.theme--documenter-dark .tile.is-12 { - flex: none; - width: 100%; } } - html.theme--documenter-dark .hero { - align-items: stretch; - display: flex; - flex-direction: column; - justify-content: space-between; } - html.theme--documenter-dark .hero .navbar { - background: none; } - html.theme--documenter-dark .hero .tabs ul { - border-bottom: none; } - html.theme--documenter-dark .hero.is-white { - background-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-white strong { - color: inherit; } - html.theme--documenter-dark .hero.is-white .title { - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white .subtitle { - color: rgba(10, 10, 10, 0.9); } - html.theme--documenter-dark .hero.is-white .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-white .subtitle strong { - color: #0a0a0a; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-white .navbar-menu { - background-color: white; } } - html.theme--documenter-dark .hero.is-white .navbar-item, - html.theme--documenter-dark .hero.is-white .navbar-link { - color: rgba(10, 10, 10, 0.7); } - html.theme--documenter-dark .hero.is-white a.navbar-item:hover, html.theme--documenter-dark .hero.is-white a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-white .navbar-link:hover, - html.theme--documenter-dark .hero.is-white .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white .tabs a { - color: #0a0a0a; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-white .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-white .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-white .tabs.is-boxed a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a { - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .hero.is-white.is-bold { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } - html.theme--documenter-dark .hero.is-black { - background-color: #0a0a0a; - color: white; } - html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-black strong { - color: inherit; } - html.theme--documenter-dark .hero.is-black .title { - color: white; } - html.theme--documenter-dark .hero.is-black .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-black .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-black .subtitle strong { - color: white; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-black .navbar-menu { - background-color: #0a0a0a; } } - html.theme--documenter-dark .hero.is-black .navbar-item, - html.theme--documenter-dark .hero.is-black .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-black a.navbar-item:hover, html.theme--documenter-dark .hero.is-black a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-black .navbar-link:hover, - html.theme--documenter-dark .hero.is-black .navbar-link.is-active { - background-color: black; - color: white; } - html.theme--documenter-dark .hero.is-black .tabs a { - color: white; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-black .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-black .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-black .tabs.is-boxed a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a { - color: white; } - html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover { - background-color: white; - border-color: white; - color: #0a0a0a; } - html.theme--documenter-dark .hero.is-black.is-bold { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } - html.theme--documenter-dark .hero.is-light { - background-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-light strong { - color: inherit; } - html.theme--documenter-dark .hero.is-light .title { - color: #282f2f; } - html.theme--documenter-dark .hero.is-light .subtitle { - color: rgba(40, 47, 47, 0.9); } - html.theme--documenter-dark .hero.is-light .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-light .subtitle strong { - color: #282f2f; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-light .navbar-menu { - background-color: #ecf0f1; } } - html.theme--documenter-dark .hero.is-light .navbar-item, - html.theme--documenter-dark .hero.is-light .navbar-link { - color: rgba(40, 47, 47, 0.7); } - html.theme--documenter-dark .hero.is-light a.navbar-item:hover, html.theme--documenter-dark .hero.is-light a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-light .navbar-link:hover, - html.theme--documenter-dark .hero.is-light .navbar-link.is-active { - background-color: #dde4e6; - color: #282f2f; } - html.theme--documenter-dark .hero.is-light .tabs a { - color: #282f2f; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-light .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-light .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-light .tabs.is-boxed a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a { - color: #282f2f; } - html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover { - background-color: #282f2f; - border-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-light.is-bold { - background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } } - html.theme--documenter-dark .hero.is-dark, html.theme--documenter-dark .content kbd.hero { - background-color: #282f2f; - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-dark strong, - html.theme--documenter-dark .content kbd.hero strong { - color: inherit; } - html.theme--documenter-dark .hero.is-dark .title, html.theme--documenter-dark .content kbd.hero .title { - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark .subtitle, html.theme--documenter-dark .content kbd.hero .subtitle { - color: rgba(236, 240, 241, 0.9); } - html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button), html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-dark .subtitle strong, - html.theme--documenter-dark .content kbd.hero .subtitle strong { - color: #ecf0f1; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-dark .navbar-menu, html.theme--documenter-dark .content kbd.hero .navbar-menu { - background-color: #282f2f; } } - html.theme--documenter-dark .hero.is-dark .navbar-item, html.theme--documenter-dark .content kbd.hero .navbar-item, - html.theme--documenter-dark .hero.is-dark .navbar-link, - html.theme--documenter-dark .content kbd.hero .navbar-link { - color: rgba(236, 240, 241, 0.7); } - html.theme--documenter-dark .hero.is-dark a.navbar-item:hover, html.theme--documenter-dark .content kbd.hero a.navbar-item:hover, html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active, html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-dark .navbar-link:hover, - html.theme--documenter-dark .content kbd.hero .navbar-link:hover, - html.theme--documenter-dark .hero.is-dark .navbar-link.is-active, - html.theme--documenter-dark .content kbd.hero .navbar-link.is-active { - background-color: #1d2122; - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark .tabs a, html.theme--documenter-dark .content kbd.hero .tabs a { - color: #ecf0f1; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-dark .tabs a:hover, html.theme--documenter-dark .content kbd.hero .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-dark .tabs li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a { - color: #ecf0f1; } - html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a:hover { - background-color: #ecf0f1; - border-color: #ecf0f1; - color: #282f2f; } - html.theme--documenter-dark .hero.is-dark.is-bold, html.theme--documenter-dark .content kbd.hero.is-bold { - background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu, html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } } - html.theme--documenter-dark .hero.is-primary, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink { - background-color: #375a7f; - color: #fff; } - html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-primary strong, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink strong { - color: inherit; } - html.theme--documenter-dark .hero.is-primary .title, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .title { - color: #fff; } - html.theme--documenter-dark .hero.is-primary .subtitle, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-primary .subtitle strong, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-primary .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-menu { - background-color: #375a7f; } } - html.theme--documenter-dark .hero.is-primary .navbar-item, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-item, - html.theme--documenter-dark .hero.is-primary .navbar-link, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-primary a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-primary .navbar-link:hover, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, - html.theme--documenter-dark .hero.is-primary .navbar-link.is-active, - html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { - background-color: #2f4d6d; - color: #fff; } - html.theme--documenter-dark .hero.is-primary .tabs a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-primary .tabs a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-primary .tabs li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #375a7f; } - html.theme--documenter-dark .hero.is-primary.is-bold, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink { - background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { - background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } } - html.theme--documenter-dark .hero.is-link { - background-color: #1abc9c; - color: #fff; } - html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-link strong { - color: inherit; } - html.theme--documenter-dark .hero.is-link .title { - color: #fff; } - html.theme--documenter-dark .hero.is-link .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-link .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-link .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-link .navbar-menu { - background-color: #1abc9c; } } - html.theme--documenter-dark .hero.is-link .navbar-item, - html.theme--documenter-dark .hero.is-link .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-link a.navbar-item:hover, html.theme--documenter-dark .hero.is-link a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-link .navbar-link:hover, - html.theme--documenter-dark .hero.is-link .navbar-link.is-active { - background-color: #17a689; - color: #fff; } - html.theme--documenter-dark .hero.is-link .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-link .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-link .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-link .tabs.is-boxed a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #1abc9c; } - html.theme--documenter-dark .hero.is-link.is-bold { - background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } } - html.theme--documenter-dark .hero.is-info { - background-color: #024c7d; - color: #fff; } - html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-info strong { - color: inherit; } - html.theme--documenter-dark .hero.is-info .title { - color: #fff; } - html.theme--documenter-dark .hero.is-info .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-info .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-info .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-info .navbar-menu { - background-color: #024c7d; } } - html.theme--documenter-dark .hero.is-info .navbar-item, - html.theme--documenter-dark .hero.is-info .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-info a.navbar-item:hover, html.theme--documenter-dark .hero.is-info a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-info .navbar-link:hover, - html.theme--documenter-dark .hero.is-info .navbar-link.is-active { - background-color: #023d64; - color: #fff; } - html.theme--documenter-dark .hero.is-info .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-info .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-info .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-info .tabs.is-boxed a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #024c7d; } - html.theme--documenter-dark .hero.is-info.is-bold { - background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } } - html.theme--documenter-dark .hero.is-success { - background-color: #008438; - color: #fff; } - html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-success strong { - color: inherit; } - html.theme--documenter-dark .hero.is-success .title { - color: #fff; } - html.theme--documenter-dark .hero.is-success .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-success .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-success .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-success .navbar-menu { - background-color: #008438; } } - html.theme--documenter-dark .hero.is-success .navbar-item, - html.theme--documenter-dark .hero.is-success .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-success a.navbar-item:hover, html.theme--documenter-dark .hero.is-success a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-success .navbar-link:hover, - html.theme--documenter-dark .hero.is-success .navbar-link.is-active { - background-color: #006b2d; - color: #fff; } - html.theme--documenter-dark .hero.is-success .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-success .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-success .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-success .tabs.is-boxed a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #008438; } - html.theme--documenter-dark .hero.is-success.is-bold { - background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } } - html.theme--documenter-dark .hero.is-warning { - background-color: #ad8100; - color: #fff; } - html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-warning strong { - color: inherit; } - html.theme--documenter-dark .hero.is-warning .title { - color: #fff; } - html.theme--documenter-dark .hero.is-warning .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-warning .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-warning .navbar-menu { - background-color: #ad8100; } } - html.theme--documenter-dark .hero.is-warning .navbar-item, - html.theme--documenter-dark .hero.is-warning .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-warning a.navbar-item:hover, html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-warning .navbar-link:hover, - html.theme--documenter-dark .hero.is-warning .navbar-link.is-active { - background-color: #946e00; - color: #fff; } - html.theme--documenter-dark .hero.is-warning .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-warning .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-warning .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #ad8100; } - html.theme--documenter-dark .hero.is-warning.is-bold { - background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } } - html.theme--documenter-dark .hero.is-danger { - background-color: #9e1b0d; - color: #fff; } - html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - html.theme--documenter-dark .hero.is-danger strong { - color: inherit; } - html.theme--documenter-dark .hero.is-danger .title { - color: #fff; } - html.theme--documenter-dark .hero.is-danger .subtitle { - color: rgba(255, 255, 255, 0.9); } - html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button), - html.theme--documenter-dark .hero.is-danger .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .hero.is-danger .navbar-menu { - background-color: #9e1b0d; } } - html.theme--documenter-dark .hero.is-danger .navbar-item, - html.theme--documenter-dark .hero.is-danger .navbar-link { - color: rgba(255, 255, 255, 0.7); } - html.theme--documenter-dark .hero.is-danger a.navbar-item:hover, html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active, - html.theme--documenter-dark .hero.is-danger .navbar-link:hover, - html.theme--documenter-dark .hero.is-danger .navbar-link.is-active { - background-color: #86170b; - color: #fff; } - html.theme--documenter-dark .hero.is-danger .tabs a { - color: #fff; - opacity: 0.9; } - html.theme--documenter-dark .hero.is-danger .tabs a:hover { - opacity: 1; } - html.theme--documenter-dark .hero.is-danger .tabs li.is-active a { - opacity: 1; } - html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a { - color: #fff; } - html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #9e1b0d; } - html.theme--documenter-dark .hero.is-danger.is-bold { - background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } } - html.theme--documenter-dark .hero.is-small .hero-body, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.hero .hero-body { - padding-bottom: 1.5rem; - padding-top: 1.5rem; } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .hero.is-medium .hero-body { - padding-bottom: 9rem; - padding-top: 9rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .hero.is-large .hero-body { - padding-bottom: 18rem; - padding-top: 18rem; } } - html.theme--documenter-dark .hero.is-halfheight .hero-body, html.theme--documenter-dark .hero.is-fullheight .hero-body, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body { - align-items: center; - display: flex; } - html.theme--documenter-dark .hero.is-halfheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body > .container { - flex-grow: 1; - flex-shrink: 1; } - html.theme--documenter-dark .hero.is-halfheight { - min-height: 50vh; } - html.theme--documenter-dark .hero.is-fullheight { - min-height: 100vh; } - html.theme--documenter-dark .hero-video { - overflow: hidden; } - html.theme--documenter-dark .hero-video video { - left: 50%; - min-height: 100%; - min-width: 100%; - position: absolute; - top: 50%; - transform: translate3d(-50%, -50%, 0); } - html.theme--documenter-dark .hero-video.is-transparent { - opacity: 0.3; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero-video { - display: none; } } - html.theme--documenter-dark .hero-buttons { - margin-top: 1.5rem; } - @media screen and (max-width: 768px) { - html.theme--documenter-dark .hero-buttons .button { - display: flex; } - html.theme--documenter-dark .hero-buttons .button:not(:last-child) { - margin-bottom: 0.75rem; } } - @media screen and (min-width: 769px), print { - html.theme--documenter-dark .hero-buttons { - display: flex; - justify-content: center; } - html.theme--documenter-dark .hero-buttons .button:not(:last-child) { - margin-right: 1.5rem; } } - html.theme--documenter-dark .hero-head, - html.theme--documenter-dark .hero-foot { - flex-grow: 0; - flex-shrink: 0; } - html.theme--documenter-dark .hero-body { - flex-grow: 1; - flex-shrink: 0; - padding: 3rem 1.5rem; } - html.theme--documenter-dark .section { - padding: 3rem 1.5rem; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark .section.is-medium { - padding: 9rem 1.5rem; } - html.theme--documenter-dark .section.is-large { - padding: 18rem 1.5rem; } } - html.theme--documenter-dark .footer { - background-color: #282f2f; - padding: 3rem 1.5rem 6rem; } - html.theme--documenter-dark hr { - height: 1px; } - html.theme--documenter-dark h6 { - text-transform: uppercase; - letter-spacing: 0.5px; } - html.theme--documenter-dark .hero { - background-color: #343c3d; } - html.theme--documenter-dark a { - transition: all 200ms ease; } - html.theme--documenter-dark .button { - transition: all 200ms ease; - border-width: 1px; - color: white; } - html.theme--documenter-dark .button.is-active, html.theme--documenter-dark .button.is-focused, html.theme--documenter-dark .button:active, html.theme--documenter-dark .button:focus { - box-shadow: 0 0 0 2px rgba(140, 155, 157, 0.5); } - html.theme--documenter-dark .button.is-white.is-hovered, html.theme--documenter-dark .button.is-white:hover { - background-color: white; } - html.theme--documenter-dark .button.is-white.is-active, html.theme--documenter-dark .button.is-white.is-focused, html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white:focus { - border-color: white; - box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5); } - html.theme--documenter-dark .button.is-black.is-hovered, html.theme--documenter-dark .button.is-black:hover { - background-color: #1d1d1d; } - html.theme--documenter-dark .button.is-black.is-active, html.theme--documenter-dark .button.is-black.is-focused, html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black:focus { - border-color: #0a0a0a; - box-shadow: 0 0 0 2px rgba(10, 10, 10, 0.5); } - html.theme--documenter-dark .button.is-light.is-hovered, html.theme--documenter-dark .button.is-light:hover { - background-color: white; } - html.theme--documenter-dark .button.is-light.is-active, html.theme--documenter-dark .button.is-light.is-focused, html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light:focus { - border-color: #ecf0f1; - box-shadow: 0 0 0 2px rgba(236, 240, 241, 0.5); } - html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered, html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover { - background-color: #3a4344; } - html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused, html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus { - border-color: #282f2f; - box-shadow: 0 0 0 2px rgba(40, 47, 47, 0.5); } - html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover { - background-color: #436d9a; } - html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink, html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus { - border-color: #375a7f; - box-shadow: 0 0 0 2px rgba(55, 90, 127, 0.5); } - html.theme--documenter-dark .button.is-link.is-hovered, html.theme--documenter-dark .button.is-link:hover { - background-color: #1fdeb8; } - html.theme--documenter-dark .button.is-link.is-active, html.theme--documenter-dark .button.is-link.is-focused, html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link:focus { - border-color: #1abc9c; - box-shadow: 0 0 0 2px rgba(26, 188, 156, 0.5); } - html.theme--documenter-dark .button.is-info.is-hovered, html.theme--documenter-dark .button.is-info:hover { - background-color: #0363a3; } - html.theme--documenter-dark .button.is-info.is-active, html.theme--documenter-dark .button.is-info.is-focused, html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info:focus { - border-color: #024c7d; - box-shadow: 0 0 0 2px rgba(2, 76, 125, 0.5); } - html.theme--documenter-dark .button.is-success.is-hovered, html.theme--documenter-dark .button.is-success:hover { - background-color: #00aa48; } - html.theme--documenter-dark .button.is-success.is-active, html.theme--documenter-dark .button.is-success.is-focused, html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success:focus { - border-color: #008438; - box-shadow: 0 0 0 2px rgba(0, 132, 56, 0.5); } - html.theme--documenter-dark .button.is-warning.is-hovered, html.theme--documenter-dark .button.is-warning:hover { - background-color: #d39e00; } - html.theme--documenter-dark .button.is-warning.is-active, html.theme--documenter-dark .button.is-warning.is-focused, html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning:focus { - border-color: #ad8100; - box-shadow: 0 0 0 2px rgba(173, 129, 0, 0.5); } - html.theme--documenter-dark .button.is-danger.is-hovered, html.theme--documenter-dark .button.is-danger:hover { - background-color: #c12110; } - html.theme--documenter-dark .button.is-danger.is-active, html.theme--documenter-dark .button.is-danger.is-focused, html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger:focus { - border-color: #9e1b0d; - box-shadow: 0 0 0 2px rgba(158, 27, 13, 0.5); } - html.theme--documenter-dark .label { - color: #dbdee0; } - html.theme--documenter-dark .button, - html.theme--documenter-dark .control.has-icons-left .icon, - html.theme--documenter-dark .control.has-icons-right .icon, - html.theme--documenter-dark .input, - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark .pagination-ellipsis, - html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-previous, - html.theme--documenter-dark .select, - html.theme--documenter-dark .select select, - html.theme--documenter-dark .textarea { - height: 2.5em; } - - html.theme--documenter-dark .input, - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark .textarea { - transition: all 200ms ease; - box-shadow: none; - border-width: 1px; - padding-left: 1em; - padding-right: 1em; } - html.theme--documenter-dark .select:after, - html.theme--documenter-dark .select select { - border-width: 1px; } - html.theme--documenter-dark .control.has-addons .button, - html.theme--documenter-dark .control.has-addons .input, - html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search > input, - html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search > input, - html.theme--documenter-dark .control.has-addons .select { - margin-right: -1px; } - html.theme--documenter-dark .notification { - background-color: #343c3d; } - html.theme--documenter-dark .card { - box-shadow: none; - border: 1px solid #343c3d; - background-color: #282f2f; - border-radius: 0.4em; } - html.theme--documenter-dark .card .card-image img { - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .card .card-header { - box-shadow: none; - background-color: rgba(18, 18, 18, 0.2); - border-radius: 0.4em 0.4em 0 0; } - html.theme--documenter-dark .card .card-footer { - background-color: rgba(18, 18, 18, 0.2); } - html.theme--documenter-dark .card .card-footer, - html.theme--documenter-dark .card .card-footer-item { - border-width: 1px; - border-color: #343c3d; } - html.theme--documenter-dark .notification.is-white a:not(.button) { - color: #0a0a0a; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-black a:not(.button) { - color: white; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-light a:not(.button) { - color: #282f2f; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-dark a:not(.button), html.theme--documenter-dark .content kbd.notification a:not(.button) { - color: #ecf0f1; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-primary a:not(.button), html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-link a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-info a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-success a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-warning a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .notification.is-danger a:not(.button) { - color: #fff; - text-decoration: underline; } - html.theme--documenter-dark .tag, html.theme--documenter-dark .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .content kbd { - border-radius: 0.4em; } - html.theme--documenter-dark .menu-list a { - transition: all 300ms ease; } - html.theme--documenter-dark .modal-card-body { - background-color: #282f2f; } - html.theme--documenter-dark .modal-card-foot, - html.theme--documenter-dark .modal-card-head { - border-color: #343c3d; } - html.theme--documenter-dark .message-header { - font-weight: 700; - background-color: #343c3d; - color: white; } - html.theme--documenter-dark .message-body { - border-width: 1px; - border-color: #343c3d; } - html.theme--documenter-dark .navbar { - border-radius: 0.4em; } - html.theme--documenter-dark .navbar.is-transparent { - background: none; } - html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { - background-color: #1abc9c; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark .navbar .navbar-menu { - background-color: #375a7f; - border-radius: 0 0 0.4em 0.4em; } } - html.theme--documenter-dark .hero .navbar, - html.theme--documenter-dark body > .navbar { - border-radius: 0; } - html.theme--documenter-dark .pagination-link, - html.theme--documenter-dark .pagination-next, - html.theme--documenter-dark .pagination-previous { - border-width: 1px; } - html.theme--documenter-dark .panel-block, - html.theme--documenter-dark .panel-heading, - html.theme--documenter-dark .panel-tabs { - border-width: 1px; } - html.theme--documenter-dark .panel-block:first-child, - html.theme--documenter-dark .panel-heading:first-child, - html.theme--documenter-dark .panel-tabs:first-child { - border-top-width: 1px; } - html.theme--documenter-dark .panel-heading { - font-weight: 700; } - html.theme--documenter-dark .panel-tabs a { - border-width: 1px; - margin-bottom: -1px; } - html.theme--documenter-dark .panel-tabs a.is-active { - border-bottom-color: #17a689; } - html.theme--documenter-dark .panel-block:hover { - color: #1dd2af; } - html.theme--documenter-dark .panel-block:hover .panel-icon { - color: #1dd2af; } - html.theme--documenter-dark .panel-block.is-active .panel-icon { - color: #17a689; } - html.theme--documenter-dark .tabs a { - border-bottom-width: 1px; - margin-bottom: -1px; } - html.theme--documenter-dark .tabs ul { - border-bottom-width: 1px; } - html.theme--documenter-dark .tabs.is-boxed a { - border-width: 1px; } - html.theme--documenter-dark .tabs.is-boxed li.is-active a { - background-color: #1f2424; } - html.theme--documenter-dark .tabs.is-toggle li a { - border-width: 1px; - margin-bottom: 0; } - html.theme--documenter-dark .tabs.is-toggle li + li { - margin-left: -1px; } - html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover { - background-color: transparent; } - html.theme--documenter-dark h1 .docs-heading-anchor, html.theme--documenter-dark h1 .docs-heading-anchor:hover, html.theme--documenter-dark h1 .docs-heading-anchor:visited, html.theme--documenter-dark h2 .docs-heading-anchor, html.theme--documenter-dark h2 .docs-heading-anchor:hover, html.theme--documenter-dark h2 .docs-heading-anchor:visited, html.theme--documenter-dark h3 .docs-heading-anchor, html.theme--documenter-dark h3 .docs-heading-anchor:hover, html.theme--documenter-dark h3 .docs-heading-anchor:visited, html.theme--documenter-dark h4 .docs-heading-anchor, html.theme--documenter-dark h4 .docs-heading-anchor:hover, html.theme--documenter-dark h4 .docs-heading-anchor:visited, html.theme--documenter-dark h5 .docs-heading-anchor, html.theme--documenter-dark h5 .docs-heading-anchor:hover, html.theme--documenter-dark h5 .docs-heading-anchor:visited, html.theme--documenter-dark h6 .docs-heading-anchor, html.theme--documenter-dark h6 .docs-heading-anchor:hover, html.theme--documenter-dark h6 .docs-heading-anchor:visited { - color: #f2f2f2; } - html.theme--documenter-dark h1 .docs-heading-anchor-permalink, html.theme--documenter-dark h2 .docs-heading-anchor-permalink, html.theme--documenter-dark h3 .docs-heading-anchor-permalink, html.theme--documenter-dark h4 .docs-heading-anchor-permalink, html.theme--documenter-dark h5 .docs-heading-anchor-permalink, html.theme--documenter-dark h6 .docs-heading-anchor-permalink { - visibility: hidden; - vertical-align: middle; - margin-left: 0.5em; - font-size: 0.7rem; } - html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f0c1"; } - html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink { - visibility: visible; } - html.theme--documenter-dark .docs-light-only { - display: none !important; } - html.theme--documenter-dark .admonition { - background-color: #282f2f; - border-style: solid; - border-width: 1px; - border-color: #5e6d6f; - border-radius: 0.4em; - font-size: 15px; } - html.theme--documenter-dark .admonition strong { - color: currentColor; } - html.theme--documenter-dark .admonition.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.admonition { - font-size: 0.85em; } - html.theme--documenter-dark .admonition.is-medium { - font-size: 1.25rem; } - html.theme--documenter-dark .admonition.is-large { - font-size: 1.5rem; } - html.theme--documenter-dark .admonition.is-default { - background-color: #282f2f; - border-color: #5e6d6f; } - html.theme--documenter-dark .admonition.is-default > .admonition-header { - background-color: #5e6d6f; } - html.theme--documenter-dark .admonition.is-info { - background-color: #282f2f; - border-color: #024c7d; } - html.theme--documenter-dark .admonition.is-info > .admonition-header { - background-color: #024c7d; } - html.theme--documenter-dark .admonition.is-success { - background-color: #282f2f; - border-color: #008438; } - html.theme--documenter-dark .admonition.is-success > .admonition-header { - background-color: #008438; } - html.theme--documenter-dark .admonition.is-warning { - background-color: #282f2f; - border-color: #ad8100; } - html.theme--documenter-dark .admonition.is-warning > .admonition-header { - background-color: #ad8100; } - html.theme--documenter-dark .admonition.is-danger { - background-color: #282f2f; - border-color: #9e1b0d; } - html.theme--documenter-dark .admonition.is-danger > .admonition-header { - background-color: #9e1b0d; } - html.theme--documenter-dark .admonition.is-compat { - background-color: #282f2f; - border-color: #137886; } - html.theme--documenter-dark .admonition.is-compat > .admonition-header { - background-color: #137886; } - html.theme--documenter-dark .admonition-header { - background-color: #5e6d6f; - align-items: center; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - html.theme--documenter-dark .admonition-header:before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - margin-right: 0.75em; - content: "\f06a"; } - html.theme--documenter-dark .admonition-body { - color: #fff; - padding: 1em 1.25em; } - html.theme--documenter-dark .admonition-body pre { - background-color: #282f2f; } - html.theme--documenter-dark .admonition-body code { - background-color: rgba(255, 255, 255, 0.05); } - html.theme--documenter-dark .docstring { - margin-bottom: 1em; - background-color: transparent; - border: 1px solid #5e6d6f; - box-shadow: none; - max-width: 100%; } - html.theme--documenter-dark .docstring > header { - display: flex; - flex-grow: 1; - align-items: stretch; - padding: 0.75rem; - background-color: #282f2f; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - box-shadow: none; - border-bottom: 1px solid #5e6d6f; } - html.theme--documenter-dark .docstring > header code { - background-color: transparent; } - html.theme--documenter-dark .docstring > header .docstring-binding { - margin-right: 0.3em; } - html.theme--documenter-dark .docstring > header .docstring-category { - margin-left: 0.3em; } - html.theme--documenter-dark .docstring > section { - position: relative; - padding: 1rem 1.25rem; - border-bottom: 1px solid #5e6d6f; } - html.theme--documenter-dark .docstring > section:last-child { - border-bottom: none; } - html.theme--documenter-dark .docstring > section > a.docs-sourcelink { - transition: opacity 0.3s; - opacity: 0; - position: absolute; - right: 0.625rem; - bottom: 0.5rem; } - html.theme--documenter-dark .docstring:hover > section > a.docs-sourcelink { - opacity: 0.2; } - html.theme--documenter-dark .docstring > section:hover a.docs-sourcelink { - opacity: 1; } - html.theme--documenter-dark .documenter-example-output { - background-color: #1f2424; } - html.theme--documenter-dark .content pre { - border: 1px solid #5e6d6f; } - html.theme--documenter-dark .content code { - font-weight: inherit; } - html.theme--documenter-dark .content a code { - color: #1abc9c; } - html.theme--documenter-dark .content h1 code, html.theme--documenter-dark .content h2 code, html.theme--documenter-dark .content h3 code, html.theme--documenter-dark .content h4 code, html.theme--documenter-dark .content h5 code, html.theme--documenter-dark .content h6 code { - color: #f2f2f2; } - html.theme--documenter-dark .content table { - display: block; - width: initial; - max-width: 100%; - overflow-x: auto; } - html.theme--documenter-dark .content blockquote > ul:first-child, html.theme--documenter-dark .content blockquote > ol:first-child, html.theme--documenter-dark .content .admonition-body > ul:first-child, html.theme--documenter-dark .content .admonition-body > ol:first-child { - margin-top: 0; } - html.theme--documenter-dark .breadcrumb a.is-disabled { - cursor: default; - pointer-events: none; } - html.theme--documenter-dark .breadcrumb a.is-disabled, html.theme--documenter-dark .breadcrumb a.is-disabled:hover { - color: #f2f2f2; } - html.theme--documenter-dark .hljs { - background: initial !important; - padding: initial !important; } - html.theme--documenter-dark .katex .katex-mathml { - top: 0; - right: 0; } - html.theme--documenter-dark html { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; } - html.theme--documenter-dark #documenter .docs-main > article { - overflow-wrap: break-word; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-main { - max-width: 52rem; - margin-left: 20rem; - padding-right: 1rem; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-main { - width: 100%; } - html.theme--documenter-dark #documenter .docs-main > article { - max-width: 52rem; - margin-left: auto; - margin-right: auto; - margin-bottom: 1rem; - padding: 0 1rem; } - html.theme--documenter-dark #documenter .docs-main > header, html.theme--documenter-dark #documenter .docs-main > nav { - max-width: 100%; - width: 100%; - margin: 0; } } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar { - background-color: #1f2424; - border-bottom: 1px solid #5e6d6f; - z-index: 2; - min-height: 4rem; - margin-bottom: 1rem; - display: flex; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb { - flex-grow: 1; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right { - display: flex; - white-space: nowrap; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - display: inline-block; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label { - padding: 0; - margin-left: 0.3em; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { - margin: auto 0 auto 1rem; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - font-size: 1.5rem; - margin: auto 0 auto 1rem; } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar > * { - margin: auto 0; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-main header.docs-navbar { - position: sticky; - top: 0; - padding: 0 1rem; - /* For Headroom.js */ - transition-property: top, box-shadow; - -webkit-transition-property: top, box-shadow; - /* Safari */ - transition-duration: 0.3s; - -webkit-transition-duration: 0.3s; - /* Safari */ } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top { - box-shadow: 0.2rem 0rem 0.4rem #171717; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } - html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { - top: -4.5rem; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } } - html.theme--documenter-dark #documenter .docs-main section.footnotes { - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child, html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child { - margin-right: 1em; - margin-bottom: 0.4em; } - html.theme--documenter-dark #documenter .docs-main .docs-footer { - display: flex; - flex-wrap: wrap; - margin-left: 0; - margin-right: 0; - border-top: 1px solid #5e6d6f; - padding-top: 1rem; - padding-bottom: 1rem; } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-main .docs-footer { - padding-left: 1rem; - padding-right: 1rem; } } - html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage, html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage { - flex-grow: 1; } - html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage { - text-align: right; } - html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break { - flex-basis: 100%; - height: 0; } - html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message { - font-size: 0.8em; - margin: 0.5em auto 0 auto; - text-align: center; } - html.theme--documenter-dark #documenter .docs-sidebar { - display: flex; - flex-direction: column; - color: #fff; - background-color: #282f2f; - border-right: 1px solid #5e6d6f; - padding: 0; - flex: 0 0 18rem; - z-index: 5; - font-size: 15px; - position: fixed; - left: -18rem; - width: 18rem; - height: 100%; - transition: left 0.3s; - /* Setting up a nicer theme style for the scrollbar */ } - html.theme--documenter-dark #documenter .docs-sidebar.visible { - left: 0; - box-shadow: 0.4rem 0rem 0.8rem #171717; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-sidebar.visible { - box-shadow: none; } } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-sidebar { - left: 0; - top: 0; } } - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo { - margin-top: 1rem; - padding: 0 1rem; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { - max-height: 6rem; - margin: auto; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name { - flex-shrink: 0; - font-size: 1.5rem; - font-weight: 700; - text-align: center; - white-space: nowrap; - overflow: hidden; - padding: 0.5rem 0; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit { - max-width: 16.2rem; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector { - border-top: 1px solid #5e6d6f; - display: none; - padding: 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible { - display: flex; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { - flex-grow: 1; - user-select: none; - border-top: 1px solid #5e6d6f; - padding-bottom: 1.5rem; - /* Managing collapsible submenus */ } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li > .tocitem { - font-weight: bold; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li li { - font-size: 14.25px; - margin-left: 1em; - border-left: 1px solid #5e6d6f; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { - display: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed { - display: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { - display: block; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem { - display: flex; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { - flex-grow: 2; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - font-size: 11.25px; - margin-left: 1rem; - margin-top: auto; - margin-bottom: auto; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f054"; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { - content: "\f078"; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem { - display: block; - padding: 0.5rem 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover { - color: #fff; - background: #282f2f; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { - color: #fff; - background-color: #32393a; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active { - border-top: 1px solid #5e6d6f; - border-bottom: 1px solid #5e6d6f; - background-color: #1f2424; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover { - background-color: #1f2424; - color: #fff; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover { - background-color: #32393a; - color: #fff; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { - border-top: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal { - margin: 0 0.5rem 0.5rem; - border-top: 1px solid #5e6d6f; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li { - font-size: 12.75px; - border-left: none; - margin-left: 0; - margin-top: 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { - width: 100%; - padding: 0; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { - content: "⚬"; - margin-right: 0.4em; } - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search { - margin: auto; - margin-top: 0.5rem; - margin-bottom: 0.5rem; } - html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { - width: 14.4rem; } - @media screen and (min-width: 1056px) { - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { - width: .3rem; - background: none; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #3b4445; } - html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { - background: #4e5a5c; } } - @media screen and (max-width: 1055px) { - html.theme--documenter-dark #documenter .docs-sidebar { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar { - width: .3rem; - background: none; } - html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #3b4445; } - html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { - background: #4e5a5c; } } - html.theme--documenter-dark #documenter .docs-main #documenter-search-info { - margin-bottom: 1rem; } - html.theme--documenter-dark #documenter .docs-main #documenter-search-results { - list-style-type: circle; - list-style-position: outside; } - html.theme--documenter-dark #documenter .docs-main #documenter-search-results li { - margin-left: 2rem; } - html.theme--documenter-dark #documenter .docs-main #documenter-search-results .docs-highlight { - background-color: yellow; } - html.theme--documenter-dark { - background-color: #1f2424; - font-size: 16px; - min-width: 300px; - overflow-x: auto; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; } - html.theme--documenter-dark .hljs-comment, - html.theme--documenter-dark .hljs-quote { - color: #d4d0ab; } - html.theme--documenter-dark .hljs-variable, - html.theme--documenter-dark .hljs-template-variable, - html.theme--documenter-dark .hljs-tag, - html.theme--documenter-dark .hljs-name, - html.theme--documenter-dark .hljs-selector-id, - html.theme--documenter-dark .hljs-selector-class, - html.theme--documenter-dark .hljs-regexp, - html.theme--documenter-dark .hljs-deletion { - color: #ffa07a; } - html.theme--documenter-dark .hljs-number, - html.theme--documenter-dark .hljs-built_in, - html.theme--documenter-dark .hljs-builtin-name, - html.theme--documenter-dark .hljs-literal, - html.theme--documenter-dark .hljs-type, - html.theme--documenter-dark .hljs-params, - html.theme--documenter-dark .hljs-meta, - html.theme--documenter-dark .hljs-link { - color: #f5ab35; } - html.theme--documenter-dark .hljs-attribute { - color: #ffd700; } - html.theme--documenter-dark .hljs-string, - html.theme--documenter-dark .hljs-symbol, - html.theme--documenter-dark .hljs-bullet, - html.theme--documenter-dark .hljs-addition { - color: #abe338; } - html.theme--documenter-dark .hljs-title, - html.theme--documenter-dark .hljs-section { - color: #00e0e0; } - html.theme--documenter-dark .hljs-keyword, - html.theme--documenter-dark .hljs-selector-tag { - color: #dcc6e0; } - html.theme--documenter-dark .hljs { - display: block; - overflow-x: auto; - background: #2b2b2b; - color: #f8f8f2; - padding: 0.5em; } - html.theme--documenter-dark .hljs-emphasis { - font-style: italic; } - html.theme--documenter-dark .hljs-strong { - font-weight: bold; } - @media screen and (-ms-high-contrast: active) { - html.theme--documenter-dark .hljs-addition, - html.theme--documenter-dark .hljs-attribute, - html.theme--documenter-dark .hljs-built_in, - html.theme--documenter-dark .hljs-builtin-name, - html.theme--documenter-dark .hljs-bullet, - html.theme--documenter-dark .hljs-comment, - html.theme--documenter-dark .hljs-link, - html.theme--documenter-dark .hljs-literal, - html.theme--documenter-dark .hljs-meta, - html.theme--documenter-dark .hljs-number, - html.theme--documenter-dark .hljs-params, - html.theme--documenter-dark .hljs-string, - html.theme--documenter-dark .hljs-symbol, - html.theme--documenter-dark .hljs-type, - html.theme--documenter-dark .hljs-quote { - color: highlight; } - html.theme--documenter-dark .hljs-keyword, - html.theme--documenter-dark .hljs-selector-tag { - font-weight: bold; } } - html.theme--documenter-dark .hljs-subst { - color: #f8f8f2; } diff --git a/docs/build/assets/themes/documenter-light.css b/docs/build/assets/themes/documenter-light.css deleted file mode 100644 index b5dbe62..0000000 --- a/docs/build/assets/themes/documenter-light.css +++ /dev/null @@ -1,7625 +0,0 @@ -@charset "UTF-8"; -/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ -@keyframes spinAround { - from { - transform: rotate(0deg); } - to { - transform: rotate(359deg); } } - -.delete, .modal-close, .is-unselectable, .button, .file, .breadcrumb, .pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis, .tabs { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after { - border: 3px solid transparent; - border-radius: 2px; - border-right: 0; - border-top: 0; - content: " "; - display: block; - height: 0.625em; - margin-top: -0.4375em; - pointer-events: none; - position: absolute; - top: 50%; - transform: rotate(-45deg); - transform-origin: center; - width: 0.625em; } - -.box:not(:last-child), .content:not(:last-child), .notification:not(:last-child), .progress:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .title:not(:last-child), -.subtitle:not(:last-child), .block:not(:last-child), .highlight:not(:last-child), .breadcrumb:not(:last-child), .level:not(:last-child), .list:not(:last-child), .message:not(:last-child), .tabs:not(:last-child), .admonition:not(:last-child) { - margin-bottom: 1.5rem; } - -.delete, .modal-close { - -moz-appearance: none; - -webkit-appearance: none; - background-color: rgba(10, 10, 10, 0.2); - border: none; - border-radius: 290486px; - cursor: pointer; - pointer-events: auto; - display: inline-block; - flex-grow: 0; - flex-shrink: 0; - font-size: 0; - height: 20px; - max-height: 20px; - max-width: 20px; - min-height: 20px; - min-width: 20px; - outline: none; - position: relative; - vertical-align: top; - width: 20px; } - .delete::before, .modal-close::before, .delete::after, .modal-close::after { - background-color: white; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - .delete::before, .modal-close::before { - height: 2px; - width: 50%; } - .delete::after, .modal-close::after { - height: 50%; - width: 2px; } - .delete:hover, .modal-close:hover, .delete:focus, .modal-close:focus { - background-color: rgba(10, 10, 10, 0.3); } - .delete:active, .modal-close:active { - background-color: rgba(10, 10, 10, 0.4); } - .is-small.delete, #documenter .docs-sidebar form.docs-search > input.delete, .is-small.modal-close, #documenter .docs-sidebar form.docs-search > input.modal-close { - height: 16px; - max-height: 16px; - max-width: 16px; - min-height: 16px; - min-width: 16px; - width: 16px; } - .is-medium.delete, .is-medium.modal-close { - height: 24px; - max-height: 24px; - max-width: 24px; - min-height: 24px; - min-width: 24px; - width: 24px; } - .is-large.delete, .is-large.modal-close { - height: 32px; - max-height: 32px; - max-width: 32px; - min-height: 32px; - min-width: 32px; - width: 32px; } - -.button.is-loading::after, .loader, .select.is-loading::after, .control.is-loading::after { - animation: spinAround 500ms infinite linear; - border: 2px solid #dbdbdb; - border-radius: 290486px; - border-right-color: transparent; - border-top-color: transparent; - content: ""; - display: block; - height: 1em; - position: relative; - width: 1em; } - -.is-overlay, .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, -.image.is-square .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, -.image.is-1by1 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, -.image.is-5by4 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, -.image.is-4by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, -.image.is-3by2 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, -.image.is-5by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, -.image.is-16by9 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, -.image.is-2by1 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, -.image.is-3by1 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, -.image.is-4by5 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, -.image.is-3by4 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, -.image.is-2by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, -.image.is-3by5 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, -.image.is-9by16 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, -.image.is-1by2 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, -.image.is-1by3 .has-ratio, -#documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, .modal, .modal-background, .hero-video { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; } - -.button, .input, #documenter .docs-sidebar form.docs-search > input, .textarea, .select select, .file-cta, -.file-name, .pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis { - -moz-appearance: none; - -webkit-appearance: none; - align-items: center; - border: 1px solid transparent; - border-radius: 4px; - box-shadow: none; - display: inline-flex; - font-size: 1rem; - height: 2.25em; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(0.375em - 1px); - padding-left: calc(0.625em - 1px); - padding-right: calc(0.625em - 1px); - padding-top: calc(0.375em - 1px); - position: relative; - vertical-align: top; } - .button:focus, .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .textarea:focus, .select select:focus, .file-cta:focus, - .file-name:focus, .pagination-previous:focus, - .pagination-next:focus, - .pagination-link:focus, - .pagination-ellipsis:focus, .is-focused.button, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.textarea, .select select.is-focused, .is-focused.file-cta, - .is-focused.file-name, .is-focused.pagination-previous, - .is-focused.pagination-next, - .is-focused.pagination-link, - .is-focused.pagination-ellipsis, .button:active, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .textarea:active, .select select:active, .file-cta:active, - .file-name:active, .pagination-previous:active, - .pagination-next:active, - .pagination-link:active, - .pagination-ellipsis:active, .is-active.button, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.textarea, .select select.is-active, .is-active.file-cta, - .is-active.file-name, .is-active.pagination-previous, - .is-active.pagination-next, - .is-active.pagination-link, - .is-active.pagination-ellipsis { - outline: none; } - .button[disabled], .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .textarea[disabled], .select select[disabled], .file-cta[disabled], - .file-name[disabled], .pagination-previous[disabled], - .pagination-next[disabled], - .pagination-link[disabled], - .pagination-ellipsis[disabled], - fieldset[disabled] .button, - fieldset[disabled] .input, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, - fieldset[disabled] .textarea, - fieldset[disabled] .select select, - .select fieldset[disabled] select, - fieldset[disabled] .file-cta, - fieldset[disabled] .file-name, - fieldset[disabled] .pagination-previous, - fieldset[disabled] .pagination-next, - fieldset[disabled] .pagination-link, - fieldset[disabled] .pagination-ellipsis { - cursor: not-allowed; } - -/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ -html, -body, -p, -ol, -ul, -li, -dl, -dt, -dd, -blockquote, -figure, -fieldset, -legend, -textarea, -pre, -iframe, -hr, -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0; - padding: 0; } - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: 100%; - font-weight: normal; } - -ul { - list-style: none; } - -button, -input, -select, -textarea { - margin: 0; } - -html { - box-sizing: border-box; } - -*, *::before, *::after { - box-sizing: inherit; } - -img, -embed, -iframe, -object, -video { - height: auto; - max-width: 100%; } - -audio { - max-width: 100%; } - -iframe { - border: 0; } - -table { - border-collapse: collapse; - border-spacing: 0; } - -td, -th { - padding: 0; } - td:not([align]), - th:not([align]) { - text-align: left; } - -html { - background-color: white; - font-size: 16px; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - min-width: 300px; - overflow-x: auto; - overflow-y: scroll; - text-rendering: optimizeLegibility; - text-size-adjust: 100%; } - -article, -aside, -figure, -footer, -header, -hgroup, -section { - display: block; } - -body, -button, -input, -select, -textarea { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } - -code, -pre { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } - -body { - color: #222222; - font-size: 1em; - font-weight: 400; - line-height: 1.5; } - -a { - color: #2e63b8; - cursor: pointer; - text-decoration: none; } - a strong { - color: currentColor; } - a:hover { - color: #363636; } - -code { - background-color: rgba(0, 0, 0, 0.05); - color: #000000; - font-size: 0.875em; - font-weight: normal; - padding: 0.1em; } - -hr { - background-color: whitesmoke; - border: none; - display: block; - height: 2px; - margin: 1.5rem 0; } - -img { - height: auto; - max-width: 100%; } - -input[type="checkbox"], -input[type="radio"] { - vertical-align: baseline; } - -small { - font-size: 0.875em; } - -span { - font-style: inherit; - font-weight: inherit; } - -strong { - color: #222222; - font-weight: 700; } - -fieldset { - border: none; } - -pre { - -webkit-overflow-scrolling: touch; - background-color: whitesmoke; - color: #222222; - font-size: 0.875em; - overflow-x: auto; - padding: 1.25rem 1.5rem; - white-space: pre; - word-wrap: normal; } - pre code { - background-color: transparent; - color: currentColor; - font-size: 1em; - padding: 0; } - -table td, -table th { - vertical-align: top; } - table td:not([align]), - table th:not([align]) { - text-align: left; } - -table th { - color: #222222; } - -.is-clearfix::after { - clear: both; - content: " "; - display: table; } - -.is-pulled-left { - float: left !important; } - -.is-pulled-right { - float: right !important; } - -.is-clipped { - overflow: hidden !important; } - -.is-size-1 { - font-size: 3rem !important; } - -.is-size-2 { - font-size: 2.5rem !important; } - -.is-size-3 { - font-size: 2rem !important; } - -.is-size-4 { - font-size: 1.5rem !important; } - -.is-size-5 { - font-size: 1.25rem !important; } - -.is-size-6 { - font-size: 1rem !important; } - -.is-size-7, .docstring > section > a.docs-sourcelink { - font-size: 0.75rem !important; } - -@media screen and (max-width: 768px) { - .is-size-1-mobile { - font-size: 3rem !important; } - .is-size-2-mobile { - font-size: 2.5rem !important; } - .is-size-3-mobile { - font-size: 2rem !important; } - .is-size-4-mobile { - font-size: 1.5rem !important; } - .is-size-5-mobile { - font-size: 1.25rem !important; } - .is-size-6-mobile { - font-size: 1rem !important; } - .is-size-7-mobile { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 769px), print { - .is-size-1-tablet { - font-size: 3rem !important; } - .is-size-2-tablet { - font-size: 2.5rem !important; } - .is-size-3-tablet { - font-size: 2rem !important; } - .is-size-4-tablet { - font-size: 1.5rem !important; } - .is-size-5-tablet { - font-size: 1.25rem !important; } - .is-size-6-tablet { - font-size: 1rem !important; } - .is-size-7-tablet { - font-size: 0.75rem !important; } } - -@media screen and (max-width: 1055px) { - .is-size-1-touch { - font-size: 3rem !important; } - .is-size-2-touch { - font-size: 2.5rem !important; } - .is-size-3-touch { - font-size: 2rem !important; } - .is-size-4-touch { - font-size: 1.5rem !important; } - .is-size-5-touch { - font-size: 1.25rem !important; } - .is-size-6-touch { - font-size: 1rem !important; } - .is-size-7-touch { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 1056px) { - .is-size-1-desktop { - font-size: 3rem !important; } - .is-size-2-desktop { - font-size: 2.5rem !important; } - .is-size-3-desktop { - font-size: 2rem !important; } - .is-size-4-desktop { - font-size: 1.5rem !important; } - .is-size-5-desktop { - font-size: 1.25rem !important; } - .is-size-6-desktop { - font-size: 1rem !important; } - .is-size-7-desktop { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 1216px) { - .is-size-1-widescreen { - font-size: 3rem !important; } - .is-size-2-widescreen { - font-size: 2.5rem !important; } - .is-size-3-widescreen { - font-size: 2rem !important; } - .is-size-4-widescreen { - font-size: 1.5rem !important; } - .is-size-5-widescreen { - font-size: 1.25rem !important; } - .is-size-6-widescreen { - font-size: 1rem !important; } - .is-size-7-widescreen { - font-size: 0.75rem !important; } } - -@media screen and (min-width: 1408px) { - .is-size-1-fullhd { - font-size: 3rem !important; } - .is-size-2-fullhd { - font-size: 2.5rem !important; } - .is-size-3-fullhd { - font-size: 2rem !important; } - .is-size-4-fullhd { - font-size: 1.5rem !important; } - .is-size-5-fullhd { - font-size: 1.25rem !important; } - .is-size-6-fullhd { - font-size: 1rem !important; } - .is-size-7-fullhd { - font-size: 0.75rem !important; } } - -.has-text-centered { - text-align: center !important; } - -.has-text-justified { - text-align: justify !important; } - -.has-text-left { - text-align: left !important; } - -.has-text-right { - text-align: right !important; } - -@media screen and (max-width: 768px) { - .has-text-centered-mobile { - text-align: center !important; } } - -@media screen and (min-width: 769px), print { - .has-text-centered-tablet { - text-align: center !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-centered-tablet-only { - text-align: center !important; } } - -@media screen and (max-width: 1055px) { - .has-text-centered-touch { - text-align: center !important; } } - -@media screen and (min-width: 1056px) { - .has-text-centered-desktop { - text-align: center !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-centered-desktop-only { - text-align: center !important; } } - -@media screen and (min-width: 1216px) { - .has-text-centered-widescreen { - text-align: center !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-centered-widescreen-only { - text-align: center !important; } } - -@media screen and (min-width: 1408px) { - .has-text-centered-fullhd { - text-align: center !important; } } - -@media screen and (max-width: 768px) { - .has-text-justified-mobile { - text-align: justify !important; } } - -@media screen and (min-width: 769px), print { - .has-text-justified-tablet { - text-align: justify !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-justified-tablet-only { - text-align: justify !important; } } - -@media screen and (max-width: 1055px) { - .has-text-justified-touch { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) { - .has-text-justified-desktop { - text-align: justify !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-justified-desktop-only { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) { - .has-text-justified-widescreen { - text-align: justify !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-justified-widescreen-only { - text-align: justify !important; } } - -@media screen and (min-width: 1408px) { - .has-text-justified-fullhd { - text-align: justify !important; } } - -@media screen and (max-width: 768px) { - .has-text-left-mobile { - text-align: left !important; } } - -@media screen and (min-width: 769px), print { - .has-text-left-tablet { - text-align: left !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-left-tablet-only { - text-align: left !important; } } - -@media screen and (max-width: 1055px) { - .has-text-left-touch { - text-align: left !important; } } - -@media screen and (min-width: 1056px) { - .has-text-left-desktop { - text-align: left !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-left-desktop-only { - text-align: left !important; } } - -@media screen and (min-width: 1216px) { - .has-text-left-widescreen { - text-align: left !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-left-widescreen-only { - text-align: left !important; } } - -@media screen and (min-width: 1408px) { - .has-text-left-fullhd { - text-align: left !important; } } - -@media screen and (max-width: 768px) { - .has-text-right-mobile { - text-align: right !important; } } - -@media screen and (min-width: 769px), print { - .has-text-right-tablet { - text-align: right !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .has-text-right-tablet-only { - text-align: right !important; } } - -@media screen and (max-width: 1055px) { - .has-text-right-touch { - text-align: right !important; } } - -@media screen and (min-width: 1056px) { - .has-text-right-desktop { - text-align: right !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .has-text-right-desktop-only { - text-align: right !important; } } - -@media screen and (min-width: 1216px) { - .has-text-right-widescreen { - text-align: right !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .has-text-right-widescreen-only { - text-align: right !important; } } - -@media screen and (min-width: 1408px) { - .has-text-right-fullhd { - text-align: right !important; } } - -.is-capitalized { - text-transform: capitalize !important; } - -.is-lowercase { - text-transform: lowercase !important; } - -.is-uppercase { - text-transform: uppercase !important; } - -.is-italic { - font-style: italic !important; } - -.has-text-white { - color: white !important; } - -a.has-text-white:hover, a.has-text-white:focus { - color: #e6e6e6 !important; } - -.has-background-white { - background-color: white !important; } - -.has-text-black { - color: #0a0a0a !important; } - -a.has-text-black:hover, a.has-text-black:focus { - color: black !important; } - -.has-background-black { - background-color: #0a0a0a !important; } - -.has-text-light { - color: whitesmoke !important; } - -a.has-text-light:hover, a.has-text-light:focus { - color: #dbdbdb !important; } - -.has-background-light { - background-color: whitesmoke !important; } - -.has-text-dark { - color: #363636 !important; } - -a.has-text-dark:hover, a.has-text-dark:focus { - color: #1c1c1c !important; } - -.has-background-dark { - background-color: #363636 !important; } - -.has-text-primary { - color: #4eb5de !important; } - -a.has-text-primary:hover, a.has-text-primary:focus { - color: #27a1d2 !important; } - -.has-background-primary { - background-color: #4eb5de !important; } - -.has-text-link { - color: #2e63b8 !important; } - -a.has-text-link:hover, a.has-text-link:focus { - color: #244d8f !important; } - -.has-background-link { - background-color: #2e63b8 !important; } - -.has-text-info { - color: #209cee !important; } - -a.has-text-info:hover, a.has-text-info:focus { - color: #0f81cc !important; } - -.has-background-info { - background-color: #209cee !important; } - -.has-text-success { - color: #22c35b !important; } - -a.has-text-success:hover, a.has-text-success:focus { - color: #1a9847 !important; } - -.has-background-success { - background-color: #22c35b !important; } - -.has-text-warning { - color: #ffdd57 !important; } - -a.has-text-warning:hover, a.has-text-warning:focus { - color: #ffd324 !important; } - -.has-background-warning { - background-color: #ffdd57 !important; } - -.has-text-danger { - color: #da0b00 !important; } - -a.has-text-danger:hover, a.has-text-danger:focus { - color: #a70800 !important; } - -.has-background-danger { - background-color: #da0b00 !important; } - -.has-text-black-bis { - color: #121212 !important; } - -.has-background-black-bis { - background-color: #121212 !important; } - -.has-text-black-ter { - color: #242424 !important; } - -.has-background-black-ter { - background-color: #242424 !important; } - -.has-text-grey-darker { - color: #363636 !important; } - -.has-background-grey-darker { - background-color: #363636 !important; } - -.has-text-grey-dark { - color: #4a4a4a !important; } - -.has-background-grey-dark { - background-color: #4a4a4a !important; } - -.has-text-grey { - color: #7a7a7a !important; } - -.has-background-grey { - background-color: #7a7a7a !important; } - -.has-text-grey-light { - color: #b5b5b5 !important; } - -.has-background-grey-light { - background-color: #b5b5b5 !important; } - -.has-text-grey-lighter { - color: #dbdbdb !important; } - -.has-background-grey-lighter { - background-color: #dbdbdb !important; } - -.has-text-white-ter { - color: whitesmoke !important; } - -.has-background-white-ter { - background-color: whitesmoke !important; } - -.has-text-white-bis { - color: #fafafa !important; } - -.has-background-white-bis { - background-color: #fafafa !important; } - -.has-text-weight-light { - font-weight: 300 !important; } - -.has-text-weight-normal { - font-weight: 400 !important; } - -.has-text-weight-medium { - font-weight: 500 !important; } - -.has-text-weight-semibold { - font-weight: 600 !important; } - -.has-text-weight-bold { - font-weight: 700 !important; } - -.is-family-primary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-secondary { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-sans-serif { - font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } - -.is-family-monospace { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-family-code { - font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } - -.is-block { - display: block !important; } - -@media screen and (max-width: 768px) { - .is-block-mobile { - display: block !important; } } - -@media screen and (min-width: 769px), print { - .is-block-tablet { - display: block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-block-tablet-only { - display: block !important; } } - -@media screen and (max-width: 1055px) { - .is-block-touch { - display: block !important; } } - -@media screen and (min-width: 1056px) { - .is-block-desktop { - display: block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-block-desktop-only { - display: block !important; } } - -@media screen and (min-width: 1216px) { - .is-block-widescreen { - display: block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-block-widescreen-only { - display: block !important; } } - -@media screen and (min-width: 1408px) { - .is-block-fullhd { - display: block !important; } } - -.is-flex { - display: flex !important; } - -@media screen and (max-width: 768px) { - .is-flex-mobile { - display: flex !important; } } - -@media screen and (min-width: 769px), print { - .is-flex-tablet { - display: flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-flex-tablet-only { - display: flex !important; } } - -@media screen and (max-width: 1055px) { - .is-flex-touch { - display: flex !important; } } - -@media screen and (min-width: 1056px) { - .is-flex-desktop { - display: flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-flex-desktop-only { - display: flex !important; } } - -@media screen and (min-width: 1216px) { - .is-flex-widescreen { - display: flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-flex-widescreen-only { - display: flex !important; } } - -@media screen and (min-width: 1408px) { - .is-flex-fullhd { - display: flex !important; } } - -.is-inline { - display: inline !important; } - -@media screen and (max-width: 768px) { - .is-inline-mobile { - display: inline !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-tablet { - display: inline !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-tablet-only { - display: inline !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-touch { - display: inline !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-desktop { - display: inline !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-desktop-only { - display: inline !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-widescreen { - display: inline !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-widescreen-only { - display: inline !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-fullhd { - display: inline !important; } } - -.is-inline-block { - display: inline-block !important; } - -@media screen and (max-width: 768px) { - .is-inline-block-mobile { - display: inline-block !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-block-tablet { - display: inline-block !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-block-tablet-only { - display: inline-block !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-block-touch { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-block-desktop { - display: inline-block !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-block-desktop-only { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-block-widescreen { - display: inline-block !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-block-widescreen-only { - display: inline-block !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-block-fullhd { - display: inline-block !important; } } - -.is-inline-flex { - display: inline-flex !important; } - -@media screen and (max-width: 768px) { - .is-inline-flex-mobile { - display: inline-flex !important; } } - -@media screen and (min-width: 769px), print { - .is-inline-flex-tablet { - display: inline-flex !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-inline-flex-tablet-only { - display: inline-flex !important; } } - -@media screen and (max-width: 1055px) { - .is-inline-flex-touch { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) { - .is-inline-flex-desktop { - display: inline-flex !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-inline-flex-desktop-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) { - .is-inline-flex-widescreen { - display: inline-flex !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-inline-flex-widescreen-only { - display: inline-flex !important; } } - -@media screen and (min-width: 1408px) { - .is-inline-flex-fullhd { - display: inline-flex !important; } } - -.is-hidden { - display: none !important; } - -.is-sr-only { - border: none !important; - clip: rect(0, 0, 0, 0) !important; - height: 0.01em !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - white-space: nowrap !important; - width: 0.01em !important; } - -@media screen and (max-width: 768px) { - .is-hidden-mobile { - display: none !important; } } - -@media screen and (min-width: 769px), print { - .is-hidden-tablet { - display: none !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-hidden-tablet-only { - display: none !important; } } - -@media screen and (max-width: 1055px) { - .is-hidden-touch { - display: none !important; } } - -@media screen and (min-width: 1056px) { - .is-hidden-desktop { - display: none !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-hidden-desktop-only { - display: none !important; } } - -@media screen and (min-width: 1216px) { - .is-hidden-widescreen { - display: none !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-hidden-widescreen-only { - display: none !important; } } - -@media screen and (min-width: 1408px) { - .is-hidden-fullhd { - display: none !important; } } - -.is-invisible { - visibility: hidden !important; } - -@media screen and (max-width: 768px) { - .is-invisible-mobile { - visibility: hidden !important; } } - -@media screen and (min-width: 769px), print { - .is-invisible-tablet { - visibility: hidden !important; } } - -@media screen and (min-width: 769px) and (max-width: 1055px) { - .is-invisible-tablet-only { - visibility: hidden !important; } } - -@media screen and (max-width: 1055px) { - .is-invisible-touch { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) { - .is-invisible-desktop { - visibility: hidden !important; } } - -@media screen and (min-width: 1056px) and (max-width: 1215px) { - .is-invisible-desktop-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) { - .is-invisible-widescreen { - visibility: hidden !important; } } - -@media screen and (min-width: 1216px) and (max-width: 1407px) { - .is-invisible-widescreen-only { - visibility: hidden !important; } } - -@media screen and (min-width: 1408px) { - .is-invisible-fullhd { - visibility: hidden !important; } } - -.is-marginless { - margin: 0 !important; } - -.is-paddingless { - padding: 0 !important; } - -.is-radiusless { - border-radius: 0 !important; } - -.is-shadowless { - box-shadow: none !important; } - -.is-relative { - position: relative !important; } - -.box { - background-color: white; - border-radius: 6px; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - color: #222222; - display: block; - padding: 1.25rem; } - -a.box:hover, a.box:focus { - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #2e63b8; } - -a.box:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #2e63b8; } - -.button { - background-color: white; - border-color: #dbdbdb; - border-width: 1px; - color: #363636; - cursor: pointer; - justify-content: center; - padding-bottom: calc(0.375em - 1px); - padding-left: 0.75em; - padding-right: 0.75em; - padding-top: calc(0.375em - 1px); - text-align: center; - white-space: nowrap; } - .button strong { - color: inherit; } - .button .icon, .button .icon.is-small, .button #documenter .docs-sidebar form.docs-search > input.icon, #documenter .docs-sidebar .button form.docs-search > input.icon, .button .icon.is-medium, .button .icon.is-large { - height: 1.5em; - width: 1.5em; } - .button .icon:first-child:not(:last-child) { - margin-left: calc(-0.375em - 1px); - margin-right: 0.1875em; } - .button .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: calc(-0.375em - 1px); } - .button .icon:first-child:last-child { - margin-left: calc(-0.375em - 1px); - margin-right: calc(-0.375em - 1px); } - .button:hover, .button.is-hovered { - border-color: #b5b5b5; - color: #363636; } - .button:focus, .button.is-focused { - border-color: #2e63b8; - color: #363636; } - .button:focus:not(:active), .button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .button:active, .button.is-active { - border-color: #4a4a4a; - color: #363636; } - .button.is-text { - background-color: transparent; - border-color: transparent; - color: #222222; - text-decoration: underline; } - .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused { - background-color: whitesmoke; - color: #222222; } - .button.is-text:active, .button.is-text.is-active { - background-color: #e8e8e8; - color: #222222; } - .button.is-text[disabled], - fieldset[disabled] .button.is-text { - background-color: transparent; - border-color: transparent; - box-shadow: none; } - .button.is-white { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - .button.is-white:hover, .button.is-white.is-hovered { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - .button.is-white:focus, .button.is-white.is-focused { - border-color: transparent; - color: #0a0a0a; } - .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - .button.is-white:active, .button.is-white.is-active { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - .button.is-white[disabled], - fieldset[disabled] .button.is-white { - background-color: white; - border-color: transparent; - box-shadow: none; } - .button.is-white.is-inverted { - background-color: #0a0a0a; - color: white; } - .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered { - background-color: black; } - .button.is-white.is-inverted[disabled], - fieldset[disabled] .button.is-white.is-inverted { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; - color: white; } - .button.is-white.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused { - background-color: white; - border-color: white; - color: #0a0a0a; } - .button.is-white.is-outlined.is-loading::after { - border-color: transparent transparent white white !important; } - .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-white.is-outlined[disabled], - fieldset[disabled] .button.is-white.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused { - background-color: #0a0a0a; - color: white; } - .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - .button.is-white.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-white.is-inverted.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - .button.is-black:hover, .button.is-black.is-hovered { - background-color: #040404; - border-color: transparent; - color: white; } - .button.is-black:focus, .button.is-black.is-focused { - border-color: transparent; - color: white; } - .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - .button.is-black:active, .button.is-black.is-active { - background-color: black; - border-color: transparent; - color: white; } - .button.is-black[disabled], - fieldset[disabled] .button.is-black { - background-color: #0a0a0a; - border-color: transparent; - box-shadow: none; } - .button.is-black.is-inverted { - background-color: white; - color: #0a0a0a; } - .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-black.is-inverted[disabled], - fieldset[disabled] .button.is-black.is-inverted { - background-color: white; - border-color: transparent; - box-shadow: none; - color: #0a0a0a; } - .button.is-black.is-loading::after { - border-color: transparent transparent white white !important; } - .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - color: #0a0a0a; } - .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - .button.is-black.is-outlined.is-loading::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent white white !important; } - .button.is-black.is-outlined[disabled], - fieldset[disabled] .button.is-black.is-outlined { - background-color: transparent; - border-color: #0a0a0a; - box-shadow: none; - color: #0a0a0a; } - .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - color: white; } - .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused { - background-color: white; - color: #0a0a0a; } - .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #0a0a0a #0a0a0a !important; } - .button.is-black.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-black.is-inverted.is-outlined { - background-color: transparent; - border-color: white; - box-shadow: none; - color: white; } - .button.is-light { - background-color: whitesmoke; - border-color: transparent; - color: #363636; } - .button.is-light:hover, .button.is-light.is-hovered { - background-color: #eeeeee; - border-color: transparent; - color: #363636; } - .button.is-light:focus, .button.is-light.is-focused { - border-color: transparent; - color: #363636; } - .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } - .button.is-light:active, .button.is-light.is-active { - background-color: #e8e8e8; - border-color: transparent; - color: #363636; } - .button.is-light[disabled], - fieldset[disabled] .button.is-light { - background-color: whitesmoke; - border-color: transparent; - box-shadow: none; } - .button.is-light.is-inverted { - background-color: #363636; - color: whitesmoke; } - .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered { - background-color: #292929; } - .button.is-light.is-inverted[disabled], - fieldset[disabled] .button.is-light.is-inverted { - background-color: #363636; - border-color: transparent; - box-shadow: none; - color: whitesmoke; } - .button.is-light.is-loading::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-light.is-outlined { - background-color: transparent; - border-color: whitesmoke; - color: whitesmoke; } - .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused { - background-color: whitesmoke; - border-color: whitesmoke; - color: #363636; } - .button.is-light.is-outlined.is-loading::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-light.is-outlined[disabled], - fieldset[disabled] .button.is-light.is-outlined { - background-color: transparent; - border-color: whitesmoke; - box-shadow: none; - color: whitesmoke; } - .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #363636; - color: #363636; } - .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused { - background-color: #363636; - color: whitesmoke; } - .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-light.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-light.is-inverted.is-outlined { - background-color: transparent; - border-color: #363636; - box-shadow: none; - color: #363636; } - .button.is-dark, .content kbd.button { - background-color: #363636; - border-color: transparent; - color: whitesmoke; } - .button.is-dark:hover, .content kbd.button:hover, .button.is-dark.is-hovered, .content kbd.button.is-hovered { - background-color: #2f2f2f; - border-color: transparent; - color: whitesmoke; } - .button.is-dark:focus, .content kbd.button:focus, .button.is-dark.is-focused, .content kbd.button.is-focused { - border-color: transparent; - color: whitesmoke; } - .button.is-dark:focus:not(:active), .content kbd.button:focus:not(:active), .button.is-dark.is-focused:not(:active), .content kbd.button.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } - .button.is-dark:active, .content kbd.button:active, .button.is-dark.is-active, .content kbd.button.is-active { - background-color: #292929; - border-color: transparent; - color: whitesmoke; } - .button.is-dark[disabled], .content kbd.button[disabled], - fieldset[disabled] .button.is-dark, - fieldset[disabled] .content kbd.button, - .content fieldset[disabled] kbd.button { - background-color: #363636; - border-color: transparent; - box-shadow: none; } - .button.is-dark.is-inverted, .content kbd.button.is-inverted { - background-color: whitesmoke; - color: #363636; } - .button.is-dark.is-inverted:hover, .content kbd.button.is-inverted:hover, .button.is-dark.is-inverted.is-hovered, .content kbd.button.is-inverted.is-hovered { - background-color: #e8e8e8; } - .button.is-dark.is-inverted[disabled], .content kbd.button.is-inverted[disabled], - fieldset[disabled] .button.is-dark.is-inverted, - fieldset[disabled] .content kbd.button.is-inverted, - .content fieldset[disabled] kbd.button.is-inverted { - background-color: whitesmoke; - border-color: transparent; - box-shadow: none; - color: #363636; } - .button.is-dark.is-loading::after, .content kbd.button.is-loading::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-dark.is-outlined, .content kbd.button.is-outlined { - background-color: transparent; - border-color: #363636; - color: #363636; } - .button.is-dark.is-outlined:hover, .content kbd.button.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .content kbd.button.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .content kbd.button.is-outlined:focus, .button.is-dark.is-outlined.is-focused, .content kbd.button.is-outlined.is-focused { - background-color: #363636; - border-color: #363636; - color: whitesmoke; } - .button.is-dark.is-outlined.is-loading::after, .content kbd.button.is-outlined.is-loading::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-dark.is-outlined.is-loading:hover::after, .content kbd.button.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .content kbd.button.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after, .content kbd.button.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent whitesmoke whitesmoke !important; } - .button.is-dark.is-outlined[disabled], .content kbd.button.is-outlined[disabled], - fieldset[disabled] .button.is-dark.is-outlined, - fieldset[disabled] .content kbd.button.is-outlined, - .content fieldset[disabled] kbd.button.is-outlined { - background-color: transparent; - border-color: #363636; - box-shadow: none; - color: #363636; } - .button.is-dark.is-inverted.is-outlined, .content kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: whitesmoke; - color: whitesmoke; } - .button.is-dark.is-inverted.is-outlined:hover, .content kbd.button.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .content kbd.button.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .content kbd.button.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused, .content kbd.button.is-inverted.is-outlined.is-focused { - background-color: whitesmoke; - color: #363636; } - .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #363636 #363636 !important; } - .button.is-dark.is-inverted.is-outlined[disabled], .content kbd.button.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-dark.is-inverted.is-outlined, - fieldset[disabled] .content kbd.button.is-inverted.is-outlined, - .content fieldset[disabled] kbd.button.is-inverted.is-outlined { - background-color: transparent; - border-color: whitesmoke; - box-shadow: none; - color: whitesmoke; } - .button.is-primary, .docstring > section > a.button.docs-sourcelink { - background-color: #4eb5de; - border-color: transparent; - color: #fff; } - .button.is-primary:hover, .docstring > section > a.button.docs-sourcelink:hover, .button.is-primary.is-hovered, .docstring > section > a.button.is-hovered.docs-sourcelink { - background-color: #43b1dc; - border-color: transparent; - color: #fff; } - .button.is-primary:focus, .docstring > section > a.button.docs-sourcelink:focus, .button.is-primary.is-focused, .docstring > section > a.button.is-focused.docs-sourcelink { - border-color: transparent; - color: #fff; } - .button.is-primary:focus:not(:active), .docstring > section > a.button.docs-sourcelink:focus:not(:active), .button.is-primary.is-focused:not(:active), .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { - box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } - .button.is-primary:active, .docstring > section > a.button.docs-sourcelink:active, .button.is-primary.is-active, .docstring > section > a.button.is-active.docs-sourcelink { - background-color: #39acda; - border-color: transparent; - color: #fff; } - .button.is-primary[disabled], .docstring > section > a.button.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary, - fieldset[disabled] .docstring > section > a.button.docs-sourcelink { - background-color: #4eb5de; - border-color: transparent; - box-shadow: none; } - .button.is-primary.is-inverted, .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - color: #4eb5de; } - .button.is-primary.is-inverted:hover, .docstring > section > a.button.is-inverted.docs-sourcelink:hover, .button.is-primary.is-inverted.is-hovered, .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { - background-color: #f2f2f2; } - .button.is-primary.is-inverted[disabled], .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary.is-inverted, - fieldset[disabled] .docstring > section > a.button.is-inverted.docs-sourcelink { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #4eb5de; } - .button.is-primary.is-loading::after, .docstring > section > a.button.is-loading.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-primary.is-outlined, .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #4eb5de; - color: #4eb5de; } - .button.is-primary.is-outlined:hover, .docstring > section > a.button.is-outlined.docs-sourcelink:hover, .button.is-primary.is-outlined.is-hovered, .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-outlined:focus, .docstring > section > a.button.is-outlined.docs-sourcelink:focus, .button.is-primary.is-outlined.is-focused, .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { - background-color: #4eb5de; - border-color: #4eb5de; - color: #fff; } - .button.is-primary.is-outlined.is-loading::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { - border-color: transparent transparent #4eb5de #4eb5de !important; } - .button.is-primary.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-primary.is-outlined[disabled], .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary.is-outlined, - fieldset[disabled] .docstring > section > a.button.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #4eb5de; - box-shadow: none; - color: #4eb5de; } - .button.is-primary.is-inverted.is-outlined, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-primary.is-inverted.is-outlined:hover, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-inverted.is-outlined:focus, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, .button.is-primary.is-inverted.is-outlined.is-focused, .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { - background-color: #fff; - color: #4eb5de; } - .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { - border-color: transparent transparent #4eb5de #4eb5de !important; } - .button.is-primary.is-inverted.is-outlined[disabled], .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], - fieldset[disabled] .button.is-primary.is-inverted.is-outlined, - fieldset[disabled] .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-link { - background-color: #2e63b8; - border-color: transparent; - color: #fff; } - .button.is-link:hover, .button.is-link.is-hovered { - background-color: #2b5eae; - border-color: transparent; - color: #fff; } - .button.is-link:focus, .button.is-link.is-focused { - border-color: transparent; - color: #fff; } - .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .button.is-link:active, .button.is-link.is-active { - background-color: #2958a4; - border-color: transparent; - color: #fff; } - .button.is-link[disabled], - fieldset[disabled] .button.is-link { - background-color: #2e63b8; - border-color: transparent; - box-shadow: none; } - .button.is-link.is-inverted { - background-color: #fff; - color: #2e63b8; } - .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-link.is-inverted[disabled], - fieldset[disabled] .button.is-link.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #2e63b8; } - .button.is-link.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-link.is-outlined { - background-color: transparent; - border-color: #2e63b8; - color: #2e63b8; } - .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; } - .button.is-link.is-outlined.is-loading::after { - border-color: transparent transparent #2e63b8 #2e63b8 !important; } - .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-link.is-outlined[disabled], - fieldset[disabled] .button.is-link.is-outlined { - background-color: transparent; - border-color: #2e63b8; - box-shadow: none; - color: #2e63b8; } - .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #2e63b8; } - .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #2e63b8 #2e63b8 !important; } - .button.is-link.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-link.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-info { - background-color: #209cee; - border-color: transparent; - color: #fff; } - .button.is-info:hover, .button.is-info.is-hovered { - background-color: #1496ed; - border-color: transparent; - color: #fff; } - .button.is-info:focus, .button.is-info.is-focused { - border-color: transparent; - color: #fff; } - .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } - .button.is-info:active, .button.is-info.is-active { - background-color: #118fe4; - border-color: transparent; - color: #fff; } - .button.is-info[disabled], - fieldset[disabled] .button.is-info { - background-color: #209cee; - border-color: transparent; - box-shadow: none; } - .button.is-info.is-inverted { - background-color: #fff; - color: #209cee; } - .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-info.is-inverted[disabled], - fieldset[disabled] .button.is-info.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #209cee; } - .button.is-info.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-info.is-outlined { - background-color: transparent; - border-color: #209cee; - color: #209cee; } - .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused { - background-color: #209cee; - border-color: #209cee; - color: #fff; } - .button.is-info.is-outlined.is-loading::after { - border-color: transparent transparent #209cee #209cee !important; } - .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-info.is-outlined[disabled], - fieldset[disabled] .button.is-info.is-outlined { - background-color: transparent; - border-color: #209cee; - box-shadow: none; - color: #209cee; } - .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #209cee; } - .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #209cee #209cee !important; } - .button.is-info.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-info.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-success { - background-color: #22c35b; - border-color: transparent; - color: #fff; } - .button.is-success:hover, .button.is-success.is-hovered { - background-color: #20b856; - border-color: transparent; - color: #fff; } - .button.is-success:focus, .button.is-success.is-focused { - border-color: transparent; - color: #fff; } - .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } - .button.is-success:active, .button.is-success.is-active { - background-color: #1ead51; - border-color: transparent; - color: #fff; } - .button.is-success[disabled], - fieldset[disabled] .button.is-success { - background-color: #22c35b; - border-color: transparent; - box-shadow: none; } - .button.is-success.is-inverted { - background-color: #fff; - color: #22c35b; } - .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-success.is-inverted[disabled], - fieldset[disabled] .button.is-success.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #22c35b; } - .button.is-success.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-success.is-outlined { - background-color: transparent; - border-color: #22c35b; - color: #22c35b; } - .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused { - background-color: #22c35b; - border-color: #22c35b; - color: #fff; } - .button.is-success.is-outlined.is-loading::after { - border-color: transparent transparent #22c35b #22c35b !important; } - .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-success.is-outlined[disabled], - fieldset[disabled] .button.is-success.is-outlined { - background-color: transparent; - border-color: #22c35b; - box-shadow: none; - color: #22c35b; } - .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #22c35b; } - .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #22c35b #22c35b !important; } - .button.is-success.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-success.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-warning { - background-color: #ffdd57; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning:hover, .button.is-warning.is-hovered { - background-color: #ffdb4a; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning:focus, .button.is-warning.is-focused { - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } - .button.is-warning:active, .button.is-warning.is-active { - background-color: #ffd83d; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning[disabled], - fieldset[disabled] .button.is-warning { - background-color: #ffdd57; - border-color: transparent; - box-shadow: none; } - .button.is-warning.is-inverted { - background-color: rgba(0, 0, 0, 0.7); - color: #ffdd57; } - .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered { - background-color: rgba(0, 0, 0, 0.7); } - .button.is-warning.is-inverted[disabled], - fieldset[disabled] .button.is-warning.is-inverted { - background-color: rgba(0, 0, 0, 0.7); - border-color: transparent; - box-shadow: none; - color: #ffdd57; } - .button.is-warning.is-loading::after { - border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } - .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ffdd57; - color: #ffdd57; } - .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused { - background-color: #ffdd57; - border-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .button.is-warning.is-outlined.is-loading::after { - border-color: transparent transparent #ffdd57 #ffdd57 !important; } - .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } - .button.is-warning.is-outlined[disabled], - fieldset[disabled] .button.is-warning.is-outlined { - background-color: transparent; - border-color: #ffdd57; - box-shadow: none; - color: #ffdd57; } - .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.7); - color: rgba(0, 0, 0, 0.7); } - .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused { - background-color: rgba(0, 0, 0, 0.7); - color: #ffdd57; } - .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #ffdd57 #ffdd57 !important; } - .button.is-warning.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-warning.is-inverted.is-outlined { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.7); - box-shadow: none; - color: rgba(0, 0, 0, 0.7); } - .button.is-danger { - background-color: #da0b00; - border-color: transparent; - color: #fff; } - .button.is-danger:hover, .button.is-danger.is-hovered { - background-color: #cd0a00; - border-color: transparent; - color: #fff; } - .button.is-danger:focus, .button.is-danger.is-focused { - border-color: transparent; - color: #fff; } - .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) { - box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } - .button.is-danger:active, .button.is-danger.is-active { - background-color: #c10a00; - border-color: transparent; - color: #fff; } - .button.is-danger[disabled], - fieldset[disabled] .button.is-danger { - background-color: #da0b00; - border-color: transparent; - box-shadow: none; } - .button.is-danger.is-inverted { - background-color: #fff; - color: #da0b00; } - .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered { - background-color: #f2f2f2; } - .button.is-danger.is-inverted[disabled], - fieldset[disabled] .button.is-danger.is-inverted { - background-color: #fff; - border-color: transparent; - box-shadow: none; - color: #da0b00; } - .button.is-danger.is-loading::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-danger.is-outlined { - background-color: transparent; - border-color: #da0b00; - color: #da0b00; } - .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused { - background-color: #da0b00; - border-color: #da0b00; - color: #fff; } - .button.is-danger.is-outlined.is-loading::after { - border-color: transparent transparent #da0b00 #da0b00 !important; } - .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #fff #fff !important; } - .button.is-danger.is-outlined[disabled], - fieldset[disabled] .button.is-danger.is-outlined { - background-color: transparent; - border-color: #da0b00; - box-shadow: none; - color: #da0b00; } - .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - color: #fff; } - .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused { - background-color: #fff; - color: #da0b00; } - .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { - border-color: transparent transparent #da0b00 #da0b00 !important; } - .button.is-danger.is-inverted.is-outlined[disabled], - fieldset[disabled] .button.is-danger.is-inverted.is-outlined { - background-color: transparent; - border-color: #fff; - box-shadow: none; - color: #fff; } - .button.is-small, #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 2px; - font-size: 0.75rem; } - .button.is-normal { - font-size: 1rem; } - .button.is-medium { - font-size: 1.25rem; } - .button.is-large { - font-size: 1.5rem; } - .button[disabled], - fieldset[disabled] .button { - background-color: white; - border-color: #dbdbdb; - box-shadow: none; - opacity: 0.5; } - .button.is-fullwidth { - display: flex; - width: 100%; } - .button.is-loading { - color: transparent !important; - pointer-events: none; } - .button.is-loading::after { - position: absolute; - left: calc(50% - (1em / 2)); - top: calc(50% - (1em / 2)); - position: absolute !important; } - .button.is-static { - background-color: whitesmoke; - border-color: #dbdbdb; - color: #7a7a7a; - box-shadow: none; - pointer-events: none; } - .button.is-rounded, #documenter .docs-sidebar form.docs-search > input.button { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - -.buttons { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .buttons .button { - margin-bottom: 0.5rem; } - .buttons .button:not(:last-child):not(.is-fullwidth) { - margin-right: 0.5rem; } - .buttons:last-child { - margin-bottom: -0.5rem; } - .buttons:not(:last-child) { - margin-bottom: 1rem; } - .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { - border-radius: 2px; - font-size: 0.75rem; } - .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { - font-size: 1.25rem; } - .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { - font-size: 1.5rem; } - .buttons.has-addons .button:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .buttons.has-addons .button:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - margin-right: -1px; } - .buttons.has-addons .button:last-child { - margin-right: 0; } - .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered { - z-index: 2; } - .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected { - z-index: 3; } - .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover { - z-index: 4; } - .buttons.has-addons .button.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .buttons.is-centered { - justify-content: center; } - .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - .buttons.is-right { - justify-content: flex-end; } - .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { - margin-left: 0.25rem; - margin-right: 0.25rem; } - -.container { - flex-grow: 1; - margin: 0 auto; - position: relative; - width: auto; } - @media screen and (min-width: 1056px) { - .container { - max-width: 992px; } - .container.is-fluid { - margin-left: 32px; - margin-right: 32px; - max-width: none; } } - @media screen and (max-width: 1215px) { - .container.is-widescreen { - max-width: 1152px; } } - @media screen and (max-width: 1407px) { - .container.is-fullhd { - max-width: 1344px; } } - @media screen and (min-width: 1216px) { - .container { - max-width: 1152px; } } - @media screen and (min-width: 1408px) { - .container { - max-width: 1344px; } } - -.content li + li { - margin-top: 0.25em; } - -.content p:not(:last-child), -.content dl:not(:last-child), -.content ol:not(:last-child), -.content ul:not(:last-child), -.content blockquote:not(:last-child), -.content pre:not(:last-child), -.content table:not(:last-child) { - margin-bottom: 1em; } - -.content h1, -.content h2, -.content h3, -.content h4, -.content h5, -.content h6 { - color: #222222; - font-weight: 600; - line-height: 1.125; } - -.content h1 { - font-size: 2em; - margin-bottom: 0.5em; } - .content h1:not(:first-child) { - margin-top: 1em; } - -.content h2 { - font-size: 1.75em; - margin-bottom: 0.5714em; } - .content h2:not(:first-child) { - margin-top: 1.1428em; } - -.content h3 { - font-size: 1.5em; - margin-bottom: 0.6666em; } - .content h3:not(:first-child) { - margin-top: 1.3333em; } - -.content h4 { - font-size: 1.25em; - margin-bottom: 0.8em; } - -.content h5 { - font-size: 1.125em; - margin-bottom: 0.8888em; } - -.content h6 { - font-size: 1em; - margin-bottom: 1em; } - -.content blockquote { - background-color: whitesmoke; - border-left: 5px solid #dbdbdb; - padding: 1.25em 1.5em; } - -.content ol { - list-style-position: outside; - margin-left: 2em; - margin-top: 1em; } - .content ol:not([type]) { - list-style-type: decimal; } - .content ol:not([type]).is-lower-alpha { - list-style-type: lower-alpha; } - .content ol:not([type]).is-lower-roman { - list-style-type: lower-roman; } - .content ol:not([type]).is-upper-alpha { - list-style-type: upper-alpha; } - .content ol:not([type]).is-upper-roman { - list-style-type: upper-roman; } - -.content ul { - list-style: disc outside; - margin-left: 2em; - margin-top: 1em; } - .content ul ul { - list-style-type: circle; - margin-top: 0.5em; } - .content ul ul ul { - list-style-type: square; } - -.content dd { - margin-left: 2em; } - -.content figure { - margin-left: 2em; - margin-right: 2em; - text-align: center; } - .content figure:not(:first-child) { - margin-top: 2em; } - .content figure:not(:last-child) { - margin-bottom: 2em; } - .content figure img { - display: inline-block; } - .content figure figcaption { - font-style: italic; } - -.content pre { - -webkit-overflow-scrolling: touch; - overflow-x: auto; - padding: 0.7rem 0.5rem; - white-space: pre; - word-wrap: normal; } - -.content sup, -.content sub { - font-size: 75%; } - -.content table { - width: 100%; } - .content table td, - .content table th { - border: 1px solid #dbdbdb; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - .content table th { - color: #222222; } - .content table th:not([align]) { - text-align: left; } - .content table thead td, - .content table thead th { - border-width: 0 0 2px; - color: #222222; } - .content table tfoot td, - .content table tfoot th { - border-width: 2px 0 0; - color: #222222; } - .content table tbody tr:last-child td, - .content table tbody tr:last-child th { - border-bottom-width: 0; } - -.content .tabs li + li { - margin-top: 0; } - -.content.is-small, #documenter .docs-sidebar form.docs-search > input.content { - font-size: 0.75rem; } - -.content.is-medium { - font-size: 1.25rem; } - -.content.is-large { - font-size: 1.5rem; } - -.icon { - align-items: center; - display: inline-flex; - justify-content: center; - height: 1.5rem; - width: 1.5rem; } - .icon.is-small, #documenter .docs-sidebar form.docs-search > input.icon { - height: 1rem; - width: 1rem; } - .icon.is-medium { - height: 2rem; - width: 2rem; } - .icon.is-large { - height: 3rem; - width: 3rem; } - -.image, #documenter .docs-sidebar .docs-logo > img { - display: block; - position: relative; } - .image img, #documenter .docs-sidebar .docs-logo > img img { - display: block; - height: auto; - width: 100%; } - .image img.is-rounded, #documenter .docs-sidebar .docs-logo > img img.is-rounded { - border-radius: 290486px; } - .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, - .image.is-square .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, - .image.is-1by1 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, - .image.is-5by4 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, - .image.is-4by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, - .image.is-3by2 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, - .image.is-5by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, - .image.is-16by9 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, - .image.is-2by1 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, - .image.is-3by1 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, - .image.is-4by5 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, - .image.is-3by4 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, - .image.is-2by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, - .image.is-3by5 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, - .image.is-9by16 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, - .image.is-1by2 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, - .image.is-1by3 .has-ratio, - #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { - height: 100%; - width: 100%; } - .image.is-square, #documenter .docs-sidebar .docs-logo > img.is-square, .image.is-1by1, #documenter .docs-sidebar .docs-logo > img.is-1by1 { - padding-top: 100%; } - .image.is-5by4, #documenter .docs-sidebar .docs-logo > img.is-5by4 { - padding-top: 80%; } - .image.is-4by3, #documenter .docs-sidebar .docs-logo > img.is-4by3 { - padding-top: 75%; } - .image.is-3by2, #documenter .docs-sidebar .docs-logo > img.is-3by2 { - padding-top: 66.6666%; } - .image.is-5by3, #documenter .docs-sidebar .docs-logo > img.is-5by3 { - padding-top: 60%; } - .image.is-16by9, #documenter .docs-sidebar .docs-logo > img.is-16by9 { - padding-top: 56.25%; } - .image.is-2by1, #documenter .docs-sidebar .docs-logo > img.is-2by1 { - padding-top: 50%; } - .image.is-3by1, #documenter .docs-sidebar .docs-logo > img.is-3by1 { - padding-top: 33.3333%; } - .image.is-4by5, #documenter .docs-sidebar .docs-logo > img.is-4by5 { - padding-top: 125%; } - .image.is-3by4, #documenter .docs-sidebar .docs-logo > img.is-3by4 { - padding-top: 133.3333%; } - .image.is-2by3, #documenter .docs-sidebar .docs-logo > img.is-2by3 { - padding-top: 150%; } - .image.is-3by5, #documenter .docs-sidebar .docs-logo > img.is-3by5 { - padding-top: 166.6666%; } - .image.is-9by16, #documenter .docs-sidebar .docs-logo > img.is-9by16 { - padding-top: 177.7777%; } - .image.is-1by2, #documenter .docs-sidebar .docs-logo > img.is-1by2 { - padding-top: 200%; } - .image.is-1by3, #documenter .docs-sidebar .docs-logo > img.is-1by3 { - padding-top: 300%; } - .image.is-16x16, #documenter .docs-sidebar .docs-logo > img.is-16x16 { - height: 16px; - width: 16px; } - .image.is-24x24, #documenter .docs-sidebar .docs-logo > img.is-24x24 { - height: 24px; - width: 24px; } - .image.is-32x32, #documenter .docs-sidebar .docs-logo > img.is-32x32 { - height: 32px; - width: 32px; } - .image.is-48x48, #documenter .docs-sidebar .docs-logo > img.is-48x48 { - height: 48px; - width: 48px; } - .image.is-64x64, #documenter .docs-sidebar .docs-logo > img.is-64x64 { - height: 64px; - width: 64px; } - .image.is-96x96, #documenter .docs-sidebar .docs-logo > img.is-96x96 { - height: 96px; - width: 96px; } - .image.is-128x128, #documenter .docs-sidebar .docs-logo > img.is-128x128 { - height: 128px; - width: 128px; } - -.notification { - background-color: whitesmoke; - border-radius: 4px; - padding: 1.25rem 2.5rem 1.25rem 1.5rem; - position: relative; } - .notification a:not(.button):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - .notification strong { - color: currentColor; } - .notification code, - .notification pre { - background: white; } - .notification pre code { - background: transparent; } - .notification > .delete { - position: absolute; - right: 0.5rem; - top: 0.5rem; } - .notification .title, - .notification .subtitle, - .notification .content { - color: currentColor; } - .notification.is-white { - background-color: white; - color: #0a0a0a; } - .notification.is-black { - background-color: #0a0a0a; - color: white; } - .notification.is-light { - background-color: whitesmoke; - color: #363636; } - .notification.is-dark, .content kbd.notification { - background-color: #363636; - color: whitesmoke; } - .notification.is-primary, .docstring > section > a.notification.docs-sourcelink { - background-color: #4eb5de; - color: #fff; } - .notification.is-link { - background-color: #2e63b8; - color: #fff; } - .notification.is-info { - background-color: #209cee; - color: #fff; } - .notification.is-success { - background-color: #22c35b; - color: #fff; } - .notification.is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .notification.is-danger { - background-color: #da0b00; - color: #fff; } - -.progress { - -moz-appearance: none; - -webkit-appearance: none; - border: none; - border-radius: 290486px; - display: block; - height: 1rem; - overflow: hidden; - padding: 0; - width: 100%; } - .progress::-webkit-progress-bar { - background-color: #dbdbdb; } - .progress::-webkit-progress-value { - background-color: #222222; } - .progress::-moz-progress-bar { - background-color: #222222; } - .progress::-ms-fill { - background-color: #222222; - border: none; } - .progress.is-white::-webkit-progress-value { - background-color: white; } - .progress.is-white::-moz-progress-bar { - background-color: white; } - .progress.is-white::-ms-fill { - background-color: white; } - .progress.is-white:indeterminate { - background-image: linear-gradient(to right, white 30%, #dbdbdb 30%); } - .progress.is-black::-webkit-progress-value { - background-color: #0a0a0a; } - .progress.is-black::-moz-progress-bar { - background-color: #0a0a0a; } - .progress.is-black::-ms-fill { - background-color: #0a0a0a; } - .progress.is-black:indeterminate { - background-image: linear-gradient(to right, #0a0a0a 30%, #dbdbdb 30%); } - .progress.is-light::-webkit-progress-value { - background-color: whitesmoke; } - .progress.is-light::-moz-progress-bar { - background-color: whitesmoke; } - .progress.is-light::-ms-fill { - background-color: whitesmoke; } - .progress.is-light:indeterminate { - background-image: linear-gradient(to right, whitesmoke 30%, #dbdbdb 30%); } - .progress.is-dark::-webkit-progress-value, .content kbd.progress::-webkit-progress-value { - background-color: #363636; } - .progress.is-dark::-moz-progress-bar, .content kbd.progress::-moz-progress-bar { - background-color: #363636; } - .progress.is-dark::-ms-fill, .content kbd.progress::-ms-fill { - background-color: #363636; } - .progress.is-dark:indeterminate, .content kbd.progress:indeterminate { - background-image: linear-gradient(to right, #363636 30%, #dbdbdb 30%); } - .progress.is-primary::-webkit-progress-value, .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { - background-color: #4eb5de; } - .progress.is-primary::-moz-progress-bar, .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { - background-color: #4eb5de; } - .progress.is-primary::-ms-fill, .docstring > section > a.progress.docs-sourcelink::-ms-fill { - background-color: #4eb5de; } - .progress.is-primary:indeterminate, .docstring > section > a.progress.docs-sourcelink:indeterminate { - background-image: linear-gradient(to right, #4eb5de 30%, #dbdbdb 30%); } - .progress.is-link::-webkit-progress-value { - background-color: #2e63b8; } - .progress.is-link::-moz-progress-bar { - background-color: #2e63b8; } - .progress.is-link::-ms-fill { - background-color: #2e63b8; } - .progress.is-link:indeterminate { - background-image: linear-gradient(to right, #2e63b8 30%, #dbdbdb 30%); } - .progress.is-info::-webkit-progress-value { - background-color: #209cee; } - .progress.is-info::-moz-progress-bar { - background-color: #209cee; } - .progress.is-info::-ms-fill { - background-color: #209cee; } - .progress.is-info:indeterminate { - background-image: linear-gradient(to right, #209cee 30%, #dbdbdb 30%); } - .progress.is-success::-webkit-progress-value { - background-color: #22c35b; } - .progress.is-success::-moz-progress-bar { - background-color: #22c35b; } - .progress.is-success::-ms-fill { - background-color: #22c35b; } - .progress.is-success:indeterminate { - background-image: linear-gradient(to right, #22c35b 30%, #dbdbdb 30%); } - .progress.is-warning::-webkit-progress-value { - background-color: #ffdd57; } - .progress.is-warning::-moz-progress-bar { - background-color: #ffdd57; } - .progress.is-warning::-ms-fill { - background-color: #ffdd57; } - .progress.is-warning:indeterminate { - background-image: linear-gradient(to right, #ffdd57 30%, #dbdbdb 30%); } - .progress.is-danger::-webkit-progress-value { - background-color: #da0b00; } - .progress.is-danger::-moz-progress-bar { - background-color: #da0b00; } - .progress.is-danger::-ms-fill { - background-color: #da0b00; } - .progress.is-danger:indeterminate { - background-image: linear-gradient(to right, #da0b00 30%, #dbdbdb 30%); } - .progress:indeterminate { - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-name: moveIndeterminate; - animation-timing-function: linear; - background-color: #dbdbdb; - background-image: linear-gradient(to right, #222222 30%, #dbdbdb 30%); - background-position: top left; - background-repeat: no-repeat; - background-size: 150% 150%; } - .progress:indeterminate::-webkit-progress-bar { - background-color: transparent; } - .progress:indeterminate::-moz-progress-bar { - background-color: transparent; } - .progress.is-small, #documenter .docs-sidebar form.docs-search > input.progress { - height: 0.75rem; } - .progress.is-medium { - height: 1.25rem; } - .progress.is-large { - height: 1.5rem; } - -@keyframes moveIndeterminate { - from { - background-position: 200% 0; } - to { - background-position: -200% 0; } } - -.table { - background-color: white; - color: #363636; } - .table td, - .table th { - border: 1px solid #dbdbdb; - border-width: 0 0 1px; - padding: 0.5em 0.75em; - vertical-align: top; } - .table td.is-white, - .table th.is-white { - background-color: white; - border-color: white; - color: #0a0a0a; } - .table td.is-black, - .table th.is-black { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - .table td.is-light, - .table th.is-light { - background-color: whitesmoke; - border-color: whitesmoke; - color: #363636; } - .table td.is-dark, - .table th.is-dark { - background-color: #363636; - border-color: #363636; - color: whitesmoke; } - .table td.is-primary, - .table th.is-primary { - background-color: #4eb5de; - border-color: #4eb5de; - color: #fff; } - .table td.is-link, - .table th.is-link { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; } - .table td.is-info, - .table th.is-info { - background-color: #209cee; - border-color: #209cee; - color: #fff; } - .table td.is-success, - .table th.is-success { - background-color: #22c35b; - border-color: #22c35b; - color: #fff; } - .table td.is-warning, - .table th.is-warning { - background-color: #ffdd57; - border-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .table td.is-danger, - .table th.is-danger { - background-color: #da0b00; - border-color: #da0b00; - color: #fff; } - .table td.is-narrow, - .table th.is-narrow { - white-space: nowrap; - width: 1%; } - .table td.is-selected, - .table th.is-selected { - background-color: #4eb5de; - color: #fff; } - .table td.is-selected a, - .table td.is-selected strong, - .table th.is-selected a, - .table th.is-selected strong { - color: currentColor; } - .table th { - color: #222222; } - .table th:not([align]) { - text-align: left; } - .table tr.is-selected { - background-color: #4eb5de; - color: #fff; } - .table tr.is-selected a, - .table tr.is-selected strong { - color: currentColor; } - .table tr.is-selected td, - .table tr.is-selected th { - border-color: #fff; - color: currentColor; } - .table thead { - background-color: transparent; } - .table thead td, - .table thead th { - border-width: 0 0 2px; - color: #222222; } - .table tfoot { - background-color: transparent; } - .table tfoot td, - .table tfoot th { - border-width: 2px 0 0; - color: #222222; } - .table tbody { - background-color: transparent; } - .table tbody tr:last-child td, - .table tbody tr:last-child th { - border-bottom-width: 0; } - .table.is-bordered td, - .table.is-bordered th { - border-width: 1px; } - .table.is-bordered tr:last-child td, - .table.is-bordered tr:last-child th { - border-bottom-width: 1px; } - .table.is-fullwidth { - width: 100%; } - .table.is-hoverable tbody tr:not(.is-selected):hover { - background-color: #fafafa; } - .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { - background-color: #fafafa; } - .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { - background-color: whitesmoke; } - .table.is-narrow td, - .table.is-narrow th { - padding: 0.25em 0.5em; } - .table.is-striped tbody tr:not(.is-selected):nth-child(even) { - background-color: #fafafa; } - -.table-container { - -webkit-overflow-scrolling: touch; - overflow: auto; - overflow-y: hidden; - max-width: 100%; } - -.tags { - align-items: center; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .tags .tag, .tags .docstring > section > a.docs-sourcelink, .tags .content kbd, .content .tags kbd { - margin-bottom: 0.5rem; } - .tags .tag:not(:last-child), .tags .docstring > section > a.docs-sourcelink:not(:last-child), .tags .content kbd:not(:last-child), .content .tags kbd:not(:last-child) { - margin-right: 0.5rem; } - .tags:last-child { - margin-bottom: -0.5rem; } - .tags:not(:last-child) { - margin-bottom: 1rem; } - .tags.are-medium .tag:not(.is-normal):not(.is-large), .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large), .tags.are-medium .content kbd:not(.is-normal):not(.is-large), .content .tags.are-medium kbd:not(.is-normal):not(.is-large) { - font-size: 1rem; } - .tags.are-large .tag:not(.is-normal):not(.is-medium), .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium), .tags.are-large .content kbd:not(.is-normal):not(.is-medium), .content .tags.are-large kbd:not(.is-normal):not(.is-medium) { - font-size: 1.25rem; } - .tags.is-centered { - justify-content: center; } - .tags.is-centered .tag, .tags.is-centered .docstring > section > a.docs-sourcelink, .tags.is-centered .content kbd, .content .tags.is-centered kbd { - margin-right: 0.25rem; - margin-left: 0.25rem; } - .tags.is-right { - justify-content: flex-end; } - .tags.is-right .tag:not(:first-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child), .tags.is-right .content kbd:not(:first-child), .content .tags.is-right kbd:not(:first-child) { - margin-left: 0.5rem; } - .tags.is-right .tag:not(:last-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child), .tags.is-right .content kbd:not(:last-child), .content .tags.is-right kbd:not(:last-child) { - margin-right: 0; } - .tags.has-addons .tag, .tags.has-addons .docstring > section > a.docs-sourcelink, .tags.has-addons .content kbd, .content .tags.has-addons kbd { - margin-right: 0; } - .tags.has-addons .tag:not(:first-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child), .tags.has-addons .content kbd:not(:first-child), .content .tags.has-addons kbd:not(:first-child) { - margin-left: 0; - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .tags.has-addons .tag:not(:last-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child), .tags.has-addons .content kbd:not(:last-child), .content .tags.has-addons kbd:not(:last-child) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - -.tag:not(body), .docstring > section > a.docs-sourcelink:not(body), .content kbd:not(body) { - align-items: center; - background-color: whitesmoke; - border-radius: 4px; - color: #222222; - display: inline-flex; - font-size: 0.75rem; - height: 2em; - justify-content: center; - line-height: 1.5; - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - .tag:not(body) .delete, .docstring > section > a.docs-sourcelink:not(body) .delete, .content kbd:not(body) .delete { - margin-left: 0.25rem; - margin-right: -0.375rem; } - .tag:not(body).is-white, .docstring > section > a.docs-sourcelink:not(body).is-white, .content kbd:not(body).is-white { - background-color: white; - color: #0a0a0a; } - .tag:not(body).is-black, .docstring > section > a.docs-sourcelink:not(body).is-black, .content kbd:not(body).is-black { - background-color: #0a0a0a; - color: white; } - .tag:not(body).is-light, .docstring > section > a.docs-sourcelink:not(body).is-light, .content kbd:not(body).is-light { - background-color: whitesmoke; - color: #363636; } - .tag:not(body).is-dark, .docstring > section > a.docs-sourcelink:not(body).is-dark, .content kbd:not(body) { - background-color: #363636; - color: whitesmoke; } - .tag:not(body).is-primary, .docstring > section > a.docs-sourcelink:not(body), .content kbd:not(body).is-primary { - background-color: #4eb5de; - color: #fff; } - .tag:not(body).is-link, .docstring > section > a.docs-sourcelink:not(body).is-link, .content kbd:not(body).is-link { - background-color: #2e63b8; - color: #fff; } - .tag:not(body).is-info, .docstring > section > a.docs-sourcelink:not(body).is-info, .content kbd:not(body).is-info { - background-color: #209cee; - color: #fff; } - .tag:not(body).is-success, .docstring > section > a.docs-sourcelink:not(body).is-success, .content kbd:not(body).is-success { - background-color: #22c35b; - color: #fff; } - .tag:not(body).is-warning, .docstring > section > a.docs-sourcelink:not(body).is-warning, .content kbd:not(body).is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .tag:not(body).is-danger, .docstring > section > a.docs-sourcelink:not(body).is-danger, .content kbd:not(body).is-danger { - background-color: #da0b00; - color: #fff; } - .tag:not(body).is-normal, .docstring > section > a.docs-sourcelink:not(body).is-normal, .content kbd:not(body).is-normal { - font-size: 0.75rem; } - .tag:not(body).is-medium, .docstring > section > a.docs-sourcelink:not(body).is-medium, .content kbd:not(body).is-medium { - font-size: 1rem; } - .tag:not(body).is-large, .docstring > section > a.docs-sourcelink:not(body).is-large, .content kbd:not(body).is-large { - font-size: 1.25rem; } - .tag:not(body) .icon:first-child:not(:last-child), .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child), .content kbd:not(body) .icon:first-child:not(:last-child) { - margin-left: -0.375em; - margin-right: 0.1875em; } - .tag:not(body) .icon:last-child:not(:first-child), .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child), .content kbd:not(body) .icon:last-child:not(:first-child) { - margin-left: 0.1875em; - margin-right: -0.375em; } - .tag:not(body) .icon:first-child:last-child, .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child, .content kbd:not(body) .icon:first-child:last-child { - margin-left: -0.375em; - margin-right: -0.375em; } - .tag:not(body).is-delete, .docstring > section > a.docs-sourcelink:not(body).is-delete, .content kbd:not(body).is-delete { - margin-left: 1px; - padding: 0; - position: relative; - width: 2em; } - .tag:not(body).is-delete::before, .docstring > section > a.docs-sourcelink:not(body).is-delete::before, .content kbd:not(body).is-delete::before, .tag:not(body).is-delete::after, .docstring > section > a.docs-sourcelink:not(body).is-delete::after, .content kbd:not(body).is-delete::after { - background-color: currentColor; - content: ""; - display: block; - left: 50%; - position: absolute; - top: 50%; - transform: translateX(-50%) translateY(-50%) rotate(45deg); - transform-origin: center center; } - .tag:not(body).is-delete::before, .docstring > section > a.docs-sourcelink:not(body).is-delete::before, .content kbd:not(body).is-delete::before { - height: 1px; - width: 50%; } - .tag:not(body).is-delete::after, .docstring > section > a.docs-sourcelink:not(body).is-delete::after, .content kbd:not(body).is-delete::after { - height: 50%; - width: 1px; } - .tag:not(body).is-delete:hover, .docstring > section > a.docs-sourcelink:not(body).is-delete:hover, .content kbd:not(body).is-delete:hover, .tag:not(body).is-delete:focus, .docstring > section > a.docs-sourcelink:not(body).is-delete:focus, .content kbd:not(body).is-delete:focus { - background-color: #e8e8e8; } - .tag:not(body).is-delete:active, .docstring > section > a.docs-sourcelink:not(body).is-delete:active, .content kbd:not(body).is-delete:active { - background-color: #dbdbdb; } - .tag:not(body).is-rounded, .docstring > section > a.docs-sourcelink:not(body).is-rounded, .content kbd:not(body).is-rounded, #documenter .docs-sidebar form.docs-search > input.tag:not(body) { - border-radius: 290486px; } - -a.tag:hover, .docstring > section > a.docs-sourcelink:hover { - text-decoration: underline; } - -.title, -.subtitle { - word-break: break-word; } - .title em, - .title span, - .subtitle em, - .subtitle span { - font-weight: inherit; } - .title sub, - .subtitle sub { - font-size: 0.75em; } - .title sup, - .subtitle sup { - font-size: 0.75em; } - .title .tag, .title .docstring > section > a.docs-sourcelink, .title .content kbd, .content .title kbd, - .subtitle .tag, - .subtitle .docstring > section > a.docs-sourcelink, - .subtitle .content kbd, - .content .subtitle kbd { - vertical-align: middle; } - -.title { - color: #363636; - font-size: 2rem; - font-weight: 600; - line-height: 1.125; } - .title strong { - color: inherit; - font-weight: inherit; } - .title + .highlight { - margin-top: -0.75rem; } - .title:not(.is-spaced) + .subtitle { - margin-top: -1.25rem; } - .title.is-1 { - font-size: 3rem; } - .title.is-2 { - font-size: 2.5rem; } - .title.is-3 { - font-size: 2rem; } - .title.is-4 { - font-size: 1.5rem; } - .title.is-5 { - font-size: 1.25rem; } - .title.is-6 { - font-size: 1rem; } - .title.is-7 { - font-size: 0.75rem; } - -.subtitle { - color: #4a4a4a; - font-size: 1.25rem; - font-weight: 400; - line-height: 1.25; } - .subtitle strong { - color: #363636; - font-weight: 600; } - .subtitle:not(.is-spaced) + .title { - margin-top: -1.25rem; } - .subtitle.is-1 { - font-size: 3rem; } - .subtitle.is-2 { - font-size: 2.5rem; } - .subtitle.is-3 { - font-size: 2rem; } - .subtitle.is-4 { - font-size: 1.5rem; } - .subtitle.is-5 { - font-size: 1.25rem; } - .subtitle.is-6 { - font-size: 1rem; } - .subtitle.is-7 { - font-size: 0.75rem; } - -.heading { - display: block; - font-size: 11px; - letter-spacing: 1px; - margin-bottom: 5px; - text-transform: uppercase; } - -.highlight { - font-weight: 400; - max-width: 100%; - overflow: hidden; - padding: 0; } - .highlight pre { - overflow: auto; - max-width: 100%; } - -.number { - align-items: center; - background-color: whitesmoke; - border-radius: 290486px; - display: inline-flex; - font-size: 1.25rem; - height: 2em; - justify-content: center; - margin-right: 1.5rem; - min-width: 2.5em; - padding: 0.25rem 0.5rem; - text-align: center; - vertical-align: top; } - -.input, #documenter .docs-sidebar form.docs-search > input, .textarea, .select select { - background-color: white; - border-color: #dbdbdb; - border-radius: 4px; - color: #363636; } - .input::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, .textarea:-moz-placeholder, .select select:-moz-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder { - color: rgba(54, 54, 54, 0.3); } - .input:hover, #documenter .docs-sidebar form.docs-search > input:hover, .textarea:hover, .select select:hover, .is-hovered.input, #documenter .docs-sidebar form.docs-search > input.is-hovered, .is-hovered.textarea, .select select.is-hovered { - border-color: #b5b5b5; } - .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .textarea:focus, .select select:focus, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.textarea, .select select.is-focused, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .textarea:active, .select select:active, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.textarea, .select select.is-active { - border-color: #2e63b8; - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .textarea[disabled], .select select[disabled], - fieldset[disabled] .input, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, - fieldset[disabled] .textarea, - fieldset[disabled] .select select, - .select fieldset[disabled] select { - background-color: whitesmoke; - border-color: whitesmoke; - box-shadow: none; - color: #7a7a7a; } - .input[disabled]::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .select select[disabled]::-moz-placeholder, - fieldset[disabled] .input::-moz-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-moz-placeholder, - fieldset[disabled] .textarea::-moz-placeholder, - fieldset[disabled] .select select::-moz-placeholder, - .select fieldset[disabled] select::-moz-placeholder { - color: rgba(122, 122, 122, 0.3); } - .input[disabled]::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .select select[disabled]::-webkit-input-placeholder, - fieldset[disabled] .input::-webkit-input-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-webkit-input-placeholder, - fieldset[disabled] .textarea::-webkit-input-placeholder, - fieldset[disabled] .select select::-webkit-input-placeholder, - .select fieldset[disabled] select::-webkit-input-placeholder { - color: rgba(122, 122, 122, 0.3); } - .input[disabled]:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .select select[disabled]:-moz-placeholder, - fieldset[disabled] .input:-moz-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-moz-placeholder, - fieldset[disabled] .textarea:-moz-placeholder, - fieldset[disabled] .select select:-moz-placeholder, - .select fieldset[disabled] select:-moz-placeholder { - color: rgba(122, 122, 122, 0.3); } - .input[disabled]:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .select select[disabled]:-ms-input-placeholder, - fieldset[disabled] .input:-ms-input-placeholder, - fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, - #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-ms-input-placeholder, - fieldset[disabled] .textarea:-ms-input-placeholder, - fieldset[disabled] .select select:-ms-input-placeholder, - .select fieldset[disabled] select:-ms-input-placeholder { - color: rgba(122, 122, 122, 0.3); } - -.input, #documenter .docs-sidebar form.docs-search > input, .textarea { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - max-width: 100%; - width: 100%; } - .input[readonly], #documenter .docs-sidebar form.docs-search > input[readonly], .textarea[readonly] { - box-shadow: none; } - .is-white.input, #documenter .docs-sidebar form.docs-search > input.is-white, .is-white.textarea { - border-color: white; } - .is-white.input:focus, #documenter .docs-sidebar form.docs-search > input.is-white:focus, .is-white.textarea:focus, .is-white.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-white.is-focused, .is-white.is-focused.textarea, .is-white.input:active, #documenter .docs-sidebar form.docs-search > input.is-white:active, .is-white.textarea:active, .is-white.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-white.is-active, .is-white.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - .is-black.input, #documenter .docs-sidebar form.docs-search > input.is-black, .is-black.textarea { - border-color: #0a0a0a; } - .is-black.input:focus, #documenter .docs-sidebar form.docs-search > input.is-black:focus, .is-black.textarea:focus, .is-black.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-black.is-focused, .is-black.is-focused.textarea, .is-black.input:active, #documenter .docs-sidebar form.docs-search > input.is-black:active, .is-black.textarea:active, .is-black.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-black.is-active, .is-black.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - .is-light.input, #documenter .docs-sidebar form.docs-search > input.is-light, .is-light.textarea { - border-color: whitesmoke; } - .is-light.input:focus, #documenter .docs-sidebar form.docs-search > input.is-light:focus, .is-light.textarea:focus, .is-light.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-light.is-focused, .is-light.is-focused.textarea, .is-light.input:active, #documenter .docs-sidebar form.docs-search > input.is-light:active, .is-light.textarea:active, .is-light.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-light.is-active, .is-light.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } - .is-dark.input, .content kbd.input, #documenter .docs-sidebar form.docs-search > input.is-dark, .is-dark.textarea, .content kbd.textarea { - border-color: #363636; } - .is-dark.input:focus, .content kbd.input:focus, #documenter .docs-sidebar form.docs-search > input.is-dark:focus, .is-dark.textarea:focus, .content kbd.textarea:focus, .is-dark.is-focused.input, .content kbd.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-dark.is-focused, .is-dark.is-focused.textarea, .content kbd.is-focused.textarea, .is-dark.input:active, .content kbd.input:active, #documenter .docs-sidebar form.docs-search > input.is-dark:active, .is-dark.textarea:active, .content kbd.textarea:active, .is-dark.is-active.input, .content kbd.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-dark.is-active, .is-dark.is-active.textarea, .content kbd.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } - .is-primary.input, .docstring > section > a.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary, .is-primary.textarea, .docstring > section > a.textarea.docs-sourcelink { - border-color: #4eb5de; } - .is-primary.input:focus, .docstring > section > a.input.docs-sourcelink:focus, #documenter .docs-sidebar form.docs-search > input.is-primary:focus, .is-primary.textarea:focus, .docstring > section > a.textarea.docs-sourcelink:focus, .is-primary.is-focused.input, .docstring > section > a.is-focused.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary.is-focused, .is-primary.is-focused.textarea, .docstring > section > a.is-focused.textarea.docs-sourcelink, .is-primary.input:active, .docstring > section > a.input.docs-sourcelink:active, #documenter .docs-sidebar form.docs-search > input.is-primary:active, .is-primary.textarea:active, .docstring > section > a.textarea.docs-sourcelink:active, .is-primary.is-active.input, .docstring > section > a.is-active.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary.is-active, .is-primary.is-active.textarea, .docstring > section > a.is-active.textarea.docs-sourcelink { - box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } - .is-link.input, #documenter .docs-sidebar form.docs-search > input.is-link, .is-link.textarea { - border-color: #2e63b8; } - .is-link.input:focus, #documenter .docs-sidebar form.docs-search > input.is-link:focus, .is-link.textarea:focus, .is-link.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-link.is-focused, .is-link.is-focused.textarea, .is-link.input:active, #documenter .docs-sidebar form.docs-search > input.is-link:active, .is-link.textarea:active, .is-link.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-link.is-active, .is-link.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .is-info.input, #documenter .docs-sidebar form.docs-search > input.is-info, .is-info.textarea { - border-color: #209cee; } - .is-info.input:focus, #documenter .docs-sidebar form.docs-search > input.is-info:focus, .is-info.textarea:focus, .is-info.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-info.is-focused, .is-info.is-focused.textarea, .is-info.input:active, #documenter .docs-sidebar form.docs-search > input.is-info:active, .is-info.textarea:active, .is-info.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-info.is-active, .is-info.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } - .is-success.input, #documenter .docs-sidebar form.docs-search > input.is-success, .is-success.textarea { - border-color: #22c35b; } - .is-success.input:focus, #documenter .docs-sidebar form.docs-search > input.is-success:focus, .is-success.textarea:focus, .is-success.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-success.is-focused, .is-success.is-focused.textarea, .is-success.input:active, #documenter .docs-sidebar form.docs-search > input.is-success:active, .is-success.textarea:active, .is-success.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-success.is-active, .is-success.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } - .is-warning.input, #documenter .docs-sidebar form.docs-search > input.is-warning, .is-warning.textarea { - border-color: #ffdd57; } - .is-warning.input:focus, #documenter .docs-sidebar form.docs-search > input.is-warning:focus, .is-warning.textarea:focus, .is-warning.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-warning.is-focused, .is-warning.is-focused.textarea, .is-warning.input:active, #documenter .docs-sidebar form.docs-search > input.is-warning:active, .is-warning.textarea:active, .is-warning.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-warning.is-active, .is-warning.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } - .is-danger.input, #documenter .docs-sidebar form.docs-search > input.is-danger, .is-danger.textarea { - border-color: #da0b00; } - .is-danger.input:focus, #documenter .docs-sidebar form.docs-search > input.is-danger:focus, .is-danger.textarea:focus, .is-danger.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-danger.is-focused, .is-danger.is-focused.textarea, .is-danger.input:active, #documenter .docs-sidebar form.docs-search > input.is-danger:active, .is-danger.textarea:active, .is-danger.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-danger.is-active, .is-danger.is-active.textarea { - box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } - .is-small.input, #documenter .docs-sidebar form.docs-search > input, .is-small.textarea { - border-radius: 2px; - font-size: 0.75rem; } - .is-medium.input, #documenter .docs-sidebar form.docs-search > input.is-medium, .is-medium.textarea { - font-size: 1.25rem; } - .is-large.input, #documenter .docs-sidebar form.docs-search > input.is-large, .is-large.textarea { - font-size: 1.5rem; } - .is-fullwidth.input, #documenter .docs-sidebar form.docs-search > input.is-fullwidth, .is-fullwidth.textarea { - display: block; - width: 100%; } - .is-inline.input, #documenter .docs-sidebar form.docs-search > input.is-inline, .is-inline.textarea { - display: inline; - width: auto; } - -.input.is-rounded, #documenter .docs-sidebar form.docs-search > input { - border-radius: 290486px; - padding-left: 1em; - padding-right: 1em; } - -.input.is-static, #documenter .docs-sidebar form.docs-search > input.is-static { - background-color: transparent; - border-color: transparent; - box-shadow: none; - padding-left: 0; - padding-right: 0; } - -.textarea { - display: block; - max-width: 100%; - min-width: 100%; - padding: 0.625em; - resize: vertical; } - .textarea:not([rows]) { - max-height: 600px; - min-height: 120px; } - .textarea[rows] { - height: initial; } - .textarea.has-fixed-size { - resize: none; } - -.checkbox, .radio { - cursor: pointer; - display: inline-block; - line-height: 1.25; - position: relative; } - .checkbox input, .radio input { - cursor: pointer; } - .checkbox:hover, .radio:hover { - color: #363636; } - .checkbox[disabled], .radio[disabled], - fieldset[disabled] .checkbox, - fieldset[disabled] .radio { - color: #7a7a7a; - cursor: not-allowed; } - -.radio + .radio { - margin-left: 0.5em; } - -.select { - display: inline-block; - max-width: 100%; - position: relative; - vertical-align: top; } - .select:not(.is-multiple) { - height: 2.25em; } - .select:not(.is-multiple):not(.is-loading)::after { - border-color: #2e63b8; - right: 1.125em; - z-index: 4; } - .select.is-rounded select, #documenter .docs-sidebar form.docs-search > input.select select { - border-radius: 290486px; - padding-left: 1em; } - .select select { - cursor: pointer; - display: block; - font-size: 1em; - max-width: 100%; - outline: none; } - .select select::-ms-expand { - display: none; } - .select select[disabled]:hover, - fieldset[disabled] .select select:hover { - border-color: whitesmoke; } - .select select:not([multiple]) { - padding-right: 2.5em; } - .select select[multiple] { - height: auto; - padding: 0; } - .select select[multiple] option { - padding: 0.5em 1em; } - .select:not(.is-multiple):not(.is-loading):hover::after { - border-color: #363636; } - .select.is-white:not(:hover)::after { - border-color: white; } - .select.is-white select { - border-color: white; } - .select.is-white select:hover, .select.is-white select.is-hovered { - border-color: #f2f2f2; } - .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } - .select.is-black:not(:hover)::after { - border-color: #0a0a0a; } - .select.is-black select { - border-color: #0a0a0a; } - .select.is-black select:hover, .select.is-black select.is-hovered { - border-color: black; } - .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { - box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } - .select.is-light:not(:hover)::after { - border-color: whitesmoke; } - .select.is-light select { - border-color: whitesmoke; } - .select.is-light select:hover, .select.is-light select.is-hovered { - border-color: #e8e8e8; } - .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { - box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } - .select.is-dark:not(:hover)::after, .content kbd.select:not(:hover)::after { - border-color: #363636; } - .select.is-dark select, .content kbd.select select { - border-color: #363636; } - .select.is-dark select:hover, .content kbd.select select:hover, .select.is-dark select.is-hovered, .content kbd.select select.is-hovered { - border-color: #292929; } - .select.is-dark select:focus, .content kbd.select select:focus, .select.is-dark select.is-focused, .content kbd.select select.is-focused, .select.is-dark select:active, .content kbd.select select:active, .select.is-dark select.is-active, .content kbd.select select.is-active { - box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } - .select.is-primary:not(:hover)::after, .docstring > section > a.select.docs-sourcelink:not(:hover)::after { - border-color: #4eb5de; } - .select.is-primary select, .docstring > section > a.select.docs-sourcelink select { - border-color: #4eb5de; } - .select.is-primary select:hover, .docstring > section > a.select.docs-sourcelink select:hover, .select.is-primary select.is-hovered, .docstring > section > a.select.docs-sourcelink select.is-hovered { - border-color: #39acda; } - .select.is-primary select:focus, .docstring > section > a.select.docs-sourcelink select:focus, .select.is-primary select.is-focused, .docstring > section > a.select.docs-sourcelink select.is-focused, .select.is-primary select:active, .docstring > section > a.select.docs-sourcelink select:active, .select.is-primary select.is-active, .docstring > section > a.select.docs-sourcelink select.is-active { - box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } - .select.is-link:not(:hover)::after { - border-color: #2e63b8; } - .select.is-link select { - border-color: #2e63b8; } - .select.is-link select:hover, .select.is-link select.is-hovered { - border-color: #2958a4; } - .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { - box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } - .select.is-info:not(:hover)::after { - border-color: #209cee; } - .select.is-info select { - border-color: #209cee; } - .select.is-info select:hover, .select.is-info select.is-hovered { - border-color: #118fe4; } - .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { - box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } - .select.is-success:not(:hover)::after { - border-color: #22c35b; } - .select.is-success select { - border-color: #22c35b; } - .select.is-success select:hover, .select.is-success select.is-hovered { - border-color: #1ead51; } - .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { - box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } - .select.is-warning:not(:hover)::after { - border-color: #ffdd57; } - .select.is-warning select { - border-color: #ffdd57; } - .select.is-warning select:hover, .select.is-warning select.is-hovered { - border-color: #ffd83d; } - .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { - box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } - .select.is-danger:not(:hover)::after { - border-color: #da0b00; } - .select.is-danger select { - border-color: #da0b00; } - .select.is-danger select:hover, .select.is-danger select.is-hovered { - border-color: #c10a00; } - .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { - box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } - .select.is-small, #documenter .docs-sidebar form.docs-search > input.select { - border-radius: 2px; - font-size: 0.75rem; } - .select.is-medium { - font-size: 1.25rem; } - .select.is-large { - font-size: 1.5rem; } - .select.is-disabled::after { - border-color: #7a7a7a; } - .select.is-fullwidth { - width: 100%; } - .select.is-fullwidth select { - width: 100%; } - .select.is-loading::after { - margin-top: 0; - position: absolute; - right: 0.625em; - top: 0.625em; - transform: none; } - .select.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.select.is-loading:after { - font-size: 0.75rem; } - .select.is-loading.is-medium:after { - font-size: 1.25rem; } - .select.is-loading.is-large:after { - font-size: 1.5rem; } - -.file { - align-items: stretch; - display: flex; - justify-content: flex-start; - position: relative; } - .file.is-white .file-cta { - background-color: white; - border-color: transparent; - color: #0a0a0a; } - .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { - background-color: #f9f9f9; - border-color: transparent; - color: #0a0a0a; } - .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); - color: #0a0a0a; } - .file.is-white:active .file-cta, .file.is-white.is-active .file-cta { - background-color: #f2f2f2; - border-color: transparent; - color: #0a0a0a; } - .file.is-black .file-cta { - background-color: #0a0a0a; - border-color: transparent; - color: white; } - .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { - background-color: #040404; - border-color: transparent; - color: white; } - .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); - color: white; } - .file.is-black:active .file-cta, .file.is-black.is-active .file-cta { - background-color: black; - border-color: transparent; - color: white; } - .file.is-light .file-cta { - background-color: whitesmoke; - border-color: transparent; - color: #363636; } - .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { - background-color: #eeeeee; - border-color: transparent; - color: #363636; } - .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); - color: #363636; } - .file.is-light:active .file-cta, .file.is-light.is-active .file-cta { - background-color: #e8e8e8; - border-color: transparent; - color: #363636; } - .file.is-dark .file-cta, .content kbd.file .file-cta { - background-color: #363636; - border-color: transparent; - color: whitesmoke; } - .file.is-dark:hover .file-cta, .content kbd.file:hover .file-cta, .file.is-dark.is-hovered .file-cta, .content kbd.file.is-hovered .file-cta { - background-color: #2f2f2f; - border-color: transparent; - color: whitesmoke; } - .file.is-dark:focus .file-cta, .content kbd.file:focus .file-cta, .file.is-dark.is-focused .file-cta, .content kbd.file.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); - color: whitesmoke; } - .file.is-dark:active .file-cta, .content kbd.file:active .file-cta, .file.is-dark.is-active .file-cta, .content kbd.file.is-active .file-cta { - background-color: #292929; - border-color: transparent; - color: whitesmoke; } - .file.is-primary .file-cta, .docstring > section > a.file.docs-sourcelink .file-cta { - background-color: #4eb5de; - border-color: transparent; - color: #fff; } - .file.is-primary:hover .file-cta, .docstring > section > a.file.docs-sourcelink:hover .file-cta, .file.is-primary.is-hovered .file-cta, .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { - background-color: #43b1dc; - border-color: transparent; - color: #fff; } - .file.is-primary:focus .file-cta, .docstring > section > a.file.docs-sourcelink:focus .file-cta, .file.is-primary.is-focused .file-cta, .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(78, 181, 222, 0.25); - color: #fff; } - .file.is-primary:active .file-cta, .docstring > section > a.file.docs-sourcelink:active .file-cta, .file.is-primary.is-active .file-cta, .docstring > section > a.file.is-active.docs-sourcelink .file-cta { - background-color: #39acda; - border-color: transparent; - color: #fff; } - .file.is-link .file-cta { - background-color: #2e63b8; - border-color: transparent; - color: #fff; } - .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { - background-color: #2b5eae; - border-color: transparent; - color: #fff; } - .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(46, 99, 184, 0.25); - color: #fff; } - .file.is-link:active .file-cta, .file.is-link.is-active .file-cta { - background-color: #2958a4; - border-color: transparent; - color: #fff; } - .file.is-info .file-cta { - background-color: #209cee; - border-color: transparent; - color: #fff; } - .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { - background-color: #1496ed; - border-color: transparent; - color: #fff; } - .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(32, 156, 238, 0.25); - color: #fff; } - .file.is-info:active .file-cta, .file.is-info.is-active .file-cta { - background-color: #118fe4; - border-color: transparent; - color: #fff; } - .file.is-success .file-cta { - background-color: #22c35b; - border-color: transparent; - color: #fff; } - .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { - background-color: #20b856; - border-color: transparent; - color: #fff; } - .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(34, 195, 91, 0.25); - color: #fff; } - .file.is-success:active .file-cta, .file.is-success.is-active .file-cta { - background-color: #1ead51; - border-color: transparent; - color: #fff; } - .file.is-warning .file-cta { - background-color: #ffdd57; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { - background-color: #ffdb4a; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25); - color: rgba(0, 0, 0, 0.7); } - .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { - background-color: #ffd83d; - border-color: transparent; - color: rgba(0, 0, 0, 0.7); } - .file.is-danger .file-cta { - background-color: #da0b00; - border-color: transparent; - color: #fff; } - .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { - background-color: #cd0a00; - border-color: transparent; - color: #fff; } - .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { - border-color: transparent; - box-shadow: 0 0 0.5em rgba(218, 11, 0, 0.25); - color: #fff; } - .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { - background-color: #c10a00; - border-color: transparent; - color: #fff; } - .file.is-small, #documenter .docs-sidebar form.docs-search > input.file { - font-size: 0.75rem; } - .file.is-medium { - font-size: 1.25rem; } - .file.is-medium .file-icon .fa { - font-size: 21px; } - .file.is-large { - font-size: 1.5rem; } - .file.is-large .file-icon .fa { - font-size: 28px; } - .file.has-name .file-cta { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - .file.has-name .file-name { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .file.has-name.is-empty .file-cta { - border-radius: 4px; } - .file.has-name.is-empty .file-name { - display: none; } - .file.is-boxed .file-label { - flex-direction: column; } - .file.is-boxed .file-cta { - flex-direction: column; - height: auto; - padding: 1em 3em; } - .file.is-boxed .file-name { - border-width: 0 1px 1px; } - .file.is-boxed .file-icon { - height: 1.5em; - width: 1.5em; } - .file.is-boxed .file-icon .fa { - font-size: 21px; } - .file.is-boxed.is-small .file-icon .fa, #documenter .docs-sidebar form.docs-search > input.file.is-boxed .file-icon .fa { - font-size: 14px; } - .file.is-boxed.is-medium .file-icon .fa { - font-size: 28px; } - .file.is-boxed.is-large .file-icon .fa { - font-size: 35px; } - .file.is-boxed.has-name .file-cta { - border-radius: 4px 4px 0 0; } - .file.is-boxed.has-name .file-name { - border-radius: 0 0 4px 4px; - border-width: 0 1px 1px; } - .file.is-centered { - justify-content: center; } - .file.is-fullwidth .file-label { - width: 100%; } - .file.is-fullwidth .file-name { - flex-grow: 1; - max-width: none; } - .file.is-right { - justify-content: flex-end; } - .file.is-right .file-cta { - border-radius: 0 4px 4px 0; } - .file.is-right .file-name { - border-radius: 4px 0 0 4px; - border-width: 1px 0 1px 1px; - order: -1; } - -.file-label { - align-items: stretch; - display: flex; - cursor: pointer; - justify-content: flex-start; - overflow: hidden; - position: relative; } - .file-label:hover .file-cta { - background-color: #eeeeee; - color: #363636; } - .file-label:hover .file-name { - border-color: #d5d5d5; } - .file-label:active .file-cta { - background-color: #e8e8e8; - color: #363636; } - .file-label:active .file-name { - border-color: #cfcfcf; } - -.file-input { - height: 100%; - left: 0; - opacity: 0; - outline: none; - position: absolute; - top: 0; - width: 100%; } - -.file-cta, -.file-name { - border-color: #dbdbdb; - border-radius: 4px; - font-size: 1em; - padding-left: 1em; - padding-right: 1em; - white-space: nowrap; } - -.file-cta { - background-color: whitesmoke; - color: #4a4a4a; } - -.file-name { - border-color: #dbdbdb; - border-style: solid; - border-width: 1px 1px 1px 0; - display: block; - max-width: 16em; - overflow: hidden; - text-align: left; - text-overflow: ellipsis; } - -.file-icon { - align-items: center; - display: flex; - height: 1em; - justify-content: center; - margin-right: 0.5em; - width: 1em; } - .file-icon .fa { - font-size: 14px; } - -.label { - color: #363636; - display: block; - font-size: 1rem; - font-weight: 700; } - .label:not(:last-child) { - margin-bottom: 0.5em; } - .label.is-small, #documenter .docs-sidebar form.docs-search > input.label { - font-size: 0.75rem; } - .label.is-medium { - font-size: 1.25rem; } - .label.is-large { - font-size: 1.5rem; } - -.help { - display: block; - font-size: 0.75rem; - margin-top: 0.25rem; } - .help.is-white { - color: white; } - .help.is-black { - color: #0a0a0a; } - .help.is-light { - color: whitesmoke; } - .help.is-dark, .content kbd.help { - color: #363636; } - .help.is-primary, .docstring > section > a.help.docs-sourcelink { - color: #4eb5de; } - .help.is-link { - color: #2e63b8; } - .help.is-info { - color: #209cee; } - .help.is-success { - color: #22c35b; } - .help.is-warning { - color: #ffdd57; } - .help.is-danger { - color: #da0b00; } - -.field:not(:last-child) { - margin-bottom: 0.75rem; } - -.field.has-addons { - display: flex; - justify-content: flex-start; } - .field.has-addons .control:not(:last-child) { - margin-right: -1px; } - .field.has-addons .control:not(:first-child):not(:last-child) .button, - .field.has-addons .control:not(:first-child):not(:last-child) .input, - .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, - .field.has-addons .control:not(:first-child):not(:last-child) .select select { - border-radius: 0; } - .field.has-addons .control:first-child:not(:only-child) .button, - .field.has-addons .control:first-child:not(:only-child) .input, - .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, - .field.has-addons .control:first-child:not(:only-child) .select select { - border-bottom-right-radius: 0; - border-top-right-radius: 0; } - .field.has-addons .control:last-child:not(:only-child) .button, - .field.has-addons .control:last-child:not(:only-child) .input, - .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, - #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, - .field.has-addons .control:last-child:not(:only-child) .select select { - border-bottom-left-radius: 0; - border-top-left-radius: 0; } - .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, - .field.has-addons .control .input:not([disabled]):hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, - .field.has-addons .control .input:not([disabled]).is-hovered, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-hovered, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-hovered, - .field.has-addons .control .select select:not([disabled]):hover, - .field.has-addons .control .select select:not([disabled]).is-hovered { - z-index: 2; } - .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, - .field.has-addons .control .input:not([disabled]):focus, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, - .field.has-addons .control .input:not([disabled]).is-focused, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused, - .field.has-addons .control .input:not([disabled]):active, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, - .field.has-addons .control .input:not([disabled]).is-active, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active, - .field.has-addons .control .select select:not([disabled]):focus, - .field.has-addons .control .select select:not([disabled]).is-focused, - .field.has-addons .control .select select:not([disabled]):active, - .field.has-addons .control .select select:not([disabled]).is-active { - z-index: 3; } - .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, - .field.has-addons .control .input:not([disabled]):focus:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, - .field.has-addons .control .input:not([disabled]).is-focused:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused:hover, - .field.has-addons .control .input:not([disabled]):active:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, - .field.has-addons .control .input:not([disabled]).is-active:hover, - .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active:hover, - #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active:hover, - .field.has-addons .control .select select:not([disabled]):focus:hover, - .field.has-addons .control .select select:not([disabled]).is-focused:hover, - .field.has-addons .control .select select:not([disabled]):active:hover, - .field.has-addons .control .select select:not([disabled]).is-active:hover { - z-index: 4; } - .field.has-addons .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .field.has-addons.has-addons-centered { - justify-content: center; } - .field.has-addons.has-addons-right { - justify-content: flex-end; } - .field.has-addons.has-addons-fullwidth .control { - flex-grow: 1; - flex-shrink: 0; } - -.field.is-grouped { - display: flex; - justify-content: flex-start; } - .field.is-grouped > .control { - flex-shrink: 0; } - .field.is-grouped > .control:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - .field.is-grouped > .control.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .field.is-grouped.is-grouped-centered { - justify-content: center; } - .field.is-grouped.is-grouped-right { - justify-content: flex-end; } - .field.is-grouped.is-grouped-multiline { - flex-wrap: wrap; } - .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { - margin-bottom: 0.75rem; } - .field.is-grouped.is-grouped-multiline:last-child { - margin-bottom: -0.75rem; } - .field.is-grouped.is-grouped-multiline:not(:last-child) { - margin-bottom: 0; } - -@media screen and (min-width: 769px), print { - .field.is-horizontal { - display: flex; } } - -.field-label .label { - font-size: inherit; } - -@media screen and (max-width: 768px) { - .field-label { - margin-bottom: 0.5rem; } } - -@media screen and (min-width: 769px), print { - .field-label { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - margin-right: 1.5rem; - text-align: right; } - .field-label.is-small, #documenter .docs-sidebar form.docs-search > input.field-label { - font-size: 0.75rem; - padding-top: 0.375em; } - .field-label.is-normal { - padding-top: 0.375em; } - .field-label.is-medium { - font-size: 1.25rem; - padding-top: 0.375em; } - .field-label.is-large { - font-size: 1.5rem; - padding-top: 0.375em; } } - -.field-body .field .field { - margin-bottom: 0; } - -@media screen and (min-width: 769px), print { - .field-body { - display: flex; - flex-basis: 0; - flex-grow: 5; - flex-shrink: 1; } - .field-body .field { - margin-bottom: 0; } - .field-body > .field { - flex-shrink: 1; } - .field-body > .field:not(.is-narrow) { - flex-grow: 1; } - .field-body > .field:not(:last-child) { - margin-right: 0.75rem; } } - -.control { - box-sizing: border-box; - clear: both; - font-size: 1rem; - position: relative; - text-align: left; } - .control.has-icons-left .input:focus ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, - .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, - .control.has-icons-right .select:focus ~ .icon { - color: #7a7a7a; } - .control.has-icons-left .input.is-small ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, - .control.has-icons-left .select.is-small ~ .icon, - .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.select ~ .icon, .control.has-icons-right .input.is-small ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, - .control.has-icons-right .select.is-small ~ .icon, - .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.select ~ .icon, - #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.select ~ .icon { - font-size: 0.75rem; } - .control.has-icons-left .input.is-medium ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, - .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, - .control.has-icons-right .select.is-medium ~ .icon { - font-size: 1.25rem; } - .control.has-icons-left .input.is-large ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, - .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, - .control.has-icons-right .select.is-large ~ .icon { - font-size: 1.5rem; } - .control.has-icons-left .icon, .control.has-icons-right .icon { - color: #dbdbdb; - height: 2.25em; - pointer-events: none; - position: absolute; - top: 0; - width: 2.25em; - z-index: 4; } - .control.has-icons-left .input, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, - .control.has-icons-left .select select { - padding-left: 2.25em; } - .control.has-icons-left .icon.is-left { - left: 0; } - .control.has-icons-right .input, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, - .control.has-icons-right .select select { - padding-right: 2.25em; } - .control.has-icons-right .icon.is-right { - right: 0; } - .control.is-loading::after { - position: absolute !important; - right: 0.625em; - top: 0.625em; - z-index: 4; } - .control.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.control.is-loading:after { - font-size: 0.75rem; } - .control.is-loading.is-medium:after { - font-size: 1.25rem; } - .control.is-loading.is-large:after { - font-size: 1.5rem; } - -.breadcrumb { - font-size: 1rem; - white-space: nowrap; } - .breadcrumb a { - align-items: center; - color: #2e63b8; - display: flex; - justify-content: center; - padding: 0 0.75em; } - .breadcrumb a:hover { - color: #363636; } - .breadcrumb li { - align-items: center; - display: flex; } - .breadcrumb li:first-child a { - padding-left: 0; } - .breadcrumb li.is-active a { - color: #222222; - cursor: default; - pointer-events: none; } - .breadcrumb li + li::before { - color: #b5b5b5; - content: "\0002f"; } - .breadcrumb ul, - .breadcrumb ol { - align-items: flex-start; - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .breadcrumb .icon:first-child { - margin-right: 0.5em; } - .breadcrumb .icon:last-child { - margin-left: 0.5em; } - .breadcrumb.is-centered ol, - .breadcrumb.is-centered ul { - justify-content: center; } - .breadcrumb.is-right ol, - .breadcrumb.is-right ul { - justify-content: flex-end; } - .breadcrumb.is-small, #documenter .docs-sidebar form.docs-search > input.breadcrumb { - font-size: 0.75rem; } - .breadcrumb.is-medium { - font-size: 1.25rem; } - .breadcrumb.is-large { - font-size: 1.5rem; } - .breadcrumb.has-arrow-separator li + li::before { - content: "\02192"; } - .breadcrumb.has-bullet-separator li + li::before { - content: "\02022"; } - .breadcrumb.has-dot-separator li + li::before { - content: "\000b7"; } - .breadcrumb.has-succeeds-separator li + li::before { - content: "\0227B"; } - -.card { - background-color: white; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - color: #222222; - max-width: 100%; - position: relative; } - -.card-header { - background-color: transparent; - align-items: stretch; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - display: flex; } - -.card-header-title { - align-items: center; - color: #222222; - display: flex; - flex-grow: 1; - font-weight: 700; - padding: 0.75rem; } - .card-header-title.is-centered { - justify-content: center; } - -.card-header-icon { - align-items: center; - cursor: pointer; - display: flex; - justify-content: center; - padding: 0.75rem; } - -.card-image { - display: block; - position: relative; } - -.card-content { - background-color: transparent; - padding: 1rem 1.25rem; } - -.card-footer { - background-color: transparent; - border-top: 1px solid #dbdbdb; - align-items: stretch; - display: flex; } - -.card-footer-item { - align-items: center; - display: flex; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - justify-content: center; - padding: 0.75rem; } - .card-footer-item:not(:last-child) { - border-right: 1px solid #dbdbdb; } - -.card .media:not(:last-child) { - margin-bottom: 1.5rem; } - -.dropdown { - display: inline-flex; - position: relative; - vertical-align: top; } - .dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu { - display: block; } - .dropdown.is-right .dropdown-menu { - left: auto; - right: 0; } - .dropdown.is-up .dropdown-menu { - bottom: 100%; - padding-bottom: 4px; - padding-top: initial; - top: auto; } - -.dropdown-menu { - display: none; - left: 0; - min-width: 12rem; - padding-top: 4px; - position: absolute; - top: 100%; - z-index: 20; } - -.dropdown-content { - background-color: white; - border-radius: 4px; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - -.dropdown-item { - color: #4a4a4a; - display: block; - font-size: 0.875rem; - line-height: 1.5; - padding: 0.375rem 1rem; - position: relative; } - -a.dropdown-item, -button.dropdown-item { - padding-right: 3rem; - text-align: left; - white-space: nowrap; - width: 100%; } - a.dropdown-item:hover, - button.dropdown-item:hover { - background-color: whitesmoke; - color: #0a0a0a; } - a.dropdown-item.is-active, - button.dropdown-item.is-active { - background-color: #2e63b8; - color: #fff; } - -.dropdown-divider { - background-color: #dbdbdb; - border: none; - display: block; - height: 1px; - margin: 0.5rem 0; } - -.level { - align-items: center; - justify-content: space-between; } - .level code { - border-radius: 4px; } - .level img { - display: inline-block; - vertical-align: top; } - .level.is-mobile { - display: flex; } - .level.is-mobile .level-left, - .level.is-mobile .level-right { - display: flex; } - .level.is-mobile .level-left + .level-right { - margin-top: 0; } - .level.is-mobile .level-item:not(:last-child) { - margin-bottom: 0; - margin-right: 0.75rem; } - .level.is-mobile .level-item:not(.is-narrow) { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - .level { - display: flex; } - .level > .level-item:not(.is-narrow) { - flex-grow: 1; } } - -.level-item { - align-items: center; - display: flex; - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; } - .level-item .title, - .level-item .subtitle { - margin-bottom: 0; } - @media screen and (max-width: 768px) { - .level-item:not(:last-child) { - margin-bottom: 0.75rem; } } - -.level-left, -.level-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - .level-left .level-item.is-flexible, - .level-right .level-item.is-flexible { - flex-grow: 1; } - @media screen and (min-width: 769px), print { - .level-left .level-item:not(:last-child), - .level-right .level-item:not(:last-child) { - margin-right: 0.75rem; } } - -.level-left { - align-items: center; - justify-content: flex-start; } - @media screen and (max-width: 768px) { - .level-left + .level-right { - margin-top: 1.5rem; } } - @media screen and (min-width: 769px), print { - .level-left { - display: flex; } } - -.level-right { - align-items: center; - justify-content: flex-end; } - @media screen and (min-width: 769px), print { - .level-right { - display: flex; } } - -.list { - background-color: white; - border-radius: 4px; - box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } - -.list-item { - display: block; - padding: 0.5em 1em; } - .list-item:not(a) { - color: #222222; } - .list-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; } - .list-item:last-child { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; } - .list-item:not(:last-child) { - border-bottom: 1px solid #dbdbdb; } - .list-item.is-active { - background-color: #2e63b8; - color: #fff; } - -a.list-item { - background-color: whitesmoke; - cursor: pointer; } - -.media { - align-items: flex-start; - display: flex; - text-align: left; } - .media .content:not(:last-child) { - margin-bottom: 0.75rem; } - .media .media { - border-top: 1px solid rgba(219, 219, 219, 0.5); - display: flex; - padding-top: 0.75rem; } - .media .media .content:not(:last-child), - .media .media .control:not(:last-child) { - margin-bottom: 0.5rem; } - .media .media .media { - padding-top: 0.5rem; } - .media .media .media + .media { - margin-top: 0.5rem; } - .media + .media { - border-top: 1px solid rgba(219, 219, 219, 0.5); - margin-top: 1rem; - padding-top: 1rem; } - .media.is-large + .media { - margin-top: 1.5rem; - padding-top: 1.5rem; } - -.media-left, -.media-right { - flex-basis: auto; - flex-grow: 0; - flex-shrink: 0; } - -.media-left { - margin-right: 1rem; } - -.media-right { - margin-left: 1rem; } - -.media-content { - flex-basis: auto; - flex-grow: 1; - flex-shrink: 1; - text-align: left; } - -@media screen and (max-width: 768px) { - .media-content { - overflow-x: auto; } } - -.menu { - font-size: 1rem; } - .menu.is-small, #documenter .docs-sidebar form.docs-search > input.menu { - font-size: 0.75rem; } - .menu.is-medium { - font-size: 1.25rem; } - .menu.is-large { - font-size: 1.5rem; } - -.menu-list { - line-height: 1.25; } - .menu-list a { - border-radius: 2px; - color: #222222; - display: block; - padding: 0.5em 0.75em; } - .menu-list a:hover { - background-color: whitesmoke; - color: #222222; } - .menu-list a.is-active { - background-color: #2e63b8; - color: #fff; } - .menu-list li ul { - border-left: 1px solid #dbdbdb; - margin: 0.75em; - padding-left: 0.75em; } - -.menu-label { - color: #7a7a7a; - font-size: 0.75em; - letter-spacing: 0.1em; - text-transform: uppercase; } - .menu-label:not(:first-child) { - margin-top: 1em; } - .menu-label:not(:last-child) { - margin-bottom: 1em; } - -.message { - background-color: whitesmoke; - border-radius: 4px; - font-size: 1rem; } - .message strong { - color: currentColor; } - .message a:not(.button):not(.tag):not(.dropdown-item) { - color: currentColor; - text-decoration: underline; } - .message.is-small, #documenter .docs-sidebar form.docs-search > input.message { - font-size: 0.75rem; } - .message.is-medium { - font-size: 1.25rem; } - .message.is-large { - font-size: 1.5rem; } - .message.is-white { - background-color: white; } - .message.is-white .message-header { - background-color: white; - color: #0a0a0a; } - .message.is-white .message-body { - border-color: white; - color: #4d4d4d; } - .message.is-black { - background-color: #fafafa; } - .message.is-black .message-header { - background-color: #0a0a0a; - color: white; } - .message.is-black .message-body { - border-color: #0a0a0a; - color: #090909; } - .message.is-light { - background-color: #fafafa; } - .message.is-light .message-header { - background-color: whitesmoke; - color: #363636; } - .message.is-light .message-body { - border-color: whitesmoke; - color: #505050; } - .message.is-dark, .content kbd.message { - background-color: #fafafa; } - .message.is-dark .message-header, .content kbd.message .message-header { - background-color: #363636; - color: whitesmoke; } - .message.is-dark .message-body, .content kbd.message .message-body { - border-color: #363636; - color: #2a2a2a; } - .message.is-primary, .docstring > section > a.message.docs-sourcelink { - background-color: #f6fbfd; } - .message.is-primary .message-header, .docstring > section > a.message.docs-sourcelink .message-header { - background-color: #4eb5de; - color: #fff; } - .message.is-primary .message-body, .docstring > section > a.message.docs-sourcelink .message-body { - border-color: #4eb5de; - color: #1f556a; } - .message.is-link { - background-color: #f7f9fd; } - .message.is-link .message-header { - background-color: #2e63b8; - color: #fff; } - .message.is-link .message-body { - border-color: #2e63b8; - color: #264981; } - .message.is-info { - background-color: #f6fbfe; } - .message.is-info .message-header { - background-color: #209cee; - color: #fff; } - .message.is-info .message-body { - border-color: #209cee; - color: #12537e; } - .message.is-success { - background-color: #f6fdf9; } - .message.is-success .message-header { - background-color: #22c35b; - color: #fff; } - .message.is-success .message-body { - border-color: #22c35b; - color: #0f361d; } - .message.is-warning { - background-color: #fffdf5; } - .message.is-warning .message-header { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .message.is-warning .message-body { - border-color: #ffdd57; - color: #3b3108; } - .message.is-danger { - background-color: #fff5f5; } - .message.is-danger .message-header { - background-color: #da0b00; - color: #fff; } - .message.is-danger .message-body { - border-color: #da0b00; - color: #9b0c04; } - -.message-header { - align-items: center; - background-color: #222222; - border-radius: 4px 4px 0 0; - color: #fff; - display: flex; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - .message-header .delete { - flex-grow: 0; - flex-shrink: 0; - margin-left: 0.75em; } - .message-header + .message-body { - border-width: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.message-body { - border-color: #dbdbdb; - border-radius: 4px; - border-style: solid; - border-width: 0 0 0 4px; - color: #222222; - padding: 1em 1.25em; } - .message-body code, - .message-body pre { - background-color: white; } - .message-body pre code { - background-color: transparent; } - -.modal { - align-items: center; - display: none; - flex-direction: column; - justify-content: center; - overflow: hidden; - position: fixed; - z-index: 40; } - .modal.is-active { - display: flex; } - -.modal-background { - background-color: rgba(10, 10, 10, 0.86); } - -.modal-content, -.modal-card { - margin: 0 20px; - max-height: calc(100vh - 160px); - overflow: auto; - position: relative; - width: 100%; } - @media screen and (min-width: 769px), print { - .modal-content, - .modal-card { - margin: 0 auto; - max-height: calc(100vh - 40px); - width: 640px; } } - -.modal-close { - background: none; - height: 40px; - position: fixed; - right: 20px; - top: 20px; - width: 40px; } - -.modal-card { - display: flex; - flex-direction: column; - max-height: calc(100vh - 40px); - overflow: hidden; - -ms-overflow-y: visible; } - -.modal-card-head, -.modal-card-foot { - align-items: center; - background-color: whitesmoke; - display: flex; - flex-shrink: 0; - justify-content: flex-start; - padding: 20px; - position: relative; } - -.modal-card-head { - border-bottom: 1px solid #dbdbdb; - border-top-left-radius: 6px; - border-top-right-radius: 6px; } - -.modal-card-title { - color: #222222; - flex-grow: 1; - flex-shrink: 0; - font-size: 1.5rem; - line-height: 1; } - -.modal-card-foot { - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; } - .modal-card-foot .button:not(:last-child) { - margin-right: 0.5em; } - -.modal-card-body { - -webkit-overflow-scrolling: touch; - background-color: white; - flex-grow: 1; - flex-shrink: 1; - overflow: auto; - padding: 20px; } - -.navbar { - background-color: white; - min-height: 3.25rem; - position: relative; - z-index: 30; } - .navbar.is-white { - background-color: white; - color: #0a0a0a; } - .navbar.is-white .navbar-brand > .navbar-item, - .navbar.is-white .navbar-brand .navbar-link { - color: #0a0a0a; } - .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, - .navbar.is-white .navbar-brand .navbar-link:focus, - .navbar.is-white .navbar-brand .navbar-link:hover, - .navbar.is-white .navbar-brand .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - .navbar.is-white .navbar-brand .navbar-link::after { - border-color: #0a0a0a; } - .navbar.is-white .navbar-burger { - color: #0a0a0a; } - @media screen and (min-width: 1056px) { - .navbar.is-white .navbar-start > .navbar-item, - .navbar.is-white .navbar-start .navbar-link, - .navbar.is-white .navbar-end > .navbar-item, - .navbar.is-white .navbar-end .navbar-link { - color: #0a0a0a; } - .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, - .navbar.is-white .navbar-start .navbar-link:focus, - .navbar.is-white .navbar-start .navbar-link:hover, - .navbar.is-white .navbar-start .navbar-link.is-active, - .navbar.is-white .navbar-end > a.navbar-item:focus, - .navbar.is-white .navbar-end > a.navbar-item:hover, - .navbar.is-white .navbar-end > a.navbar-item.is-active, - .navbar.is-white .navbar-end .navbar-link:focus, - .navbar.is-white .navbar-end .navbar-link:hover, - .navbar.is-white .navbar-end .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - .navbar.is-white .navbar-start .navbar-link::after, - .navbar.is-white .navbar-end .navbar-link::after { - border-color: #0a0a0a; } - .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #f2f2f2; - color: #0a0a0a; } - .navbar.is-white .navbar-dropdown a.navbar-item.is-active { - background-color: white; - color: #0a0a0a; } } - .navbar.is-black { - background-color: #0a0a0a; - color: white; } - .navbar.is-black .navbar-brand > .navbar-item, - .navbar.is-black .navbar-brand .navbar-link { - color: white; } - .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, - .navbar.is-black .navbar-brand .navbar-link:focus, - .navbar.is-black .navbar-brand .navbar-link:hover, - .navbar.is-black .navbar-brand .navbar-link.is-active { - background-color: black; - color: white; } - .navbar.is-black .navbar-brand .navbar-link::after { - border-color: white; } - .navbar.is-black .navbar-burger { - color: white; } - @media screen and (min-width: 1056px) { - .navbar.is-black .navbar-start > .navbar-item, - .navbar.is-black .navbar-start .navbar-link, - .navbar.is-black .navbar-end > .navbar-item, - .navbar.is-black .navbar-end .navbar-link { - color: white; } - .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, - .navbar.is-black .navbar-start .navbar-link:focus, - .navbar.is-black .navbar-start .navbar-link:hover, - .navbar.is-black .navbar-start .navbar-link.is-active, - .navbar.is-black .navbar-end > a.navbar-item:focus, - .navbar.is-black .navbar-end > a.navbar-item:hover, - .navbar.is-black .navbar-end > a.navbar-item.is-active, - .navbar.is-black .navbar-end .navbar-link:focus, - .navbar.is-black .navbar-end .navbar-link:hover, - .navbar.is-black .navbar-end .navbar-link.is-active { - background-color: black; - color: white; } - .navbar.is-black .navbar-start .navbar-link::after, - .navbar.is-black .navbar-end .navbar-link::after { - border-color: white; } - .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { - background-color: black; - color: white; } - .navbar.is-black .navbar-dropdown a.navbar-item.is-active { - background-color: #0a0a0a; - color: white; } } - .navbar.is-light { - background-color: whitesmoke; - color: #363636; } - .navbar.is-light .navbar-brand > .navbar-item, - .navbar.is-light .navbar-brand .navbar-link { - color: #363636; } - .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, - .navbar.is-light .navbar-brand .navbar-link:focus, - .navbar.is-light .navbar-brand .navbar-link:hover, - .navbar.is-light .navbar-brand .navbar-link.is-active { - background-color: #e8e8e8; - color: #363636; } - .navbar.is-light .navbar-brand .navbar-link::after { - border-color: #363636; } - .navbar.is-light .navbar-burger { - color: #363636; } - @media screen and (min-width: 1056px) { - .navbar.is-light .navbar-start > .navbar-item, - .navbar.is-light .navbar-start .navbar-link, - .navbar.is-light .navbar-end > .navbar-item, - .navbar.is-light .navbar-end .navbar-link { - color: #363636; } - .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, - .navbar.is-light .navbar-start .navbar-link:focus, - .navbar.is-light .navbar-start .navbar-link:hover, - .navbar.is-light .navbar-start .navbar-link.is-active, - .navbar.is-light .navbar-end > a.navbar-item:focus, - .navbar.is-light .navbar-end > a.navbar-item:hover, - .navbar.is-light .navbar-end > a.navbar-item.is-active, - .navbar.is-light .navbar-end .navbar-link:focus, - .navbar.is-light .navbar-end .navbar-link:hover, - .navbar.is-light .navbar-end .navbar-link.is-active { - background-color: #e8e8e8; - color: #363636; } - .navbar.is-light .navbar-start .navbar-link::after, - .navbar.is-light .navbar-end .navbar-link::after { - border-color: #363636; } - .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #e8e8e8; - color: #363636; } - .navbar.is-light .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: #363636; } } - .navbar.is-dark, .content kbd.navbar { - background-color: #363636; - color: whitesmoke; } - .navbar.is-dark .navbar-brand > .navbar-item, .content kbd.navbar .navbar-brand > .navbar-item, - .navbar.is-dark .navbar-brand .navbar-link, - .content kbd.navbar .navbar-brand .navbar-link { - color: whitesmoke; } - .navbar.is-dark .navbar-brand > a.navbar-item:focus, .content kbd.navbar .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .content kbd.navbar .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, .content kbd.navbar .navbar-brand > a.navbar-item.is-active, - .navbar.is-dark .navbar-brand .navbar-link:focus, - .content kbd.navbar .navbar-brand .navbar-link:focus, - .navbar.is-dark .navbar-brand .navbar-link:hover, - .content kbd.navbar .navbar-brand .navbar-link:hover, - .navbar.is-dark .navbar-brand .navbar-link.is-active, - .content kbd.navbar .navbar-brand .navbar-link.is-active { - background-color: #292929; - color: whitesmoke; } - .navbar.is-dark .navbar-brand .navbar-link::after, .content kbd.navbar .navbar-brand .navbar-link::after { - border-color: whitesmoke; } - .navbar.is-dark .navbar-burger, .content kbd.navbar .navbar-burger { - color: whitesmoke; } - @media screen and (min-width: 1056px) { - .navbar.is-dark .navbar-start > .navbar-item, .content kbd.navbar .navbar-start > .navbar-item, - .navbar.is-dark .navbar-start .navbar-link, - .content kbd.navbar .navbar-start .navbar-link, - .navbar.is-dark .navbar-end > .navbar-item, - .content kbd.navbar .navbar-end > .navbar-item, - .navbar.is-dark .navbar-end .navbar-link, - .content kbd.navbar .navbar-end .navbar-link { - color: whitesmoke; } - .navbar.is-dark .navbar-start > a.navbar-item:focus, .content kbd.navbar .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .content kbd.navbar .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, .content kbd.navbar .navbar-start > a.navbar-item.is-active, - .navbar.is-dark .navbar-start .navbar-link:focus, - .content kbd.navbar .navbar-start .navbar-link:focus, - .navbar.is-dark .navbar-start .navbar-link:hover, - .content kbd.navbar .navbar-start .navbar-link:hover, - .navbar.is-dark .navbar-start .navbar-link.is-active, - .content kbd.navbar .navbar-start .navbar-link.is-active, - .navbar.is-dark .navbar-end > a.navbar-item:focus, - .content kbd.navbar .navbar-end > a.navbar-item:focus, - .navbar.is-dark .navbar-end > a.navbar-item:hover, - .content kbd.navbar .navbar-end > a.navbar-item:hover, - .navbar.is-dark .navbar-end > a.navbar-item.is-active, - .content kbd.navbar .navbar-end > a.navbar-item.is-active, - .navbar.is-dark .navbar-end .navbar-link:focus, - .content kbd.navbar .navbar-end .navbar-link:focus, - .navbar.is-dark .navbar-end .navbar-link:hover, - .content kbd.navbar .navbar-end .navbar-link:hover, - .navbar.is-dark .navbar-end .navbar-link.is-active, - .content kbd.navbar .navbar-end .navbar-link.is-active { - background-color: #292929; - color: whitesmoke; } - .navbar.is-dark .navbar-start .navbar-link::after, .content kbd.navbar .navbar-start .navbar-link::after, - .navbar.is-dark .navbar-end .navbar-link::after, - .content kbd.navbar .navbar-end .navbar-link::after { - border-color: whitesmoke; } - .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, - .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, - .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #292929; - color: whitesmoke; } - .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { - background-color: #363636; - color: whitesmoke; } } - .navbar.is-primary, .docstring > section > a.navbar.docs-sourcelink { - background-color: #4eb5de; - color: #fff; } - .navbar.is-primary .navbar-brand > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, - .navbar.is-primary .navbar-brand .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-primary .navbar-brand > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, - .navbar.is-primary .navbar-brand .navbar-link:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, - .navbar.is-primary .navbar-brand .navbar-link:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, - .navbar.is-primary .navbar-brand .navbar-link.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { - background-color: #39acda; - color: #fff; } - .navbar.is-primary .navbar-brand .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-primary .navbar-burger, .docstring > section > a.navbar.docs-sourcelink .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-primary .navbar-start > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, - .navbar.is-primary .navbar-start .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, - .navbar.is-primary .navbar-end > .navbar-item, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, - .navbar.is-primary .navbar-end .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { - color: #fff; } - .navbar.is-primary .navbar-start > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, - .navbar.is-primary .navbar-start .navbar-link:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, - .navbar.is-primary .navbar-start .navbar-link:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, - .navbar.is-primary .navbar-start .navbar-link.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, - .navbar.is-primary .navbar-end > a.navbar-item:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, - .navbar.is-primary .navbar-end > a.navbar-item:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, - .navbar.is-primary .navbar-end > a.navbar-item.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, - .navbar.is-primary .navbar-end .navbar-link:focus, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, - .navbar.is-primary .navbar-end .navbar-link:hover, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, - .navbar.is-primary .navbar-end .navbar-link.is-active, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { - background-color: #39acda; - color: #fff; } - .navbar.is-primary .navbar-start .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, - .navbar.is-primary .navbar-end .navbar-link::after, - .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, - .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #39acda; - color: #fff; } - .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { - background-color: #4eb5de; - color: #fff; } } - .navbar.is-link { - background-color: #2e63b8; - color: #fff; } - .navbar.is-link .navbar-brand > .navbar-item, - .navbar.is-link .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, - .navbar.is-link .navbar-brand .navbar-link:focus, - .navbar.is-link .navbar-brand .navbar-link:hover, - .navbar.is-link .navbar-brand .navbar-link.is-active { - background-color: #2958a4; - color: #fff; } - .navbar.is-link .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-link .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-link .navbar-start > .navbar-item, - .navbar.is-link .navbar-start .navbar-link, - .navbar.is-link .navbar-end > .navbar-item, - .navbar.is-link .navbar-end .navbar-link { - color: #fff; } - .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, - .navbar.is-link .navbar-start .navbar-link:focus, - .navbar.is-link .navbar-start .navbar-link:hover, - .navbar.is-link .navbar-start .navbar-link.is-active, - .navbar.is-link .navbar-end > a.navbar-item:focus, - .navbar.is-link .navbar-end > a.navbar-item:hover, - .navbar.is-link .navbar-end > a.navbar-item.is-active, - .navbar.is-link .navbar-end .navbar-link:focus, - .navbar.is-link .navbar-end .navbar-link:hover, - .navbar.is-link .navbar-end .navbar-link.is-active { - background-color: #2958a4; - color: #fff; } - .navbar.is-link .navbar-start .navbar-link::after, - .navbar.is-link .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #2958a4; - color: #fff; } - .navbar.is-link .navbar-dropdown a.navbar-item.is-active { - background-color: #2e63b8; - color: #fff; } } - .navbar.is-info { - background-color: #209cee; - color: #fff; } - .navbar.is-info .navbar-brand > .navbar-item, - .navbar.is-info .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, - .navbar.is-info .navbar-brand .navbar-link:focus, - .navbar.is-info .navbar-brand .navbar-link:hover, - .navbar.is-info .navbar-brand .navbar-link.is-active { - background-color: #118fe4; - color: #fff; } - .navbar.is-info .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-info .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-info .navbar-start > .navbar-item, - .navbar.is-info .navbar-start .navbar-link, - .navbar.is-info .navbar-end > .navbar-item, - .navbar.is-info .navbar-end .navbar-link { - color: #fff; } - .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, - .navbar.is-info .navbar-start .navbar-link:focus, - .navbar.is-info .navbar-start .navbar-link:hover, - .navbar.is-info .navbar-start .navbar-link.is-active, - .navbar.is-info .navbar-end > a.navbar-item:focus, - .navbar.is-info .navbar-end > a.navbar-item:hover, - .navbar.is-info .navbar-end > a.navbar-item.is-active, - .navbar.is-info .navbar-end .navbar-link:focus, - .navbar.is-info .navbar-end .navbar-link:hover, - .navbar.is-info .navbar-end .navbar-link.is-active { - background-color: #118fe4; - color: #fff; } - .navbar.is-info .navbar-start .navbar-link::after, - .navbar.is-info .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #118fe4; - color: #fff; } - .navbar.is-info .navbar-dropdown a.navbar-item.is-active { - background-color: #209cee; - color: #fff; } } - .navbar.is-success { - background-color: #22c35b; - color: #fff; } - .navbar.is-success .navbar-brand > .navbar-item, - .navbar.is-success .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, - .navbar.is-success .navbar-brand .navbar-link:focus, - .navbar.is-success .navbar-brand .navbar-link:hover, - .navbar.is-success .navbar-brand .navbar-link.is-active { - background-color: #1ead51; - color: #fff; } - .navbar.is-success .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-success .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-success .navbar-start > .navbar-item, - .navbar.is-success .navbar-start .navbar-link, - .navbar.is-success .navbar-end > .navbar-item, - .navbar.is-success .navbar-end .navbar-link { - color: #fff; } - .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, - .navbar.is-success .navbar-start .navbar-link:focus, - .navbar.is-success .navbar-start .navbar-link:hover, - .navbar.is-success .navbar-start .navbar-link.is-active, - .navbar.is-success .navbar-end > a.navbar-item:focus, - .navbar.is-success .navbar-end > a.navbar-item:hover, - .navbar.is-success .navbar-end > a.navbar-item.is-active, - .navbar.is-success .navbar-end .navbar-link:focus, - .navbar.is-success .navbar-end .navbar-link:hover, - .navbar.is-success .navbar-end .navbar-link.is-active { - background-color: #1ead51; - color: #fff; } - .navbar.is-success .navbar-start .navbar-link::after, - .navbar.is-success .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #1ead51; - color: #fff; } - .navbar.is-success .navbar-dropdown a.navbar-item.is-active { - background-color: #22c35b; - color: #fff; } } - .navbar.is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-brand > .navbar-item, - .navbar.is-warning .navbar-brand .navbar-link { - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, - .navbar.is-warning .navbar-brand .navbar-link:focus, - .navbar.is-warning .navbar-brand .navbar-link:hover, - .navbar.is-warning .navbar-brand .navbar-link.is-active { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-brand .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-burger { - color: rgba(0, 0, 0, 0.7); } - @media screen and (min-width: 1056px) { - .navbar.is-warning .navbar-start > .navbar-item, - .navbar.is-warning .navbar-start .navbar-link, - .navbar.is-warning .navbar-end > .navbar-item, - .navbar.is-warning .navbar-end .navbar-link { - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, - .navbar.is-warning .navbar-start .navbar-link:focus, - .navbar.is-warning .navbar-start .navbar-link:hover, - .navbar.is-warning .navbar-start .navbar-link.is-active, - .navbar.is-warning .navbar-end > a.navbar-item:focus, - .navbar.is-warning .navbar-end > a.navbar-item:hover, - .navbar.is-warning .navbar-end > a.navbar-item.is-active, - .navbar.is-warning .navbar-end .navbar-link:focus, - .navbar.is-warning .navbar-end .navbar-link:hover, - .navbar.is-warning .navbar-end .navbar-link.is-active { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-start .navbar-link::after, - .navbar.is-warning .navbar-end .navbar-link::after { - border-color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } } - .navbar.is-danger { - background-color: #da0b00; - color: #fff; } - .navbar.is-danger .navbar-brand > .navbar-item, - .navbar.is-danger .navbar-brand .navbar-link { - color: #fff; } - .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, - .navbar.is-danger .navbar-brand .navbar-link:focus, - .navbar.is-danger .navbar-brand .navbar-link:hover, - .navbar.is-danger .navbar-brand .navbar-link.is-active { - background-color: #c10a00; - color: #fff; } - .navbar.is-danger .navbar-brand .navbar-link::after { - border-color: #fff; } - .navbar.is-danger .navbar-burger { - color: #fff; } - @media screen and (min-width: 1056px) { - .navbar.is-danger .navbar-start > .navbar-item, - .navbar.is-danger .navbar-start .navbar-link, - .navbar.is-danger .navbar-end > .navbar-item, - .navbar.is-danger .navbar-end .navbar-link { - color: #fff; } - .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, - .navbar.is-danger .navbar-start .navbar-link:focus, - .navbar.is-danger .navbar-start .navbar-link:hover, - .navbar.is-danger .navbar-start .navbar-link.is-active, - .navbar.is-danger .navbar-end > a.navbar-item:focus, - .navbar.is-danger .navbar-end > a.navbar-item:hover, - .navbar.is-danger .navbar-end > a.navbar-item.is-active, - .navbar.is-danger .navbar-end .navbar-link:focus, - .navbar.is-danger .navbar-end .navbar-link:hover, - .navbar.is-danger .navbar-end .navbar-link.is-active { - background-color: #c10a00; - color: #fff; } - .navbar.is-danger .navbar-start .navbar-link::after, - .navbar.is-danger .navbar-end .navbar-link::after { - border-color: #fff; } - .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, - .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, - .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #c10a00; - color: #fff; } - .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { - background-color: #da0b00; - color: #fff; } } - .navbar > .container { - align-items: stretch; - display: flex; - min-height: 3.25rem; - width: 100%; } - .navbar.has-shadow { - box-shadow: 0 2px 0 0 whitesmoke; } - .navbar.is-fixed-bottom, .navbar.is-fixed-top { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - .navbar.is-fixed-bottom { - bottom: 0; } - .navbar.is-fixed-bottom.has-shadow { - box-shadow: 0 -2px 0 0 whitesmoke; } - .navbar.is-fixed-top { - top: 0; } - -html.has-navbar-fixed-top, -body.has-navbar-fixed-top { - padding-top: 3.25rem; } - -html.has-navbar-fixed-bottom, -body.has-navbar-fixed-bottom { - padding-bottom: 3.25rem; } - -.navbar-brand, -.navbar-tabs { - align-items: stretch; - display: flex; - flex-shrink: 0; - min-height: 3.25rem; } - -.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { - background-color: transparent; } - -.navbar-tabs { - -webkit-overflow-scrolling: touch; - max-width: 100vw; - overflow-x: auto; - overflow-y: hidden; } - -.navbar-burger { - color: #4a4a4a; - cursor: pointer; - display: block; - height: 3.25rem; - position: relative; - width: 3.25rem; - margin-left: auto; } - .navbar-burger span { - background-color: currentColor; - display: block; - height: 1px; - left: calc(50% - 8px); - position: absolute; - transform-origin: center; - transition-duration: 86ms; - transition-property: background-color, opacity, transform; - transition-timing-function: ease-out; - width: 16px; } - .navbar-burger span:nth-child(1) { - top: calc(50% - 6px); } - .navbar-burger span:nth-child(2) { - top: calc(50% - 1px); } - .navbar-burger span:nth-child(3) { - top: calc(50% + 4px); } - .navbar-burger:hover { - background-color: rgba(0, 0, 0, 0.05); } - .navbar-burger.is-active span:nth-child(1) { - transform: translateY(5px) rotate(45deg); } - .navbar-burger.is-active span:nth-child(2) { - opacity: 0; } - .navbar-burger.is-active span:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); } - -.navbar-menu { - display: none; } - -.navbar-item, -.navbar-link { - color: #4a4a4a; - display: block; - line-height: 1.5; - padding: 0.5rem 0.75rem; - position: relative; } - .navbar-item .icon:only-child, - .navbar-link .icon:only-child { - margin-left: -0.25rem; - margin-right: -0.25rem; } - -a.navbar-item, -.navbar-link { - cursor: pointer; } - a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, - .navbar-link:focus, - .navbar-link:focus-within, - .navbar-link:hover, - .navbar-link.is-active { - background-color: #fafafa; - color: #2e63b8; } - -.navbar-item { - display: block; - flex-grow: 0; - flex-shrink: 0; } - .navbar-item img { - max-height: 1.75rem; } - .navbar-item.has-dropdown { - padding: 0; } - .navbar-item.is-expanded { - flex-grow: 1; - flex-shrink: 1; } - .navbar-item.is-tab { - border-bottom: 1px solid transparent; - min-height: 3.25rem; - padding-bottom: calc(0.5rem - 1px); } - .navbar-item.is-tab:focus, .navbar-item.is-tab:hover { - background-color: transparent; - border-bottom-color: #2e63b8; } - .navbar-item.is-tab.is-active { - background-color: transparent; - border-bottom-color: #2e63b8; - border-bottom-style: solid; - border-bottom-width: 3px; - color: #2e63b8; - padding-bottom: calc(0.5rem - 3px); } - -.navbar-content { - flex-grow: 1; - flex-shrink: 1; } - -.navbar-link:not(.is-arrowless) { - padding-right: 2.5em; } - .navbar-link:not(.is-arrowless)::after { - border-color: #2e63b8; - margin-top: -0.375em; - right: 1.125em; } - -.navbar-dropdown { - font-size: 0.875rem; - padding-bottom: 0.5rem; - padding-top: 0.5rem; } - .navbar-dropdown .navbar-item { - padding-left: 1.5rem; - padding-right: 1.5rem; } - -.navbar-divider { - background-color: whitesmoke; - border: none; - display: none; - height: 2px; - margin: 0.5rem 0; } - -@media screen and (max-width: 1055px) { - .navbar > .container { - display: block; } - .navbar-brand .navbar-item, - .navbar-tabs .navbar-item { - align-items: center; - display: flex; } - .navbar-link::after { - display: none; } - .navbar-menu { - background-color: white; - box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); - padding: 0.5rem 0; } - .navbar-menu.is-active { - display: block; } - .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - .navbar.is-fixed-bottom-touch { - bottom: 0; } - .navbar.is-fixed-bottom-touch.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - .navbar.is-fixed-top-touch { - top: 0; } - .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { - -webkit-overflow-scrolling: touch; - max-height: calc(100vh - 3.25rem); - overflow: auto; } - html.has-navbar-fixed-top-touch, - body.has-navbar-fixed-top-touch { - padding-top: 3.25rem; } - html.has-navbar-fixed-bottom-touch, - body.has-navbar-fixed-bottom-touch { - padding-bottom: 3.25rem; } } - -@media screen and (min-width: 1056px) { - .navbar, - .navbar-menu, - .navbar-start, - .navbar-end { - align-items: stretch; - display: flex; } - .navbar { - min-height: 3.25rem; } - .navbar.is-spaced { - padding: 1rem 2rem; } - .navbar.is-spaced .navbar-start, - .navbar.is-spaced .navbar-end { - align-items: center; } - .navbar.is-spaced a.navbar-item, - .navbar.is-spaced .navbar-link { - border-radius: 4px; } - .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, - .navbar.is-transparent .navbar-link:focus, - .navbar.is-transparent .navbar-link:hover, - .navbar.is-transparent .navbar-link.is-active { - background-color: transparent !important; } - .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { - background-color: transparent !important; } - .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { - background-color: whitesmoke; - color: #0a0a0a; } - .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: #2e63b8; } - .navbar-burger { - display: none; } - .navbar-item, - .navbar-link { - align-items: center; - display: flex; } - .navbar-item { - display: flex; } - .navbar-item.has-dropdown { - align-items: stretch; } - .navbar-item.has-dropdown-up .navbar-link::after { - transform: rotate(135deg) translate(0.25em, -0.25em); } - .navbar-item.has-dropdown-up .navbar-dropdown { - border-bottom: 2px solid #dbdbdb; - border-radius: 6px 6px 0 0; - border-top: none; - bottom: 100%; - box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); - top: auto; } - .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { - display: block; } - .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { - opacity: 1; - pointer-events: auto; - transform: translateY(0); } - .navbar-menu { - flex-grow: 1; - flex-shrink: 0; } - .navbar-start { - justify-content: flex-start; - margin-right: auto; } - .navbar-end { - justify-content: flex-end; - margin-left: auto; } - .navbar-dropdown { - background-color: white; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-top: 2px solid #dbdbdb; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); - display: none; - font-size: 0.875rem; - left: 0; - min-width: 100%; - position: absolute; - top: 100%; - z-index: 20; } - .navbar-dropdown .navbar-item { - padding: 0.375rem 1rem; - white-space: nowrap; } - .navbar-dropdown a.navbar-item { - padding-right: 3rem; } - .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { - background-color: whitesmoke; - color: #0a0a0a; } - .navbar-dropdown a.navbar-item.is-active { - background-color: whitesmoke; - color: #2e63b8; } - .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { - border-radius: 6px; - border-top: none; - box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); - display: block; - opacity: 0; - pointer-events: none; - top: calc(100% + (-4px)); - transform: translateY(-5px); - transition-duration: 86ms; - transition-property: opacity, transform; } - .navbar-dropdown.is-right { - left: auto; - right: 0; } - .navbar-divider { - display: block; } - .navbar > .container .navbar-brand, - .container > .navbar .navbar-brand { - margin-left: -.75rem; } - .navbar > .container .navbar-menu, - .container > .navbar .navbar-menu { - margin-right: -.75rem; } - .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { - left: 0; - position: fixed; - right: 0; - z-index: 30; } - .navbar.is-fixed-bottom-desktop { - bottom: 0; } - .navbar.is-fixed-bottom-desktop.has-shadow { - box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } - .navbar.is-fixed-top-desktop { - top: 0; } - html.has-navbar-fixed-top-desktop, - body.has-navbar-fixed-top-desktop { - padding-top: 3.25rem; } - html.has-navbar-fixed-bottom-desktop, - body.has-navbar-fixed-bottom-desktop { - padding-bottom: 3.25rem; } - html.has-spaced-navbar-fixed-top, - body.has-spaced-navbar-fixed-top { - padding-top: 5.25rem; } - html.has-spaced-navbar-fixed-bottom, - body.has-spaced-navbar-fixed-bottom { - padding-bottom: 5.25rem; } - a.navbar-item.is-active, - .navbar-link.is-active { - color: #0a0a0a; } - a.navbar-item.is-active:not(:focus):not(:hover), - .navbar-link.is-active:not(:focus):not(:hover) { - background-color: transparent; } - .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { - background-color: #fafafa; } } - -.hero.is-fullheight-with-navbar { - min-height: calc(100vh - 3.25rem); } - -.pagination { - font-size: 1rem; - margin: -0.25rem; } - .pagination.is-small, #documenter .docs-sidebar form.docs-search > input.pagination { - font-size: 0.75rem; } - .pagination.is-medium { - font-size: 1.25rem; } - .pagination.is-large { - font-size: 1.5rem; } - .pagination.is-rounded .pagination-previous, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, - .pagination.is-rounded .pagination-next, - #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { - padding-left: 1em; - padding-right: 1em; - border-radius: 290486px; } - .pagination.is-rounded .pagination-link, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { - border-radius: 290486px; } - -.pagination, -.pagination-list { - align-items: center; - display: flex; - justify-content: center; - text-align: center; } - -.pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis { - font-size: 1em; - justify-content: center; - margin: 0.25rem; - padding-left: 0.5em; - padding-right: 0.5em; - text-align: center; } - -.pagination-previous, -.pagination-next, -.pagination-link { - border-color: #dbdbdb; - color: #363636; - min-width: 2.25em; } - .pagination-previous:hover, - .pagination-next:hover, - .pagination-link:hover { - border-color: #b5b5b5; - color: #363636; } - .pagination-previous:focus, - .pagination-next:focus, - .pagination-link:focus { - border-color: #2e63b8; } - .pagination-previous:active, - .pagination-next:active, - .pagination-link:active { - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } - .pagination-previous[disabled], - .pagination-next[disabled], - .pagination-link[disabled] { - background-color: #dbdbdb; - border-color: #dbdbdb; - box-shadow: none; - color: #7a7a7a; - opacity: 0.5; } - -.pagination-previous, -.pagination-next { - padding-left: 0.75em; - padding-right: 0.75em; - white-space: nowrap; } - -.pagination-link.is-current { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; } - -.pagination-ellipsis { - color: #b5b5b5; - pointer-events: none; } - -.pagination-list { - flex-wrap: wrap; } - -@media screen and (max-width: 768px) { - .pagination { - flex-wrap: wrap; } - .pagination-previous, - .pagination-next { - flex-grow: 1; - flex-shrink: 1; } - .pagination-list li { - flex-grow: 1; - flex-shrink: 1; } } - -@media screen and (min-width: 769px), print { - .pagination-list { - flex-grow: 1; - flex-shrink: 1; - justify-content: flex-start; - order: 1; } - .pagination-previous { - order: 2; } - .pagination-next { - order: 3; } - .pagination { - justify-content: space-between; } - .pagination.is-centered .pagination-previous { - order: 1; } - .pagination.is-centered .pagination-list { - justify-content: center; - order: 2; } - .pagination.is-centered .pagination-next { - order: 3; } - .pagination.is-right .pagination-previous { - order: 1; } - .pagination.is-right .pagination-next { - order: 2; } - .pagination.is-right .pagination-list { - justify-content: flex-end; - order: 3; } } - -.panel { - font-size: 1rem; } - .panel:not(:last-child) { - margin-bottom: 1.5rem; } - -.panel-heading, -.panel-tabs, -.panel-block { - border-bottom: 1px solid #dbdbdb; - border-left: 1px solid #dbdbdb; - border-right: 1px solid #dbdbdb; } - .panel-heading:first-child, - .panel-tabs:first-child, - .panel-block:first-child { - border-top: 1px solid #dbdbdb; } - -.panel-heading { - background-color: whitesmoke; - border-radius: 4px 4px 0 0; - color: #222222; - font-size: 1.25em; - font-weight: 300; - line-height: 1.25; - padding: 0.5em 0.75em; } - -.panel-tabs { - align-items: flex-end; - display: flex; - font-size: 0.875em; - justify-content: center; } - .panel-tabs a { - border-bottom: 1px solid #dbdbdb; - margin-bottom: -1px; - padding: 0.5em; } - .panel-tabs a.is-active { - border-bottom-color: #4a4a4a; - color: #363636; } - -.panel-list a { - color: #222222; } - .panel-list a:hover { - color: #2e63b8; } - -.panel-block { - align-items: center; - color: #222222; - display: flex; - justify-content: flex-start; - padding: 0.5em 0.75em; } - .panel-block input[type="checkbox"] { - margin-right: 0.75em; } - .panel-block > .control { - flex-grow: 1; - flex-shrink: 1; - width: 100%; } - .panel-block.is-wrapped { - flex-wrap: wrap; } - .panel-block.is-active { - border-left-color: #2e63b8; - color: #363636; } - .panel-block.is-active .panel-icon { - color: #2e63b8; } - -a.panel-block, -label.panel-block { - cursor: pointer; } - a.panel-block:hover, - label.panel-block:hover { - background-color: whitesmoke; } - -.panel-icon { - display: inline-block; - font-size: 14px; - height: 1em; - line-height: 1em; - text-align: center; - vertical-align: top; - width: 1em; - color: #7a7a7a; - margin-right: 0.75em; } - .panel-icon .fa { - font-size: inherit; - line-height: inherit; } - -.tabs { - -webkit-overflow-scrolling: touch; - align-items: stretch; - display: flex; - font-size: 1rem; - justify-content: space-between; - overflow: hidden; - overflow-x: auto; - white-space: nowrap; } - .tabs a { - align-items: center; - border-bottom-color: #dbdbdb; - border-bottom-style: solid; - border-bottom-width: 1px; - color: #222222; - display: flex; - justify-content: center; - margin-bottom: -1px; - padding: 0.5em 1em; - vertical-align: top; } - .tabs a:hover { - border-bottom-color: #222222; - color: #222222; } - .tabs li { - display: block; } - .tabs li.is-active a { - border-bottom-color: #2e63b8; - color: #2e63b8; } - .tabs ul { - align-items: center; - border-bottom-color: #dbdbdb; - border-bottom-style: solid; - border-bottom-width: 1px; - display: flex; - flex-grow: 1; - flex-shrink: 0; - justify-content: flex-start; } - .tabs ul.is-left { - padding-right: 0.75em; } - .tabs ul.is-center { - flex: none; - justify-content: center; - padding-left: 0.75em; - padding-right: 0.75em; } - .tabs ul.is-right { - justify-content: flex-end; - padding-left: 0.75em; } - .tabs .icon:first-child { - margin-right: 0.5em; } - .tabs .icon:last-child { - margin-left: 0.5em; } - .tabs.is-centered ul { - justify-content: center; } - .tabs.is-right ul { - justify-content: flex-end; } - .tabs.is-boxed a { - border: 1px solid transparent; - border-radius: 4px 4px 0 0; } - .tabs.is-boxed a:hover { - background-color: whitesmoke; - border-bottom-color: #dbdbdb; } - .tabs.is-boxed li.is-active a { - background-color: white; - border-color: #dbdbdb; - border-bottom-color: transparent !important; } - .tabs.is-fullwidth li { - flex-grow: 1; - flex-shrink: 0; } - .tabs.is-toggle a { - border-color: #dbdbdb; - border-style: solid; - border-width: 1px; - margin-bottom: 0; - position: relative; } - .tabs.is-toggle a:hover { - background-color: whitesmoke; - border-color: #b5b5b5; - z-index: 2; } - .tabs.is-toggle li + li { - margin-left: -1px; } - .tabs.is-toggle li:first-child a { - border-radius: 4px 0 0 4px; } - .tabs.is-toggle li:last-child a { - border-radius: 0 4px 4px 0; } - .tabs.is-toggle li.is-active a { - background-color: #2e63b8; - border-color: #2e63b8; - color: #fff; - z-index: 1; } - .tabs.is-toggle ul { - border-bottom: none; } - .tabs.is-toggle.is-toggle-rounded li:first-child a { - border-bottom-left-radius: 290486px; - border-top-left-radius: 290486px; - padding-left: 1.25em; } - .tabs.is-toggle.is-toggle-rounded li:last-child a { - border-bottom-right-radius: 290486px; - border-top-right-radius: 290486px; - padding-right: 1.25em; } - .tabs.is-small, #documenter .docs-sidebar form.docs-search > input.tabs { - font-size: 0.75rem; } - .tabs.is-medium { - font-size: 1.25rem; } - .tabs.is-large { - font-size: 1.5rem; } - -.column { - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - padding: 0.75rem; } - .columns.is-mobile > .column.is-narrow { - flex: none; } - .columns.is-mobile > .column.is-full { - flex: none; - width: 100%; } - .columns.is-mobile > .column.is-three-quarters { - flex: none; - width: 75%; } - .columns.is-mobile > .column.is-two-thirds { - flex: none; - width: 66.6666%; } - .columns.is-mobile > .column.is-half { - flex: none; - width: 50%; } - .columns.is-mobile > .column.is-one-third { - flex: none; - width: 33.3333%; } - .columns.is-mobile > .column.is-one-quarter { - flex: none; - width: 25%; } - .columns.is-mobile > .column.is-one-fifth { - flex: none; - width: 20%; } - .columns.is-mobile > .column.is-two-fifths { - flex: none; - width: 40%; } - .columns.is-mobile > .column.is-three-fifths { - flex: none; - width: 60%; } - .columns.is-mobile > .column.is-four-fifths { - flex: none; - width: 80%; } - .columns.is-mobile > .column.is-offset-three-quarters { - margin-left: 75%; } - .columns.is-mobile > .column.is-offset-two-thirds { - margin-left: 66.6666%; } - .columns.is-mobile > .column.is-offset-half { - margin-left: 50%; } - .columns.is-mobile > .column.is-offset-one-third { - margin-left: 33.3333%; } - .columns.is-mobile > .column.is-offset-one-quarter { - margin-left: 25%; } - .columns.is-mobile > .column.is-offset-one-fifth { - margin-left: 20%; } - .columns.is-mobile > .column.is-offset-two-fifths { - margin-left: 40%; } - .columns.is-mobile > .column.is-offset-three-fifths { - margin-left: 60%; } - .columns.is-mobile > .column.is-offset-four-fifths { - margin-left: 80%; } - .columns.is-mobile > .column.is-0 { - flex: none; - width: 0%; } - .columns.is-mobile > .column.is-offset-0 { - margin-left: 0%; } - .columns.is-mobile > .column.is-1 { - flex: none; - width: 8.33333%; } - .columns.is-mobile > .column.is-offset-1 { - margin-left: 8.33333%; } - .columns.is-mobile > .column.is-2 { - flex: none; - width: 16.66667%; } - .columns.is-mobile > .column.is-offset-2 { - margin-left: 16.66667%; } - .columns.is-mobile > .column.is-3 { - flex: none; - width: 25%; } - .columns.is-mobile > .column.is-offset-3 { - margin-left: 25%; } - .columns.is-mobile > .column.is-4 { - flex: none; - width: 33.33333%; } - .columns.is-mobile > .column.is-offset-4 { - margin-left: 33.33333%; } - .columns.is-mobile > .column.is-5 { - flex: none; - width: 41.66667%; } - .columns.is-mobile > .column.is-offset-5 { - margin-left: 41.66667%; } - .columns.is-mobile > .column.is-6 { - flex: none; - width: 50%; } - .columns.is-mobile > .column.is-offset-6 { - margin-left: 50%; } - .columns.is-mobile > .column.is-7 { - flex: none; - width: 58.33333%; } - .columns.is-mobile > .column.is-offset-7 { - margin-left: 58.33333%; } - .columns.is-mobile > .column.is-8 { - flex: none; - width: 66.66667%; } - .columns.is-mobile > .column.is-offset-8 { - margin-left: 66.66667%; } - .columns.is-mobile > .column.is-9 { - flex: none; - width: 75%; } - .columns.is-mobile > .column.is-offset-9 { - margin-left: 75%; } - .columns.is-mobile > .column.is-10 { - flex: none; - width: 83.33333%; } - .columns.is-mobile > .column.is-offset-10 { - margin-left: 83.33333%; } - .columns.is-mobile > .column.is-11 { - flex: none; - width: 91.66667%; } - .columns.is-mobile > .column.is-offset-11 { - margin-left: 91.66667%; } - .columns.is-mobile > .column.is-12 { - flex: none; - width: 100%; } - .columns.is-mobile > .column.is-offset-12 { - margin-left: 100%; } - @media screen and (max-width: 768px) { - .column.is-narrow-mobile { - flex: none; } - .column.is-full-mobile { - flex: none; - width: 100%; } - .column.is-three-quarters-mobile { - flex: none; - width: 75%; } - .column.is-two-thirds-mobile { - flex: none; - width: 66.6666%; } - .column.is-half-mobile { - flex: none; - width: 50%; } - .column.is-one-third-mobile { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-mobile { - flex: none; - width: 25%; } - .column.is-one-fifth-mobile { - flex: none; - width: 20%; } - .column.is-two-fifths-mobile { - flex: none; - width: 40%; } - .column.is-three-fifths-mobile { - flex: none; - width: 60%; } - .column.is-four-fifths-mobile { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-mobile { - margin-left: 75%; } - .column.is-offset-two-thirds-mobile { - margin-left: 66.6666%; } - .column.is-offset-half-mobile { - margin-left: 50%; } - .column.is-offset-one-third-mobile { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-mobile { - margin-left: 25%; } - .column.is-offset-one-fifth-mobile { - margin-left: 20%; } - .column.is-offset-two-fifths-mobile { - margin-left: 40%; } - .column.is-offset-three-fifths-mobile { - margin-left: 60%; } - .column.is-offset-four-fifths-mobile { - margin-left: 80%; } - .column.is-0-mobile { - flex: none; - width: 0%; } - .column.is-offset-0-mobile { - margin-left: 0%; } - .column.is-1-mobile { - flex: none; - width: 8.33333%; } - .column.is-offset-1-mobile { - margin-left: 8.33333%; } - .column.is-2-mobile { - flex: none; - width: 16.66667%; } - .column.is-offset-2-mobile { - margin-left: 16.66667%; } - .column.is-3-mobile { - flex: none; - width: 25%; } - .column.is-offset-3-mobile { - margin-left: 25%; } - .column.is-4-mobile { - flex: none; - width: 33.33333%; } - .column.is-offset-4-mobile { - margin-left: 33.33333%; } - .column.is-5-mobile { - flex: none; - width: 41.66667%; } - .column.is-offset-5-mobile { - margin-left: 41.66667%; } - .column.is-6-mobile { - flex: none; - width: 50%; } - .column.is-offset-6-mobile { - margin-left: 50%; } - .column.is-7-mobile { - flex: none; - width: 58.33333%; } - .column.is-offset-7-mobile { - margin-left: 58.33333%; } - .column.is-8-mobile { - flex: none; - width: 66.66667%; } - .column.is-offset-8-mobile { - margin-left: 66.66667%; } - .column.is-9-mobile { - flex: none; - width: 75%; } - .column.is-offset-9-mobile { - margin-left: 75%; } - .column.is-10-mobile { - flex: none; - width: 83.33333%; } - .column.is-offset-10-mobile { - margin-left: 83.33333%; } - .column.is-11-mobile { - flex: none; - width: 91.66667%; } - .column.is-offset-11-mobile { - margin-left: 91.66667%; } - .column.is-12-mobile { - flex: none; - width: 100%; } - .column.is-offset-12-mobile { - margin-left: 100%; } } - @media screen and (min-width: 769px), print { - .column.is-narrow, .column.is-narrow-tablet { - flex: none; } - .column.is-full, .column.is-full-tablet { - flex: none; - width: 100%; } - .column.is-three-quarters, .column.is-three-quarters-tablet { - flex: none; - width: 75%; } - .column.is-two-thirds, .column.is-two-thirds-tablet { - flex: none; - width: 66.6666%; } - .column.is-half, .column.is-half-tablet { - flex: none; - width: 50%; } - .column.is-one-third, .column.is-one-third-tablet { - flex: none; - width: 33.3333%; } - .column.is-one-quarter, .column.is-one-quarter-tablet { - flex: none; - width: 25%; } - .column.is-one-fifth, .column.is-one-fifth-tablet { - flex: none; - width: 20%; } - .column.is-two-fifths, .column.is-two-fifths-tablet { - flex: none; - width: 40%; } - .column.is-three-fifths, .column.is-three-fifths-tablet { - flex: none; - width: 60%; } - .column.is-four-fifths, .column.is-four-fifths-tablet { - flex: none; - width: 80%; } - .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { - margin-left: 75%; } - .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { - margin-left: 66.6666%; } - .column.is-offset-half, .column.is-offset-half-tablet { - margin-left: 50%; } - .column.is-offset-one-third, .column.is-offset-one-third-tablet { - margin-left: 33.3333%; } - .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { - margin-left: 25%; } - .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { - margin-left: 20%; } - .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { - margin-left: 40%; } - .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { - margin-left: 60%; } - .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { - margin-left: 80%; } - .column.is-0, .column.is-0-tablet { - flex: none; - width: 0%; } - .column.is-offset-0, .column.is-offset-0-tablet { - margin-left: 0%; } - .column.is-1, .column.is-1-tablet { - flex: none; - width: 8.33333%; } - .column.is-offset-1, .column.is-offset-1-tablet { - margin-left: 8.33333%; } - .column.is-2, .column.is-2-tablet { - flex: none; - width: 16.66667%; } - .column.is-offset-2, .column.is-offset-2-tablet { - margin-left: 16.66667%; } - .column.is-3, .column.is-3-tablet { - flex: none; - width: 25%; } - .column.is-offset-3, .column.is-offset-3-tablet { - margin-left: 25%; } - .column.is-4, .column.is-4-tablet { - flex: none; - width: 33.33333%; } - .column.is-offset-4, .column.is-offset-4-tablet { - margin-left: 33.33333%; } - .column.is-5, .column.is-5-tablet { - flex: none; - width: 41.66667%; } - .column.is-offset-5, .column.is-offset-5-tablet { - margin-left: 41.66667%; } - .column.is-6, .column.is-6-tablet { - flex: none; - width: 50%; } - .column.is-offset-6, .column.is-offset-6-tablet { - margin-left: 50%; } - .column.is-7, .column.is-7-tablet { - flex: none; - width: 58.33333%; } - .column.is-offset-7, .column.is-offset-7-tablet { - margin-left: 58.33333%; } - .column.is-8, .column.is-8-tablet { - flex: none; - width: 66.66667%; } - .column.is-offset-8, .column.is-offset-8-tablet { - margin-left: 66.66667%; } - .column.is-9, .column.is-9-tablet { - flex: none; - width: 75%; } - .column.is-offset-9, .column.is-offset-9-tablet { - margin-left: 75%; } - .column.is-10, .column.is-10-tablet { - flex: none; - width: 83.33333%; } - .column.is-offset-10, .column.is-offset-10-tablet { - margin-left: 83.33333%; } - .column.is-11, .column.is-11-tablet { - flex: none; - width: 91.66667%; } - .column.is-offset-11, .column.is-offset-11-tablet { - margin-left: 91.66667%; } - .column.is-12, .column.is-12-tablet { - flex: none; - width: 100%; } - .column.is-offset-12, .column.is-offset-12-tablet { - margin-left: 100%; } } - @media screen and (max-width: 1055px) { - .column.is-narrow-touch { - flex: none; } - .column.is-full-touch { - flex: none; - width: 100%; } - .column.is-three-quarters-touch { - flex: none; - width: 75%; } - .column.is-two-thirds-touch { - flex: none; - width: 66.6666%; } - .column.is-half-touch { - flex: none; - width: 50%; } - .column.is-one-third-touch { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-touch { - flex: none; - width: 25%; } - .column.is-one-fifth-touch { - flex: none; - width: 20%; } - .column.is-two-fifths-touch { - flex: none; - width: 40%; } - .column.is-three-fifths-touch { - flex: none; - width: 60%; } - .column.is-four-fifths-touch { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-touch { - margin-left: 75%; } - .column.is-offset-two-thirds-touch { - margin-left: 66.6666%; } - .column.is-offset-half-touch { - margin-left: 50%; } - .column.is-offset-one-third-touch { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-touch { - margin-left: 25%; } - .column.is-offset-one-fifth-touch { - margin-left: 20%; } - .column.is-offset-two-fifths-touch { - margin-left: 40%; } - .column.is-offset-three-fifths-touch { - margin-left: 60%; } - .column.is-offset-four-fifths-touch { - margin-left: 80%; } - .column.is-0-touch { - flex: none; - width: 0%; } - .column.is-offset-0-touch { - margin-left: 0%; } - .column.is-1-touch { - flex: none; - width: 8.33333%; } - .column.is-offset-1-touch { - margin-left: 8.33333%; } - .column.is-2-touch { - flex: none; - width: 16.66667%; } - .column.is-offset-2-touch { - margin-left: 16.66667%; } - .column.is-3-touch { - flex: none; - width: 25%; } - .column.is-offset-3-touch { - margin-left: 25%; } - .column.is-4-touch { - flex: none; - width: 33.33333%; } - .column.is-offset-4-touch { - margin-left: 33.33333%; } - .column.is-5-touch { - flex: none; - width: 41.66667%; } - .column.is-offset-5-touch { - margin-left: 41.66667%; } - .column.is-6-touch { - flex: none; - width: 50%; } - .column.is-offset-6-touch { - margin-left: 50%; } - .column.is-7-touch { - flex: none; - width: 58.33333%; } - .column.is-offset-7-touch { - margin-left: 58.33333%; } - .column.is-8-touch { - flex: none; - width: 66.66667%; } - .column.is-offset-8-touch { - margin-left: 66.66667%; } - .column.is-9-touch { - flex: none; - width: 75%; } - .column.is-offset-9-touch { - margin-left: 75%; } - .column.is-10-touch { - flex: none; - width: 83.33333%; } - .column.is-offset-10-touch { - margin-left: 83.33333%; } - .column.is-11-touch { - flex: none; - width: 91.66667%; } - .column.is-offset-11-touch { - margin-left: 91.66667%; } - .column.is-12-touch { - flex: none; - width: 100%; } - .column.is-offset-12-touch { - margin-left: 100%; } } - @media screen and (min-width: 1056px) { - .column.is-narrow-desktop { - flex: none; } - .column.is-full-desktop { - flex: none; - width: 100%; } - .column.is-three-quarters-desktop { - flex: none; - width: 75%; } - .column.is-two-thirds-desktop { - flex: none; - width: 66.6666%; } - .column.is-half-desktop { - flex: none; - width: 50%; } - .column.is-one-third-desktop { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-desktop { - flex: none; - width: 25%; } - .column.is-one-fifth-desktop { - flex: none; - width: 20%; } - .column.is-two-fifths-desktop { - flex: none; - width: 40%; } - .column.is-three-fifths-desktop { - flex: none; - width: 60%; } - .column.is-four-fifths-desktop { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-desktop { - margin-left: 75%; } - .column.is-offset-two-thirds-desktop { - margin-left: 66.6666%; } - .column.is-offset-half-desktop { - margin-left: 50%; } - .column.is-offset-one-third-desktop { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-desktop { - margin-left: 25%; } - .column.is-offset-one-fifth-desktop { - margin-left: 20%; } - .column.is-offset-two-fifths-desktop { - margin-left: 40%; } - .column.is-offset-three-fifths-desktop { - margin-left: 60%; } - .column.is-offset-four-fifths-desktop { - margin-left: 80%; } - .column.is-0-desktop { - flex: none; - width: 0%; } - .column.is-offset-0-desktop { - margin-left: 0%; } - .column.is-1-desktop { - flex: none; - width: 8.33333%; } - .column.is-offset-1-desktop { - margin-left: 8.33333%; } - .column.is-2-desktop { - flex: none; - width: 16.66667%; } - .column.is-offset-2-desktop { - margin-left: 16.66667%; } - .column.is-3-desktop { - flex: none; - width: 25%; } - .column.is-offset-3-desktop { - margin-left: 25%; } - .column.is-4-desktop { - flex: none; - width: 33.33333%; } - .column.is-offset-4-desktop { - margin-left: 33.33333%; } - .column.is-5-desktop { - flex: none; - width: 41.66667%; } - .column.is-offset-5-desktop { - margin-left: 41.66667%; } - .column.is-6-desktop { - flex: none; - width: 50%; } - .column.is-offset-6-desktop { - margin-left: 50%; } - .column.is-7-desktop { - flex: none; - width: 58.33333%; } - .column.is-offset-7-desktop { - margin-left: 58.33333%; } - .column.is-8-desktop { - flex: none; - width: 66.66667%; } - .column.is-offset-8-desktop { - margin-left: 66.66667%; } - .column.is-9-desktop { - flex: none; - width: 75%; } - .column.is-offset-9-desktop { - margin-left: 75%; } - .column.is-10-desktop { - flex: none; - width: 83.33333%; } - .column.is-offset-10-desktop { - margin-left: 83.33333%; } - .column.is-11-desktop { - flex: none; - width: 91.66667%; } - .column.is-offset-11-desktop { - margin-left: 91.66667%; } - .column.is-12-desktop { - flex: none; - width: 100%; } - .column.is-offset-12-desktop { - margin-left: 100%; } } - @media screen and (min-width: 1216px) { - .column.is-narrow-widescreen { - flex: none; } - .column.is-full-widescreen { - flex: none; - width: 100%; } - .column.is-three-quarters-widescreen { - flex: none; - width: 75%; } - .column.is-two-thirds-widescreen { - flex: none; - width: 66.6666%; } - .column.is-half-widescreen { - flex: none; - width: 50%; } - .column.is-one-third-widescreen { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-widescreen { - flex: none; - width: 25%; } - .column.is-one-fifth-widescreen { - flex: none; - width: 20%; } - .column.is-two-fifths-widescreen { - flex: none; - width: 40%; } - .column.is-three-fifths-widescreen { - flex: none; - width: 60%; } - .column.is-four-fifths-widescreen { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-widescreen { - margin-left: 75%; } - .column.is-offset-two-thirds-widescreen { - margin-left: 66.6666%; } - .column.is-offset-half-widescreen { - margin-left: 50%; } - .column.is-offset-one-third-widescreen { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-widescreen { - margin-left: 25%; } - .column.is-offset-one-fifth-widescreen { - margin-left: 20%; } - .column.is-offset-two-fifths-widescreen { - margin-left: 40%; } - .column.is-offset-three-fifths-widescreen { - margin-left: 60%; } - .column.is-offset-four-fifths-widescreen { - margin-left: 80%; } - .column.is-0-widescreen { - flex: none; - width: 0%; } - .column.is-offset-0-widescreen { - margin-left: 0%; } - .column.is-1-widescreen { - flex: none; - width: 8.33333%; } - .column.is-offset-1-widescreen { - margin-left: 8.33333%; } - .column.is-2-widescreen { - flex: none; - width: 16.66667%; } - .column.is-offset-2-widescreen { - margin-left: 16.66667%; } - .column.is-3-widescreen { - flex: none; - width: 25%; } - .column.is-offset-3-widescreen { - margin-left: 25%; } - .column.is-4-widescreen { - flex: none; - width: 33.33333%; } - .column.is-offset-4-widescreen { - margin-left: 33.33333%; } - .column.is-5-widescreen { - flex: none; - width: 41.66667%; } - .column.is-offset-5-widescreen { - margin-left: 41.66667%; } - .column.is-6-widescreen { - flex: none; - width: 50%; } - .column.is-offset-6-widescreen { - margin-left: 50%; } - .column.is-7-widescreen { - flex: none; - width: 58.33333%; } - .column.is-offset-7-widescreen { - margin-left: 58.33333%; } - .column.is-8-widescreen { - flex: none; - width: 66.66667%; } - .column.is-offset-8-widescreen { - margin-left: 66.66667%; } - .column.is-9-widescreen { - flex: none; - width: 75%; } - .column.is-offset-9-widescreen { - margin-left: 75%; } - .column.is-10-widescreen { - flex: none; - width: 83.33333%; } - .column.is-offset-10-widescreen { - margin-left: 83.33333%; } - .column.is-11-widescreen { - flex: none; - width: 91.66667%; } - .column.is-offset-11-widescreen { - margin-left: 91.66667%; } - .column.is-12-widescreen { - flex: none; - width: 100%; } - .column.is-offset-12-widescreen { - margin-left: 100%; } } - @media screen and (min-width: 1408px) { - .column.is-narrow-fullhd { - flex: none; } - .column.is-full-fullhd { - flex: none; - width: 100%; } - .column.is-three-quarters-fullhd { - flex: none; - width: 75%; } - .column.is-two-thirds-fullhd { - flex: none; - width: 66.6666%; } - .column.is-half-fullhd { - flex: none; - width: 50%; } - .column.is-one-third-fullhd { - flex: none; - width: 33.3333%; } - .column.is-one-quarter-fullhd { - flex: none; - width: 25%; } - .column.is-one-fifth-fullhd { - flex: none; - width: 20%; } - .column.is-two-fifths-fullhd { - flex: none; - width: 40%; } - .column.is-three-fifths-fullhd { - flex: none; - width: 60%; } - .column.is-four-fifths-fullhd { - flex: none; - width: 80%; } - .column.is-offset-three-quarters-fullhd { - margin-left: 75%; } - .column.is-offset-two-thirds-fullhd { - margin-left: 66.6666%; } - .column.is-offset-half-fullhd { - margin-left: 50%; } - .column.is-offset-one-third-fullhd { - margin-left: 33.3333%; } - .column.is-offset-one-quarter-fullhd { - margin-left: 25%; } - .column.is-offset-one-fifth-fullhd { - margin-left: 20%; } - .column.is-offset-two-fifths-fullhd { - margin-left: 40%; } - .column.is-offset-three-fifths-fullhd { - margin-left: 60%; } - .column.is-offset-four-fifths-fullhd { - margin-left: 80%; } - .column.is-0-fullhd { - flex: none; - width: 0%; } - .column.is-offset-0-fullhd { - margin-left: 0%; } - .column.is-1-fullhd { - flex: none; - width: 8.33333%; } - .column.is-offset-1-fullhd { - margin-left: 8.33333%; } - .column.is-2-fullhd { - flex: none; - width: 16.66667%; } - .column.is-offset-2-fullhd { - margin-left: 16.66667%; } - .column.is-3-fullhd { - flex: none; - width: 25%; } - .column.is-offset-3-fullhd { - margin-left: 25%; } - .column.is-4-fullhd { - flex: none; - width: 33.33333%; } - .column.is-offset-4-fullhd { - margin-left: 33.33333%; } - .column.is-5-fullhd { - flex: none; - width: 41.66667%; } - .column.is-offset-5-fullhd { - margin-left: 41.66667%; } - .column.is-6-fullhd { - flex: none; - width: 50%; } - .column.is-offset-6-fullhd { - margin-left: 50%; } - .column.is-7-fullhd { - flex: none; - width: 58.33333%; } - .column.is-offset-7-fullhd { - margin-left: 58.33333%; } - .column.is-8-fullhd { - flex: none; - width: 66.66667%; } - .column.is-offset-8-fullhd { - margin-left: 66.66667%; } - .column.is-9-fullhd { - flex: none; - width: 75%; } - .column.is-offset-9-fullhd { - margin-left: 75%; } - .column.is-10-fullhd { - flex: none; - width: 83.33333%; } - .column.is-offset-10-fullhd { - margin-left: 83.33333%; } - .column.is-11-fullhd { - flex: none; - width: 91.66667%; } - .column.is-offset-11-fullhd { - margin-left: 91.66667%; } - .column.is-12-fullhd { - flex: none; - width: 100%; } - .column.is-offset-12-fullhd { - margin-left: 100%; } } - -.columns { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - .columns:last-child { - margin-bottom: -0.75rem; } - .columns:not(:last-child) { - margin-bottom: calc(1.5rem - 0.75rem); } - .columns.is-centered { - justify-content: center; } - .columns.is-gapless { - margin-left: 0; - margin-right: 0; - margin-top: 0; } - .columns.is-gapless > .column { - margin: 0; - padding: 0 !important; } - .columns.is-gapless:not(:last-child) { - margin-bottom: 1.5rem; } - .columns.is-gapless:last-child { - margin-bottom: 0; } - .columns.is-mobile { - display: flex; } - .columns.is-multiline { - flex-wrap: wrap; } - .columns.is-vcentered { - align-items: center; } - @media screen and (min-width: 769px), print { - .columns:not(.is-desktop) { - display: flex; } } - @media screen and (min-width: 1056px) { - .columns.is-desktop { - display: flex; } } - -.columns.is-variable { - --columnGap: 0.75rem; - margin-left: calc(-1 * var(--columnGap)); - margin-right: calc(-1 * var(--columnGap)); } - .columns.is-variable .column { - padding-left: var(--columnGap); - padding-right: var(--columnGap); } - .columns.is-variable.is-0 { - --columnGap: 0rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-0-mobile { - --columnGap: 0rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-0-tablet { - --columnGap: 0rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-0-tablet-only { - --columnGap: 0rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-0-touch { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-0-desktop { - --columnGap: 0rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-0-desktop-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-0-widescreen { - --columnGap: 0rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-0-widescreen-only { - --columnGap: 0rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-0-fullhd { - --columnGap: 0rem; } } - .columns.is-variable.is-1 { - --columnGap: 0.25rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-1-mobile { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-1-tablet { - --columnGap: 0.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-1-tablet-only { - --columnGap: 0.25rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-1-touch { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-1-desktop { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-1-desktop-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-1-widescreen { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-1-widescreen-only { - --columnGap: 0.25rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-1-fullhd { - --columnGap: 0.25rem; } } - .columns.is-variable.is-2 { - --columnGap: 0.5rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-2-mobile { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-2-tablet { - --columnGap: 0.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-2-tablet-only { - --columnGap: 0.5rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-2-touch { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-2-desktop { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-2-desktop-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-2-widescreen { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-2-widescreen-only { - --columnGap: 0.5rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-2-fullhd { - --columnGap: 0.5rem; } } - .columns.is-variable.is-3 { - --columnGap: 0.75rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-3-mobile { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-3-tablet { - --columnGap: 0.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-3-tablet-only { - --columnGap: 0.75rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-3-touch { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-3-desktop { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-3-desktop-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-3-widescreen { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-3-widescreen-only { - --columnGap: 0.75rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-3-fullhd { - --columnGap: 0.75rem; } } - .columns.is-variable.is-4 { - --columnGap: 1rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-4-mobile { - --columnGap: 1rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-4-tablet { - --columnGap: 1rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-4-tablet-only { - --columnGap: 1rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-4-touch { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-4-desktop { - --columnGap: 1rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-4-desktop-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-4-widescreen { - --columnGap: 1rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-4-widescreen-only { - --columnGap: 1rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-4-fullhd { - --columnGap: 1rem; } } - .columns.is-variable.is-5 { - --columnGap: 1.25rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-5-mobile { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-5-tablet { - --columnGap: 1.25rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-5-tablet-only { - --columnGap: 1.25rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-5-touch { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-5-desktop { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-5-desktop-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-5-widescreen { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-5-widescreen-only { - --columnGap: 1.25rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-5-fullhd { - --columnGap: 1.25rem; } } - .columns.is-variable.is-6 { - --columnGap: 1.5rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-6-mobile { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-6-tablet { - --columnGap: 1.5rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-6-tablet-only { - --columnGap: 1.5rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-6-touch { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-6-desktop { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-6-desktop-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-6-widescreen { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-6-widescreen-only { - --columnGap: 1.5rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-6-fullhd { - --columnGap: 1.5rem; } } - .columns.is-variable.is-7 { - --columnGap: 1.75rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-7-mobile { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-7-tablet { - --columnGap: 1.75rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-7-tablet-only { - --columnGap: 1.75rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-7-touch { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-7-desktop { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-7-desktop-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-7-widescreen { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-7-widescreen-only { - --columnGap: 1.75rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-7-fullhd { - --columnGap: 1.75rem; } } - .columns.is-variable.is-8 { - --columnGap: 2rem; } - @media screen and (max-width: 768px) { - .columns.is-variable.is-8-mobile { - --columnGap: 2rem; } } - @media screen and (min-width: 769px), print { - .columns.is-variable.is-8-tablet { - --columnGap: 2rem; } } - @media screen and (min-width: 769px) and (max-width: 1055px) { - .columns.is-variable.is-8-tablet-only { - --columnGap: 2rem; } } - @media screen and (max-width: 1055px) { - .columns.is-variable.is-8-touch { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) { - .columns.is-variable.is-8-desktop { - --columnGap: 2rem; } } - @media screen and (min-width: 1056px) and (max-width: 1215px) { - .columns.is-variable.is-8-desktop-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) { - .columns.is-variable.is-8-widescreen { - --columnGap: 2rem; } } - @media screen and (min-width: 1216px) and (max-width: 1407px) { - .columns.is-variable.is-8-widescreen-only { - --columnGap: 2rem; } } - @media screen and (min-width: 1408px) { - .columns.is-variable.is-8-fullhd { - --columnGap: 2rem; } } - -.tile { - align-items: stretch; - display: block; - flex-basis: 0; - flex-grow: 1; - flex-shrink: 1; - min-height: min-content; } - .tile.is-ancestor { - margin-left: -0.75rem; - margin-right: -0.75rem; - margin-top: -0.75rem; } - .tile.is-ancestor:last-child { - margin-bottom: -0.75rem; } - .tile.is-ancestor:not(:last-child) { - margin-bottom: 0.75rem; } - .tile.is-child { - margin: 0 !important; } - .tile.is-parent { - padding: 0.75rem; } - .tile.is-vertical { - flex-direction: column; } - .tile.is-vertical > .tile.is-child:not(:last-child) { - margin-bottom: 1.5rem !important; } - @media screen and (min-width: 769px), print { - .tile:not(.is-child) { - display: flex; } - .tile.is-1 { - flex: none; - width: 8.33333%; } - .tile.is-2 { - flex: none; - width: 16.66667%; } - .tile.is-3 { - flex: none; - width: 25%; } - .tile.is-4 { - flex: none; - width: 33.33333%; } - .tile.is-5 { - flex: none; - width: 41.66667%; } - .tile.is-6 { - flex: none; - width: 50%; } - .tile.is-7 { - flex: none; - width: 58.33333%; } - .tile.is-8 { - flex: none; - width: 66.66667%; } - .tile.is-9 { - flex: none; - width: 75%; } - .tile.is-10 { - flex: none; - width: 83.33333%; } - .tile.is-11 { - flex: none; - width: 91.66667%; } - .tile.is-12 { - flex: none; - width: 100%; } } - -.hero { - align-items: stretch; - display: flex; - flex-direction: column; - justify-content: space-between; } - .hero .navbar { - background: none; } - .hero .tabs ul { - border-bottom: none; } - .hero.is-white { - background-color: white; - color: #0a0a0a; } - .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-white strong { - color: inherit; } - .hero.is-white .title { - color: #0a0a0a; } - .hero.is-white .subtitle { - color: rgba(10, 10, 10, 0.9); } - .hero.is-white .subtitle a:not(.button), - .hero.is-white .subtitle strong { - color: #0a0a0a; } - @media screen and (max-width: 1055px) { - .hero.is-white .navbar-menu { - background-color: white; } } - .hero.is-white .navbar-item, - .hero.is-white .navbar-link { - color: rgba(10, 10, 10, 0.7); } - .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, - .hero.is-white .navbar-link:hover, - .hero.is-white .navbar-link.is-active { - background-color: #f2f2f2; - color: #0a0a0a; } - .hero.is-white .tabs a { - color: #0a0a0a; - opacity: 0.9; } - .hero.is-white .tabs a:hover { - opacity: 1; } - .hero.is-white .tabs li.is-active a { - opacity: 1; } - .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { - color: #0a0a0a; } - .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { - background-color: #0a0a0a; - border-color: #0a0a0a; - color: white; } - .hero.is-white.is-bold { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } - @media screen and (max-width: 768px) { - .hero.is-white.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } - .hero.is-black { - background-color: #0a0a0a; - color: white; } - .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-black strong { - color: inherit; } - .hero.is-black .title { - color: white; } - .hero.is-black .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-black .subtitle a:not(.button), - .hero.is-black .subtitle strong { - color: white; } - @media screen and (max-width: 1055px) { - .hero.is-black .navbar-menu { - background-color: #0a0a0a; } } - .hero.is-black .navbar-item, - .hero.is-black .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, - .hero.is-black .navbar-link:hover, - .hero.is-black .navbar-link.is-active { - background-color: black; - color: white; } - .hero.is-black .tabs a { - color: white; - opacity: 0.9; } - .hero.is-black .tabs a:hover { - opacity: 1; } - .hero.is-black .tabs li.is-active a { - opacity: 1; } - .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { - color: white; } - .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { - background-color: white; - border-color: white; - color: #0a0a0a; } - .hero.is-black.is-bold { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } - @media screen and (max-width: 768px) { - .hero.is-black.is-bold .navbar-menu { - background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } - .hero.is-light { - background-color: whitesmoke; - color: #363636; } - .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-light strong { - color: inherit; } - .hero.is-light .title { - color: #363636; } - .hero.is-light .subtitle { - color: rgba(54, 54, 54, 0.9); } - .hero.is-light .subtitle a:not(.button), - .hero.is-light .subtitle strong { - color: #363636; } - @media screen and (max-width: 1055px) { - .hero.is-light .navbar-menu { - background-color: whitesmoke; } } - .hero.is-light .navbar-item, - .hero.is-light .navbar-link { - color: rgba(54, 54, 54, 0.7); } - .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, - .hero.is-light .navbar-link:hover, - .hero.is-light .navbar-link.is-active { - background-color: #e8e8e8; - color: #363636; } - .hero.is-light .tabs a { - color: #363636; - opacity: 0.9; } - .hero.is-light .tabs a:hover { - opacity: 1; } - .hero.is-light .tabs li.is-active a { - opacity: 1; } - .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { - color: #363636; } - .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { - background-color: #363636; - border-color: #363636; - color: whitesmoke; } - .hero.is-light.is-bold { - background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } - @media screen and (max-width: 768px) { - .hero.is-light.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } } - .hero.is-dark, .content kbd.hero { - background-color: #363636; - color: whitesmoke; } - .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-dark strong, - .content kbd.hero strong { - color: inherit; } - .hero.is-dark .title, .content kbd.hero .title { - color: whitesmoke; } - .hero.is-dark .subtitle, .content kbd.hero .subtitle { - color: rgba(245, 245, 245, 0.9); } - .hero.is-dark .subtitle a:not(.button), .content kbd.hero .subtitle a:not(.button), - .hero.is-dark .subtitle strong, - .content kbd.hero .subtitle strong { - color: whitesmoke; } - @media screen and (max-width: 1055px) { - .hero.is-dark .navbar-menu, .content kbd.hero .navbar-menu { - background-color: #363636; } } - .hero.is-dark .navbar-item, .content kbd.hero .navbar-item, - .hero.is-dark .navbar-link, - .content kbd.hero .navbar-link { - color: rgba(245, 245, 245, 0.7); } - .hero.is-dark a.navbar-item:hover, .content kbd.hero a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, .content kbd.hero a.navbar-item.is-active, - .hero.is-dark .navbar-link:hover, - .content kbd.hero .navbar-link:hover, - .hero.is-dark .navbar-link.is-active, - .content kbd.hero .navbar-link.is-active { - background-color: #292929; - color: whitesmoke; } - .hero.is-dark .tabs a, .content kbd.hero .tabs a { - color: whitesmoke; - opacity: 0.9; } - .hero.is-dark .tabs a:hover, .content kbd.hero .tabs a:hover { - opacity: 1; } - .hero.is-dark .tabs li.is-active a, .content kbd.hero .tabs li.is-active a { - opacity: 1; } - .hero.is-dark .tabs.is-boxed a, .content kbd.hero .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a, .content kbd.hero .tabs.is-toggle a { - color: whitesmoke; } - .hero.is-dark .tabs.is-boxed a:hover, .content kbd.hero .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover, .content kbd.hero .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-dark .tabs.is-boxed li.is-active a, .content kbd.hero .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .content kbd.hero .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .content kbd.hero .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover, .content kbd.hero .tabs.is-toggle li.is-active a:hover { - background-color: whitesmoke; - border-color: whitesmoke; - color: #363636; } - .hero.is-dark.is-bold, .content kbd.hero.is-bold { - background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } - @media screen and (max-width: 768px) { - .hero.is-dark.is-bold .navbar-menu, .content kbd.hero.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } } - .hero.is-primary, .docstring > section > a.hero.docs-sourcelink { - background-color: #4eb5de; - color: #fff; } - .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-primary strong, - .docstring > section > a.hero.docs-sourcelink strong { - color: inherit; } - .hero.is-primary .title, .docstring > section > a.hero.docs-sourcelink .title { - color: #fff; } - .hero.is-primary .subtitle, .docstring > section > a.hero.docs-sourcelink .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-primary .subtitle a:not(.button), .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), - .hero.is-primary .subtitle strong, - .docstring > section > a.hero.docs-sourcelink .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-primary .navbar-menu, .docstring > section > a.hero.docs-sourcelink .navbar-menu { - background-color: #4eb5de; } } - .hero.is-primary .navbar-item, .docstring > section > a.hero.docs-sourcelink .navbar-item, - .hero.is-primary .navbar-link, - .docstring > section > a.hero.docs-sourcelink .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-primary a.navbar-item:hover, .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, - .hero.is-primary .navbar-link:hover, - .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, - .hero.is-primary .navbar-link.is-active, - .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { - background-color: #39acda; - color: #fff; } - .hero.is-primary .tabs a, .docstring > section > a.hero.docs-sourcelink .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-primary .tabs a:hover, .docstring > section > a.hero.docs-sourcelink .tabs a:hover { - opacity: 1; } - .hero.is-primary .tabs li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { - opacity: 1; } - .hero.is-primary .tabs.is-boxed a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { - color: #fff; } - .hero.is-primary .tabs.is-boxed a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-primary .tabs.is-boxed li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #4eb5de; } - .hero.is-primary.is-bold, .docstring > section > a.hero.is-bold.docs-sourcelink { - background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } - @media screen and (max-width: 768px) { - .hero.is-primary.is-bold .navbar-menu, .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { - background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } } - .hero.is-link { - background-color: #2e63b8; - color: #fff; } - .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-link strong { - color: inherit; } - .hero.is-link .title { - color: #fff; } - .hero.is-link .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-link .subtitle a:not(.button), - .hero.is-link .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-link .navbar-menu { - background-color: #2e63b8; } } - .hero.is-link .navbar-item, - .hero.is-link .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, - .hero.is-link .navbar-link:hover, - .hero.is-link .navbar-link.is-active { - background-color: #2958a4; - color: #fff; } - .hero.is-link .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-link .tabs a:hover { - opacity: 1; } - .hero.is-link .tabs li.is-active a { - opacity: 1; } - .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { - color: #fff; } - .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #2e63b8; } - .hero.is-link.is-bold { - background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } - @media screen and (max-width: 768px) { - .hero.is-link.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } } - .hero.is-info { - background-color: #209cee; - color: #fff; } - .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-info strong { - color: inherit; } - .hero.is-info .title { - color: #fff; } - .hero.is-info .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-info .subtitle a:not(.button), - .hero.is-info .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-info .navbar-menu { - background-color: #209cee; } } - .hero.is-info .navbar-item, - .hero.is-info .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, - .hero.is-info .navbar-link:hover, - .hero.is-info .navbar-link.is-active { - background-color: #118fe4; - color: #fff; } - .hero.is-info .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-info .tabs a:hover { - opacity: 1; } - .hero.is-info .tabs li.is-active a { - opacity: 1; } - .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { - color: #fff; } - .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #209cee; } - .hero.is-info.is-bold { - background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } - @media screen and (max-width: 768px) { - .hero.is-info.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } } - .hero.is-success { - background-color: #22c35b; - color: #fff; } - .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-success strong { - color: inherit; } - .hero.is-success .title { - color: #fff; } - .hero.is-success .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-success .subtitle a:not(.button), - .hero.is-success .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-success .navbar-menu { - background-color: #22c35b; } } - .hero.is-success .navbar-item, - .hero.is-success .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, - .hero.is-success .navbar-link:hover, - .hero.is-success .navbar-link.is-active { - background-color: #1ead51; - color: #fff; } - .hero.is-success .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-success .tabs a:hover { - opacity: 1; } - .hero.is-success .tabs li.is-active a { - opacity: 1; } - .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { - color: #fff; } - .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #22c35b; } - .hero.is-success.is-bold { - background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } - @media screen and (max-width: 768px) { - .hero.is-success.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } } - .hero.is-warning { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-warning strong { - color: inherit; } - .hero.is-warning .title { - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning .subtitle { - color: rgba(0, 0, 0, 0.9); } - .hero.is-warning .subtitle a:not(.button), - .hero.is-warning .subtitle strong { - color: rgba(0, 0, 0, 0.7); } - @media screen and (max-width: 1055px) { - .hero.is-warning .navbar-menu { - background-color: #ffdd57; } } - .hero.is-warning .navbar-item, - .hero.is-warning .navbar-link { - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, - .hero.is-warning .navbar-link:hover, - .hero.is-warning .navbar-link.is-active { - background-color: #ffd83d; - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning .tabs a { - color: rgba(0, 0, 0, 0.7); - opacity: 0.9; } - .hero.is-warning .tabs a:hover { - opacity: 1; } - .hero.is-warning .tabs li.is-active a { - opacity: 1; } - .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { - color: rgba(0, 0, 0, 0.7); } - .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { - background-color: rgba(0, 0, 0, 0.7); - border-color: rgba(0, 0, 0, 0.7); - color: #ffdd57; } - .hero.is-warning.is-bold { - background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } - @media screen and (max-width: 768px) { - .hero.is-warning.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } } - .hero.is-danger { - background-color: #da0b00; - color: #fff; } - .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - .hero.is-danger strong { - color: inherit; } - .hero.is-danger .title { - color: #fff; } - .hero.is-danger .subtitle { - color: rgba(255, 255, 255, 0.9); } - .hero.is-danger .subtitle a:not(.button), - .hero.is-danger .subtitle strong { - color: #fff; } - @media screen and (max-width: 1055px) { - .hero.is-danger .navbar-menu { - background-color: #da0b00; } } - .hero.is-danger .navbar-item, - .hero.is-danger .navbar-link { - color: rgba(255, 255, 255, 0.7); } - .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, - .hero.is-danger .navbar-link:hover, - .hero.is-danger .navbar-link.is-active { - background-color: #c10a00; - color: #fff; } - .hero.is-danger .tabs a { - color: #fff; - opacity: 0.9; } - .hero.is-danger .tabs a:hover { - opacity: 1; } - .hero.is-danger .tabs li.is-active a { - opacity: 1; } - .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { - color: #fff; } - .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { - background-color: rgba(10, 10, 10, 0.1); } - .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { - background-color: #fff; - border-color: #fff; - color: #da0b00; } - .hero.is-danger.is-bold { - background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } - @media screen and (max-width: 768px) { - .hero.is-danger.is-bold .navbar-menu { - background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } } - .hero.is-small .hero-body, #documenter .docs-sidebar form.docs-search > input.hero .hero-body { - padding-bottom: 1.5rem; - padding-top: 1.5rem; } - @media screen and (min-width: 769px), print { - .hero.is-medium .hero-body { - padding-bottom: 9rem; - padding-top: 9rem; } } - @media screen and (min-width: 769px), print { - .hero.is-large .hero-body { - padding-bottom: 18rem; - padding-top: 18rem; } } - .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { - align-items: center; - display: flex; } - .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { - flex-grow: 1; - flex-shrink: 1; } - .hero.is-halfheight { - min-height: 50vh; } - .hero.is-fullheight { - min-height: 100vh; } - -.hero-video { - overflow: hidden; } - .hero-video video { - left: 50%; - min-height: 100%; - min-width: 100%; - position: absolute; - top: 50%; - transform: translate3d(-50%, -50%, 0); } - .hero-video.is-transparent { - opacity: 0.3; } - @media screen and (max-width: 768px) { - .hero-video { - display: none; } } - -.hero-buttons { - margin-top: 1.5rem; } - @media screen and (max-width: 768px) { - .hero-buttons .button { - display: flex; } - .hero-buttons .button:not(:last-child) { - margin-bottom: 0.75rem; } } - @media screen and (min-width: 769px), print { - .hero-buttons { - display: flex; - justify-content: center; } - .hero-buttons .button:not(:last-child) { - margin-right: 1.5rem; } } - -.hero-head, -.hero-foot { - flex-grow: 0; - flex-shrink: 0; } - -.hero-body { - flex-grow: 1; - flex-shrink: 0; - padding: 3rem 1.5rem; } - -.section { - padding: 3rem 1.5rem; } - @media screen and (min-width: 1056px) { - .section.is-medium { - padding: 9rem 1.5rem; } - .section.is-large { - padding: 18rem 1.5rem; } } - -.footer { - background-color: #fafafa; - padding: 3rem 1.5rem 6rem; } - -h1 .docs-heading-anchor, h1 .docs-heading-anchor:hover, h1 .docs-heading-anchor:visited, h2 .docs-heading-anchor, h2 .docs-heading-anchor:hover, h2 .docs-heading-anchor:visited, h3 .docs-heading-anchor, h3 .docs-heading-anchor:hover, h3 .docs-heading-anchor:visited, h4 .docs-heading-anchor, h4 .docs-heading-anchor:hover, h4 .docs-heading-anchor:visited, h5 .docs-heading-anchor, h5 .docs-heading-anchor:hover, h5 .docs-heading-anchor:visited, h6 .docs-heading-anchor, h6 .docs-heading-anchor:hover, h6 .docs-heading-anchor:visited { - color: #222222; } - -h1 .docs-heading-anchor-permalink, h2 .docs-heading-anchor-permalink, h3 .docs-heading-anchor-permalink, h4 .docs-heading-anchor-permalink, h5 .docs-heading-anchor-permalink, h6 .docs-heading-anchor-permalink { - visibility: hidden; - vertical-align: middle; - margin-left: 0.5em; - font-size: 0.7rem; } - h1 .docs-heading-anchor-permalink::before, h2 .docs-heading-anchor-permalink::before, h3 .docs-heading-anchor-permalink::before, h4 .docs-heading-anchor-permalink::before, h5 .docs-heading-anchor-permalink::before, h6 .docs-heading-anchor-permalink::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f0c1"; } - -h1:hover .docs-heading-anchor-permalink, h2:hover .docs-heading-anchor-permalink, h3:hover .docs-heading-anchor-permalink, h4:hover .docs-heading-anchor-permalink, h5:hover .docs-heading-anchor-permalink, h6:hover .docs-heading-anchor-permalink { - visibility: visible; } - -.docs-dark-only { - display: none !important; } - -.admonition { - background-color: #b5b5b5; - border-style: solid; - border-width: 1px; - border-color: #363636; - border-radius: 4px; - font-size: 1rem; } - .admonition strong { - color: currentColor; } - .admonition.is-small, #documenter .docs-sidebar form.docs-search > input.admonition { - font-size: 0.75rem; } - .admonition.is-medium { - font-size: 1.25rem; } - .admonition.is-large { - font-size: 1.5rem; } - .admonition.is-default { - background-color: #b5b5b5; - border-color: #363636; } - .admonition.is-default > .admonition-header { - background-color: #363636; - color: #fff; } - .admonition.is-default > .admonition-body { - color: #fff; } - .admonition.is-info { - background-color: #b8dffa; - border-color: #209cee; } - .admonition.is-info > .admonition-header { - background-color: #209cee; - color: #fff; } - .admonition.is-info > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - .admonition.is-success { - background-color: #9beeb8; - border-color: #22c35b; } - .admonition.is-success > .admonition-header { - background-color: #22c35b; - color: #fff; } - .admonition.is-success > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - .admonition.is-warning { - background-color: #fff3c5; - border-color: #ffdd57; } - .admonition.is-warning > .admonition-header { - background-color: #ffdd57; - color: rgba(0, 0, 0, 0.7); } - .admonition.is-warning > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - .admonition.is-danger { - background-color: #ff857e; - border-color: #da0b00; } - .admonition.is-danger > .admonition-header { - background-color: #da0b00; - color: #fff; } - .admonition.is-danger > .admonition-body { - color: #fff; } - .admonition.is-compat { - background-color: #99e6f0; - border-color: #1db5c9; } - .admonition.is-compat > .admonition-header { - background-color: #1db5c9; - color: #fff; } - .admonition.is-compat > .admonition-body { - color: rgba(0, 0, 0, 0.7); } - -.admonition-header { - color: #fff; - background-color: #363636; - align-items: center; - font-weight: 700; - justify-content: space-between; - line-height: 1.25; - padding: 0.75em; - position: relative; } - .admonition-header:before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - margin-right: 0.75em; - content: "\f06a"; } - -.admonition-body { - color: #222222; - padding: 1em 1.25em; } - .admonition-body pre { - background-color: whitesmoke; } - .admonition-body code { - background-color: rgba(0, 0, 0, 0.05); } - -.docstring { - margin-bottom: 1em; - background-color: transparent; - border: 1px solid #dbdbdb; - box-shadow: 2px 2px 3px rgba(10, 10, 10, 0.1); - max-width: 100%; } - .docstring > header { - display: flex; - flex-grow: 1; - align-items: stretch; - padding: 0.75rem; - background-color: whitesmoke; - box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); - box-shadow: none; - border-bottom: 1px solid #dbdbdb; } - .docstring > header code { - background-color: transparent; } - .docstring > header .docstring-binding { - margin-right: 0.3em; } - .docstring > header .docstring-category { - margin-left: 0.3em; } - .docstring > section { - position: relative; - padding: 1rem 1.25rem; - border-bottom: 1px solid #dbdbdb; } - .docstring > section:last-child { - border-bottom: none; } - .docstring > section > a.docs-sourcelink { - transition: opacity 0.3s; - opacity: 0; - position: absolute; - right: 0.625rem; - bottom: 0.5rem; } - .docstring:hover > section > a.docs-sourcelink { - opacity: 0.2; } - .docstring > section:hover a.docs-sourcelink { - opacity: 1; } - -.documenter-example-output { - background-color: white; } - -.content pre { - border: 1px solid #dbdbdb; } - -.content code { - font-weight: inherit; } - -.content a code { - color: #2e63b8; } - -.content h1 code, .content h2 code, .content h3 code, .content h4 code, .content h5 code, .content h6 code { - color: #222222; } - -.content table { - display: block; - width: initial; - max-width: 100%; - overflow-x: auto; } - -.content blockquote > ul:first-child, .content blockquote > ol:first-child, .content .admonition-body > ul:first-child, .content .admonition-body > ol:first-child { - margin-top: 0; } - -.breadcrumb a.is-disabled { - cursor: default; - pointer-events: none; } - .breadcrumb a.is-disabled, .breadcrumb a.is-disabled:hover { - color: #222222; } - -.hljs { - background: initial !important; - padding: initial !important; } - -.katex .katex-mathml { - top: 0; - right: 0; } - -html { - -moz-osx-font-smoothing: auto; - -webkit-font-smoothing: auto; } - -/* This file contain the overall layout. - * - * The main container is
        that is identified by id #documenter. - */ -#documenter .docs-main > article { - overflow-wrap: break-word; } - -@media screen and (min-width: 1056px) { - #documenter .docs-main { - max-width: 52rem; - margin-left: 20rem; - padding-right: 1rem; } } - -@media screen and (max-width: 1055px) { - #documenter .docs-main { - width: 100%; } - #documenter .docs-main > article { - max-width: 52rem; - margin-left: auto; - margin-right: auto; - margin-bottom: 1rem; - padding: 0 1rem; } - #documenter .docs-main > header, #documenter .docs-main > nav { - max-width: 100%; - width: 100%; - margin: 0; } } - -#documenter .docs-main header.docs-navbar { - background-color: white; - border-bottom: 1px solid #dbdbdb; - z-index: 2; - min-height: 4rem; - margin-bottom: 1rem; - display: flex; } - #documenter .docs-main header.docs-navbar .breadcrumb { - flex-grow: 1; } - #documenter .docs-main header.docs-navbar .docs-right { - display: flex; - white-space: nowrap; } - #documenter .docs-main header.docs-navbar .docs-right .docs-icon, #documenter .docs-main header.docs-navbar .docs-right .docs-label, #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - display: inline-block; } - #documenter .docs-main header.docs-navbar .docs-right .docs-label { - padding: 0; - margin-left: 0.3em; } - #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { - margin: auto 0 auto 1rem; } - #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { - font-size: 1.5rem; - margin: auto 0 auto 1rem; } - #documenter .docs-main header.docs-navbar > * { - margin: auto 0; } - @media screen and (max-width: 1055px) { - #documenter .docs-main header.docs-navbar { - position: sticky; - top: 0; - padding: 0 1rem; - /* For Headroom.js */ - transition-property: top, box-shadow; - -webkit-transition-property: top, box-shadow; - /* Safari */ - transition-duration: 0.3s; - -webkit-transition-duration: 0.3s; - /* Safari */ } - #documenter .docs-main header.docs-navbar.headroom--not-top { - box-shadow: 0.2rem 0rem 0.4rem #bbb; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } - #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { - top: -4.5rem; - transition-duration: 0.7s; - -webkit-transition-duration: 0.7s; - /* Safari */ } } - -#documenter .docs-main section.footnotes { - border-top: 1px solid #dbdbdb; } - #documenter .docs-main section.footnotes li .tag:first-child, #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, #documenter .docs-main section.footnotes li .content kbd:first-child, .content #documenter .docs-main section.footnotes li kbd:first-child { - margin-right: 1em; - margin-bottom: 0.4em; } - -#documenter .docs-main .docs-footer { - display: flex; - flex-wrap: wrap; - margin-left: 0; - margin-right: 0; - border-top: 1px solid #dbdbdb; - padding-top: 1rem; - padding-bottom: 1rem; } - @media screen and (max-width: 1055px) { - #documenter .docs-main .docs-footer { - padding-left: 1rem; - padding-right: 1rem; } } - #documenter .docs-main .docs-footer .docs-footer-nextpage, #documenter .docs-main .docs-footer .docs-footer-prevpage { - flex-grow: 1; } - #documenter .docs-main .docs-footer .docs-footer-nextpage { - text-align: right; } - #documenter .docs-main .docs-footer .flexbox-break { - flex-basis: 100%; - height: 0; } - #documenter .docs-main .docs-footer .footer-message { - font-size: 0.8em; - margin: 0.5em auto 0 auto; - text-align: center; } - -#documenter .docs-sidebar { - display: flex; - flex-direction: column; - color: #0a0a0a; - background-color: whitesmoke; - border-right: 1px solid #dbdbdb; - padding: 0; - flex: 0 0 18rem; - z-index: 5; - font-size: 1rem; - position: fixed; - left: -18rem; - width: 18rem; - height: 100%; - transition: left 0.3s; - /* Setting up a nicer theme style for the scrollbar */ } - #documenter .docs-sidebar.visible { - left: 0; - box-shadow: 0.4rem 0rem 0.8rem #bbb; } - @media screen and (min-width: 1056px) { - #documenter .docs-sidebar.visible { - box-shadow: none; } } - @media screen and (min-width: 1056px) { - #documenter .docs-sidebar { - left: 0; - top: 0; } } - #documenter .docs-sidebar .docs-logo { - margin-top: 1rem; - padding: 0 1rem; } - #documenter .docs-sidebar .docs-logo > img { - max-height: 6rem; - margin: auto; } - #documenter .docs-sidebar .docs-package-name { - flex-shrink: 0; - font-size: 1.5rem; - font-weight: 700; - text-align: center; - white-space: nowrap; - overflow: hidden; - padding: 0.5rem 0; } - #documenter .docs-sidebar .docs-package-name .docs-autofit { - max-width: 16.2rem; } - #documenter .docs-sidebar .docs-version-selector { - border-top: 1px solid #dbdbdb; - display: none; - padding: 0.5rem; } - #documenter .docs-sidebar .docs-version-selector.visible { - display: flex; } - #documenter .docs-sidebar ul.docs-menu { - flex-grow: 1; - user-select: none; - border-top: 1px solid #dbdbdb; - padding-bottom: 1.5rem; - /* Managing collapsible submenus */ } - #documenter .docs-sidebar ul.docs-menu > li > .tocitem { - font-weight: bold; } - #documenter .docs-sidebar ul.docs-menu > li li { - font-size: 0.95rem; - margin-left: 1em; - border-left: 1px solid #dbdbdb; } - #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { - display: none; } - #documenter .docs-sidebar ul.docs-menu ul.collapsed { - display: none; } - #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { - display: block; } - #documenter .docs-sidebar ul.docs-menu label.tocitem { - display: flex; } - #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { - flex-grow: 2; } - #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - font-size: 0.75rem; - margin-left: 1rem; - margin-top: auto; - margin-bottom: auto; } - #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f054"; } - #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { - content: "\f078"; } - #documenter .docs-sidebar ul.docs-menu .tocitem { - display: block; - padding: 0.5rem 0.5rem; } - #documenter .docs-sidebar ul.docs-menu .tocitem, #documenter .docs-sidebar ul.docs-menu .tocitem:hover { - color: #0a0a0a; - background: whitesmoke; } - #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { - color: #0a0a0a; - background-color: #ebebeb; } - #documenter .docs-sidebar ul.docs-menu li.is-active { - border-top: 1px solid #dbdbdb; - border-bottom: 1px solid #dbdbdb; - background-color: white; } - #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover { - background-color: white; - color: #0a0a0a; } - #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover { - background-color: #ebebeb; - color: #0a0a0a; } - #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { - border-top: none; } - #documenter .docs-sidebar ul.docs-menu ul.internal { - margin: 0 0.5rem 0.5rem; - border-top: 1px solid #dbdbdb; } - #documenter .docs-sidebar ul.docs-menu ul.internal li { - font-size: 0.85rem; - border-left: none; - margin-left: 0; - margin-top: 0.5rem; } - #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { - width: 100%; - padding: 0; } - #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { - content: "⚬"; - margin-right: 0.4em; } - #documenter .docs-sidebar form.docs-search { - margin: auto; - margin-top: 0.5rem; - margin-bottom: 0.5rem; } - #documenter .docs-sidebar form.docs-search > input { - width: 14.4rem; } - @media screen and (min-width: 1056px) { - #documenter .docs-sidebar ul.docs-menu { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { - width: .3rem; - background: none; } - #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #e0e0e0; } - #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { - background: #cccccc; } } - @media screen and (max-width: 1055px) { - #documenter .docs-sidebar { - overflow-y: auto; - -webkit-overflow-scroll: touch; } - #documenter .docs-sidebar::-webkit-scrollbar { - width: .3rem; - background: none; } - #documenter .docs-sidebar::-webkit-scrollbar-thumb { - border-radius: 5px 0px 0px 5px; - background: #e0e0e0; } - #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { - background: #cccccc; } } - -#documenter .docs-main #documenter-search-info { - margin-bottom: 1rem; } - -#documenter .docs-main #documenter-search-results { - list-style-type: circle; - list-style-position: outside; } - #documenter .docs-main #documenter-search-results li { - margin-left: 2rem; } - #documenter .docs-main #documenter-search-results .docs-highlight { - background-color: yellow; } - -/* - -Original highlight.js style (c) Ivan Sagalaev - -*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; } - -/* Base color: saturation 0; */ -.hljs, -.hljs-subst { - color: #444; } - -.hljs-comment { - color: #888888; } - -.hljs-keyword, -.hljs-attribute, -.hljs-selector-tag, -.hljs-meta-keyword, -.hljs-doctag, -.hljs-name { - font-weight: bold; } - -/* User color: hue: 0 */ -.hljs-type, -.hljs-string, -.hljs-number, -.hljs-selector-id, -.hljs-selector-class, -.hljs-quote, -.hljs-template-tag, -.hljs-deletion { - color: #880000; } - -.hljs-title, -.hljs-section { - color: #880000; - font-weight: bold; } - -.hljs-regexp, -.hljs-symbol, -.hljs-variable, -.hljs-template-variable, -.hljs-link, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #BC6060; } - -/* Language color: hue: 90; */ -.hljs-literal { - color: #78A960; } - -.hljs-built_in, -.hljs-bullet, -.hljs-code, -.hljs-addition { - color: #397300; } - -/* Meta color: hue: 200 */ -.hljs-meta { - color: #1f7199; } - -.hljs-meta-string { - color: #4d99bf; } - -/* Misc effects */ -.hljs-emphasis { - font-style: italic; } - -.hljs-strong { - font-weight: bold; } diff --git a/docs/build/assets/themeswap.js b/docs/build/assets/themeswap.js deleted file mode 100644 index d466684..0000000 --- a/docs/build/assets/themeswap.js +++ /dev/null @@ -1,42 +0,0 @@ -// Small function to quickly swap out themes. Gets put into the tag.. -function set_theme_from_local_storage() { - // Browser does not support Web Storage, bail early. - if(typeof(window.localStorage) === "undefined") return; - // Get the user-picked theme from localStorage. May be `null`, which means the default - // theme. - var theme = window.localStorage.getItem("documenter-theme"); - // Initialize a few variables for the loop: - // - // - active: will contain the index of the theme that should be active. Note that there - // is no guarantee that localStorage contains sane values. If `active` stays `null` - // we either could not find the theme or it is the default (primary) theme anyway. - // Either way, we then need to stick to the primary theme. - // - // - disabled: style sheets that should be disabled (i.e. all the theme style sheets - // that are not the currently active theme) - var active = null; var disabled = []; - for (var i = 0; i < document.styleSheets.length; i++) { - var ss = document.styleSheets[i]; - // The tag of each style sheet is expected to have a data-theme-name attribute - // which must contain the name of the theme. The names in localStorage much match this. - var themename = ss.ownerNode.getAttribute("data-theme-name"); - // attribute not set => non-theme stylesheet => ignore - if(themename === null) continue; - // To distinguish the default (primary) theme, it needs to have the data-theme-primary - // attribute set. - var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null); - // If we find a matching theme (and it's not the default), we'll set active to non-null - if(!isprimary && themename === theme) active = i; - // Store the style sheets of inactive themes so that we could disable them - if(themename !== theme) disabled.push(ss); - } - if(active !== null) { - // If we did find an active theme, we'll (1) add the theme--$(theme) class to - document.getElementsByTagName('html')[0].className = "theme--" + theme; - // and (2) disable all the other theme stylesheets - disabled.forEach(function(ss){ - ss.disabled = true; - }); - } -} -set_theme_from_local_storage(); diff --git a/docs/build/index.html b/docs/build/index.html deleted file mode 100644 index f7296d2..0000000 --- a/docs/build/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -About · Julia Generalized Disjunctive Programming
        diff --git a/docs/build/search/index.html b/docs/build/search/index.html deleted file mode 100644 index 970efed..0000000 --- a/docs/build/search/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Search · Julia Generalized Disjunctive Programming

        Loading search...

          diff --git a/docs/build/search_index.js b/docs/build/search_index.js deleted file mode 100644 index f0570ac..0000000 --- a/docs/build/search_index.js +++ /dev/null @@ -1,3 +0,0 @@ -var documenterSearchIndex = {"docs": -[{"location":"#Overview","page":"About","title":"Overview","text":"","category":"section"},{"location":"","page":"About","title":"About","text":"JuGDP.jl","category":"page"}] -} diff --git a/examples/ex1.jl b/examples/ex1.jl index 9dfb167..b6810d7 100644 --- a/examples/ex1.jl +++ b/examples/ex1.jl @@ -1,31 +1,77 @@ using JuMP using DisjunctiveProgramming +using HiGHS -m = Model() +## Example 1: Linear GDP + +# Disjunction Method 1: Assign Logical Variables Explicitly +m = GDPModel() @variable(m, -5 ≤ x ≤ 10) -@disjunction( - m, - 0 ≤ x ≤ 3, - 5 ≤ x ≤ 9, - reformulation=:big_m, - name=:y -) -choose!(m, 1, m[:y]...; mode = :exactly, name = "XOR") #XOR constraint -@proposition(m, y[1] ∨ y[2], name = "prop") #this is a redundant proposition +@variable(m, Y[1:2], LogicalVariable) +@constraint(m, 0 ≤ x ≤ 3, DisjunctConstraint(Y[1])) +@constraint(m, 5 ≤ x, DisjunctConstraint(Y[2])) +@constraint(m, x ≤ 9, DisjunctConstraint(Y[2])) +@disjunction(m, [Y[1], Y[2]]) +@constraint(m, Y in Exactly(1)) +@objective(m, Max, x) +# Reformulate logical variables and logical constraints print(m) +# Max x +# Subject to +# x ≥ -5 +# x ≤ 10 + +## Indicator Constraints reformulation (NOTE: HiGHS doesn't support indicator constraints) +reformulate_model(m, Indicator()) +print(m) +# Max x +# Subject to +# Y[1] + Y[2] = 1 +# Y[2] => {-x ≤ -5} +# Y[2] => {x ≤ 9} +# x ≥ -5 +# x ≤ 10 +# Y[1] binary +# Y[2] binary +# Y[1] => {x ∈ [0, 3]} -# ┌ Warning: disj_y[1] : x in [0.0, 3.0] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. -# ┌ Warning: disj_y[2] : x in [5.0, 9.0] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. -# Feasibility +## BigM reformulation +set_optimizer(m, HiGHS.Optimizer) +optimize!(m, method = BigM()) +print(m) +# Max x +# Subject to +# Y[1] + Y[2] = 1 +# x - 5 Y[1] ≥ -5 +# x + 7 Y[1] ≤ 10 +# -x + 10 Y[2] ≤ 5 +# x + Y[2] ≤ 10 +# x ≥ -5 +# x ≤ 10 +# Y[1] binary +# Y[2] binary + +## Hull reformulation +optimize!(m, method = Hull()) +print(m) +# Max x # Subject to -# XOR : y[1] + y[2] == 1.0 <- XOR constraint -# prop : y[1] + y[2] >= 1.0 <- reformulated logical proposition (name is the proposition) -# disj_y[1,lb] : -x + 5 y[1] <= 5.0 <- left-side of constraint in 1st disjunct (name is assigned to disj_y[1][lb]) -# disj_y[1,ub] : x + 7 y[1] <= 10.0 <- right-side of constraint in 1st disjunct (name is assigned to disj_y[1][ub]) -# disj_y[2,lb] : -x + 10 y[2] <= 5.0 <- left-side of constraint in 2nd disjunct (name is assigned to disj_y[2][lb]) -# disj_y[2,ub] : x + y[2] <= 10.0 <- right-side of constraint in 2nd disjunct (name is assigned to disj_y[2][ub]) -# x >= -5.0 <- variable lower bound -# x <= 10.0 <- variable upper bound -# y[1] binary <- indicator variable (1st disjunct) is binary -# y[2] binary <- indicator variable (2nd disjunct) is binary \ No newline at end of file +# -x + x_Y[1] + x_Y[2] = 0 +# Y[1] + Y[2] = 1 +# x_Y[1] ≥ 0 +# x_Y[1]_lower_bound : -5 Y[1] - x_Y[1] ≤ 0 +# x_Y[1]_upper_bound : -10 Y[1] + x_Y[1] ≤ 0 +# x_Y[2]_lower_bound : -5 Y[2] - x_Y[2] ≤ 0 +# x_Y[2]_upper_bound : -10 Y[2] + x_Y[2] ≤ 0 +# -3 Y[1] + x_Y[1] ≤ 0 +# 5 Y[2] - x_Y[2] ≤ 0 +# -9 Y[2] + x_Y[2] ≤ 0 +# x ≥ -5 +# x_Y[1] ≥ -5 +# x_Y[2] ≥ -5 +# x ≤ 10 +# x_Y[1] ≤ 10 +# x_Y[2] ≤ 10 +# Y[1] binary +# Y[2] binary \ No newline at end of file diff --git a/examples/ex2.jl b/examples/ex2.jl index bf840cb..d23a540 100644 --- a/examples/ex2.jl +++ b/examples/ex2.jl @@ -1,37 +1,80 @@ -# https://optimization.mccormick.northwestern.edu/index.php/Disjunctive_inequalities +# https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Big-M_Reformulation[1][2] using JuMP using DisjunctiveProgramming +using HiGHS -m = Model() -@variable(m, -5 ≤ x[1:2] ≤ 10) -@disjunction( - m, - begin - con1[i=1:2], 0 ≤ x[i] ≤ [3,4][i] - end, - begin - con2[i=1:2], [5,4][i] ≤ x[i] ≤ [9,6][i] - end, - reformulation = :big_m, - name = :y -) -choose!(m, 1, m[:y]...; mode = :exactly, name = "XOR") #XOR constraint +m = GDPModel(HiGHS.Optimizer) +@variable(m, 0 ≤ x[1:2] ≤ 20) +@variable(m, Y[1:2], LogicalVariable) +@constraint(m, [i = 1:2], [2,5][i] ≤ x[i] ≤ [6,9][i], DisjunctConstraint(Y[1])) +@constraint(m, [i = 1:2], [8,10][i] ≤ x[i] ≤ [11,15][i], DisjunctConstraint(Y[2])) +@disjunction(m, Y) +@constraint(m, Y in Exactly(1)) #logical constraint +@objective(m, Max, sum(x)) print(m) +# Max x[1] + x[2] +# Subject to +# x[1] ≥ 0 +# x[2] ≥ 0 +# x[1] ≤ 20 +# x[2] ≤ 20 -# Feasibility +## +optimize!(m, method = BigM(100, false)) #specify M value and disable M-tightening +print(m) +# Max x[1] + x[2] +# Subject to +# Y[1] + Y[2] = 1 +# x[1] - 100 Y[1] ≥ -98 +# x[2] - 100 Y[1] ≥ -95 +# x[1] - 100 Y[2] ≥ -92 +# x[2] - 100 Y[2] ≥ -90 +# x[1] + 100 Y[1] ≤ 106 +# x[2] + 100 Y[1] ≤ 109 +# x[1] + 100 Y[2] ≤ 111 +# x[2] + 100 Y[2] ≤ 115 +# x[1] ≥ 0 +# x[2] ≥ 0 +# x[1] ≤ 20 +# x[2] ≤ 20 +# Y[1] binary +# Y[2] binary + +## +optimize!(m, method = Hull()) +print(m) +# Max x[1] + x[2] # Subject to -# XOR : y[1] + y[2] == 1.0 <- XOR constraint -# con1[1,lb] : -x[1] + 5 y[1] <= 5.0 <- left-side of con1[1] -# con1[1,ub] : x[1] + 7 y[1] <= 10.0 <- right-side of con1[1] -# con1[2,lb] : -x[2] + 5 y[1] <= 5.0 <- left-side of con1[2] -# con1[2,ub] : x[2] + 6 y[1] <= 10.0 <- right-side of con1[2] -# con2[1,lb] : -x[1] + 10 y[2] <= 5.0 <- left-side of con2[1] -# con2[1,ub] : x[1] + y[2] <= 10.0 <- right-side of con2[1] -# con2[2,lb] : -x[2] + 9 y[2] <= 5.0 <- left-side of con2[2] -# con2[2,ub] : x[2] + 4 y[2] <= 10.0 <- right-side of con2[2] -# x[1] >= -5.0 <- varaible bounds -# x[2] >= -5.0 <- variable bounds -# x[1] <= 10.0 <- variable bounds -# x[2] <= 10.0 <- variable bounds -# y[1] binary <- indicator variable (1st disjunct) is binary -# y[2] binary <- indicator variable (2nd disjunct) is binary \ No newline at end of file +# -x[2] + x[2]_Y[1] + x[2]_Y[2] = 0 +# -x[1] + x[1]_Y[1] + x[1]_Y[2] = 0 +# Y[1] + Y[2] = 1 +# -2 Y[1] + x[1]_Y[1] ≥ 0 +# -5 Y[1] + x[2]_Y[1] ≥ 0 +# -8 Y[2] + x[1]_Y[2] ≥ 0 +# -10 Y[2] + x[2]_Y[2] ≥ 0 +# x[2]_Y[1]_lower_bound : -x[2]_Y[1] ≤ 0 +# x[2]_Y[1]_upper_bound : -20 Y[1] + x[2]_Y[1] ≤ 0 +# x[1]_Y[1]_lower_bound : -x[1]_Y[1] ≤ 0 +# x[1]_Y[1]_upper_bound : -20 Y[1] + x[1]_Y[1] ≤ 0 +# x[2]_Y[2]_lower_bound : -x[2]_Y[2] ≤ 0 +# x[2]_Y[2]_upper_bound : -20 Y[2] + x[2]_Y[2] ≤ 0 +# x[1]_Y[2]_lower_bound : -x[1]_Y[2] ≤ 0 +# x[1]_Y[2]_upper_bound : -20 Y[2] + x[1]_Y[2] ≤ 0 +# -6 Y[1] + x[1]_Y[1] ≤ 0 +# -9 Y[1] + x[2]_Y[1] ≤ 0 +# -11 Y[2] + x[1]_Y[2] ≤ 0 +# -15 Y[2] + x[2]_Y[2] ≤ 0 +# x[1] ≥ 0 +# x[2] ≥ 0 +# x[2]_Y[1] ≥ 0 +# x[1]_Y[1] ≥ 0 +# x[2]_Y[2] ≥ 0 +# x[1]_Y[2] ≥ 0 +# x[1] ≤ 20 +# x[2] ≤ 20 +# x[2]_Y[1] ≤ 20 +# x[1]_Y[1] ≤ 20 +# x[2]_Y[2] ≤ 20 +# x[1]_Y[2] ≤ 20 +# Y[1] binary +# Y[2] binary \ No newline at end of file diff --git a/examples/ex3.jl b/examples/ex3.jl index 1994c2f..39481be 100644 --- a/examples/ex3.jl +++ b/examples/ex3.jl @@ -1,43 +1,57 @@ using JuMP using DisjunctiveProgramming -m = Model() +m = GDPModel() @variable(m, -5 ≤ x ≤ 10) -@variable(m, z[i = 1:2], Bin) -@disjunction( - m, - begin - con1A, exp(x) ≤ 2 - con1B, -3 ≤ x - end, - begin - con2A, 3 ≤ exp(x) - con2B, 5 ≤ x - end, - reformulation=:hull, - name=:z -) -choose!(m, 1, z...; mode = :exactly, name = "XOR") #XOR constraint +@variable(m, Y[1:2], LogicalVariable) +@constraint(m, exp(x) <= 2, DisjunctConstraint(Y[1])) +@constraint(m, x >= -3, DisjunctConstraint(Y[1])) +@constraint(m, exp(x) >= 3, DisjunctConstraint(Y[2])) +@constraint(m, x >= 5, DisjunctConstraint(Y[2])) +@disjunction(m, Y) +@constraint(m, Y in Exactly(1)) #logical constraint +@objective(m, Max, x) print(m) +# Max x +# Subject to +# x ≥ -5 +# x ≤ 10 -# Feasibility +## +reformulate_model(m, BigM()) +print(m) +# Max x +# Subject to +# (exp(x) - 3.0) + (-1000000000 Y[2] + 1000000000) ≥ 0 +# (exp(x) - 2.0) - (-1000000000 Y[1] + 1000000000) ≤ 0 +# Y[1] + Y[2] = 1 +# x - 2 Y[1] ≥ -5 +# x - 10 Y[2] ≥ -5 +# x ≥ -5 +# x ≤ 10 +# Y[1] binary +# Y[2] binary + +## +reformulate_model(m, Hull()) +print(m) +# Max x # Subject to -# XOR(disj_z) : z[1] + z[2] == 1.0 <- XOR constraint -# x_z_aggregation : x - x_z1 - x_z2 == 0.0 <- aggregation of disaggregated variables -# x_z1_lb : -5 z[1] - x_z1 <= 0.0 <- lower-bound constraint on disaggregated variable x_z1 (x in 1st disjunct) -# x_z1_ub : -10 z[1] + x_z1 <= 0.0 <- upper-bound constraint on disaggregated variable x_z1 (x in 1st disjunct) -# x_z2_lb : -5 z[2] - x_z2 <= 0.0 <- lower-bound constraint on disaggregated variable x_z2 (x in 2nd disjunct) -# x_z2_ub : -10 z[2] + x_z2 <= 0.0 <- upper-bound constraint on disaggregated variable x_z2 (x in 2nd disjunct) -# x >= -5.0 <- lower-bound on x -# x_z1 >= -5.0 <- lower-bound on x_z1 (disaggregated x in 1st disjunct) -# x_z2 >= -5.0 <- lower-bound on x_z2 (disaggregated x in 2nd disjunct) -# x <= 10.0 <- upper-bound on x -# x_z1 <= 10.0 <- upper-bound on x_z1 (disaggregated x in 1st disjunct) -# x_z2 <= 10.0 <- upper-bound on x_z2 (disaggregated x in 2nd disjunct) -# z[1] binary <- indicator variable (1st disjunct) is binary -# z[2] binary <- indicator variable (2nd disjunct) is binary -# Perspective Functions: -# (-1.0e-6 + -1.9999989999999999 * z[1]) + (1.0e-6 + 0.999999 * z[1]) * exp(x_z1 / (1.0e-6 + 0.999999 * z[1])) <= 0 -# (1.0000000000000002e-6 + 2.999999 * z[2]) + (-1.0e-6 + -0.999999 * z[2]) * exp(x_z2 / (1.0e-6 + 0.999999 * z[2])) <= 0 -# -1.0 * x_z1 + -3.0 * z[1] <= 0 -# -1.0 * x_z2 + 5.0 * z[2] <= 0 \ No newline at end of file +# (((0.999999 Y[2] + 1.0e-6) * (exp(x_Y[2] / (0.999999 Y[2] + 1.0e-6)) - 3.0)) - (2.0e-6 Y[2] - 2.0e-6)) - (0) ≥ 0 +# (((0.999999 Y[1] + 1.0e-6) * (exp(x_Y[1] / (0.999999 Y[1] + 1.0e-6)) - 2.0)) - (1.0e-6 Y[1] - 1.0e-6)) - (0) ≤ 0 +# -x + x_Y[1] + x_Y[2] = 0 +# Y[1] + Y[2] = 1 +# 3 Y[1] + x_Y[1] ≥ 0 +# -5 Y[2] + x_Y[2] ≥ 0 +# x_Y[1]_lower_bound : -5 Y[1] - x_Y[1] ≤ 0 +# x_Y[1]_upper_bound : -10 Y[1] + x_Y[1] ≤ 0 +# x_Y[2]_lower_bound : -5 Y[2] - x_Y[2] ≤ 0 +# x_Y[2]_upper_bound : -10 Y[2] + x_Y[2] ≤ 0 +# x ≥ -5 +# x_Y[1] ≥ -5 +# x_Y[2] ≥ -5 +# x ≤ 10 +# x_Y[1] ≤ 10 +# x_Y[2] ≤ 10 +# Y[1] binary +# Y[2] binary \ No newline at end of file diff --git a/examples/ex4.jl b/examples/ex4.jl new file mode 100644 index 0000000..77ec314 --- /dev/null +++ b/examples/ex4.jl @@ -0,0 +1,26 @@ +using JuMP +using DisjunctiveProgramming + +# Example with proposition reformulation +# Proposition: +# ¬((Y[1] ∧ ¬Y[2]) ⇔ (Y[3] ∨ Y[4])) + +m = GDPModel() +@variable(m, Y[1:4], LogicalVariable) +@constraint(m, ¬((Y[1] ∧ ¬Y[2]) ⇔ (Y[3] ∨ Y[4])) ∈ IsTrue()) +reformulate_model(m, BigM()) +print(m) +# Feasibility +# Subject to +# -Y[1] ≥ -1 +# Y[2] ≥ 0 +# -Y[1] + Y[2] - Y[3] ≥ -1 +# Y[4] ≥ 0 +# Y[1] + Y[3] + Y[4] ≥ 1 +# -Y[2] + Y[3] + Y[4] ≥ 0 +# Y[3] ≥ 0 +# -Y[1] + Y[2] - Y[4] ≥ -1 +# Y[1] binary +# Y[2] binary +# Y[3] binary +# Y[4] binary \ No newline at end of file diff --git a/examples/ex5.jl b/examples/ex5.jl new file mode 100644 index 0000000..20b5549 --- /dev/null +++ b/examples/ex5.jl @@ -0,0 +1,35 @@ +# https://arxiv.org/pdf/2303.04375.pdf + +using JuMP +using DisjunctiveProgramming + +## +m = GDPModel() +@variable(m, 1 ≤ x[1:2] ≤ 9) +@variable(m, Y[1:2], LogicalVariable) +@variable(m, W[1:2], LogicalVariable) +@objective(m, Max, sum(x)) +@constraint(m, y1[i=1:2], [1,4][i] ≤ x[i] ≤ [3,6][i], DisjunctConstraint(Y[1])) +@constraint(m, w1[i=1:2], [1,5][i] ≤ x[i] ≤ [2,6][i], DisjunctConstraint(W[1])) +@constraint(m, w2[i=1:2], [2,4][i] ≤ x[i] ≤ [3,5][i], DisjunctConstraint(W[2])) +@constraint(m, y2[i=1:2], [8,1][i] ≤ x[i] ≤ [9,2][i], DisjunctConstraint(Y[2])) +@disjunction(m, inner, [W[1], W[2]], DisjunctConstraint(Y[1])) +@disjunction(m, outer, [Y[1], Y[2]]) +@constraint(m, Y in Exactly(1)) +@constraint(m, W in Exactly(Y[1])) + +## +reformulate_model(m, BigM()) +print(m) + +## +reformulate_model(m, Hull()) +print(m) + +## +using Polyhedra, CDDLib, Plots +relax_integrality(m) +lib = CDDLib.Library(:exact) +poly = polyhedron(vrep(polyhedron(m, lib)),lib) +proj = project(poly,1:2) +plot(proj, xlims = (0,10), ylims = (0,7), xticks = 0:10, yticks = 0:10) \ No newline at end of file diff --git a/examples/ex6.jl b/examples/ex6.jl new file mode 100644 index 0000000..0fb3ea2 --- /dev/null +++ b/examples/ex6.jl @@ -0,0 +1,60 @@ +using JuMP +using DisjunctiveProgramming + +## +m = GDPModel() +@variable(m, -5 <= x[1:3] <= 5) + +@variable(m, y[1:2], LogicalVariable) +@constraint(m, x[1] <= -2, DisjunctConstraint(y[1])) +@constraint(m, x[1] >= 2, DisjunctConstraint(y[2])) +@constraint(m, x[2] == -1, DisjunctConstraint(y[2])) +@constraint(m, x[3] == 1, DisjunctConstraint(y[2])) +@disjunction(m, y) +@constraint(m, y in Exactly(1)) + +@variable(m, w[1:2], LogicalVariable) +@constraint(m, x[2] <= -3, DisjunctConstraint(w[1])) +@constraint(m, x[2] >= 3, DisjunctConstraint(w[2])) +@constraint(m, x[3] == 0, DisjunctConstraint(w[2])) +@disjunction(m, w, DisjunctConstraint(y[1])) +@constraint(m, w in Exactly(y[1])) + +@variable(m, z[1:2], LogicalVariable) +@constraint(m, x[3] <= -4, DisjunctConstraint(z[1])) +@constraint(m, x[3] >= 4, DisjunctConstraint(z[2])) +@disjunction(m, z, DisjunctConstraint(w[1])) +@constraint(m, z in Exactly(w[1])) + +## +reformulate_model(m, BigM()) +print(m) +# Feasibility +# Subject to +# y[1] + y[2] = 1 +# -y[1] + w[1] + w[2] = 0 +# -w[1] + z[1] + z[2] = 0 +# x[3] - 9 z[2] ≥ -5 +# x[2] - 8 w[2] ≥ -5 +# x[3] - 5 w[2] ≥ -5 +# x[1] - 7 y[2] ≥ -5 +# x[2] - 4 y[2] ≥ -5 +# x[3] - 6 y[2] ≥ -5 +# x[1] + 7 y[1] ≤ 5 +# x[2] + 8 w[1] ≤ 5 +# x[3] + 9 z[1] ≤ 5 +# x[3] + 5 w[2] ≤ 5 +# x[2] + 6 y[2] ≤ 5 +# x[3] + 4 y[2] ≤ 5 +# x[1] ≥ -5 +# x[2] ≥ -5 +# x[3] ≥ -5 +# x[1] ≤ 5 +# x[2] ≤ 5 +# x[3] ≤ 5 +# y[1] binary +# y[2] binary +# w[1] binary +# w[2] binary +# z[1] binary +# z[2] binary diff --git a/src/DisjunctiveProgramming.jl b/src/DisjunctiveProgramming.jl index 5cfedb1..3c22cad 100644 --- a/src/DisjunctiveProgramming.jl +++ b/src/DisjunctiveProgramming.jl @@ -1,17 +1,44 @@ module DisjunctiveProgramming -using JuMP, Symbolics, Suppressor +# Import and export JuMP +import Reexport +Reexport.@reexport using JuMP -export add_disjunction!, add_proposition! -export @disjunction, @proposition -export choose! +# Use Meta for metaprogramming +using Base.Meta -include("constraint.jl") +# Create aliases +const _MOI = JuMP.MOI +const _MOIUC = JuMP.MOIU.CleverDicts + +# Load in the source files +include("datatypes.jl") +include("model.jl") include("logic.jl") -include("utils.jl") +include("variables.jl") +include("constraints.jl") +include("macros.jl") +include("reformulate.jl") include("bigm.jl") include("hull.jl") -include("reformulate.jl") -include("macros.jl") +include("indicator.jl") + +# Define additional stuff that should not be exported +const _EXCLUDE_SYMBOLS = [Symbol(@__MODULE__), :eval, :include] + +# Following JuMP, export everything that doesn't start with a _ +for sym in names(@__MODULE__, all = true) + sym_string = string(sym) + if sym in _EXCLUDE_SYMBOLS || startswith(sym_string, "_") || startswith(sym_string, "@_") + continue + end + if !(Base.isidentifier(sym) || (startswith(sym_string, "@") && Base.isidentifier(sym_string[2:end]))) + continue + end + @eval export $sym +end + +# export the single character operators (excluded above) +export ∨, ∧, ¬, ⇔, ⟹ -end # module +end # end of the module \ No newline at end of file diff --git a/src/bigm.jl b/src/bigm.jl index 42d7425..d4598c5 100644 --- a/src/bigm.jl +++ b/src/bigm.jl @@ -1,81 +1,199 @@ -""" - big_m_reformulation!(constr::ConstraintRef, bin_var, M, i, j, k) - -Perform Big-M reformulation on a linear or quadratic constraint at index k of constraint j in disjunct i. +################################################################################ +# BIG-M VALUE +################################################################################ +# Get Big-M value for a particular constraint +function _get_M_value(func::JuMP.AbstractJuMPScalar, set::_MOI.AbstractSet, method::BigM) + if method.tighten + M = _get_tight_M(func, set, method) + else + M = _get_M(func, set, method) + end + return M +end - big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M, i, j, k) +# Get the tightest Big-M value for a particular constraint +function _get_tight_M(func::JuMP.AbstractJuMPScalar, set::_MOI.AbstractSet, method::BigM) + M = min.(method.value, _calculate_tight_M(func, set, method)) #broadcast for when S <: MOI.Interval or MOI.EqualTo or MOI.Zeros + if any(isinf.(M)) + error("A finite Big-M value must be used. The value obtained was $M.") + end + return M +end -Perform Big-M reformulaiton on a nonlinear constraint at index k of constraint j in disjunct i. +# Get user-specified Big-M value +function _get_M(::JuMP.AbstractJuMPScalar, ::Union{_MOI.LessThan, _MOI.GreaterThan, _MOI.Nonnegatives, _MOI.Nonpositives}, method::BigM) + M = method.value + if isinf(M) + error("A finite Big-M value must be used. The value given was $M.") + end + return M +end +function _get_M(::JuMP.AbstractJuMPScalar, ::Union{_MOI.Interval, _MOI.EqualTo, _MOI.Zeros}, method::BigM) + M = method.value + if isinf(M) + error("A finite Big-M value must be used. The value given was $M.") + end + return [M, M] +end - big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k) +# Apply interval arithmetic on a linear constraint to infer the tightest Big-M value from the bounds on the constraint. +function _calculate_tight_M(func::JuMP.AffExpr, set::_MOI.LessThan, method::BigM) + return _interval_arithmetic_LessThan(func, -set.upper, method) +end +function _calculate_tight_M(func::JuMP.AffExpr, set::_MOI.GreaterThan, method::BigM) + return _interval_arithmetic_GreaterThan(func, -set.lower, method) +end +function _calculate_tight_M(func::JuMP.AffExpr, ::_MOI.Nonpositives, method::BigM) + return _interval_arithmetic_LessThan(func, 0.0, method) +end +function _calculate_tight_M(func::JuMP.AffExpr, ::_MOI.Nonnegatives, method::BigM) + return _interval_arithmetic_GreaterThan(func, 0.0, method) +end +function _calculate_tight_M(func::JuMP.AffExpr, set::_MOI.Interval, method::BigM) + return ( + _interval_arithmetic_GreaterThan(func, -set.lower, method), + _interval_arithmetic_LessThan(func, -set.upper, method) + ) +end +function _calculate_tight_M(func::JuMP.AffExpr, set::_MOI.EqualTo, method::BigM) + return ( + _interval_arithmetic_GreaterThan(func, -set.value, method), + _interval_arithmetic_LessThan(func, -set.value, method) + ) +end +function _calculate_tight_M(func::JuMP.AffExpr, ::_MOI.Zeros, method::BigM) + return ( + _interval_arithmetic_GreaterThan(func, 0.0, method), + _interval_arithmetic_LessThan(func, 0.0, method) + ) +end +# fallbacks for other scalar constraints +_calculate_tight_M(func::Union{JuMP.QuadExpr, JuMP.NonlinearExpr}, set::Union{_MOI.Interval, _MOI.EqualTo, _MOI.Zeros}, method::BigM) = (Inf, Inf) +_calculate_tight_M(func::Union{JuMP.QuadExpr, JuMP.NonlinearExpr}, set::Union{_MOI.LessThan, _MOI.GreaterThan, _MOI.Nonnegatives, _MOI.Nonpositives}, method::BigM) = Inf +_calculate_tight_M(func, set, method::BigM) = error("BigM method not implemented for constraint type $(typeof(func)) in $(typeof(set))") -Perform Big-M reformulation on a constraint at index k of constraint j in disjunct i. -""" -function big_m_reformulation!(constr::ConstraintRef, bin_var, M0, i, j, k) - M = get_reform_param(M0, i, j, k; constr) - if !ismissing(M0) && constraint_object(constr).set isa MOI.GreaterThan && M > 0 - M = -M #if a positive bigM value was provided and constraint is GreaterThan, use the negative of this number (-M*(1-y) <= func) +# get variable bounds for interval arithmetic +function _update_variable_bounds(vref::JuMP.VariableRef, method::BigM) + if JuMP.is_binary(vref) + lb = 0 + elseif !JuMP.has_lower_bound(vref) + lb = -Inf + else + lb = JuMP.lower_bound(vref) end - add_to_function_constant(constr, -M) - set_normalized_coefficient(constr, constr.model[bin_var][i], M) -end -function big_m_reformulation!(constr::NonlinearConstraintRef, bin_var, M0, i, j, k) - M = get_reform_param(M0, i, j, k; constr) - #create symbolic variables (using Symbolics.jl) - for var_ref in get_constraint_variables(constr) - symbolic_variable(var_ref) + if JuMP.is_binary(vref) + ub = 1 + elseif !JuMP.has_upper_bound(vref) + ub = Inf + else + ub = JuMP.upper_bound(vref) end - bin_var_sym = Symbol("$bin_var[$i]") - λ = Num(Symbolics.Sym{Float64}(bin_var_sym)) - - #parse constr - op, lhs, rhs = parse_constraint(constr) - replace_Symvars!(lhs, constr.model) #convert JuMP variables into Symbolic variables - gx = eval(lhs) #convert the LHS of the constraint into a Symbolic expression - gx = gx - M*(1-λ) #add bigM - - #update constraint - add_reformulated_constraint(constr, bin_var, gx, op, rhs) -end -big_m_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, M, i, j, k) = - big_m_reformulation(constr[k], bin_var, M, i, j, k) - -""" - calculate_tight_M(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}) where {T,V} + return lb, ub +end -Apply interval arithmetic on a linear constraint to infer the tightest Big-M value from the bounds on the constraint. -""" -function calculate_tight_M(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}) where {T,V} - constr_obj = constraint_object(constr) - constr_terms = constr_obj.func.terms - constr_set = constr_obj.set - #create a map of variables to their bounds - bounds_dict = :variable_bounds_dict in keys(constr.model.ext) ? constr.model.ext[:variable_bounds_dict] : Dict() - bounds_map = Dict( - var => is_binary(var) ? (0,0) : get_bounds(var, bounds_dict) #NOTE: ignore binaries in tight-M calculation - for var in get_constraint_variables(constr) - ) - #apply interval arithmetic - if constr_set isa MOI.LessThan - M = -constr_set.upper - for (var,coeff) in constr_terms - if coeff > 0 - M += coeff*bounds_map[var][2] - else - M += coeff*bounds_map[var][1] - end +# perform interval arithmetic to update the initial M value +function _interval_arithmetic_LessThan(func::JuMP.AffExpr, M::Float64, method::BigM) + for (var,coeff) in func.terms + JuMP.is_binary(var) && continue #skip binary variables + if coeff > 0 + M += coeff*method.variable_bounds[var][2] + else + M += coeff*method.variable_bounds[var][1] end - elseif constr_set isa MOI.GreaterThan - M = -constr_set.lower - for (var,coeff) in constr_terms - if coeff < 0 - M += coeff*bounds_map[var][2] - else - M += coeff*bounds_map[var][1] - end + end + return M + func.constant +end +function _interval_arithmetic_GreaterThan(func::JuMP.AffExpr, M::Float64, method::BigM) + for (var,coeff) in func.terms + JuMP.is_binary(var) && continue #skip binary variables + if coeff < 0 + M += coeff*method.variable_bounds[var][2] + else + M += coeff*method.variable_bounds[var][1] end end - isinf(M) && error("M parameter for $constr cannot be infered due to lack of variable bounds.") - return M + return -(M + func.constant) end -calculate_tight_M(constr::ConstraintRef) = error("$constr is a nonlinear or quadratic constraint and a tight Big-M parameter cannot be inferred via interval arithmetic.") \ No newline at end of file + +################################################################################ +# BIG-M REFORMULATION +################################################################################ +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::BigM +) where {T, S <: _MOI.LessThan} + M = _get_M_value(con.func, con.set, method) + new_func = JuMP.@expression(model, con.func - M*(1-bvref)) + reform_con = JuMP.build_constraint(error, new_func, con.set) + return [reform_con] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S, R}, + bvref::JuMP.VariableRef, + method::BigM +) where {T, S <: _MOI.Nonpositives, R} + M = [_get_M_value(func, con.set, method) for func in con.func] + new_func = JuMP.@expression(model, [i=1:con.set.dimension], + con.func[i] - M[i]*(1-bvref) + ) + reform_con = JuMP.build_constraint(error, new_func, con.set) + return [reform_con] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::BigM +) where {T, S <: _MOI.GreaterThan} + M = _get_M_value(con.func, con.set, method) + new_func = JuMP.@expression(model, con.func + M*(1-bvref)) + reform_con = JuMP.build_constraint(error, new_func, con.set) + return [reform_con] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S, R}, + bvref::JuMP.VariableRef, + method::BigM +) where {T, S <: _MOI.Nonnegatives, R} + M = [_get_M_value(func, con.set, method) for func in con.func] + new_func = JuMP.@expression(model, [i=1:con.set.dimension], + con.func[i] + M[i]*(1-bvref) + ) + reform_con = JuMP.build_constraint(error, new_func, con.set) + return [reform_con] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::BigM +) where {T, S <: Union{_MOI.Interval, _MOI.EqualTo}} + M = _get_M_value(con.func, con.set, method) + new_func_gt = JuMP.@expression(model, con.func + M[1]*(1-bvref)) + new_func_lt = JuMP.@expression(model, con.func - M[2]*(1-bvref)) + set_values = _set_values(con.set) + reform_con_gt = JuMP.build_constraint(error, new_func_gt, _MOI.GreaterThan(set_values[1])) + reform_con_lt = JuMP.build_constraint(error, new_func_lt, _MOI.LessThan(set_values[2])) + return [reform_con_gt, reform_con_lt] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S, R}, + bvref::JuMP.VariableRef, + method::BigM +) where {T, S <: _MOI.Zeros, R} + M = [_get_M_value(func, con.set, method) for func in con.func] + new_func_nn = JuMP.@expression(model, [i=1:con.set.dimension], + con.func[i] + M[i][1]*(1-bvref) + ) + new_func_np = JuMP.@expression(model, [i=1:con.set.dimension], + con.func[i] - M[i][2]*(1-bvref) + ) + reform_con_nn = JuMP.build_constraint(error, new_func_nn, _MOI.Nonnegatives(con.set.dimension)) + reform_con_np = JuMP.build_constraint(error, new_func_np, _MOI.Nonpositives(con.set.dimension)) + return [reform_con_nn, reform_con_np] +end \ No newline at end of file diff --git a/src/constraint.jl b/src/constraint.jl index 40534cc..e69de29 100644 --- a/src/constraint.jl +++ b/src/constraint.jl @@ -1,163 +0,0 @@ -constraint_set(constr::ConstraintRef) = constraint_object(constr).set -constraint_set(constr::NonlinearConstraintRef) = nonlinear_model(constr.model)[index(constr)].set -is_interval(constr::ConstraintRef) = constraint_set(constr) isa MOI.Interval -is_equalto(constr::ConstraintRef) = constraint_set(constr) isa MOI.EqualTo -JuMP.name(constr::NonlinearConstraintRef) = "" - -""" - check_constraint!(m::Model, constr::Tuple) - -Check constraints in a disjunction Tuple. - - check_constraint!(m::Model, constr_j, constr_list::Vector) - -Check nested constraint and update `constr_list`. - - check_constraint!(m::Model, constr) - -Check constraint in a Model. - - check_constraint!(args...) - -Return nothing for an empty disjunct. -""" -function check_constraint!(m::Model, constr::Tuple) - constr_list = [] - map(constr_j -> check_constraint!(m, constr_j, constr_list), constr) - return Tuple(constr_list) -end -function check_constraint!(m::Model, constr_j::Tuple, constr_list::Vector) - map(constr_jk -> check_constraint!(m, constr_jk, constr_list), constr_j) -end -function check_constraint!(m::Model, constr_j::AbstractArray, constr_list::Vector) - map(constr_jk -> check_constraint!(m, constr_jk, constr_list), constr_j) -end -function check_constraint!(m::Model, constr_j::AbstractArray{<:ConstraintRef}, constr_list::Vector) - push!(constr_list, check_constraint!(m, constr_j)) -end -function check_constraint!(m::Model, constr_j::ConstraintRef, constr_list::Vector) - push!(constr_list, check_constraint!(m, constr_j)) -end -function check_constraint!(m::Model, constr::ConstraintRef) - @assert all(is_valid(m, constr)) "$constr is not a valid constraint." - new_constr = split_constraint(constr) - if isnothing(new_constr) - new_constr = constr - else - delete(m, constr) - end - return new_constr -end -function check_constraint!(m::Model, constr::AbstractArray{<:ConstraintRef}) - @assert all(is_valid.(m, constr)) "$constr is not a valid constraint." - if !any(is_interval.(constr)) && !any(is_equalto.(constr)) - new_constr = constr - else - idxs = get_indices(constr) - constr_dict = Dict(union( - [ - split_constraint(constr[idx...]) |> - i -> isnothing(i) ? - (idx...,"") => constr[idx...] : - [(idx...,"lb") => i[1], (idx...,"ub") => i[2]] - for idx in idxs - ]... - )) - new_constr = Containers.SparseAxisArray(constr_dict) - delete.(m, constr) - end - return new_constr -end -check_constraint!(args...) = nothing - -""" - split_constraint(constr::ConstraintRef) - -Split a constraint that is an Interval or EqualTo constraint. - - split_constraint(args...) - -Return nothing for an empty disjunct. -""" -function split_constraint(constr::ConstraintRef) - constr_set = constraint_set(constr) - if is_equalto(constr) - lb = ub = constr_set.value - return _split_constraint(constr.model, constr, lb, ub) - elseif is_interval(constr) - lb = constr_set.lower - ub = constr_set.upper - return _split_constraint(constr.model, constr, lb, ub) - else - return nothing - end -end -function _split_constraint(m::Model, constr::NonlinearConstraintRef, lb::Float64, ub::Float64) - nlp = nonlinear_model(m) - nlconstr = nlp[index(constr)] - #add lb constraint - nlp.last_constraint_index += 1 - index1 = MOI.Nonlinear.ConstraintIndex(nlp.last_constraint_index) - nlp.constraints[index1] = - MOI.Nonlinear.Constraint(nlconstr.expression, MOI.LessThan(ub)) - #add ub constraint - nlp.last_constraint_index += 1 - index2 = MOI.Nonlinear.ConstraintIndex(nlp.last_constraint_index) - nlp.constraints[index2] = - MOI.Nonlinear.Constraint(nlconstr.expression, MOI.GreaterThan(lb)) - - return [ - ConstraintRef(m, index1, constr.shape), - ConstraintRef(m, index2, constr.shape) - ] -end -function _split_constraint(m::Model, constr::ConstraintRef, lb::Float64, ub::Float64) - constr_name = name(constr) - if isempty(constr_name) - constr_name = "[$constr]" - end - lb_name = name_split(constr_name; new_index = :lb) - ub_name = name_split(constr_name; new_index = :ub) - func = constraint_object(constr).func - return [ - @constraint(m, lb <= func, base_name = lb_name), - @constraint(m, func <= ub, base_name = ub_name) - ] -end -split_constraint(args...) = nothing - -""" - parse_constraint(constr::ConstraintRef) - -Extract constraint operator symbol (op), constraint function expression (LHS), and constraint RHS. -""" -function parse_constraint(constr::ConstraintRef) - #check function has a single comparrison operator (<=, >=, ==) - constr_str = replace(split(string(constr),": ")[end], " " => "", "²" => "^2") #remove name, blanks and power notation - constr_expr = Meta.parse(constr_str).args - op = constr_expr[1] #comparrison operator - lhs = constr_expr[2] #LHS of the constraint - rhs = constr_expr[3] #RHS of constraint - return op, lhs, rhs -end - -""" - add_reformulated_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) - -Replace nonlinear or quadratic constraint with its hull reformulation. -""" -function add_reformulated_constraint(constr::ConstraintRef, bin_var::Symbol, sym_expr, op, rhs) - #convert symbolic function to expression - op = eval(op) - expr = Base.remove_linenums!(build_function(op(sym_expr,rhs))).args[2].args[1] - #replace symbolic variables by their JuMP variables and math operators with their symbols - m = constr.model - replace_JuMPvars!(expr, m) - replace_operators!(expr) - #add new constraint and delete old one - new_constr = add_nonlinear_constraint(m, expr) - push!(m.ext[bin_var], new_constr) - delete(m, constr) - - return new_constr -end \ No newline at end of file diff --git a/src/constraints.jl b/src/constraints.jl new file mode 100644 index 0000000..1c8941f --- /dev/null +++ b/src/constraints.jl @@ -0,0 +1,541 @@ +################################################################################ +# HELPER SET MAPPING FUNCTIONS +################################################################################ +# helper functions to get the value of an MOI set +_set_value(set::_MOI.LessThan) = set.upper +_set_value(set::_MOI.GreaterThan) = set.lower +_set_value(set::_MOI.EqualTo) = set.value +_set_values(set::_MOI.EqualTo) = (set.value, set.value) +_set_values(set::_MOI.Interval) = (set.lower, set.upper) + +# helper functions to reformulate vector constraints to indicator constraints +_vec_to_scalar_set(set::_MOI.Nonpositives) = _MOI.LessThan(0) +_vec_to_scalar_set(set::_MOI.Nonnegatives) = _MOI.GreaterThan(0) +_vec_to_scalar_set(set::_MOI.Zeros) = _MOI.EqualTo(0) + +# helper functions to map jump selector to moi selector sets +_jump_to_moi_selector(set::Exactly) = _MOIExactly +_jump_to_moi_selector(set::AtLeast) = _MOIAtLeast +_jump_to_moi_selector(set::AtMost) = _MOIAtMost + +# helper functions to map selectors to scalar sets +_vec_to_scalar_set(set::_MOIExactly) = _MOI.EqualTo +_vec_to_scalar_set(set::_MOIAtLeast) = _MOI.GreaterThan +_vec_to_scalar_set(set::_MOIAtMost) = _MOI.LessThan + +################################################################################ +# BOILERPLATE EXTENSION METHODS +################################################################################ +for (RefType, loc) in ((:DisjunctConstraintRef, :disjunct_constraints), + (:DisjunctionRef, :disjunctions), + (:LogicalConstraintRef, :logical_constraints)) + @eval begin + @doc """ + JuMP.owner_model(cref::$($RefType)) + + Return the model to which `cref` belongs. + """ + JuMP.owner_model(cref::$RefType) = cref.model + + @doc """ + JuMP.index(cref::$($RefType)) + + Return the index constraint associated with `cref`. + """ + JuMP.index(cref::$RefType) = cref.index + + @doc """ + JuMP.is_valid(model::JuMP.Model, cref::$($RefType)) + + Return `true` if `cref` refers to a valid constraint in the `GDP model`. + """ + function JuMP.is_valid(model::JuMP.Model, cref::$RefType) # TODO: generalize for AbstractModel + return model === JuMP.owner_model(cref) + end + + # Get the ConstraintData object + function _constraint_data(cref::$RefType) + return gdp_data(JuMP.owner_model(cref)).$loc[JuMP.index(cref)] + end + + @doc """ + JuMP.name(cref::$($RefType)) + + Get a constraint's name attribute. + """ + function JuMP.name(cref::$RefType) + return _constraint_data(cref).name + end + + @doc """ + JuMP.set_name(cref::$($RefType), name::String) + + Set a constraint's name attribute. + """ + function JuMP.set_name(cref::$RefType, name::String) + _constraint_data(cref).name = name + _set_ready_to_optimize(JuMP.owner_model(cref), false) + return + end + + @doc """ + JuMP.constraint_object(cref::$($RefType)) + + Return the underlying constraint data for the constraint + referenced by `cref`. + """ + function JuMP.constraint_object(cref::$RefType) + return _constraint_data(cref).constraint + end + + # Extend Base methods + function Base.:(==)(cref1::$RefType, cref2::$RefType) + return cref1.model === cref2.model && cref1.index == cref2.index + end + Base.copy(cref::$RefType) = cref + @doc """ + Base.getindex(map::JuMP.GenericReferenceMap, cref::$($RefType)) + + ... + """ + function Base.getindex(map::JuMP.ReferenceMap, cref::$RefType) + $RefType(map.model, JuMP.index(cref)) + end + end +end + +# Extend delete +""" + JuMP.delete(model::JuMP.Model, cref::DisjunctionRef) + +Delete a disjunction constraint from the `GDP model`. +""" +function JuMP.delete(model::JuMP.Model, cref::DisjunctionRef) + @assert JuMP.is_valid(model, cref) "Disjunctive constraint does not belong to model." + cidx = JuMP.index(cref) + dict = _disjunctions(model) + delete!(dict, cidx) + _set_ready_to_optimize(model, false) + return +end + +""" + JuMP.delete(model::JuMP.Model, cref::DisjunctConstraintRef) + +Delete a disjunct constraint from the `GDP model`. +""" +function JuMP.delete(model::JuMP.Model, cref::DisjunctConstraintRef) + @assert JuMP.is_valid(model, cref) "Disjunctive constraint does not belong to model." + cidx = JuMP.index(cref) + dict = _disjunct_constraints(model) + delete!(dict, cidx) + _set_ready_to_optimize(model, false) + return +end + +""" + JuMP.delete(model::JuMP.Model, cref::LogicalConstraintRef) + +Delete a logical constraint from the `GDP model`. +""" +function JuMP.delete(model::JuMP.Model, cref::LogicalConstraintRef) + @assert JuMP.is_valid(model, cref) "Logical constraint does not belong to model." + cidx = JuMP.index(cref) + dict = _logical_constraints(model) + delete!(dict, cidx) + _set_ready_to_optimize(model, false) + return +end + +################################################################################ +# Disjunct Constraints +################################################################################ +function _check_expression(expr) + vars = Set{JuMP.VariableRef}() + _interrogate_variables(v -> push!(vars, v), expr) + if any(JuMP.is_binary.(vars)) || any(JuMP.is_integer.(vars)) + error("Disjunct constraints cannot contain binary or integer variables.") + end + return +end +""" + JuMP.build_constraint( + _error::Function, + func, + set::_MOI.AbstractScalarSet, + tag::DisjunctConstraint + )::_DisjunctConstraint + +Extend `JuMP.build_constraint` to add constraints to disjuncts. This in +combination with `JuMP.add_constraint` enables the use of +`@constraint(model, [name], constr_expr, tag)`, where tag is a +`DisjunctConstraint(::Type{LogicalVariableRef})`. The user must specify the +`LogicalVariable` to use as the indicator for the `_DisjunctConstraint` being created. +""" +function JuMP.build_constraint( + _error::Function, + func, + set::_MOI.AbstractScalarSet, + tag::DisjunctConstraint +) + _check_expression(func) + constr = JuMP.build_constraint(_error, func, set) + return _DisjunctConstraint(constr, tag.indicator) +end + +# Allows for building DisjunctConstraints for VectorConstraints since these get parsed differently by JuMP (JuMP changes the set to a MOI.AbstractScalarSet) +for SetType in ( + JuMP.Nonnegatives, JuMP.Nonpositives, JuMP.Zeros, + MOI.Nonnegatives, MOI.Nonpositives, MOI.Zeros +) + @eval begin + @doc """ + JuMP.build_constraint( + _error::Function, + func, + set::$($SetType), + tag::DisjunctConstraint + )::_DisjunctConstraint + + Extend `JuMP.build_constraint` to add `VectorConstraint`s to disjuncts. + """ + function JuMP.build_constraint( + _error::Function, + func, + set::$SetType, + tag::DisjunctConstraint + ) + _check_expression(func) + constr = JuMP.build_constraint(_error, func, set) + return _DisjunctConstraint(constr, tag.indicator) + end + end +end + +# Allow intervals to handle tags +function JuMP.build_constraint( + _error::Function, + func::JuMP.AbstractJuMPScalar, + lb::Real, + ub::Real, + tag::DisjunctConstraint +) + _check_expression(func) + constr = JuMP.build_constraint(_error, func, lb, ub) + func = JuMP.jump_function(constr) + set = JuMP.moi_set(constr) + return JuMP.build_constraint(_error, func, set, tag) +end + +""" + JuMP.add_constraint( + model::JuMP.Model, + con::_DisjunctConstraint, + name::String = "" + )::DisjunctConstraintRef + +Extend `JuMP.add_constraint` to add a [`_DisjunctConstraint`](@ref) to a [`GDPModel`](@ref). +The constraint is added to the `GDPData` in the `.ext` dictionary of the `GDPModel`. +""" +function JuMP.add_constraint( + model::JuMP.Model, + con::_DisjunctConstraint, + name::String = "" +) + is_gdp_model(model) || error("Can only add disjunct constraints to `GDPModel`s.") + data = ConstraintData(con.constr, name) + idx = _MOIUC.add_item(gdp_data(model).disjunct_constraints, data) + _add_indicator_var(con, DisjunctConstraintRef(model, idx), model) + return DisjunctConstraintRef(model, idx) +end + +################################################################################ +# DISJUNCTIONS +################################################################################ +# Add the variable mappings +function _add_indicator_var( + con::_DisjunctConstraint{C, LogicalVariableRef}, + cref, + model + ) where {C <: JuMP.AbstractConstraint} + JuMP.is_valid(model, con.lvref) || error("Logical variable belongs to a different model.") + if !haskey(_indicator_to_constraints(model), con.lvref) + _indicator_to_constraints(model)[con.lvref] = Vector{Union{DisjunctConstraintRef, DisjunctionRef}}() + end + push!(_indicator_to_constraints(model)[con.lvref], cref) + return +end +# check disjunction +function _check_disjunction(_error, lvrefs::AbstractVector{LogicalVariableRef}, model::JuMP.Model) + isequal(unique(lvrefs),lvrefs) || _error("Not all the logical indicator variables are unique.") + for lvref in lvrefs + if !JuMP.is_valid(model, lvref) + _error("`$lvref` is not a valid logical variable reference.") + end + end + return lvrefs +end + +# fallback +function _check_disjunction(_error, lvrefs, model::JuMP.Model) + _error("Unrecognized disjunction input structure.") # TODO add details on proper syntax +end + +# Write the main function for creating disjunctions that is macro friendly +function _create_disjunction( + _error::Function, + model::JuMP.Model, # TODO: generalize to AbstractModel + structure::AbstractVector, #generalize for containers + name::String, + nested::Bool +) + is_gdp_model(model) || error("Can only add disjunctions to `GDPModel`s.") + + # build the disjunction + indicators = _check_disjunction(_error, structure, model) + disjunction = Disjunction(indicators, nested) + + # add it to the model + disjunction_data = ConstraintData(disjunction, name) + idx = _MOIUC.add_item(_disjunctions(model), disjunction_data) + + _set_ready_to_optimize(model, false) + return DisjunctionRef(model, idx) +end + +# Disjunction build for unnested disjunctions +function _disjunction( + _error::Function, + model::JuMP.Model, # TODO: generalize to AbstractModel + structure::AbstractVector, #generalize for containers + name::String +) + return _create_disjunction(_error, model, structure, name, false) +end + +# Fallback disjunction build for nonvector structure +function _disjunction( + _error::Function, + model::JuMP.Model, # TODO: generalize to AbstractModel + structure, + name::String +) + _error("Unrecognized disjunction input structure.") +end + +# Disjunction build for nested disjunctions +function _disjunction( + _error::Function, + model::JuMP.Model, # TODO: generalize to AbstractModel + structure, + name::String, + tag::DisjunctConstraint +) + dref = _create_disjunction(_error, model, structure, name, true) + obj = JuMP.constraint_object(dref) + _add_indicator_var(_DisjunctConstraint(obj, tag.indicator), dref, model) + return dref +end + +# General fallback for additional arguments +function _disjunction( + _error::Function, + model::JuMP.Model, # TODO: generalize to AbstractModel + structure, + name::String, + extra... +) + for arg in extra + _error("Unrecognized argument `$arg`.") + end +end + +""" + disjunction( + model::JuMP.Model, + disjunct_indicators::Vector{LogicalVariableRef} + name::String = "" + ) + +Function to add a [`Disjunction`](@ref) to a [`GDPModel`](@ref). + + disjunction( + model::JuMP.Model, + disjunct_indicators::Vector{LogicalVariableRef}, + nested_tag::DisjunctConstraint, + name::String = "" + ) + +Function to add a nested [`Disjunction`](@ref) to a [`GDPModel`](@ref). +""" +function disjunction( + model::JuMP.Model, + disjunct_indicators, + name::String = "" +) # TODO add kw argument to build exactly 1 constraint + return _disjunction(error, model, disjunct_indicators, name) +end +function disjunction( + model::JuMP.Model, + disjunct_indicators, + nested_tag::DisjunctConstraint, + name::String = "", +) # TODO add kw argument to build exactly 1 constraint + return _disjunction(error, model, disjunct_indicators, name, nested_tag) +end + +################################################################################ +# LOGICAL CONSTRAINTS +################################################################################ +JuMP.operator_to_set(_error::Function, ::Val{:⟹}) = _error( + "Cannot use ⟹ in a MOI set (invalid right-hand side). If you are seeing this error, " * + "you likely added a logical constraint of the form A ⟹ B ∈ IsTrue(). " * + "Instead, you should enclose the constraint function in parenthesis: " * + "(A ⟹ B) ∈ IsTrue()." +) +JuMP.operator_to_set(_error::Function, ::Val{:⇔}) = _error( + "Cannot use ⇔ in a MOI set (invalid right-hand side). If you are seeing this error, " * + "you likely added a logical constraint of the form A ⇔ B ∈ IsTrue(). " * + "Instead, you should enclose the constraint function in parenthesis: " * + "(A ⇔ B) ∈ IsTrue()." +) + +""" + function JuMP.build_constraint( + _error::Function, + func::AbstractVector{T}, + set::S + ) where {T <: Union{LogicalVariableRef, _LogicalExpr}, S <: Union{Exactly, AtLeast, AtMost}} + +Extend `JuMP.build_constraint` to add logical cardinality constraints to a [`GDPModel`](@ref). +This in combination with `JuMP.add_constraint` enables the use of +`@constraint(model, [name], logical_expr in set)`, where set can be either of the following +cardinality sets: `AtLeast(n)`, `AtMost(n)`, or `Exactly(n)`. + +## Example + +To select exactly 1 logical variable `Y` to be `true`, do +(the same can be done with `AtLeast(n)` and `AtMost(n)`): + +```jldoctest +julia> model = GDPModel(); +julia> @variable(model, Y[i = 1:2], LogicalVariable); +julia> @constraint(model, [Y[1], Y[2]] in Exactly(1)); +``` + + JuMP.build_constraint( + _error::Function, + func::_LogicalExpr, + set::IsTrue + ) + +Extend `JuMP.build_constraint` to add logical propositional constraints to a [`GDPModel`](@ref). +This in combination with `JuMP.add_constraint` enables the use of +`@constraint(model, [name], logical_expr in IsTrue())` to define a Boolean expression that must +either be true or false. +""" +function JuMP.build_constraint( # Cardinality logical constraint + _error::Function, + func::AbstractVector{T}, # allow any vector-like JuMP container + set::S # TODO: generalize to allow CP sets from MOI +) where {T <: LogicalVariableRef, S <: Union{Exactly, AtLeast, AtMost}} + new_set = _jump_to_moi_selector(set)(length(func) + 1) + new_func = Union{Number,LogicalVariableRef}[set.value, func...] + return JuMP.VectorConstraint(new_func, new_set) +end +function JuMP.build_constraint( # Cardinality logical constraint + _error::Function, + func::AbstractVector, + set::S # TODO: generalize to allow CP sets from MOI +) where {S <: Union{Exactly, AtLeast, AtMost}} + _error("Selector constraints can only be applied to a Vector or Container of LogicalVariableRefs.") +end + +# Proposition logical constraint: _LogicalExpr +function JuMP.build_constraint( + _error::Function, + func::_LogicalExpr, + set::IsTrue + ) + if !(func.head in _LogicalOperatorHeads) + _error("Unrecognized logical operator `$(func.head)`.") + else + return JuMP.ScalarConstraint(func, set) + end +end + +# Fallback for LogicalVariableRef in IsTrue +function JuMP.build_constraint( + _error::Function, + func::LogicalVariableRef, + set::IsTrue + ) + _error( + "Logical propositions must be of the form `logical_expr in IsTrue()`. " * + "If you are trying to fix a logical variable, use `fix(logical_var, true)` instead." + ) +end + +# Fallback for Affine/Quad expressions +function JuMP.build_constraint( + _error::Function, + expr::Union{JuMP.GenericAffExpr{C, LogicalVariableRef}, JuMP.GenericQuadExpr{C, LogicalVariableRef}}, + set::_MOI.AbstractScalarSet +) where {C} + _error("Cannot add, subtract, or multiply with logical variables.") +end + +# Fallback for other set types (TODO: we could relax this later if needed) +function JuMP.build_constraint( + _error::Function, + expr::Union{LogicalVariableRef, _LogicalExpr}, + set::_MOI.AbstractScalarSet +) + _error("Invalid set `$set` for logical constraint.") +end + +""" + function JuMP.add_constraint( + model::JuMP.Model, + c::JuMP.ScalarConstraint{<:F, S}, + name::String = "" + ) where {F <: Union{LogicalVariableRef, _LogicalExpr}, S} + +Extend `JuMP.add_constraint` to allow creating logical proposition constraints +for a [`GDPModel`](@ref) with the `@constraint` macro. + + function JuMP.add_constraint( + model::JuMP.Model, + c::JuMP.VectorConstraint{<:F, S, Shape}, + name::String = "" + ) where {F <: Union{Number, LogicalVariableRef, _LogicalExpr}, S, Shape} + +Extend `JuMP.add_constraint` to allow creating logical cardinality constraints +for a [`GDPModel`](@ref) with the `@constraint` macro. +""" +function JuMP.add_constraint( + model::JuMP.Model, + c::JuMP.ScalarConstraint{F, S}, + name::String = "" +) where {F <: Union{LogicalVariableRef, _LogicalExpr}, S <: IsTrue} + is_gdp_model(model) || error("Can only add logical constraints to `GDPModel`s.") + @assert all(JuMP.is_valid.(model, _get_constraint_variables(model, c))) "Constraint variables do not belong to model." + constr_data = ConstraintData(c, name) + idx = _MOIUC.add_item(_logical_constraints(model), constr_data) + _set_ready_to_optimize(model, false) + return LogicalConstraintRef(model, idx) +end +function JuMP.add_constraint( + model::JuMP.Model, + c::JuMP.VectorConstraint{F, S, Shape}, + name::String = "" +) where {F, S <: Union{_MOIAtLeast, _MOIAtMost, _MOIExactly}, Shape} + is_gdp_model(model) || error("Can only add logical constraints to `GDPModel`s.") + @assert all(JuMP.is_valid.(model, _get_constraint_variables(model, c))) "Constraint variables do not belong to model." + constr_data = ConstraintData(c, name) + idx = _MOIUC.add_item(_logical_constraints(model), constr_data) + _set_ready_to_optimize(model, false) + return LogicalConstraintRef(model, idx) +end + +# TODO create bridges for MOI sets for and use BridgeableConstraint with build_constraint diff --git a/src/datatypes.jl b/src/datatypes.jl new file mode 100644 index 0000000..b477358 --- /dev/null +++ b/src/datatypes.jl @@ -0,0 +1,420 @@ +################################################################################ +# LOGICAL VARIABLES +################################################################################ + +""" + LogicalVariable <: JuMP.AbstractVariable + +A variable type the logical variables associated with disjuncts in a [`Disjunction`](@ref). + +**Fields** +- `fix_value::Union{Nothing, Bool}`: A fixed boolean value if there is one. +- `start_value::Union{Nothing, Bool}`: An initial guess if there is one. +""" +struct LogicalVariable <: JuMP.AbstractVariable + fix_value::Union{Nothing, Bool} + start_value::Union{Nothing, Bool} +end + +""" + LogicalVariableData + +A type for storing [`LogicalVariable`](@ref)s and any meta-data they +possess. + +**Fields** +- `variable::LogicalVariable`: The variable object. +- `name::String`: The name of the variable. +""" +mutable struct LogicalVariableData + variable::LogicalVariable + name::String +end + +""" + LogicalVariableIndex + +A type for storing the index of a [`LogicalVariable`](@ref). + +**Fields** +- `value::Int64`: The index value. +""" +struct LogicalVariableIndex + value::Int64 +end + +""" + LogicalVariableRef + +A type for looking up logical variables. +""" +struct LogicalVariableRef <: JuMP.AbstractVariableRef + model::JuMP.Model # TODO: generalize for AbstractModels + index::LogicalVariableIndex +end + +################################################################################ +# LOGICAL PROPOSITION SETS +################################################################################ +struct IsTrue <: _MOI.AbstractScalarSet end + +################################################################################ +# LOGICAL SELECTOR (CARDINALITY) SETS +################################################################################ +# TODO check required methods for AbstractVectorSet: +# All AbstractVectorSets of type S must implement: +# • dimension, unless the dimension is +# stored in the set.dimension field +# • Utilities.set_dot, unless the dot +# product between two vectors in the set +# is equivalent to LinearAlgebra.dot. +""" + _MOIAtLeast <: _MOI.AbstractVectorSet + +MOI level set for AtLeast constraints, see [`AtLeast`](@ref) for recommended syntax. +""" +struct _MOIAtLeast <: _MOI.AbstractVectorSet + dimension::Int +end + +""" + _MOIAtMost <: _MOI.AbstractVectorSet + +MOI level set for AtMost constraints, see [`AtMost`](@ref) for recommended syntax. +""" +struct _MOIAtMost <: _MOI.AbstractVectorSet + dimension::Int +end + +""" + _MOIExactly <: _MOI.AbstractVectorSet + +MOI level set for Exactly constraints, see [`Exactly`](@ref) for recommended syntax. +""" +struct _MOIExactly <: _MOI.AbstractVectorSet + dimension::Int +end + +# Create our own JuMP level sets to infer the dimension using the expression +""" + AtLeast{T<:Union{Int,LogicalVariableRef}} <: JuMP.AbstractVectorSet + +Convenient alias for using [`_MOIAtLeast`](@ref). +""" +struct AtLeast{T<:Union{Int,LogicalVariableRef}} <: JuMP.AbstractVectorSet + value::T +end + +""" + AtMost{T<:Union{Int,LogicalVariableRef}} <: JuMP.AbstractVectorSet + +Convenient alias for using [`_MOIAtMost`](@ref). +""" +struct AtMost{T<:Union{Int,LogicalVariableRef}} <: JuMP.AbstractVectorSet + value::T +end + +""" + Exactly <: JuMP.AbstractVectorSet + +Convenient alias for using [`_MOIExactly`](@ref). +""" +struct Exactly{T<:Union{Int,LogicalVariableRef}} <: JuMP.AbstractVectorSet + value::T +end + +# Extend JuMP.moi_set as needed +JuMP.moi_set(set::AtLeast, dim::Int) = _MOIAtLeast(dim) +JuMP.moi_set(set::AtMost, dim::Int) = _MOIAtMost(dim) +JuMP.moi_set(set::Exactly, dim::Int) = _MOIExactly(dim) + +################################################################################ +# LOGICAL CONSTRAINTS +################################################################################ +const _LogicalExpr = JuMP.GenericNonlinearExpr{LogicalVariableRef} + +""" + ConstraintData{C <: JuMP.AbstractConstraint} + +A type for storing constraint objects in [`GDPData`](@ref) and any meta-data +they possess. + +**Fields** +- `constraint::C`: The constraint. +- `name::String`: The name of the proposition. +""" +mutable struct ConstraintData{C <: JuMP.AbstractConstraint} + constraint::C + name::String +end + +""" + LogicalConstraintIndex + +A type for storing the index of a logical constraint. + +**Fields** +- `value::Int64`: The index value. +""" +struct LogicalConstraintIndex + value::Int64 +end + +""" + LogicalConstraintRef + +A type for looking up logical constraints. +""" +struct LogicalConstraintRef + model::JuMP.Model # TODO: generalize for AbstractModels + index::LogicalConstraintIndex +end + +################################################################################ +# DISJUNCT CONSTRAINTS +################################################################################ +""" + DisjunctConstraint + +Used as a tag for constraints that will be used in disjunctions. This is done via +the following syntax: +```julia-repl +julia> @constraint(model, [constr_expr], DisjunctConstraint) + +julia> @constraint(model, [constr_expr], DisjunctConstraint(lvref)) +``` +where `lvref` is a [`LogicalVariableRef`](@ref) that will ultimately be associated +with the disjunct the constraint is added to. If no `lvref` is given, then one is +generated when the disjunction is created. +""" +struct DisjunctConstraint + indicator::LogicalVariableRef +end + +# Create internal type for temporarily packaging constraints for disjuncts +struct _DisjunctConstraint{C <: JuMP.AbstractConstraint, L <: LogicalVariableRef} + constr::C + lvref::L +end + +""" + DisjunctConstraintIndex + +A type for storing the index of a [`DisjunctConstraint`](@ref). + +**Fields** +- `value::Int64`: The index value. +""" +struct DisjunctConstraintIndex + value::Int64 +end + +""" + DisjunctConstraintRef + +A type for looking up disjunctive constraints. +""" +struct DisjunctConstraintRef + model::JuMP.Model # TODO: generalize for AbstractModels + index::DisjunctConstraintIndex +end + +################################################################################ +# DISJUNCTIONS +################################################################################ +""" + Disjunction <: JuMP.AbstractConstraint + +A type for a disjunctive constraint that is comprised of a collection of +disjuncts of indicated by a unique [`LogicalVariableRef`](@ref). + +**Fields** +- `indicators::Vector{LogicalVariableRef}`: The references to the logical variables +(indicators) that uniquely identify each disjunct in the disjunction. +- `nested::Bool`: Is this disjunction nested within another disjunction? +""" +struct Disjunction <: JuMP.AbstractConstraint + indicators::Vector{LogicalVariableRef} + nested::Bool +end + +""" + DisjunctionIndex + +A type for storing the index of a [`Disjunction`](@ref). + +**Fields** +- `value::Int64`: The index value. +""" +struct DisjunctionIndex + value::Int64 +end + +""" + DisjunctionRef + +A type for looking up disjunctive constraints. +""" +struct DisjunctionRef + model::JuMP.Model # TODO: generalize for AbstractModels + index::DisjunctionIndex +end + +################################################################################ +# CLEVER DICTS +################################################################################ + +## Extend the CleverDicts key access methods +# index_to_key +function _MOIUC.index_to_key(::Type{LogicalVariableIndex}, index::Int64) + return LogicalVariableIndex(index) +end +function _MOIUC.index_to_key(::Type{DisjunctConstraintIndex}, index::Int64) + return DisjunctConstraintIndex(index) +end +function _MOIUC.index_to_key(::Type{DisjunctionIndex}, index::Int64) + return DisjunctionIndex(index) +end +function _MOIUC.index_to_key(::Type{LogicalConstraintIndex}, index::Int64) + return LogicalConstraintIndex(index) +end + +# key_to_index +function _MOIUC.key_to_index(key::LogicalVariableIndex) + return key.value +end +function _MOIUC.key_to_index(key::DisjunctConstraintIndex) + return key.value +end +function _MOIUC.key_to_index(key::DisjunctionIndex) + return key.value +end +function _MOIUC.key_to_index(key::LogicalConstraintIndex) + return key.value +end + +################################################################################ +# SOLUTION METHODS +################################################################################ + +""" + AbstractSolutionMethod + +An abstract type for solution methods used to solve `GDPModel`s. +""" +abstract type AbstractSolutionMethod end + +""" + AbstractReformulationMethod <: AbstractSolutionMethod + +An abstract type for reformulation approaches used to solve `GDPModel`s. +""" +abstract type AbstractReformulationMethod <: AbstractSolutionMethod end + +""" + BigM <: AbstractReformulationMethod + +A type for using the big-M reformulation approach for disjunctive constraints. + +**Fields** +- `value::Float64`: Big-M value (default = `1e9`). +- `tight::Bool`: Attempt to tighten the Big-M value (default = `true`)? +""" +struct BigM <: AbstractReformulationMethod + value::Float64 + tighten::Bool + variable_bounds::Dict{JuMP.VariableRef, Tuple{Float64, Float64}} # TODO support other number types? + function BigM(val = 1e9, tight = true) + new(val, tight, Dict{JuMP.VariableRef, Tuple{Float64, Float64}}()) + end +end # TODO add fields if needed + +""" + Hull <: AbstractReformulationMethod + +A type for using the convex hull reformulation approach for disjunctive +constraints. + +**Fields** +- `value::Float64`: epsilon value for nonlinear hull reformulations (default = `1e-6`). +""" +struct Hull <: AbstractReformulationMethod # TODO add fields if needed + value::Float64 + variable_bounds::Dict{JuMP.VariableRef, Tuple{Float64, Float64}} # TODO support other number types? + function Hull(ϵ::Float64 = 1e-6) + new(ϵ, Dict{JuMP.VariableRef, Tuple{Float64, Float64}}()) + end + function Hull(ϵ::Float64, v_bounds::Dict{JuMP.VariableRef, Tuple{Float64, Float64}}) + new(ϵ, v_bounds) + end +end + + +# temp struct to store variable disaggregations (reset for each disjunction) +mutable struct _Hull <: AbstractReformulationMethod + value::Float64 + variable_bounds::Dict{JuMP.VariableRef, Tuple{Float64, Float64}} # TODO support other number types? + disjunction_variables::Dict{JuMP.VariableRef, Vector{JuMP.VariableRef}} + disjunct_variables::Dict{Tuple{JuMP.VariableRef,JuMP.VariableRef}, JuMP.VariableRef} + function _Hull(method::Hull, vrefs::Set{JuMP.VariableRef}) + new( + method.value, + method.variable_bounds, + Dict{JuMP.VariableRef, Vector{JuMP.VariableRef}}(vref => Vector{JuMP.VariableRef}() for vref in vrefs), + Dict{Tuple{JuMP.VariableRef,JuMP.VariableRef}, JuMP.VariableRef}() + ) + end +end + +""" + Indicator <: AbstractReformulationMethod + +A type for using indicator constraint approach for linear disjunctive constraints. +""" +struct Indicator <: AbstractReformulationMethod end + +################################################################################ +# GDP Data +################################################################################ +""" + GDPData + +The core type for storing information in a [`GDPModel`](@ref). +""" +mutable struct GDPData + # Objects + logical_variables::_MOIUC.CleverDict{LogicalVariableIndex, LogicalVariableData} + logical_constraints::_MOIUC.CleverDict{LogicalConstraintIndex, ConstraintData} + disjunct_constraints::_MOIUC.CleverDict{DisjunctConstraintIndex, ConstraintData} + disjunctions::_MOIUC.CleverDict{DisjunctionIndex, ConstraintData{Disjunction}} + + # Indicator variable mappings + indicator_to_binary::Dict{LogicalVariableRef, JuMP.VariableRef} + indicator_to_constraints::Dict{LogicalVariableRef, Vector{Union{DisjunctConstraintRef, DisjunctionRef}}} + + # Reformulation variables and constraints + reformulation_variables::Vector{JuMP.VariableRef} + reformulation_constraints::Vector{JuMP.ConstraintRef} + + # Solution data + solution_method::Union{Nothing, AbstractSolutionMethod} + ready_to_optimize::Bool + + # Default constructor + function GDPData() + new(_MOIUC.CleverDict{LogicalVariableIndex, LogicalVariableData}(), + _MOIUC.CleverDict{LogicalConstraintIndex, ConstraintData}(), + _MOIUC.CleverDict{DisjunctConstraintIndex, ConstraintData}(), + _MOIUC.CleverDict{DisjunctionIndex, ConstraintData{Disjunction}}(), + Dict{LogicalVariableRef, JuMP.VariableRef}(), + Dict{LogicalVariableRef, Vector{Union{DisjunctConstraintRef, DisjunctionRef}}}(), + Vector{JuMP.VariableRef}(), + Vector{JuMP.ConstraintRef}(), + nothing, + false, + ) + end + function GDPData(args...) + new(args...) + end +end diff --git a/src/gdp.jl b/src/gdp.jl index 82eddde..e69de29 100644 --- a/src/gdp.jl +++ b/src/gdp.jl @@ -1,22 +0,0 @@ -mutable struct Disjunct - constraints::Vector{AbstractConstraint} - indicator::VariableRef -end - -mutable struct DisjunctionConstraint <: AbstractConstraint - disjuncts::Vector{Disjunct} -end - -mutable struct GDPdata - gdp_variable_refs::Vector - gdp_variable_names::Vector - disjunctions::Dict -end - -function GDPModel() - model = Model() - model.ext[:GDPdata] = GDPdata() - # model.optimize_hook = - - return model -end \ No newline at end of file diff --git a/src/hull.jl b/src/hull.jl index 82ed4df..a80acd1 100644 --- a/src/hull.jl +++ b/src/hull.jl @@ -1,172 +1,245 @@ -""" - hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, bin_var, args...) where {T,V} - -Apply the hull reformulation to a linear constraint. - - hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) - -Apply the hull reformulation to a nonlinear constraint (includes quadratic) at index k of constraint j in disjunct i. - - hull_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, eps, i, j, k) - -Call the hull reformulation on a constraint at index k of constraint j in disjunct i. -""" -function hull_reformulation!(constr::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, bin_var, args...) where {T,V} - #check constraint type - m = constr.model - i = args[2] #get disjunct index - bin_var_ref = m[bin_var][i] - #replace each variable with its disaggregated version (skip disaggregated vars and binaries) - for var_ref in filter!(v -> !in(v, values(m.ext[:disaggregated_variables])) && !is_binary(v), get_constraint_variables(constr))#setdiff(get_constraint_variables(constr), values(m.ext[:disaggregated_variables])) - # var_ref in values(m.ext[:disaggregated_variables]) && continue #disaggregated variables are not touched - #get disaggregated variable reference - var_name_i = name_disaggregated_variable(var_ref, bin_var, i) - var_i_ref = m.ext[:disaggregated_variables][var_name_i] #NOTE: currently containerized variables are disaggregated individually, which makes this work and does not require using variable_by_name(m, var_name_i) - #check var_ref is present in the constraint - coeff = normalized_coefficient(constr, var_ref) - iszero(coeff) && continue #if not present, skip - #swap variable for disaggregated variable - set_normalized_coefficient(constr, var_ref, 0) #remove original variable - set_normalized_coefficient(constr, var_i_ref, coeff) #add disaggregated variable +################################################################################ +# VARIABLE DISAGGREGATION +################################################################################ +function _update_variable_bounds(vref::JuMP.VariableRef, method::Hull) + if JuMP.is_binary(vref) #not used + lb, ub = 0, 1 + elseif !JuMP.has_lower_bound(vref) || !JuMP.has_upper_bound(vref) + error("Variable $vref must have both lower and upper bounds defined when using the Hull reformulation.") + else + lb = min(0, JuMP.lower_bound(vref)) + ub = max(0, JuMP.upper_bound(vref)) end - #multiply RHS constant by binary variable - rhs = normalized_rhs(constr) #get rhs - set_normalized_rhs(constr, 0) #set rhs to 0 - set_normalized_coefficient(constr, bin_var_ref, -rhs) #add binary variable (same as multiplying rhs constant by binary variable) -end -function hull_reformulation!(constr::ConstraintRef, bin_var, eps, i, j, k) - m = constr.model #get model - if constr in values(m.ext[:perspective_functions]) #if constraint nested and was already reformulated, doesn't need to be reformulated again - push!(m.ext[bin_var], constr) - return + return lb, ub +end +function _disaggregate_variables(model::JuMP.Model, lvref::LogicalVariableRef, vrefs::Set{JuMP.VariableRef}, method::_Hull) + #create disaggregated variables for that disjunct + for vref in vrefs + JuMP.is_binary(vref) && continue #skip binary variables + _disaggregate_variable(model, lvref, vref, method) #create disaggregated var for that disjunct + end +end +function _disaggregate_variable(model::JuMP.Model, lvref::LogicalVariableRef, vref::JuMP.VariableRef, method::_Hull) + #create disaggregated vref + lb, ub = method.variable_bounds[vref] + dvref = JuMP.@variable(model, base_name = "$(vref)_$(lvref)", lower_bound = lb, upper_bound = ub) + push!(_reformulation_variables(model), dvref) + #get binary indicator variable + bvref = _indicator_to_binary(model)[lvref] + #temp storage + if !haskey(method.disjunction_variables, vref) + method.disjunction_variables[vref] = Vector{JuMP.VariableRef}() end - eps = get_reform_param(eps, i, j, k) - #create symbolic variables (using Symbolics.jl) - sym_vars = Dict( - symbolic_variable(var_ref) => - symbolic_variable(m.ext[:disaggregated_variables][name_disaggregated_variable(var_ref, bin_var, i)]) - for var_ref in filter!(v -> !in(v, values(m.ext[:disaggregated_variables])) && !is_binary(v), get_constraint_variables(constr)) + push!(method.disjunction_variables[vref], dvref) + method.disjunct_variables[vref, bvref] = dvref + #create bounding constraints + dvname = JuMP.name(dvref) + lbname = isempty(dvname) ? "" : "$(dvname)_lower_bound" + ubname = isempty(dvname) ? "" : "$(dvname)_upper_bound" + new_con_lb_ref = JuMP.add_constraint(model, + JuMP.build_constraint(error, lb*bvref - dvref, _MOI.LessThan(0)), + lbname ) - ϵ = eps #epsilon parameter for perspective function (See Furman, Sawaya, Grossmann [2020] perspecive function) - bin_var_sym = Symbol("$bin_var[$i]") - λ = Num(Symbolics.Sym{Float64}(bin_var_sym)) - FSG1 = Num(Symbolics.Sym{Float64}(gensym())) #this will become: [(1-ϵ)⋅λ + ϵ] (See Furman, Sawaya, Grossmann [2020] perspecive function) - FSG2 = Num(Symbolics.Sym{Float64}(gensym())) #this will become: ϵ⋅(1-λ) (See Furman, Sawaya, Grossmann [2020] perspecive function) - - #parse constr - op, lhs, rhs = parse_constraint(constr) - replace_Symvars!(lhs, constr.model) #convert JuMP variables into Symbolic variables - gx = eval(lhs) #convert the LHS of the constraint into a Symbolic expression - #use symbolic substitution to obtain the following expression: - #[(1-ϵ)⋅λ + ϵ]⋅g(v/[(1-ϵ)⋅λ + ϵ]) - ϵ⋅g(0)⋅(1-λ) <= 0 - #first term - g1 = FSG1*substitute(gx, Dict(var => var_i/FSG1 for (var,var_i) in sym_vars)) - #second term - g0 = substitute(gx, Dict(var => 0 for var in keys(sym_vars))) - @assert !isinf(g0.val) "Hull reformulation has failed for non-linear constraint $constr: $gx is not defined at 0. Perspective function is undetermined." - g2 = FSG2*g0 - #create perspective function and simplify - pers_func = simplify(g1 - g2, expand = true) - #replace FSG expressions & simplify - pers_func = substitute(pers_func, Dict(FSG1 => (1-ϵ)*λ+ϵ, - FSG2 => ϵ*(1-λ))) - pers_func = simplify(pers_func) - constr_str = string(constr) - m.ext[:perspective_functions][constr_str] = add_reformulated_constraint(constr, bin_var, pers_func, op, rhs) -end -hull_reformulation!(constr::AbstractArray{<:ConstraintRef}, bin_var, eps, i, j, k) = - hull_reformulation!(constr[k], bin_var, eps, i, j, k) + new_con_ub_ref = JuMP.add_constraint(model, + JuMP.build_constraint(error, dvref - ub*bvref, _MOI.LessThan(0)), + ubname + ) + push!(_reformulation_constraints(model), new_con_lb_ref, new_con_ub_ref) + return dvref +end -""" - disaggregate_variables(m::Model, disj, bin_var) +################################################################################ +# VARIABLE AGGREGATION +################################################################################ +function _aggregate_variable(model::JuMP.Model, ref_cons::Vector{JuMP.AbstractConstraint}, vref::JuMP.VariableRef, method::_Hull) + JuMP.is_binary(vref) && return #skip binary variables + con_expr = JuMP.@expression(model, -vref + sum(method.disjunction_variables[vref])) + push!(ref_cons, + JuMP.build_constraint(error, con_expr, _MOI.EqualTo(0)) + ) + return +end -Disaggregate all variables in the model and tag them with the disjunction name. -""" -function disaggregate_variables(m::Model, disj, bin_var) - #check that variables are bounded - var_refs = get_constraint_variables(disj) - @assert all((has_upper_bound.(var_refs) .&& has_lower_bound.(var_refs)) .|| is_binary.(var_refs)) "All variables must be bounded to perform the Hull reformulation." - #reformulate variables - obj_dict = object_dictionary(m) - bounds_dict = :variable_bounds_dict in keys(obj_dict) ? obj_dict[:variable_bounds_dict] : Dict() #NOTE: should pass as an keyword argument - for var in filter!(!in(values(m.ext[:disaggregated_variables])), var_refs) #skip already disaggregated variables - is_binary(var) && continue #NOTE: don't disaggregate binary variables (comes up when nesting disjunctions) - # var in values(m.ext[:disaggregated_variables]) && continue #skip already disaggregated variables - #define UB and LB - LB, UB = get_bounds(var, bounds_dict) - #disaggregate variable and add bounding constraints - sum_vars = AffExpr(0) #initialize sum of disaggregated variables - for i in eachindex(disj) - var_name_i_str = name_disaggregated_variable(var, bin_var, i) - var_name_i = Symbol(var_name_i_str) - #create disaggregated variable - var_i = add_disaggregated_variable(m, var, LB, UB, var_name_i_str) - m.ext[:disaggregated_variables][var_name_i_str] = var_i - #apply bounding constraints on disaggregated variable - var_i_lb = "$(var_name_i)_lb" - var_i_ub = "$(var_name_i)_ub" - push!( - m.ext[bin_var], - @constraint(m, LB * m[bin_var][i] .- var_i .<= 0, base_name = var_i_lb), - @constraint(m, var_i .- UB * m[bin_var][i] .<= 0, base_name = var_i_ub) - ) - #update disaggregated sum expression - add_to_expression!(sum_vars, 1, var_i) +################################################################################ +# CONSTRAINT DISAGGREGATION +################################################################################ +# variable +function _disaggregate_expression(model::JuMP.Model, vref::JuMP.VariableRef, bvref::JuMP.VariableRef, method::_Hull) + if JuMP.is_binary(vref) || !haskey(method.disjunct_variables, (vref, bvref)) #keep any binary variables or nested disaggregated variables unchanged + return vref + else #replace with disaggregated form + return method.disjunct_variables[vref, bvref] + end +end +# affine expression +function _disaggregate_expression(model::JuMP.Model, aff::JuMP.AffExpr, bvref::JuMP.VariableRef, method::_Hull) + new_expr = JuMP.@expression(model, aff.constant*bvref) #multiply constant by binary indicator variable + for (vref, coeff) in aff.terms + if JuMP.is_binary(vref) || !haskey(method.disjunct_variables, (vref, bvref)) #keep any binary variables or nested disaggregated variables unchanged + JuMP.add_to_expression!(new_expr, coeff*vref) + else #replace other vars with disaggregated form + dvref = method.disjunct_variables[vref, bvref] + JuMP.add_to_expression!(new_expr, coeff*dvref) end - #sum disaggregated variables - aggr_con = "$(var)_$(bin_var)_aggregation" - push!( - m.ext[bin_var], - @constraint(m, var == sum_vars, base_name = aggr_con) - ) end + return new_expr +end +# quadratic expression +# TODO review what happens when there are bilinear terms with binary variables involved since these are not being disaggregated +# (e.g., complementarity constraints; though likely irrelevant)... +function _disaggregate_expression(model::JuMP.Model, quad::JuMP.QuadExpr, bvref::JuMP.VariableRef, method::_Hull) + #get affine part + new_expr = _disaggregate_expression(model, quad.aff, bvref, method) + #get nonlinear part + ϵ = method.value + for (pair, coeff) in quad.terms + da_ref = method.disjunct_variables[pair.a, bvref] + db_ref = method.disjunct_variables[pair.b, bvref] + new_expr += coeff * da_ref * db_ref / ((1-ϵ)*bvref+ϵ) + end + return new_expr +end +# constant in NonlinearExpr +function _disaggregate_nl_expression(model::JuMP.Model, c::Number, ::JuMP.VariableRef, method::_Hull) + return c +end +# variable in NonlinearExpr +function _disaggregate_nl_expression(model::JuMP.Model, vref::JuMP.VariableRef, bvref::JuMP.VariableRef, method::_Hull) + ϵ = method.value + dvref = method.disjunct_variables[vref, bvref] + new_var = dvref / ((1-ϵ)*bvref+ϵ) + return new_var +end +# affine expression in NonlinearExpr +function _disaggregate_nl_expression(model::JuMP.Model, aff::JuMP.AffExpr, bvref::JuMP.VariableRef, method::_Hull) + new_expr = aff.constant + ϵ = method.value + for (vref, coeff) in aff.terms + if JuMP.is_binary(vref) #keep any binary variables undisaggregated + dvref = vref + else #replace other vars with disaggregated form + dvref = method.disjunct_variables[vref, bvref] + end + new_expr += coeff * dvref / ((1-ϵ)*bvref+ϵ) + end + return new_expr +end +# quadratic expression in NonlinearExpr +function _disaggregate_nl_expression(model::JuMP.Model, quad::JuMP.QuadExpr, bvref::JuMP.VariableRef, method::_Hull) + #get affine part + new_expr = _disaggregate_nl_expression(model, quad.aff, bvref, method) + #get quadratic part + ϵ = method.value + for (pair, coeff) in quad.terms + da_ref = method.disjunct_variables[pair.a, bvref] + db_ref = method.disjunct_variables[pair.b, bvref] + new_expr += coeff * da_ref * db_ref / ((1-ϵ)*bvref+ϵ)^2 + end + return new_expr +end +# nonlinear expression in NonlinearExpr +function _disaggregate_nl_expression(model::JuMP.Model, nlp::JuMP.NonlinearExpr, bvref::JuMP.VariableRef, method::_Hull) + new_args = Vector{Any}(undef, length(nlp.args)) + for (i,arg) in enumerate(nlp.args) + new_args[i] = _disaggregate_nl_expression(model, arg, bvref, method) + end + new_expr = JuMP.NonlinearExpr(nlp.head, new_args) + return new_expr end -""" - add_disaggregated_variable(m::Model, var::VariableRef, LB, UB, base_name) - -Disaggreagate a variable with lower bound `LB`, upper bound `UB`, and name `base_name`. - - add_disaggregated_variable(m::Model, var::AbstractArray{VariableRef}, LB, UB, base_name) - -Disaggregate a variable block stored in an Array or DenseAxisArray. - - add_disaggregated_variable(m::Model, var::Containers.SparseAxisArray, LB, UB, base_name) - -Disaggregate a variable block stored in a SparseAxisArray. - -NOTE: Because of the way variables are currently disaggregated (a list is made of all associated VariableRefs in the disjunction), -only the first function is used (not the containered ones). -""" -function add_disaggregated_variable(m::Model, var::VariableRef, LB, UB, base_name) - @variable( - m, - lower_bound = min(LB,0), - upper_bound = max(UB,0), - binary = is_binary(var), - integer = is_integer(var), - base_name = base_name +################################################################################ +# HULL REFORMULATION +################################################################################ +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::_Hull +) where {T <: Union{JuMP.VariableRef, JuMP.AffExpr, JuMP.QuadExpr}, S <: Union{_MOI.LessThan, _MOI.GreaterThan, _MOI.EqualTo}} + new_func = _disaggregate_expression(model, con.func, bvref, method) + set_value = _set_value(con.set) + new_func -= set_value*bvref + reform_con = JuMP.build_constraint(error, new_func, S(0)) + return [reform_con] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S, R}, + bvref::JuMP.VariableRef, + method::_Hull +) where {T <: Union{JuMP.VariableRef, JuMP.AffExpr, JuMP.QuadExpr}, S <: Union{_MOI.Nonpositives, _MOI.Nonnegatives, _MOI.Zeros}, R} + new_func = JuMP.@expression(model, [i=1:con.set.dimension], + _disaggregate_expression(model, con.func[i], bvref, method) ) + reform_con = JuMP.build_constraint(error, new_func, con.set) + return [reform_con] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::_Hull +) where {T <: JuMP.GenericNonlinearExpr, S <: Union{_MOI.LessThan, _MOI.GreaterThan, _MOI.EqualTo}} + con_func = _disaggregate_nl_expression(model, con.func, bvref, method) + con_func0 = JuMP.value(v -> 0.0, con.func) + if isinf(con_func0) + error("Operator `$(con.func.head)` is not defined at 0, causing the perspective function on the Hull reformulation to fail.") + end + ϵ = method.value + set_value = _set_value(con.set) + new_func = JuMP.@expression(model, ((1-ϵ)*bvref+ϵ)*con_func - ϵ*(1-bvref)*con_func0 - set_value*bvref) + reform_con = JuMP.build_constraint(error, new_func, S(0)) + return [reform_con] end -################################################################################################# -# NOT USED CURRENTLY -################################################################################################# -function add_disaggregated_variable(m::Model, var::AbstractArray{VariableRef}, LB, UB, base_name) - idxs = Iterators.product(axes(var)...) - var_i_array = [ - add_disaggregated_variable(m, var[idx...], LB[idx...], UB[idx...], "$base_name[$(join(idx,","))]") - for idx in idxs - ] - return containerize(var, var_i_array) -end -function add_disaggregated_variable(m::Model, var::Containers.SparseAxisArray, LB, UB, base_name) - idxs = keys(var.data) - var_i_dict = Dict( - idx => add_disaggregated_variable(m, var[idx], LB[idx], UB[idx], "$base_name[$(join(idx,","))]") - for idx in idxs +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S, R}, + bvref::JuMP.VariableRef, + method::_Hull +) where {T <: JuMP.GenericNonlinearExpr, S <: Union{_MOI.Nonpositives, _MOI.Nonnegatives, _MOI.Zeros}, R} + con_func = JuMP.@expression(model, [i=1:con.set.dimension], + _disaggregate_nl_expression(model, con.func[i], bvref, method) ) - return containerize(var, var_i_dict) + con_func0 = JuMP.value.(v -> 0.0, con.func) + if any(isinf.(con_func0)) + error("At least of of the operators `$([func.head for func in con.func])` is not defined at 0, causing the perspective function on the Hull reformulation to fail.") + end + ϵ = method.value + new_func = JuMP.@expression(model, [i=1:con.set.dimension], + ((1-ϵ)*bvref+ϵ)*con_func[i] - ϵ*(1-bvref)*con_func0[i] + ) + reform_con = JuMP.build_constraint(error, new_func, con.set) + return [reform_con] end -containerize(var::Array, arr) = arr -containerize(var::Containers.DenseAxisArray, arr) = Containers.DenseAxisArray(arr, axes(var)...) -containerize(var::Containers.SparseAxisArray, arr::Dict) = Containers.SparseAxisArray(var) \ No newline at end of file +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::_Hull +) where {T <: Union{JuMP.VariableRef, JuMP.AffExpr, JuMP.QuadExpr}, S <: _MOI.Interval} + new_func = _disaggregate_expression(model, con.func, bvref, method) + new_func_gt = JuMP.@expression(model, new_func - con.set.lower*bvref) + new_func_lt = JuMP.@expression(model, new_func - con.set.upper*bvref) + reform_con_gt = JuMP.build_constraint(error, new_func_gt, _MOI.GreaterThan(0)) + reform_con_lt = JuMP.build_constraint(error, new_func_lt, _MOI.LessThan(0)) + return [reform_con_gt, reform_con_lt] +end +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::_Hull +) where {T <: JuMP.GenericNonlinearExpr, S <: _MOI.Interval} + con_func = _disaggregate_nl_expression(model, con.func, bvref, method) + con_func0 = JuMP.value(v -> 0.0, con.func) + if isinf(con_func0) + error("Operator `$(con.func.head)` is not defined at 0, causing the perspective function on the Hull reformulation to fail.") + end + ϵ = method.value + new_func = JuMP.@expression(model, ((1-ϵ)*bvref+ϵ) * con_func - ϵ*(1-bvref)*con_func0) + new_func_gt = JuMP.@expression(model, new_func - con.set.lower*bvref) + new_func_lt = JuMP.@expression(model, new_func - con.set.upper*bvref) + reform_con_gt = JuMP.build_constraint(error, new_func_gt, _MOI.GreaterThan(0)) + reform_con_lt = JuMP.build_constraint(error, new_func_lt, _MOI.LessThan(0)) + return [reform_con_gt, reform_con_lt] +end \ No newline at end of file diff --git a/src/indicator.jl b/src/indicator.jl new file mode 100644 index 0000000..2aabb13 --- /dev/null +++ b/src/indicator.jl @@ -0,0 +1,35 @@ +################################################################################ +# INDICATOR REFORMULATION +################################################################################ +#scalar disjunct constraint +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.ScalarConstraint{T, S}, + bvref::JuMP.VariableRef, + method::Indicator +) where {T, S} + reform_con = JuMP.build_constraint(error, [1*bvref, con.func], _MOI.Indicator{_MOI.ACTIVATE_ON_ONE}(con.set)) + return [reform_con] +end +#vectorized disjunct constraint +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S}, + bvref::JuMP.VariableRef, + method::Indicator +) where {T, S} + set = _vec_to_scalar_set(con.set) + return [ + JuMP.build_constraint(error, [1*bvref, f], _MOI.Indicator{_MOI.ACTIVATE_ON_ONE}(set)) + for f in con.func + ] +end +#nested indicator reformulation. NOTE: the user needs to provide the appropriate linking constraint for the logical variables for this to work (e.g. w in Exactly(y[1]) to link the parent disjunct y[1] to the nested disjunction w) +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.VectorConstraint{T, S}, + bvref::JuMP.VariableRef, + method::Indicator +) where {T, S <: _MOI.Indicator} + return [con] +end \ No newline at end of file diff --git a/src/logic.jl b/src/logic.jl index 23f592d..56eb198 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -1,59 +1,31 @@ -""" - choose!(m::Model, n::Union{Int,VariableRef}, vars::VariableRef...; mode::Symbol=:exactly, name::String="") - -Add constraint to select n elements from the list of variables. Options for mode -are `:at_least`, `:at_most`, `:exactly`. Alternately, if `n` is a Binary variable, -it becomes the RHS of the constraint. If `name` is provided, it will be converted -to a Symbol and stored in the object dictionary. -""" -function choose!(m::Model, n::Int, vars::VariableRef...; mode::Symbol=:exactly, name::String="") - @assert length(vars) >= n "Not enough variables passed." - @assert all(is_valid.(m, vars)) "Invalid VariableRefs passed." - add_selection!(m, n, vars...; mode, name) +################################################################################ +# LOGIC OPERATORS +################################################################################ +function _op_fallback(name) + error("`$name` is only supported for logical expressions") end -function choose!(m::Model, var::VariableRef, vars::VariableRef...; mode::Symbol=:exactly, name::String="") - @assert all(is_valid.(m, vcat(var,vars...))) "Invalid VariableRefs passed." - add_selection!(m, var, vars...; mode, name) -end -function add_selection!(m::Model, n, vars::VariableRef...; mode::Symbol, name::String) - if mode == :exactly - con = @constraint(m, sum(vars) == n) - elseif mode == :at_least - con = @constraint(m, sum(vars) ≥ n) - elseif mode == :at_most - con = @constraint(m, sum(vars) ≤ n) - end - if !isempty(name) - set_name(con, name) - m[Symbol(name)] = con - end -end - -""" - add_proposition!(m::Model, expr::Expr; name::String = "") -Convert logical proposition expression into conjunctive normal form. -""" -function add_proposition!(m::Model, expr::Expr; name::String = "") - if isempty(name) - name = "{$expr}" #get name to register reformulated logical proposition - end - replace_Symvars!(expr, m; logical_proposition = true) #replace all JuMP variables with Symbolic variables - clause_list = to_cnf!(expr) - #replace symbolic variables with JuMP variables and boolean operators with their algebraic counterparts - for clause in clause_list - replace_JuMPvars!(clause, m) - replace_logic_operators!(clause) +# Define all the logical operators +const _LogicalOperatorHeads = (:(==), :(=>), :||, :&&, :!) +for (name, alt, head) in ( + (:⇔, :iff, :(==)), # \Leftrightarrow + tab + (:⟹, :implies, :(=>)) # Longrightarrow + tab + ) + # make operators + @eval begin + const $name = JuMP.NonlinearOperator((vs...) -> _op_fallback($(Meta.quot(name))), $(Meta.quot(head))) + const $alt = JuMP.NonlinearOperator((vs...) -> _op_fallback($(Meta.quot(alt))), $(Meta.quot(head))) end - #generate and simplify JuMP expressions for the lhs of the algebraic constraints - lhs = eval.(clause_list) - drop_zeros!.(lhs) - unique!(lhs) - #generate JuMP constraints for the logical proposition - if length(lhs) == 1 - m[Symbol(name)] = @constraint(m, lhs[1] >= 1, base_name = name) - else - m[Symbol(name)] = @constraint(m, [i = eachindex(lhs)], lhs[i] >= 1, base_name = name) +end +for (name, alt, head, func) in ( + (:∨, :logical_or, :||, :(|)), # \vee + tab + (:∧, :logical_and, :&&, :(&)), # \wedge + tab + (:¬, :logical_not, :!, :(!)) # \neg + tab + ) + # make operators + @eval begin + const $name = JuMP.NonlinearOperator($func, $(Meta.quot(head))) + const $alt = JuMP.NonlinearOperator($func, $(Meta.quot(head))) end end @@ -73,224 +45,266 @@ function to_cnf!(expr::Expr) return clause_list end -""" - check_logical_proposition(expr::Expr) - -Validate logical proposition provided. -""" -function check_logical_proposition(expr::Expr) - #NOTE: this is quick and dirty (uses Suppressor.jl). A more robust approach should traverse the expression tree to verify that only valid boolean symbols and model variables are used. - dump_str = @capture_out dump(expr, maxdepth = typemax(Int)) #caputre dump - dump_arr = split(dump_str,"\n") #split by \n - filter!(i -> occursin("1:",i), dump_arr) #filter only first args in each subexpression - @assert all(occursin.("1: Symbol ",dump_arr)) "Logical expression does not use valid Boolean symbols: ∨, ∧, ¬, ⇒, ⇔." - operator_list = map(i -> split(i, "Symbol ")[2], dump_arr) - @assert isempty(setdiff(operator_list, ["∨", "∧", "¬", "⇒", "⇔", "variables"])) "Logical expression does not use valid model variables or allowed Boolean symbols (∨, ∧, ¬, ⇒, ⇔)." +################################################################################ +# CONJUNCTIVE NORMAL FORM +################################################################################ +function _to_cnf(lexpr::_LogicalExpr) + #NOTE: some redundant constraints may be created in the process. + # For example A ∨ ¬B ∨ B is always true and is reformulated + # to the redundant constraint A ≥ 0. + lexpr |> + _eliminate_equivalence |> + _eliminate_implication |> + _move_negations_inward |> + _distribute_and_over_or |> + _flatten end -""" - eliminate_equivalence!(expr) - -Eliminate equivalence logical operator. -""" -function eliminate_equivalence!(expr) - if expr isa Expr - if expr.args[1] == :⇔ - @assert length(expr.args) == 3 "Double implication cannot have more than two clauses." - A1 = expr.args[2] - B1 = expr.args[3] - A2 = A1 isa Expr ? copy(A1) : A1 - B2 = B1 isa Expr ? copy(B1) : B1 - expr.args[1] = :∧ - expr.args[2] = :($A1 ⇒ $B1) - expr.args[3] = :($B2 ⇒ $A2) - end - for i in eachindex(expr.args) - expr.args[i] = eliminate_equivalence!(expr.args[i]) +# Eliminate the equivalence operator `⇔` by replacing it with two implications. +function _eliminate_equivalence(lvar::LogicalVariableRef) + return lvar +end +function _eliminate_equivalence(lexpr::_LogicalExpr) + if lexpr.head == :(==) + A = _eliminate_equivalence(lexpr.args[1]) + if length(lexpr.args) > 2 + nested = _LogicalExpr(:(==), Vector{Any}(lexpr.args[2:end])) + B = _eliminate_equivalence(nested) + elseif length(lexpr.args) == 2 + B = _eliminate_equivalence(lexpr.args[2]) + else + error("The equivalence logic operator must have at least two arguments.") end + new_lexpr = _LogicalExpr(:&&, Any[ + _LogicalExpr(:(=>), Any[A, B]), + _LogicalExpr(:(=>), Any[B, A]) + ]) + else + new_lexpr = _LogicalExpr(lexpr.head, Any[ + _eliminate_equivalence(arg) for arg in lexpr.args + ]) end - - return expr + return new_lexpr end -""" - eliminate_implication!(expr) - -Eliminate implication logical operator. -""" -function eliminate_implication!(expr) - if expr isa Expr - if expr.args[1] == :⇒ - @assert length(expr.args) == 3 "Implication cannot have more than two clauses." - A = expr.args[2] - expr.args[1] = :∨ - expr.args[2] = :(¬$A) - end - for i in eachindex(expr.args) - expr.args[i] = eliminate_implication!(expr.args[i]) +# Eliminate the implication operator `⟹` by replacing it with a disjunction. +function _eliminate_implication(lvar::LogicalVariableRef) + return lvar +end +function _eliminate_implication(lexpr::_LogicalExpr) + if lexpr.head == :(=>) + if length(lexpr.args) != 2 + error("The implication operator must have two clauses.") end + A = _eliminate_implication(lexpr.args[1]) + B = _eliminate_implication(lexpr.args[2]) + new_lexpr = _LogicalExpr(:||, Any[ + _LogicalExpr(:!, Any[A]), + B + ]) + else + new_lexpr = _LogicalExpr(lexpr.head, Any[ + _eliminate_implication(arg) for arg in lexpr.args + ]) end - - return expr + return new_lexpr end -""" - move_negations_inwards!(expr) - -Move negation inwards in logical proposition expression. -""" -function move_negations_inwards!(expr) - if expr isa Expr - if expr.args[1] == :¬ - @assert length(expr.args) == 2 "Negation cannot have more than one clause." - A = expr.args[2] - if A isa Expr #only modify if an expression (not a Symbolic variable) is being negated - if A.args[1] == :∨ - expr.args = negate_or!(A).args - elseif A.args[1] == :∧ - expr.args = negate_and!(A).args - elseif A.args[1] == :¬ - expr = negate_negation!(A) - end - end - end - if expr isa Expr - for i in eachindex(expr.args) - expr.args[i] = move_negations_inwards!(expr.args[i]) - end +# Move negations inward by applying De Morgan's laws. +function _move_negations_inward(lvar::LogicalVariableRef) + return lvar +end +function _move_negations_inward(lexpr::_LogicalExpr) + if lexpr.head == :! + if length(lexpr.args) != 1 + error("The negation operator can only have 1 clause.") end + new_lexpr = _negate(lexpr.args[1]) + else + new_lexpr = _LogicalExpr(lexpr.head, Any[ + _move_negations_inward(arg) for arg in lexpr.args + ]) end - - return expr + return new_lexpr end -""" - negate_or!(expr) - -Negate OR boolean operator. -""" -function negate_or!(expr) - @assert expr.args[1] == :∨ "Cannot call negate_or! unless the top operator is an OR operator." - expr.args[1] = :∧ #flip OR to AND - expr.args[2] = :(¬$(expr.args[2])) - expr.args[3] = :(¬$(expr.args[3])) - - return expr +function _negate(lvar::LogicalVariableRef) + return _LogicalExpr(:!, Any[lvar]) end - -""" - negate_and!(expr) - -Negate AND boolean operator. -""" -function negate_and!(expr) - @assert expr.args[1] == :∧ "Cannot call negate_and! unless the top operator is an AND operator." - expr.args[1] = :∨ #flip AND to OR - expr.args[2] = :(¬$(expr.args[2])) - expr.args[3] = :(¬$(expr.args[3])) - - return expr +function _negate(lexpr::_LogicalExpr) + if lexpr.head == :|| + return _negate_or(lexpr) + elseif lexpr.head == :&& + return _negate_and(lexpr) + elseif lexpr.head == :! + return _negate_negation(lexpr) + else + error("Unexpected operator `$(lexpr.head)`in logic expression.") + end end -""" - negate_negation!(expr) +function _negate_or(lexpr::_LogicalExpr) + if length(lexpr.args) < 2 + error("The OR operator must have at least two clauses.") + end + return _LogicalExpr(:&&, Any[ #flip OR to AND + _move_negations_inward(_LogicalExpr(:!, Any[arg])) + for arg in lexpr.args + ]) +end -Negate negation boolean operator. -""" -function negate_negation!(expr) - @assert expr.args[1] == :¬ "Cannot call negate_negation! unless the top operator is a Negation operator." - @assert length(expr.args) == 2 "Negation cannot have more than one clause." - expr = expr.args[2] #remove negation - - return expr +function _negate_and(lexpr::_LogicalExpr) + if length(lexpr.args) < 2 + error("The AND operator must have at least two clauses.") + end + return _LogicalExpr(:||, Any[ #flip AND to OR + _move_negations_inward(_LogicalExpr(:!, Any[arg])) + for arg in lexpr.args + ]) end -""" - distribute_and_over_or!(expr) +function _negate_negation(lexpr::_LogicalExpr) + if length(lexpr.args) != 1 + error("The negation operator can only have 1 clause.") + end + return _move_negations_inward(lexpr.args[1]) +end -Distribute AND over OR boolean operators. -""" -function distribute_and_over_or!(expr) - if expr isa Expr - if expr.args[1] == :∨ - # op = expr.args[1] - A = expr.args[2] #first clause - B = expr.args[3] #second clause - if A isa Expr && A.args[1] == :∧ #first clause has AND - C = A.args[2] #first subclause - D = A.args[3] #second subclause - expr.args[1] = :∧ #flip OR to AND in main expr - expr.args[2] = :($C ∨ $B) - expr.args[3] = :($D ∨ $B) - elseif B isa Expr && B.args[1] == :∧ #second clause has AND - C = B.args[2] #first subclause - D = B.args[3] #second subclause - expr.args[1] = :∧ #flip OR to AND in main expr - expr.args[2] = :($C ∨ $A) - expr.args[3] = :($D ∨ $A) - end +function _distribute_and_over_or(lvar::LogicalVariableRef) + return lvar +end +function _distribute_and_over_or(lexpr0::_LogicalExpr) + lexpr = _flatten(lexpr0) + if lexpr.head == :|| + if length(lexpr.args) < 2 + error("The OR operator must have at least two clauses.") end - for i in eachindex(expr.args) - expr.args[i] = distribute_and_over_or!(expr.args[i]) + loc = findfirst(arg -> arg isa _LogicalExpr ? arg.head == :&& : false, lexpr.args) + if !isnothing(loc) + new_lexpr = _LogicalExpr(:&&, Any[ + _distribute_and_over_or( + _LogicalExpr(:||, Any[arg_i, lexpr.args[setdiff(1:end,loc)]...]) + ) + for arg_i in lexpr.args[loc].args + ]) + else + new_lexpr = lexpr end + else + new_lexpr = _LogicalExpr(lexpr.head, Any[ + _distribute_and_over_or(arg) for arg in lexpr.args + ]) end - - return expr + return new_lexpr end -""" - extract_clauses(expr) - -Extract clauses from conjunctive normal form. -""" -function extract_clauses(expr) - clauses = [] - if expr isa Expr - if expr.args[1] == :∨ - push!(clauses, expr) - else - for i in 2:length(expr.args) - push!(clauses, extract_clauses(expr.args[i])...) +# Flatten netsed OR / AND operators and replace them with their n-ary form. +# For example, ∨(∨(A, B), C) is replaced with ∨(A, B, C). +function _flatten(lvar::LogicalVariableRef) + return lvar +end +function _flatten(lexpr::_LogicalExpr) + if lexpr.head in (:&&, :||) + nary_args = Set{Any}() + for arg in lexpr.args + if arg isa LogicalVariableRef + push!(nary_args, arg) + elseif _isa_literal(arg) + push!(nary_args, arg) + elseif arg.head == lexpr.head + arg_flat = _flatten(arg) + for a in arg_flat.args + push!(nary_args, _flatten(a)) + end + else + arg_flat = _flatten(arg) + push!(nary_args, arg_flat) end end + new_lexpr = _LogicalExpr(lexpr.head, collect(nary_args)) + else + new_lexpr = _LogicalExpr(lexpr.head, Any[ + _flatten(arg) for arg in lexpr.args + ]) end - - return clauses + return new_lexpr end -""" - distribute_and_over_or_recursively!(expr) +################################################################################ +# SELECTOR REFORMULATION +################################################################################ +# cardinality constraint reformulation +function _reformulate_selector(model::JuMP.Model, func, set::Union{_MOIAtLeast, _MOIAtMost, _MOIExactly}) + dict = _indicator_to_binary(model) + bvrefs = [dict[lvref] for lvref in func[2:end]] + new_set = _vec_to_scalar_set(set)(func[1].constant) + cref = JuMP.add_constraint(model, + JuMP.build_constraint(error, JuMP.@expression(model, sum(bvrefs)), new_set) + ) + push!(_reformulation_constraints(model), cref) +end +function _reformulate_selector(model::JuMP.Model, func::Vector{LogicalVariableRef}, set::Union{_MOIAtLeast, _MOIAtMost, _MOIExactly}) + dict = _indicator_to_binary(model) + bvref, bvrefs... = [dict[lvref] for lvref in func] + new_set = _vec_to_scalar_set(set)(0) + cref = JuMP.add_constraint(model, + JuMP.build_constraint(error, JuMP.@expression(model, sum(bvrefs) - bvref), new_set) + ) + push!(_reformulation_constraints(model), cref) +end -Distribute AND over OR boolean operators recursively throughout the expression tree. -""" -function distribute_and_over_or_recursively!(expr) - distribute_and_over_or!(expr) - clause_list = extract_clauses(expr) - wrong_clauses = filter(i -> occursin("∧",string(i)), clause_list) - if !isempty(wrong_clauses) - clause_list = distribute_and_over_or_recursively!(expr) +################################################################################ +# PROPOSITION REFORMULATION +################################################################################ +function _reformulate_proposition(model::JuMP.Model, lexpr::_LogicalExpr) + expr = _to_cnf(lexpr) + if expr.head == :&& + for arg in expr.args + _add_reformulated_proposition(model, arg) + end + elseif expr.head in (:||, :!) && all(_isa_literal.(expr.args)) + _add_reformulated_proposition(model, expr) + else + error("Expression $expr was not converted to proper Conjunctive Normal Form.") end +end - return unique!(clause_list) +# helper to determine if an object is a logic literal (i.e. a logic variable or its negation) +_isa_literal(v::LogicalVariableRef) = true +_isa_literal(v::_LogicalExpr) = (v.head == :!) && (length(v.args) == 1) && _isa_literal(v.args[1]) +_isa_literal(v) = false + +function _add_reformulated_proposition(model::JuMP.Model, arg::Union{LogicalVariableRef,_LogicalExpr}) + func = _reformulate_clause(model, arg) + if !isempty(func.terms) && !all(iszero.(values(func.terms))) + con = JuMP.build_constraint(error, func, _MOI.GreaterThan(1)) + cref = JuMP.add_constraint(model, con) + push!(_reformulation_constraints(model), cref) + end + return end -""" - replace_logic_operators!(expr) +function _reformulate_clause(model::JuMP.Model, lvref::LogicalVariableRef) + func = 1 * _indicator_to_binary(model)[lvref] + return func +end -Replace ∨ for +; replace ¬ for 1 - var. -""" -function replace_logic_operators!(expr) - if expr isa Expr - if expr.args[1] == :∨ - expr.args[1] = :(+) - elseif expr.args[1] == :¬ - A = expr.args[2] - expr = :(1 - $A) - end - for i in 2:length(expr.args) - expr.args[i] = replace_logic_operators!(expr.args[i]) +function _reformulate_clause(model::JuMP.Model, lexpr::_LogicalExpr) + func = zero(JuMP.AffExpr) #initialize func expression + if _isa_literal(lexpr) + JuMP.add_to_expression!(func, 1 - _reformulate_clause(model, lexpr.args[1])) + elseif lexpr.head == :|| + for literal in lexpr.args + if literal isa LogicalVariableRef + JuMP.add_to_expression!(func, _reformulate_clause(model, literal)) + elseif _isa_literal(literal) + JuMP.add_to_expression!(func, 1 - _reformulate_clause(model, literal.args[1])) + else + error("Expression was not converted to proper Conjunctive Normal Form:\n$literal is not a literal.") + end end + else + error("Expression was not converted to proper Conjunctive Normal Form:\n$lexpr.") end - - return expr + return func end \ No newline at end of file diff --git a/src/macros.jl b/src/macros.jl index be4ad3c..1ea2aff 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -1,125 +1,358 @@ -""" - disjunction(m, args...) +################################################################################ +# BASIC HELPERS +################################################################################ +# Macro error function +# inspired from https://github.com/jump-dev/JuMP.jl/blob/709d41b78e56efb4f2c54414266b30932010bd5a/src/macros.jl#L923-L928 +function _macro_error(macroname, args, source, str...) + error("At $(source.file):$(source.line): `@$macroname($(join(args, ", ")))`: ", + str...) +end -Add disjunction macro. -""" -macro disjunction(m, args...) - #get disjunction (args) and keyword arguments - disjuncts, kwargs, _ = Containers._extract_kw_args(args) - - #get kwargs and set defaults if missing - reformulation_kwarg = filter(i -> i.args[1] == :reformulation, kwargs) - reformulation = isempty(reformulation_kwarg) ? throw(UndefKeywordError(:reformulation)) : reformulation_kwarg[1].args[2] - M_kwarg = filter(i -> i.args[1] == :M, kwargs) - M = isempty(M_kwarg) ? :missing : M_kwarg[1].args[2] - ϵ_kwarg = filter(i -> i.args[1] == :ϵ, kwargs) - ϵ = isempty(ϵ_kwarg) ? :(1e-6) : ϵ_kwarg[1].args[2] - name_kwarg = filter(i -> i.args[1] == :name, kwargs) - name = isempty(name_kwarg) ? Symbol("disj_",gensym()) : name_kwarg[1].args[2] - disj_name = isempty(name_kwarg) ? name : Symbol("disj_",eval(name)) - - #create constraints for each disjunction - disj_names = [Symbol("$(disj_name)[$i]") for i in eachindex(disjuncts)] - disjunction = [] - for (d,dname) in zip(disjuncts,disj_names) - if Meta.isexpr(d, :tuple) - for (j,di) in enumerate(d.args) - i = findfirst(x -> x == d, disjuncts) - dname_j = Symbol("$(disj_name)[$i,$j]") - d.args[j] = add_disjunction_constraint(m, di, dname_j) - end - push!(disjunction, d) - else - push!(disjunction, add_disjunction_constraint(m, d, dname)) +# Escape when needed +# taken from https://github.com/jump-dev/JuMP.jl/blob/709d41b78e56efb4f2c54414266b30932010bd5a/src/macros.jl#L895-L897 +_esc_non_constant(x::Number) = x +_esc_non_constant(x::Expr) = isexpr(x,:quote) ? x : esc(x) +_esc_non_constant(x) = esc(x) + +# Extract the name from a macro expression +# Inspired from https://github.com/jump-dev/JuMP.jl/blob/45ce630b51fb1d72f1ff8fed35a887d84ef3edf7/src/Containers/macro.jl#L8-L17 +_get_name(c::Symbol) = c +_get_name(c::Nothing) = () +_get_name(c::AbstractString) = c +function _get_name(c::Expr) + if isexpr(c, :string) + return c + else + return c.args[1] + end +end + +# Given a base_name and idxvars, returns an expression that constructs the name +# of the object. +# Inspired from https://github.com/jump-dev/JuMP.jl/blob/709d41b78e56efb4f2c54414266b30932010bd5a/src/macros.jl#L930-L946 +function _name_call(base_name, idxvars) + if isempty(idxvars) || base_name == "" + return base_name + end + ex = Expr(:call, :string, base_name, "[") + for i in eachindex(idxvars) + # Converting the arguments to strings before concatenating is faster: + # https://github.com/JuliaLang/julia/issues/29550. + esc_idxvar = esc(idxvars[i]) + push!(ex.args, :(string($esc_idxvar))) + i < length(idxvars) && push!(ex.args, ",") + end + push!(ex.args, "]") + return ex +end + +# Process macro arugments +function _extract_kwargs(args) + arg_list = collect(args) + if !isempty(args) && isexpr(args[1], :parameters) + p = popfirst!(arg_list) + append!(arg_list, p.args) + end + extra_kwargs = filter(x -> isexpr(x, :(=)) && x.args[1] != :container && + x.args[1] != :base_name, arg_list) + container_type = :Auto + base_name = nothing + for kw in arg_list + if isexpr(kw, :(=)) && kw.args[1] == :container + container_type = kw.args[2] + elseif isexpr(kw, :(=)) && kw.args[1] == :base_name + base_name = esc(kw.args[2]) end end - - #build disjunction - code = quote - DisjunctiveProgramming.add_disjunction!($m, $(disjunction...); reformulation = $reformulation, M = $M, ϵ = $ϵ, name = $name) + pos_args = filter!(x -> !isexpr(x, :(=)), arg_list) + return pos_args, extra_kwargs, container_type, base_name +end + +# Add on keyword arguments to a function call expression and escape the expressions +# Adapted from https://github.com/jump-dev/JuMP.jl/blob/d9cd5fb16c2d0a7e1c06aa9941923492fc9a28b5/src/macros.jl#L11-L36 +function _add_kwargs(call, kwargs) + for kw in kwargs + push!(call.args, esc(Expr(:kw, kw.args...))) + end + return +end + +# Add on positional args to a function call and escape +# Adapted from https://github.com/jump-dev/JuMP.jl/blob/a325eb638d9470204edb2ef548e93e59af56cc19/src/macros.jl#L57C1-L65C4 +function _add_positional_args(call, args) + kw_args = filter(arg -> isexpr(arg, :kw), call.args) + filter!(arg -> !isexpr(arg, :kw), call.args) + for arg in args + push!(call.args, esc(arg)) + end + append!(call.args, kw_args) + return +end + +# Determine if an expression contains any index variable symbols +function _has_idxvars(expr, idxvars) + expr in idxvars && return true + if expr isa Expr + return any(_has_idxvars(a, idxvars) for a in expr.args) end + return false +end - return esc(code) +# Ensure a model argument is valid +# Inspired from https://github.com/jump-dev/JuMP.jl/blob/d9cd5fb16c2d0a7e1c06aa9941923492fc9a28b5/src/macros.jl#L38-L44 +function _valid_model(_error::Function, model, name) + is_gdp_model(model) || _error("$name is not a `GDPModel`.") end -""" - add_disjunction_constraint(m, d, dname) +# Check if a macro julia variable can be registered +# Adapted from https://github.com/jump-dev/JuMP.jl/blob/d9cd5fb16c2d0a7e1c06aa9941923492fc9a28b5/src/macros.jl#L66-L86 +function _error_if_cannot_register( + _error::Function, + model, + name::Symbol + ) + if haskey(JuMP.object_dictionary(model), name) + _error("An object of name $name is already attached to this model. If ", + "this is intended, consider using the anonymous construction ", + "syntax, e.g., `x = @macro_name(model, ...)` where the name ", + "of the object does not appear inside the macro. Alternatively, ", + "use `unregister(model, :$(name))` to first unregister the ", + "existing name from the model. Note that this will not delete ", + "the object; it will just remove the reference at ", + "`model[:$(name)]`") + end + return +end -Add disjunction constraint with name dname. -""" -function add_disjunction_constraint(m, d, dname) - if Meta.isexpr(d, :block) - d = quote - try - @constraints($m,$d) - catch e - if e isa ErrorException - @NLconstraints($m,$d) - else - throw(e) - end - end - end - elseif Meta.isexpr(d, (:call, :comparison)) - d = quote - try - @constraint($m,$dname,$d) - catch e - if e isa ErrorException - @NLconstraint($m,$dname,$d) - else - throw(e) - end - end - end +# Update the creation code to register and assign the object to the name +# Inspired from https://github.com/jump-dev/JuMP.jl/blob/d9cd5fb16c2d0a7e1c06aa9941923492fc9a28b5/src/macros.jl#L88-L120 +function _macro_assign_and_return(_error, code, name, model) + return quote + _error_if_cannot_register($_error, $model, $(quot(name))) + $(esc(name)) = $code + $model[$(quot(name))] = $(esc(name)) end - - return d end +# Wrap the macro generated code for better stacttraces (assumes model is escaped) +# Inspired from https://github.com/jump-dev/JuMP.jl/blob/d9cd5fb16c2d0a7e1c06aa9941923492fc9a28b5/src/macros.jl#L46-L64 +function _finalize_macro(_error, model, code, source::LineNumberNode) + return Expr(:block, source, + :(_valid_model($_error, $model, $(quot(model.args[1])))), code) +end + +################################################################################ +# DISJUNCTION MACRO +################################################################################ """ - add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e-6,name=missing) + @disjunction(model, expr, kw_args...) + +Add a disjunction described by the expression `expr`, +which must be a `Vector` of `LogicalVariableRef`s. + + @disjunction(model, ref[i=..., j=..., ...], expr, kw_args...) -Add disjunction and reformulate. +Add a group of disjunction described by the expression `expr` parameterized +by `i`, `j`, ..., which must be a `Vector` of `LogicalVariableRef`s. + +The recognized keyword arguments in `kw_args` are the following: +- `base_name`: Sets the name prefix used to generate constraint names. + It corresponds to the constraint name for scalar constraints, otherwise, + the constraint names are set to `base_name[...]` for each index `...` + of the axes `axes`. +- `container`: Specify the container type. """ -function add_disjunction!(m::Model,disj...;reformulation::Symbol,M=missing,ϵ=1e-6,name=missing) - #run checks - @assert reformulation in [:big_m, :hull] "Invalid reformulation method passed to keyword argument `:reformulation`. Valid options are :big_m (Big-M Reformulation) and :hull (Hull Reformulation)." - @assert !all(isnothing.(disj)) "Must have at least 1 disjunct that is not `nothing`." - # @assert length(disj) > 1 "At least 2 disjuncts must be included. If there is an empty disjunct, use `nothing`." - - #create indicator variable - bin_var = ismissing(name) ? Symbol("disj_",gensym()) : name - if bin_var in keys(object_dictionary(m)) - @assert m[bin_var] isa AbstractArray{VariableRef} "The binary variable $bin_var is already registered in the model and is not of type AbstractArray{VariableRef}. Specify a new name for the disjunction." - @assert length(disj) == prod(size(m[bin_var])) "The binary variable $bin_var is already registered in the model and its size is not equal to the number of disjunts. Specify a new name for the disjunction." +macro disjunction(model, args...) + # prepare the model + esc_model = esc(model) + + # define error message function + _error(str...) = _macro_error(:disjunction, (model, args...), + __source__, str...) + + # parse the arguments + pos_args, extra_kwargs, container_type, base_name = _extract_kwargs(args) + + # initial processing of positional arguments + length(pos_args) >= 1 || _error("Not enough arguments, please see docs for accepted `@disjunction` syntax..") + y = first(pos_args) + extra = pos_args[2:end] + if isexpr(args[1], :block) + _error("Invalid syntax. Did you mean to use `@disjunctions`?") + end + + # TODO: three cases lead to problems when julia variables are used for DisjunctConstraint tags + # which violate the cases considered in the table further below. The three cases are + # (i) @disjunction(m, Y[1, :], tag[1]) --> gets confused for @disjunction(m, name[...], Y[1, :]) (Case 2 below) + # (ii) @disjunction(m, Y, tagref) --> gets confused for @disjunction(m, name, Y) (Case 1 below) + # (iii) @disjunction(m, Y[1, :], tagref) --> gets confused for @disjunction(m, name[...], Y) (Case 2 below) + + # Determine if a reference/container argument was given by the user + # There are 9 cases to consider: + # Case | y | type of y | y.head + # -----+------------------------------------+-----------+------------ + # 1 | name | Symbol | NA + # 2 | name[1:2] | Expr | :ref + # 3 | name[i = 1:2, j = 1:2; i + j >= 3] | Expr | :typed_vcat + # 4 | [1:2] | Expr | :vect + # 5 | [i = 1:2, j = 1:2; i + j >= 3] | Expr | :vcat + # 6 | [Y[1], Y[2]] or [Y[i] for i in I] | Expr | :vect or :comprehension + # 7 | Y | Symbol | NA + # 8 | Y[1, :] | Expr | :ref + # 9 | some very wrong syntax | Expr | anything else + + # Case 8 + if isexpr(y, :ref) && (isempty(extra) || isexpr(extra[1], :call)) + c = gensym() + x = _esc_non_constant(y) + is_anon = true + # Cases 2, 3, 5 + elseif isexpr(y, (:vcat, :ref, :typed_vcat)) + length(extra) >= 1 || _error("No disjunction expression was given, please see docs for accepted `@disjunction` syntax..") + c = y + x = _esc_non_constant(popfirst!(extra)) + is_anon = isexpr(y, :vcat) # check for Case 5 + # Cases 1, 4 + elseif (isa(y, Symbol) || isexpr(y, :vect)) && + !isempty(extra) && + (isa(extra[1], Symbol) || isexpr(extra[1], (:vect, :comprehension, :ref))) + c = y + x = _esc_non_constant(popfirst!(extra)) + is_anon = isexpr(y, :vect) # check for Case 4 + # Cases 6, 7 + elseif isa(y, Symbol) || isexpr(y, (:vect, :comprehension)) + c = gensym() + x = _esc_non_constant(y) + is_anon = true + # Case 9 else - m[bin_var] = @variable(m, [eachindex(disj)], Bin, base_name = string(bin_var)) + _error("Unrecognized syntax, please see docs for accepted `@disjunction` syntax.") end - #record boolean variable - if !in(:boolean_variables, keys(m.ext)) - m.ext[:boolean_variables] = [] #store boolean variables to avoid disaggregating (nested disjunctions) + # process the name + name = _get_name(c) + if isnothing(base_name) + base_name = is_anon ? "" : string(name) + end + if !isa(name, Symbol) && !is_anon + _error("Expression $name should not be used as a disjunction name. Use " * + "the \"anonymous\" syntax $name = @disjunction(model, " * + "...) instead.") end - push!(m.ext[:boolean_variables], m[bin_var]) - #reformulate disjunction - param = reformulation == :big_m ? M : ϵ - reformulate_disjunction(m, disj...; bin_var, reformulation, param) + # make the creation code + if isa(c, Symbol) + # easy case with single parameter + creation_code = :( _disjunction($_error, $esc_model, $x, $base_name) ) + _add_positional_args(creation_code, extra) + _add_kwargs(creation_code, extra_kwargs) + else + # we have a container of parameters + idxvars, inds = JuMP.Containers.build_ref_sets(_error, c) + if model in idxvars + _error("Index $(model) is the same symbol as the model. Use a ", + "different name for the index.") + end + name_code = _name_call(base_name, idxvars) + disjunction_call = :( _disjunction($_error, $esc_model, $x, $name_code) ) + _add_positional_args(disjunction_call, extra) + _add_kwargs(disjunction_call, extra_kwargs) + creation_code = JuMP.Containers.container_code(idxvars, inds, disjunction_call, + container_type) + end + + # finalize the macro + if is_anon + macro_code = creation_code + else + macro_code = _macro_assign_and_return(_error, creation_code, name, + esc_model) + end + return _finalize_macro(_error, esc_model, macro_code, __source__) end +# Pluralize the @disjunction macro +# Inspired from https://github.com/jump-dev/JuMP.jl/blob/9037ed9334720bd04bc372e5915cc042a4895e5b/src/macros.jl#L1489-L1547 """ - proposition(m, expr; [name::String = ""]) + @disjunctions(model, args...) -Add logical proposition macro. +Adds groups of disjunctions at once, in the same fashion as the `@disjunction` macro. + +The model must be the first argument, and multiple disjunctions can be added on multiple +lines wrapped in a `begin ... end` block. + +The macro returns a tuple containing the disjunctions that were defined. + +## Example + +```jldoctest +julia> model = GDPModel(); + +julia> @variable(model, w); + +julia> @variable(model, x); + +julia> @variable(model, Y[1:4], LogicalVariable); + +julia> @constraint(model, [i=1:2], w == i, DisjunctConstraint(Y[i])); + +julia> @constraint(model, [i=3:4], x == i, DisjunctConstraint(Y[i])); + +julia> @disjunctions(model, begin + [Y[1], Y[2]] + [Y[3], Y[4]] + end); +```` """ -macro proposition(m, args...) - expr, kwargs, _ = Containers._extract_kw_args(args) - name_kwarg = filter(i -> i.args[1] == :name, kwargs) - name = isempty(name_kwarg) ? Symbol("") : name_kwarg[1].args[2] - #get args - expr = QuoteNode(expr) - code = :(DisjunctiveProgramming.add_proposition!($m, $expr[1]; name = $name)) - - return esc(code) -end +macro disjunctions(m, x) + if !(isa(x, Expr) && x.head == :block) + error( + "Invalid syntax for @disjunctions. The second argument must be a `begin end` " * + "block. For example:\n" * + "```julia\n@disjunctions(model, begin\n # ... lines here ...\nend)\n```." + ) + end + @assert isa(x.args[1], LineNumberNode) + lastline = x.args[1] + code = Expr(:tuple) + singular = Expr(:., DisjunctiveProgramming, :($(QuoteNode(Symbol("@disjunction"))))) + for it in x.args + if isa(it, LineNumberNode) + lastline = it + elseif isexpr(it, :tuple) # line with commas + args = [] + # Keyword arguments have to appear like: + # x, (start = 10, lower_bound = 5) + # because of the precedence of "=". + for ex in it.args + if isexpr(ex, :tuple) # embedded tuple + append!(args, ex.args) + else + push!(args, ex) + end + end + macro_call = esc( + Expr( + :macrocall, + singular, + lastline, + m, + args..., + ), + ) + push!(code.args, macro_call) + else # stand-alone symbol or expression + macro_call = esc( + Expr( + :macrocall, + singular, + lastline, + m, + it, + ), + ) + push!(code.args, macro_call) + end + end + return code +end \ No newline at end of file diff --git a/src/model.jl b/src/model.jl new file mode 100644 index 0000000..288a077 --- /dev/null +++ b/src/model.jl @@ -0,0 +1,84 @@ +################################################################################ +# GDP MODEL +################################################################################ + +""" + GDPModel([optimizer]; [kwargs...])::JuMP.Model + +The core model object for building general disjunction programming models. +""" +function GDPModel(args...; kwargs...) + model = JuMP.Model(args...; kwargs...) + model.ext[:GDP] = GDPData() + JuMP.set_optimize_hook(model, _optimize_hook) + return model +end + +# Define what should happen to solve a GDPModel +# See https://github.com/jump-dev/JuMP.jl/blob/9ea1df38fd320f864ab4c93c78631d0f15939c0b/src/JuMP.jl#L718-L745 +function _optimize_hook( + model::JuMP.Model; + method::AbstractSolutionMethod + ) # can add more kwargs if wanted + if !_ready_to_optimize(model) || _solution_method(model) != method + reformulate_model(model, method) + end + return JuMP.optimize!(model; ignore_optimize_hook = true) +end + +################################################################################ +# GDP DATA +################################################################################ + +""" + gdp_data(model::JuMP.Model)::GDPData + +Extract the [`GDPData`](@ref) from a `GDPModel`. +""" +function gdp_data(model::JuMP.Model) + is_gdp_model(model) || error("Cannot access GDP data from a regular `JuMP.Model`.") + return model.ext[:GDP] +end + +""" + is_gdp_model(model::JuMP.Model)::Bool + +Return if `model` was created via the [`GDPModel`](@ref) constructor. +""" +function is_gdp_model(model::JuMP.Model) + return haskey(model.ext, :GDP) +end + +""" + disjunction_indicators(disjunction::DisjunctionRef) + +Return LogicalVariableRefs associated with a disjunction. +""" +function disjunction_indicators(disjunction::DisjunctionRef) + model, idx = disjunction.model, disjunction.index + return _disjunctions(model)[idx].constraint.indicators +end + +# Create accessors for GDP data fields +_logical_variables(model::JuMP.Model) = gdp_data(model).logical_variables +_logical_constraints(model::JuMP.Model) = gdp_data(model).logical_constraints +_disjunct_constraints(model::JuMP.Model) = gdp_data(model).disjunct_constraints +_disjunctions(model::JuMP.Model) = gdp_data(model).disjunctions +_indicator_to_binary(model::JuMP.Model) = gdp_data(model).indicator_to_binary +_indicator_to_constraints(model::JuMP.Model) = gdp_data(model).indicator_to_constraints +_reformulation_variables(model::JuMP.Model) = gdp_data(model).reformulation_variables +_reformulation_constraints(model::JuMP.Model) = gdp_data(model).reformulation_constraints +_ready_to_optimize(model::JuMP.Model) = gdp_data(model).ready_to_optimize # Determine if the model is ready to call `optimize!` without a optimize hook +_solution_method(model::JuMP.Model) = gdp_data(model).solution_method # Get the current solution method + +# Update the ready_to_optimize field +function _set_ready_to_optimize(model::JuMP.Model, is_ready::Bool) + gdp_data(model).ready_to_optimize = is_ready + return +end + +# Set the solution method +function _set_solution_method(model::JuMP.Model, method::AbstractSolutionMethod) + gdp_data(model).solution_method = method + return +end \ No newline at end of file diff --git a/src/reformulate.jl b/src/reformulate.jl index f144ece..fd1c3c8 100644 --- a/src/reformulate.jl +++ b/src/reformulate.jl @@ -1,69 +1,169 @@ +################################################################################ +# REFORMULATE +################################################################################ """ - reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) + reformulate_model(model::JuMP.Model, method::AbstractSolutionMethod) -Reformulate disjunction on a JuMP model. +Reformulate a `GDPModel` using the specified `method`. Prior to reformulation, +all previous reformulation variables and constraints are deleted. +""" +function reformulate_model(model::JuMP.Model, method::AbstractSolutionMethod) + #clear all previous reformulations + _clear_reformulations(model) + #reformulate + _reformulate_logical_variables(model) + _reformulate_disjunctions(model, method) + _reformulate_logical_constraints(model) + #set solution method + _set_solution_method(model, method) + _set_ready_to_optimize(model, true) +end - reformulate_disjunction(disj, bin_var, reformulation, param) +function _clear_reformulations(model::JuMP.Model) + JuMP.delete.(model, _reformulation_constraints(model)) + JuMP.delete.(model, _reformulation_variables(model)) + empty!(gdp_data(model).reformulation_constraints) + empty!(gdp_data(model).reformulation_variables) +end -Reformulate disjunction. -""" -function reformulate_disjunction(m::Model, disj...; bin_var, reformulation, param) - #placeholder to store new constraints (reformulated) - @assert !in(bin_var, keys(m.ext)) "$bin_var cannot be used as the indicator variable for the disjunction because it has already been used on another disjunction." - m.ext[bin_var] = [] #store constraints associated with indicator variable - #check disj - disj = [check_constraint!(m, constr) for constr in disj] - #run reformulation - if reformulation == :hull - if !in(:disaggregated_variables, keys(m.ext)) - m.ext[:disaggregated_variables] = Dict{String,VariableRef}() #record disaggregated variables to avoid duplicating disaggregation (nested disjunctions) +################################################################################ +# LOGICAL VARIABLES +################################################################################ +# create binary (indicator) variables for logic variables. +function _reformulate_logical_variables(model::JuMP.Model) + for (lv_idx, lv_data) in _logical_variables(model) + lv = lv_data.variable + lvref = LogicalVariableRef(model, lv_idx) + bvref = JuMP.@variable(model, base_name = lv_data.name, binary = true, start = lv.start_value) + if JuMP.is_fixed(lvref) + JuMP.fix(bvref, JuMP.fix_value(lvref)) end - if !in(:perspective_functions, keys(m.ext)) - m.ext[:perspective_functions] = Dict() #record previously added nonlinear perspective functions - end - disaggregate_variables(m, disj, bin_var) + push!(_reformulation_variables(model), bvref) + _indicator_to_binary(model)[lvref] = bvref end - reformulate_disjunction(m, disj, bin_var, reformulation, param) end -function reformulate_disjunction(m::Model, disj, bin_var, reformulation, param) - for (i,constr) in enumerate(disj) - reformulate_constraint(constr, bin_var, reformulation, param, i) - end - if reformulation == :big_m - update_constraint_list!(disj, m.ext[bin_var]) - elseif reformulation == :hull - update_constraint_list2!(disj, m.ext[bin_var]) + +################################################################################ +# DISJUNCTIONS +################################################################################ +# disjunctions +function _reformulate_all_disjunctions(model::JuMP.Model, method::AbstractReformulationMethod) + for (_, disj) in _disjunctions(model) + disj.constraint.nested && continue #only reformulate top level disjunctions + ref_cons = reformulate_disjunction(model, disj.constraint, method) + for (i, ref_con) in enumerate(ref_cons) + name = isempty(disj.name) ? "" : string(disj.name,"_$i") + cref = JuMP.add_constraint(model, ref_con, name) + push!(_reformulation_constraints(model), cref) + end end end +function _reformulate_disjunctions(model::JuMP.Model, method::AbstractReformulationMethod) + _reformulate_all_disjunctions(model, method) +end +function _reformulate_disjunctions(model::JuMP.Model, method::BigM) + method.tighten && _query_variable_bounds(model, method) + _reformulate_all_disjunctions(model, method) +end +function _reformulate_disjunctions(model::JuMP.Model, method::Hull) + _query_variable_bounds(model, method) + _reformulate_all_disjunctions(model, method) +end +# disjuncts """ - reformulate_constraint(constr::Tuple, bin_var, reformulation, param, i) + reformulate_disjunction( + model::JuMP.Model, + disj::Disjunction, + method::AbstractReformulationMethod + ) where {T<:Disjunction} -Reformulate a Tuple of constraints. +Reformulate a disjunction using the specified `method`. Current reformulation methods include +`BigM`, `Hull`, and `Indicator`. This method can be extended for other reformulation techniques. - reformulate_constraint(constr::AbstractArray{<:ConstraintRef}, bin_var, reformulation, param, i, j = missing) +The `disj` field is the `ConstraintData` object for the disjunction, stored in the +`disjunctions` field of the `GDPData` object. +""" +# generic fallback (e.g., BigM, Indicator) +function reformulate_disjunction(model::JuMP.Model, disj::Disjunction, method::AbstractReformulationMethod) + ref_cons = Vector{JuMP.AbstractConstraint}() #store reformulated constraints + for d in disj.indicators + _reformulate_disjunct(model, ref_cons, d, method) + end + return ref_cons +end +# hull specific +function reformulate_disjunction(model::JuMP.Model, disj::Disjunction, method::Hull) + ref_cons = Vector{JuMP.AbstractConstraint}() #store reformulated constraints + disj_vrefs = _get_disjunction_variables(model, disj) + hull = _Hull(method, disj_vrefs) + for d in disj.indicators #reformulate each disjunct + _disaggregate_variables(model, d, disj_vrefs, hull) #disaggregate variables for that disjunct + _reformulate_disjunct(model, ref_cons, d, hull) + end + for vref in disj_vrefs #create sum constraint for disaggregated variables + _aggregate_variable(model, ref_cons, vref, hull) + end + return ref_cons +end +function reformulate_disjunction(model::JuMP.Model, disj::Disjunction, method::_Hull) + return reformulate_disjunction(model, disj, Hull(method.value, method.variable_bounds)) +end -Reformulate a block of constraints. +# individual disjuncts +function _reformulate_disjunct(model::JuMP.Model, ref_cons::Vector{JuMP.AbstractConstraint}, lvref::LogicalVariableRef, method::AbstractReformulationMethod) + #reformulate each constraint and add to the model + bvref = _indicator_to_binary(model)[lvref] + !haskey(_indicator_to_constraints(model), lvref) && return #skip if disjunct is empty + for cref in _indicator_to_constraints(model)[lvref] + con = JuMP.constraint_object(cref) + append!(ref_cons, reformulate_disjunct_constraint(model, con, bvref, method)) + end + return +end - reformulate_constraint(constr::ConstraintRef, bin_var, reformulation, param, i, j = missing, k = missing) +_index_to_constraint(model::JuMP.Model, cidx::DisjunctConstraintIndex) = _disjunct_constraints(model)[cidx] +_index_to_constraint(model::JuMP.Model, cidx::DisjunctionIndex) = _disjunctions(model)[cidx] -Reformulate a constraint. -""" -function reformulate_constraint(constr::Tuple, bin_var, reformulation, param, i) - for (j,constr_j) in enumerate(constr) - reformulate_constraint(constr_j, bin_var, reformulation, param, i, j) +# reformulation for nested disjunction +# NOTE: name of inner disjunction (if given) is currently lost (not passed upwards) +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::Disjunction, + bvref::JuMP.VariableRef, + method::AbstractReformulationMethod +) + ref_cons = reformulate_disjunction(model, con, method) + new_ref_cons = Vector{JuMP.AbstractConstraint}() + for ref_con in ref_cons + append!(new_ref_cons, reformulate_disjunct_constraint(model, ref_con, bvref, method)) end + return new_ref_cons end -function reformulate_constraint(constr::AbstractArray, bin_var, reformulation, param, i, j = missing) - for k in eachindex(constr) - reformulate_constraint(constr[k], bin_var, reformulation, param, i, j, k) - end + +# reformulation fallback for individual disjunct constraints +function reformulate_disjunct_constraint( + model::JuMP.Model, + con::JuMP.AbstractConstraint, + bvref::JuMP.VariableRef, + method::AbstractReformulationMethod +) + error("$(typeof(method)) reformulation for constraint $con is not supported yet.") end -function reformulate_constraint(constr::ConstraintRef, bin_var, reformulation, param, i, j = missing, k = missing) - if reformulation == :big_m - big_m_reformulation!(constr, bin_var, param, i, j, k) - elseif reformulation == :hull - hull_reformulation!(constr, bin_var, param, i, j, k) + +################################################################################ +# LOGICAL CONSTRAINT REFORMULATION +################################################################################ +# all logical constraints +function _reformulate_logical_constraints(model::JuMP.Model) + for (_, lcon) in _logical_constraints(model) + _reformulate_logical_constraint(model, lcon.constraint.func, lcon.constraint.set) end end -reformulate_constraint(args...) = nothing +# individual logical constraints +function _reformulate_logical_constraint(model::JuMP.Model, func, set::Union{_MOIAtMost, _MOIAtLeast, _MOIExactly}) + return _reformulate_selector(model, func, set) +end +function _reformulate_logical_constraint(model::JuMP.Model, func, set::IsTrue) + return _reformulate_proposition(model, func) +end \ No newline at end of file diff --git a/src/utils.jl b/src/utils.jl index 54af519..e69de29 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -1,252 +0,0 @@ -""" - get_indices(arr::Containers.SparseAxisArray) - -Get indices in SparseAxisArray. - - get_indices(arr) - -Get indices in Array or DenseAxisArray. -""" -get_indices(arr::Containers.SparseAxisArray) = keys(arr.data) -get_indices(arr) = Iterators.product(axes(arr)...) - -""" - get_reform_param(param, args..., kwargs...) - -Get M or ϵ parameter for reformulation. -""" -get_reform_param(param::Missing, args...; constr) = calculate_tight_M(constr) #if param is missing, infer bigM (ϵ does not pass a kwarg) -get_reform_param(param::Number, args...; kwargs...) = param #if param is a number return it -get_reform_param(param::Union{Vector,Tuple}, idx::Int, args...; kwargs...) = #index param by next Integer arg (idx) - get_reform_param(param[idx], args...; kwargs...) -function get_reform_param(param::Dict, args...; kwargs...) - arg_list = [arg for arg in args if !ismissing(arg)] #remove mising args (if j or k indices are missing) - get_reform_param(param[arg_list...]; kwargs...) -end - -""" - get_constraint_variables(con) - -Get variables that have non-zero coefficients in the passed constraint, -constraint container, or disjunction -""" -function get_constraint_variables(c::NonlinearConstraintRef) - list = Set{Int}() - nlp = nonlinear_model(c.model) - constraint = nlp[index(c)] - constraint_variables!(list, nlp, constraint.expression) - return map(i -> VariableRef(c.model, MOI.VariableIndex(i)), collect(list)) -end -get_constraint_variables(c::ConstraintRef) = constraint_variables(constraint_object(c).func) -get_constraint_variables(c::AbstractArray{<:ConstraintRef}) = union(get_constraint_variables.(c)...) -get_constraint_variables(disjunction) = union([get_constraint_variables(disj) for disj in disjunction if !isnothing(disj)]...) - -""" - get_bounds(var::VariableRef) - -Get bounds on a variable. - - get_bounds(var, bounds_dict::Dict) - -Get bounds on a variable. Check if a bounds dictionary has been provided with bounds for that value. - - get_bounds(var::AbstractArray{VariableRef}, bounds_dict::Dict, LB, UB) - -Update lower bound `LB` and upper bound `UB` on a variable container. -""" -function get_bounds(var::VariableRef) - LB = has_lower_bound(var) ? lower_bound(var) : (is_binary(var) ? 0 : -Inf) - UB = has_upper_bound(var) ? upper_bound(var) : (is_binary(var) ? 1 : Inf) - return LB, UB -end -function get_bounds(var::VariableRef, bounds_dict::Dict) - if string(var) in keys(bounds_dict) - return bounds_dict[string(var)] - else - return get_bounds(var) - end -end -function get_bounds(var::AbstractArray{VariableRef}, bounds_dict::Dict, LB, UB) - #populate UB and LB - for idx in eachindex(var) - LB[idx], UB[idx] = get_bounds(var[idx], bounds_dict) - end - return LB, UB -end -function get_bounds(var::Array{VariableRef}, bounds_dict::Dict) - #initialize - LB, UB = zeros(size(var)), zeros(size(var)) - return get_bounds(var, bounds_dict, LB, UB) -end -function get_bounds(var::Containers.DenseAxisArray, bounds_dict::Dict) - #initialize - LB = Containers.DenseAxisArray(zeros(size(var)), axes(var)...) - UB = Containers.DenseAxisArray(zeros(size(var)), axes(var)...) - return get_bounds(var, bounds_dict, LB, UB) -end -function get_gounds(var::Containers.SparseAxisArray, bounds_dict::Dict) - #initialize - idxs = keys(var.data) - LB = Containers.SparseAxisArray(Dict(idx => 0. for idx in idxs)) - UB = Containers.SparseAxisArray(Dict(idx => 0. for idx in idxs)) - return get_bounds(var, bounds_dict, LB, UB) -end - -function replace_Symvars!(expr, model; logical_proposition = false) - #replace JuMP variables with symbolic variables - name = join(split(string(expr)," ")) - var = variable_by_name(model, name) - if !isnothing(var) - logical_proposition && @assert is_binary(var) "Only binary variables are allowed in $expr." - return Symbol(name) - end - if expr isa Expr - for i in eachindex(expr.args) - expr.args[i] = replace_Symvars!(expr.args[i], model) - end - end - - return expr -end - -function replace_JuMPvars!(expr, model) - #replace symbolic variables and any matching expressions with JuMP variables - var = variable_by_name(model, string(expr)) - !isnothing(var) && return var - if expr isa Expr #run recursion - for i in eachindex(expr.args) - expr.args[i] = replace_JuMPvars!(expr.args[i], model) - end - end - - return expr -end - -function replace_operators!(expr) - #replace operators with their symbol. NOTE: Is this still needed for the hull_reformulation! of nl constraints? (check this) - if expr isa Expr #run recursion - for i in eachindex(expr.args) - expr.args[i] = replace_operators!(expr.args[i]) - end - elseif expr isa Function #replace Function with its symbol - return Symbol(expr) - end - - return expr -end - -function replace_intevals!(expr, intervals) - #replace variables with their intervals - expr_str = replace(string(expr), ", " => ",") #remove any blank space after index commas - if expr_str in keys(intervals) #check if expression is one of the model variables in the intervals dict - return intervals[expr_str] #replace expression with interval - elseif expr isa Expr - if length(expr.args) == 1 #run recursive relation on the leaf node on expression tree - expr.args[i] = replace_intevals!(expr.args[i], intervals) - else #run recursive relation on each internal node of the expression tree, but skip the first element, which will always be the operator (this will avoid issues if the user creates a model variable called exp) - for i in 2:length(expr.args) - expr.args[i] = replace_intevals!(expr.args[i], intervals) - end - end - end - - return expr -end - -function symbolic_variable(var_ref) - var_sym = Symbol(var_ref) - return eval(:(Symbolics.@variables($var_sym)[1])) -end - -function name_disaggregated_variable(var_ref, bin_var, i) - var_name = name(var_ref) - return name_split(var_name; post = string(bin_var), new_index = i) -end - -function name_split(str; post="", new_index) - #add side as the last index of str (variable or constraint name) - if occursin("[", str) - new_str = replace(str, "]" => ",$new_index]") - new_str_spl = split(new_str, "[") #NOTE: assumes that [ only occurs once in the string - return string(new_str_spl[1],post,"[",new_str_spl[end]) - else - return "$(str)$(post)[$new_index]" - end -end - -function constraint_variables!( - list::Set{Int}, - nlp::MOI.Nonlinear.Model, - expr::MOI.Nonlinear.Expression, -) - for node in expr.nodes - if node.type == MOI.Nonlinear.NODE_MOI_VARIABLE - push!(list, node.index) - elseif node.type == MOI.Nonlinear.NODE_SUBEXPRESSION - constraint_variables!(list, nlp, nlp.expressions[node.index].nodes) - end - end - return -end -constraint_variables(constr::AffExpr) = collect(keys(constr.terms)) -constraint_variables(constr::QuadExpr) = union( - constraint_variables(constr.aff), - constraint_variables(constr.terms) -) -constraint_variables(constr::AbstractDict) = Iterators.flatten( - [(p.a,p.b) for p in keys(constr)] -) - -""" - is_constraint(constr) - -Check if a constraint or tuple of constraints is valid. - -NOTE: NOT USED CURRENTLY -""" -is_constraint(constr::ConstraintRef) = is_valid(constr.model,constr) -is_constraint(constr::AbstractArray) = all(is_constraint.(constr)) -is_constraint(constr::Tuple) = all(is_constraint.(constr)) -is_constraint(constr::Nothing) = false - -""" - update_constraint_list!(disj, list::Vector) - -Update constraint list (for disjunction constraints stored in .ext Dict) for big-M reformulations. -NOTE: for big-M reformulations, nonlinear constraints are added separately to the .ext Dict with `add_reformulated_constraint`. -""" -function update_constraint_list!(disj, list::Vector) - disj_constraints = filter(!isnothing, disj) #remove any empty disjuncts - for item in disj_constraints - update_constraint_list!(item, list) - end -end -function update_constraint_list!(item::AbstractArray{<:ConstraintRef}, list::Vector) - for idx in eachindex(item) - update_constraint_list!(item[idx], list) - end -end -update_constraint_list!(item::ConstraintRef, list::Vector) = push!(list, item) -update_constraint_list!(item::NonlinearConstraintRef, list::Vector) = nothing - -""" - update_constraint_list2!(disj, list::Vector) - -Update constraint list (for disjunction constraints stored in .ext Dict) for hull reformulations. -NOTE: for big-M reformulations, nonlinear/quadratic constraints are added separately to the .ext Dict with `add_reformulated_constraint`. -""" -function update_constraint_list2!(disj, list::Vector) - disj_constraints = filter(!isnothing, disj) #remove any empty disjuncts - for item in disj_constraints - update_constraint_list2!(item, list) - end -end -function update_constraint_list2!(item::AbstractArray{<:ConstraintRef}, list::Vector) - for idx in eachindex(item) - update_constraint_list2!(item[idx], list) - end -end -function update_constraint_list2!(item::ConstraintRef{<:AbstractModel, MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},V}}, list::Vector) where {T,V} - push!(list, item) -end -update_constraint_list2!(item::ConstraintRef, list::Vector) = nothing \ No newline at end of file diff --git a/src/variables.jl b/src/variables.jl new file mode 100644 index 0000000..a3f79a8 --- /dev/null +++ b/src/variables.jl @@ -0,0 +1,337 @@ +################################################################################ +# LOGICAL VARIABLES +################################################################################ +""" + JuMP.build_variable(_error::Function, info::JuMP.VariableInfo, + ::Type{LogicalVariable})::LogicalVariable + +Extend `JuMP.build_variable` to work with logical variables. This in +combination with `JuMP.add_variable` enables the use of +`@variable(model, [var_expr], LogicalVariable)`. +""" +function JuMP.build_variable( + _error::Function, + info::JuMP.VariableInfo, + tag::Type{LogicalVariable}; + kwargs... + ) + # check for invalid input + for (k, _) in kwargs + _error("Unsupported keyword argument `$k`.") + end + if info.has_lb || info.has_ub + _error("Logical variables cannot have bounds.") + elseif info.integer + _error("Logical variables cannot be integer valued.") + elseif info.has_fix && !isone(info.fix) && !iszero(info.fix) + _error("Invalid fix value, must be 0 or 1.") + elseif info.has_start && !isone(info.start) && !iszero(info.start) + _error("Invalid start value, must be 0 or 1.") + end + + # create the variable + fix = info.has_fix ? Bool(info.fix) : nothing + start = info.has_start ? Bool(info.start) : nothing + return LogicalVariable(fix, start) +end + +""" + JuMP.add_variable(model::JuMP.Model, v::LogicalVariable, + name::String = "")::LogicalVariableRef + +Extend `JuMP.add_variable` for [`LogicalVariable`](@ref)s. This +helps enable `@variable(model, [var_expr], LogicalVariable)`. +""" +function JuMP.add_variable( + model::JuMP.Model, + v::LogicalVariable, + name::String = "" + ) + is_gdp_model(model) || error("Can only add logical variables to `GDPModel`s.") + data = LogicalVariableData(v, name) + idx = _MOIUC.add_item(_logical_variables(model), data) + _set_ready_to_optimize(model, false) + return LogicalVariableRef(model, idx) +end + +# Base extensions +Base.copy(v::LogicalVariableRef) = v +Base.broadcastable(v::LogicalVariableRef) = Ref(v) +Base.length(v::LogicalVariableRef) = 1 +function Base.:(==)(v::LogicalVariableRef, w::LogicalVariableRef) + return v.model === w.model && v.index == w.index +end +function Base.getindex(map::JuMP.ReferenceMap, vref::LogicalVariableRef) + return LogicalVariableRef(map.model, JuMP.index(vref)) +end + +# JuMP extensions +""" + JuMP.owner_model(vref::LogicalVariableRef) + +Return the `GDP model` to which `vref` belongs. +""" +JuMP.owner_model(vref::LogicalVariableRef) = vref.model + +""" + JuMP.index(vref::LogicalVariableRef) + +Return the index of logical variable that associated with `vref`. +""" +JuMP.index(vref::LogicalVariableRef) = vref.index + +""" + JuMP.isequal_canonical(v::LogicalVariableRef, w::LogicalVariableRef) + +Return `true` if `v` and `w` refer to the same logical variable in the same +`GDP model`. +""" +JuMP.isequal_canonical(v::LogicalVariableRef, w::LogicalVariableRef) = v == w + +""" + JuMP.is_valid(model::JuMP.Model, vref::LogicalVariableRef) + +Return `true` if `vref` refers to a valid logical variable in `GDP model`. +""" +function JuMP.is_valid(model::JuMP.Model, vref::LogicalVariableRef) + return model === JuMP.owner_model(vref) +end + +""" + JuMP.name(vref::LogicalVariableRef) + +Get a logical variable's name attribute. +""" +function JuMP.name(vref::LogicalVariableRef) + data = gdp_data(JuMP.owner_model(vref)) + return data.logical_variables[JuMP.index(vref)].name +end + +""" + JuMP.set_name(vref::LogicalVariableRef, name::String) + +Set a logical variable's name attribute. +""" +function JuMP.set_name(vref::LogicalVariableRef, name::String) + model = JuMP.owner_model(vref) + data = gdp_data(model) + data.logical_variables[JuMP.index(vref)].name = name + _set_ready_to_optimize(model, false) + return +end + +""" + JuMP.start_value(vref::LogicalVariableRef) + +Return the start value of the logical variable `vref`. +""" +function JuMP.start_value(vref::LogicalVariableRef) + data = gdp_data(JuMP.owner_model(vref)) + return data.logical_variables[JuMP.index(vref)].variable.start_value +end + +""" + JuMP.set_start_value(vref::LogicalVariableRef, value::Union{Nothing, Bool}) + +Set the start value of the logical variable `vref`. + +Pass `nothing` to unset the start value. +""" +function JuMP.set_start_value( + vref::LogicalVariableRef, + value::Union{Nothing, Bool} + ) + model = JuMP.owner_model(vref) + data = gdp_data(model) + var = data.logical_variables[JuMP.index(vref)].variable + new_var = LogicalVariable(var.fix_value, value) + data.logical_variables[JuMP.index(vref)].variable = new_var + _set_ready_to_optimize(model, false) + return +end +""" + JuMP.is_fixed(vref::LogicalVariableRef) + +Return `true` if `vref` is a fixed variable. If + `true`, the fixed value can be queried with + fix_value. +""" +function JuMP.is_fixed(vref::LogicalVariableRef) + data = gdp_data(JuMP.owner_model(vref)) + return !isnothing(data.logical_variables[JuMP.index(vref)].variable.fix_value) +end + +""" + JuMP.fix_value(vref::LogicalVariableRef) + +Return the value to which a logical variable is fixed. +""" +function JuMP.fix_value(vref::LogicalVariableRef) + data = gdp_data(JuMP.owner_model(vref)) + return data.logical_variables[JuMP.index(vref)].variable.fix_value +end + +""" + JuMP.fix(vref::LogicalVariableRef, value::Bool) + +Fix a logical variable to a value. Update the fixing +constraint if one exists, otherwise create a +new one. +""" +function JuMP.fix(vref::LogicalVariableRef, value::Bool) + model = JuMP.owner_model(vref) + data = gdp_data(model) + var = data.logical_variables[JuMP.index(vref)].variable + new_var = LogicalVariable(value, var.start_value) + data.logical_variables[JuMP.index(vref)].variable = new_var + _set_ready_to_optimize(model, false) + return +end + +""" + JuMP.unfix(vref::LogicalVariableRef) + +Delete the fixed value of a logical variable. +""" +function JuMP.unfix(vref::LogicalVariableRef) + model = JuMP.owner_model(vref) + data = gdp_data(model) + var = data.logical_variables[JuMP.index(vref)].variable + new_var = LogicalVariable(nothing, var.start_value) + data.logical_variables[JuMP.index(vref)].variable = new_var + _set_ready_to_optimize(model, false) + return +end + +""" + JuMP.delete(model::JuMP.Model, vref::LogicalVariableRef) + +Delete the logical variable associated with `vref` from the `GDP model`. +""" +function JuMP.delete(model::JuMP.Model, vref::LogicalVariableRef) + @assert JuMP.is_valid(model, vref) "Variable does not belong to model." + vidx = JuMP.index(vref) + dict = _logical_variables(model) + #delete any disjunct constraints associated with the logical variables in the disjunction + if haskey(_indicator_to_constraints(model), vref) + crefs = _indicator_to_constraints(model)[vref] + JuMP.delete.(model, crefs) + delete!(_indicator_to_constraints(model), vref) + end + #delete any disjunctions that have the logical variable + for (didx, ddata) in _disjunctions(model) + if vref in ddata.constraint.indicators + setdiff!(ddata.constraint.indicators, [vref]) + JuMP.delete(model, DisjunctionRef(model, didx)) + end + end + #delete any logical constraints involving the logical variables + for (cidx, cdata) in _logical_constraints(model) + lvars = _get_constraint_variables(model, cdata.constraint) + if vref in lvars + JuMP.delete(model, LogicalConstraintRef(model, cidx)) + end + end + #delete the logical variable + delete!(dict, vidx) + delete!(_indicator_to_binary(model), vref) + #not ready to optimize + _set_ready_to_optimize(model, false) + return +end + +################################################################################ +# VARIABLE INTERROGATION +################################################################################ +function _query_variable_bounds(model::JuMP.Model, method::Union{Hull, BigM}) + for var in JuMP.all_variables(model) + method.variable_bounds[var] = _update_variable_bounds(var, method) + end +end + +function _get_disjunction_variables(model::JuMP.Model, disj::Disjunction) + vars = Set{JuMP.VariableRef}() + for lvref in disj.indicators + !haskey(_indicator_to_constraints(model), lvref) && continue #skip if disjunct is empty + for cref in _indicator_to_constraints(model)[lvref] + con = JuMP.constraint_object(cref) + _interrogate_variables(v -> push!(vars, v), con) + end + end + return vars +end + +function _get_constraint_variables(model::JuMP.Model, con::Union{JuMP.ScalarConstraint, JuMP.VectorConstraint}) + vars = Set{Union{JuMP.VariableRef, LogicalVariableRef}}() + _interrogate_variables(v -> push!(vars, v), con.func) + return vars +end + +# Constant +function _interrogate_variables(interrogator::Function, c::Number) + return +end + +# VariableRef/LogicalVariableRef +function _interrogate_variables(interrogator::Function, var::Union{JuMP.VariableRef, LogicalVariableRef}) + interrogator(var) + return +end + +# AffExpr +function _interrogate_variables(interrogator::Function, aff::JuMP.GenericAffExpr) + for (var, _) in aff.terms + interrogator(var) + end + return +end + +# QuadExpr +function _interrogate_variables(interrogator::Function, quad::JuMP.QuadExpr) + for (pair, _) in quad.terms + interrogator(pair.a) + interrogator(pair.b) + end + _interrogate_variables(interrogator, quad.aff) + return +end + +# NonlinearExpr and _LogicalExpr (T <: Union{JuMP.VariableRef, LogicalVariableRef}) +function _interrogate_variables(interrogator::Function, nlp::JuMP.GenericNonlinearExpr{T}) where {T} + for arg in nlp.args + _interrogate_variables(interrogator, arg) + end + # TODO avoid recursion. See InfiniteOpt.jl for alternate method that avoids stackoverflow errors with deeply nested expressions: + # https://github.com/infiniteopt/InfiniteOpt.jl/blob/cb6dd6ae40fe0144b1dd75da0739ea6e305d5357/src/expressions.jl#L520-L534 + return +end + +# Constraint +function _interrogate_variables(interrogator::Function, con::Union{JuMP.ScalarConstraint, JuMP.VectorConstraint}) + _interrogate_variables(interrogator, con.func) +end + +# AbstractArray +function _interrogate_variables(interrogator::Function, arr::AbstractArray) + _interrogate_variables.(interrogator, arr) + return +end + +# Set +function _interrogate_variables(interrogator::Function, set::Set) + _interrogate_variables.(interrogator, set) + return +end + +# Nested disjunction +function _interrogate_variables(interrogator::Function, disj::Disjunction) + model = JuMP.owner_model(disj.indicators[1]) + dvars = _get_disjunction_variables(model, disj) + _interrogate_variables(interrogator, dvars) + return +end + +# Fallback +function _interrogate_variables(interrogator::Function, other) + error("Cannot extract variables from object of type $(typeof(other)).") +end \ No newline at end of file diff --git a/test/aqua.jl b/test/aqua.jl new file mode 100644 index 0000000..b5191d4 --- /dev/null +++ b/test/aqua.jl @@ -0,0 +1,5 @@ +using Aqua +using DisjunctiveProgramming + +Aqua.test_all(DisjunctiveProgramming, ambiguities = false) +Aqua.test_ambiguities(DisjunctiveProgramming) \ No newline at end of file diff --git a/test/constraints/bigm.jl b/test/constraints/bigm.jl new file mode 100644 index 0000000..b1666b9 --- /dev/null +++ b/test/constraints/bigm.jl @@ -0,0 +1,329 @@ +function test_default_bigm() + method = BigM() + @test method.value == 1e9 + @test method.tighten +end + +function test_default_tighten_bigm() + method = BigM(100) + @test method.value == 100 + @test method.tighten +end + +function test_set_bigm() + method = BigM(1e6, false) + @test method.value == 1e6 + @test !method.tighten +end + +function test_get_M_1sided() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, 3*x <= 1, DisjunctConstraint(y)) + cobj = constraint_object(con) + M = DP._get_M(cobj.func, cobj.set, BigM(100, false)) + @test M == 100 + @test_throws ErrorException DP._get_M(cobj.func, cobj.set, BigM(Inf, false)) +end + +function test_get_tight_M_1sided() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, 3*x <= 1, DisjunctConstraint(y)) + cobj = constraint_object(con) + + method = BigM(100) + DP._query_variable_bounds(model, method) + M = DP._get_tight_M(cobj.func, cobj.set, method) + @test M == 100 + + method = BigM(Inf) + DP._query_variable_bounds(model, method) + @test_throws ErrorException DP._get_tight_M(cobj.func, cobj.set, method) + + set_upper_bound(x, 10) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._get_tight_M(cobj.func, cobj.set, method) + @test M == 29 +end + +function test_get_M_2sided() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, 3*x == 1, DisjunctConstraint(y)) + cobj = constraint_object(con) + + method = BigM(100) + M = DP._get_M(cobj.func, cobj.set, method) + @test M[1] == 100 + @test M[2] == 100 + + method = BigM(Inf) + @test_throws ErrorException DP._get_M(cobj.func, cobj.set, method) +end + +function test_get_tight_M_2sided() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, 3*x == 1, DisjunctConstraint(y)) + cobj = constraint_object(con) + + method = BigM(100) + DP._query_variable_bounds(model, method) + M = DP._get_tight_M(cobj.func, cobj.set, method) + @test M[1] == 100 + @test M[2] == 100 + + method = BigM(Inf) + DP._query_variable_bounds(model, method) + @test_throws ErrorException DP._get_tight_M(cobj.func, cobj.set, method) + + set_lower_bound(x, -10) + set_upper_bound(x, 10) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._get_tight_M(cobj.func, cobj.set, method) + @test M[1] == 31 + @test M[2] == 29 +end + +function test_interval_arithmetic_LessThan() + model = Model() + @variable(model, x[1:3]) + @variable(model, y, Bin) + @expression(model, func, -x[1] + 2*x[2] - 3*x[3] + 4*y + 5) + + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._interval_arithmetic_LessThan(func, 0.0, method) + @test isinf(M) + + set_upper_bound.(x, 10) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._interval_arithmetic_LessThan(func, 0.0, method) + @test isinf(M) + + set_lower_bound.(x, -10) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._interval_arithmetic_LessThan(func, 0.0, method) + @test M == -(-10) + 2*10 - 3*(-10) + 5 +end + +function test_interval_arithmetic_GreaterThan() + model = Model() + @variable(model, x[1:3]) + @variable(model, y, Bin) + @expression(model, func, -x[1] + 2*x[2] - 3*x[3] + 4*y + 5) + + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._interval_arithmetic_GreaterThan(func, 0.0, method) + @test isinf(M) + + set_upper_bound.(x, 10) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._interval_arithmetic_GreaterThan(func, 0.0, method) + @test isinf(M) + + set_lower_bound.(x, -10) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._interval_arithmetic_GreaterThan(func, 0.0, method) + @test -M == -(10) + 2*(-10) - 3*(10) + 5 +end + +function test_calculate_tight_M() + model = Model() + @variable(model, -1 <= x <= 1) + method = BigM() + DP._query_variable_bounds(model, method) + M = DP._calculate_tight_M(1*x, MOI.LessThan(5.0), method) + @test M == -4 + M = DP._calculate_tight_M(1*x, MOI.GreaterThan(5.0), method) + @test -M == -6 + M = DP._calculate_tight_M(1*x, MOI.Nonpositives(3), method) + @test M == 1 + M = DP._calculate_tight_M(1*x, MOI.Nonnegatives(3), method) + @test -M == -1 + M = DP._calculate_tight_M(1*x, MOI.Interval(5.0, 5.0), method) + @test -M[1] == -6 + @test M[2] == -4 + M = DP._calculate_tight_M(1*x, MOI.EqualTo(5.0), method) + @test -M[1] == -6 + @test M[2] == -4 + M = DP._calculate_tight_M(1*x, MOI.Zeros(3), method) + @test -M[1] == -1 + @test M[2] == 1 + for ex in (x^2, exp(x)), set in (MOI.LessThan(5.0), MOI.GreaterThan(5.0), MOI.Nonpositives(4), MOI.Nonnegatives(4)) + M = DP._calculate_tight_M(ex, set, method) + @test isinf(M) + end + for ex in (x^2, exp(x)), set in (MOI.Interval(5.0,5.0), MOI.EqualTo(5.0), MOI.Zeros(4)) + M = DP._calculate_tight_M(ex, set, method) + @test all(isinf.(M)) + end + @test_throws ErrorException DP._calculate_tight_M(1*x, MOI.SOS1([1.0,3.0,2.5]), method) +end + +function test_lessthan_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, x <= 5, DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 1 + @test ref[1].func == x - 100*(-bvref) + @test ref[1].set == MOI.LessThan(5.0 + 100) +end + +function test_nonpositives_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, [x; x] <= [5; 5], DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 1 + @test ref[1].func[1] == x - 5 - 100*(1-bvref) + @test ref[1].func[2] == x - 5 - 100*(1-bvref) + @test ref[1].set == MOI.Nonpositives(2) +end + +function test_greaterhan_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, x >= 5, DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 1 + @test ref[1].func == x + 100*(-bvref) + @test ref[1].set == MOI.GreaterThan(5.0 - 100) +end + +function test_nonnegatives_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, [x; x] >= [5; 5], DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 1 + @test ref[1].func[1] == x - 5 + 100*(1-bvref) + @test ref[1].func[2] == x - 5 + 100*(1-bvref) + @test ref[1].set == MOI.Nonnegatives(2) +end + +function test_greaterhan_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, x == 5, DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 2 + @test ref[1].func == x + 100*(-bvref) + @test ref[1].set == MOI.GreaterThan(5.0 - 100) + @test ref[2].func == x - 100*(-bvref) + @test ref[2].set == MOI.LessThan(5.0 + 100) +end + +function test_greaterhan_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, 5 <= x <= 5, DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 2 + @test ref[1].func == x + 100*(-bvref) + @test ref[1].set == MOI.GreaterThan(5.0 - 100) + @test ref[2].func == x - 100*(-bvref) + @test ref[2].set == MOI.LessThan(5.0 + 100) +end + +function test_zeros_bigm() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, con, [x; x] == [5; 5], DisjunctConstraint(y)) + + DP._reformulate_logical_variables(model) + bvref = DP._indicator_to_binary(model)[y] + ref = reformulate_disjunct_constraint(model, constraint_object(con), bvref, BigM(100, false)) + @test length(ref) == 2 + @test ref[1].func[1] == x - 5 + 100*(1-bvref) + @test ref[1].func[2] == x - 5 + 100*(1-bvref) + @test ref[1].set == MOI.Nonnegatives(2) + @test ref[2].func[1] == x - 5 - 100*(1-bvref) + @test ref[2].func[2] == x - 5 - 100*(1-bvref) + @test ref[2].set == MOI.Nonpositives(2) +end + +function test_nested_bigm() + model = GDPModel() + @variable(model, -100 <= x <= 100) + @variable(model, y[1:2], LogicalVariable) + @variable(model, z[1:2], LogicalVariable) + @constraint(model, x <= 5, DisjunctConstraint(y[1])) + @constraint(model, x >= 5, DisjunctConstraint(y[2])) + @disjunction(model, inner, y, DisjunctConstraint(z[1])) + @constraint(model, x <= 10, DisjunctConstraint(z[1])) + @constraint(model, x >= 10, DisjunctConstraint(z[2])) + @disjunction(model, outer, z) + + reformulate_model(model, BigM()) + bvrefs = DP._indicator_to_binary(model) + refcons = constraint_object.(DP._reformulation_constraints(model)) + @test length(refcons) == 4 + @test refcons[1].func == x - 95*(-bvrefs[y[1]]) + @test refcons[1].set == MOI.LessThan(5.0 + 95) + @test refcons[2].func == x + 105*(-bvrefs[y[2]]) + @test refcons[2].set == MOI.GreaterThan(5.0 - 105) + @test refcons[3].func == x - 90*(-bvrefs[z[1]]) + @test refcons[3].set == MOI.LessThan(10.0 + 90) + @test refcons[4].func == x + 110*(-bvrefs[z[2]]) + @test refcons[4].set == MOI.GreaterThan(10.0 - 110) +end + +@testset "BigM Reformulation" begin + test_default_bigm() + test_default_tighten_bigm() + test_set_bigm() + test_get_M_1sided() + test_get_tight_M_1sided() + test_get_M_2sided() + test_get_tight_M_2sided() + test_interval_arithmetic_LessThan() + test_interval_arithmetic_GreaterThan() + test_calculate_tight_M() + test_lessthan_bigm() + test_nonpositives_bigm() + test_greaterhan_bigm() + test_nonnegatives_bigm() + test_greaterhan_bigm() + test_greaterhan_bigm() + test_zeros_bigm() + test_nested_bigm() +end \ No newline at end of file diff --git a/test/constraints/disjunct.jl b/test/constraints/disjunct.jl new file mode 100644 index 0000000..c840199 --- /dev/null +++ b/test/constraints/disjunct.jl @@ -0,0 +1,98 @@ +function test_disjunct_add_fail() + model = GDPModel() + @variable(model, x) + @variable(GDPModel(), y, LogicalVariable) + @test_macro_throws UndefVarError @constraint(model, x == 1, DisjunctConstraint(y)) # logical variable from another model + + @variable(model, w, LogicalVariable) + @variable(model, z, Bin) + @test_macro_throws UndefVarError @constraint(model, z == 1, DisjunctConstraint(w)) # binary variable +end + +function test_disjunct_add_success() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + c1 = @constraint(model, x == 1, DisjunctConstraint(y)) + @constraint(model, c2, x == 1, DisjunctConstraint(y)) + @test owner_model(c1) == model + @test is_valid(model, c1) + @test index(c1) == DisjunctConstraintIndex(1) + @test name(c1) == "" + @test name(c2) == "c2" + @test haskey(DP._disjunct_constraints(model), index(c1)) + @test haskey(DP._disjunct_constraints(model), index(c2)) + @test haskey(DP._indicator_to_constraints(model), y) + @test DP._indicator_to_constraints(model)[y] == [c1, c2] + @test DP._disjunct_constraints(model)[index(c1)] == DP._constraint_data(c1) + @test constraint_object(c1).set == MOI.EqualTo(1.0) + @test constraint_object(c1).func == constraint_object(c2).func == 1x + @test constraint_object(c1).set == constraint_object(c2).set + @test c1 == copy(c1) +end + +function test_disjunct_add_array() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2, 1:3], LogicalVariable) + @constraint(model, con[i=1:2, j=1:3], x == 1, DisjunctConstraint(y[i,j])) + @test con isa Matrix{DisjunctConstraintRef} + @test length(con) == 6 +end + +function test_disjunct_add_dense_axis() + model = GDPModel() + @variable(model, x) + I = ["a", "b", "c"] + J = [1, 2] + @variable(model, y[I, J], LogicalVariable) + @constraint(model, con[i=I, j=J], x == 1, DisjunctConstraint(y[i,j])) + + @test con isa Containers.DenseAxisArray + @test con.axes[1] == ["a","b","c"] + @test con.axes[2] == [1,2] + @test con.data isa Matrix{DisjunctConstraintRef} +end + +function test_disjunct_add_sparse_axis() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:3, 1:3], LogicalVariable) + @constraint(model, con[i=1:3, j=1:3; j > i], x==i+j, DisjunctConstraint(y[i,j])) + + @test con isa Containers.SparseAxisArray + @test length(con) == 3 + @test con.names == (:i, :j) + @test Set(keys(con.data)) == Set([(1,2),(1,3),(2,3)]) +end + +function test_disjunct_set_name() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + c1 = @constraint(model, x == 1, DisjunctConstraint(y)) + set_name(c1, "new name") + @test name(c1) == "new name" +end + +function test_disjunct_delete() + model = GDPModel() + @variable(model, x) + @variable(model, y, LogicalVariable) + @constraint(model, c1, x == 1, DisjunctConstraint(y)) + + @test_throws AssertionError delete(GDPModel(), c1) + delete(model, c1) + @test !haskey(gdp_data(model).disjunct_constraints, index(c1)) + @test !DP._ready_to_optimize(model) +end + +@testset "Disjunct Constraints" begin + test_disjunct_add_fail() + test_disjunct_add_success() + test_disjunct_add_array() + test_disjunct_add_dense_axis() + test_disjunct_add_sparse_axis() + test_disjunct_set_name() + test_disjunct_delete() +end \ No newline at end of file diff --git a/test/constraints/hull.jl b/test/constraints/hull.jl new file mode 100644 index 0000000..a6be5c1 --- /dev/null +++ b/test/constraints/hull.jl @@ -0,0 +1,538 @@ +function test_default_hull() + method = Hull() + @test method.value == 1e-6 +end + +function test_set_hull() + method = Hull(0.001) + @test method.value == 0.001 +end + +function test_query_variable_bounds() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, -100 <= y <= -10) + method = Hull() + DP._query_variable_bounds(model, method) + @test haskey(method.variable_bounds, x) + @test haskey(method.variable_bounds, y) + @test method.variable_bounds[x] == (0, 100) + @test method.variable_bounds[y] == (-100, 0) +end + +function test_query_variable_bounds_error1() + model = GDPModel() + @variable(model, x <= 100) + method = Hull() + @test_throws ErrorException DP._query_variable_bounds(model, method) +end + +function test_query_variable_bounds_error2() + model = GDPModel() + @variable(model, -100 <= x) + method = Hull() + @test_throws ErrorException DP._query_variable_bounds(model, method) +end + +function test_disaggregate_variables() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, y, Bin) + @variable(model, z, LogicalVariable) + vrefs = Set([x,y]) + DP._reformulate_logical_variables(model) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refvars = DP._reformulation_variables(model) + @test length(refvars) == 2 + zbin = variable_by_name(model, "z") + @test zbin in refvars + x_z = variable_by_name(model, "x_z") + @test x_z in refvars + @test has_lower_bound(x_z) && lower_bound(x_z) == 0 + @test has_upper_bound(x_z) && upper_bound(x_z) == 100 + @test name(x_z) == "x_z" + x_z_lb = constraint_by_name(model, "x_z_lower_bound") |> constraint_object + @test x_z_lb.func == -x_z + @test x_z_lb.set == MOI.LessThan(0.) + x_z_ub = constraint_by_name(model, "x_z_upper_bound") |> constraint_object + @test x_z_ub.func == -100zbin + x_z + @test x_z_ub.set == MOI.LessThan(0.) +end + +function test_aggregate_variable() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + vrefs = Set([x]) + DP._reformulate_logical_variables(model) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + refcons = Vector{JuMP.AbstractConstraint}() + DP._aggregate_variable(model, refcons, x, method) + @test length(refcons) == 1 + @test refcons[1].func == -x + sum(method.disjunction_variables[x]) + @test refcons[1].set == MOI.EqualTo(0.) +end + +function test_disaggregate_expression_affine() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_expression(model, 2x + 1, bvrefs[z], method) + x_z = variable_by_name(model, "x_z") + zbin = variable_by_name(model, "z") + @test refexpr == 2x_z + 1zbin +end + +function test_disaggregate_expression_quadratic() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_expression(model, 2x^2 + 1, bvrefs[z], method) + x_z = variable_by_name(model, "x_z") + zbin = variable_by_name(model, "z") + ϵ = method.value + @test refexpr.head == :+ + @test 1zbin in refexpr.args + arg2 = setdiff(refexpr.args, [1zbin])[1] + @test arg2.head == :/ + @test 2x_z^2 in arg2.args + @test (1-ϵ)*zbin+ϵ in arg2.args +end + +function test_disaggregate_nl_expression_c() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_nl_expression(model, 1, bvrefs[z], method) + @test refexpr == 1 +end + +function test_disaggregate_nl_expression_var() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_nl_expression(model, x, bvrefs[z], method) + x_z = variable_by_name(model, "x_z") + zbin = variable_by_name(model, "z") + ϵ = method.value + @test refexpr.head == :/ + @test x_z in refexpr.args + @test (1-ϵ)*zbin+ϵ in refexpr.args +end + +function test_disaggregate_nl_expression_aff() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_nl_expression(model, 2x + 1, bvrefs[z], method) + x_z = variable_by_name(model, "x_z") + zbin = variable_by_name(model, "z") + ϵ = method.value + @test refexpr.head == :+ + @test 1 in refexpr.args + arg2 = setdiff(refexpr.args, [1])[1] + @test arg2.head == :/ + @test 2x_z in arg2.args + @test (1-ϵ)*zbin+ϵ in arg2.args +end + +function test_disaggregate_nl_expression_quad() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_nl_expression(model, 2x^2 + 1, bvrefs[z], method) + x_z = variable_by_name(model, "x_z") + zbin = variable_by_name(model, "z") + ϵ = method.value + @test refexpr.head == :+ + @test 1 in refexpr.args + arg2 = setdiff(refexpr.args, [1])[1] + @test arg2.head == :/ + @test 2x_z^2 in arg2.args + @test ((1-ϵ)*zbin+ϵ)^2 in arg2.args +end + +function test_disaggregate_nl_expession() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + DP._reformulate_logical_variables(model) + bvrefs = DP._indicator_to_binary(model) + + vrefs = Set([x]) + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), vrefs) + DP._disaggregate_variables(model, z, vrefs, method) + + refexpr = DP._disaggregate_nl_expression(model, 2x^3 + 1, bvrefs[z], method) + x_z = variable_by_name(model, "x_z") + zbin = variable_by_name(model, "z") + ϵ = method.value + @test refexpr.head == :+ + @test 1 in refexpr.args + arg2 = setdiff(refexpr.args, [1zbin])[1] + @test arg2.head == :* + @test 2 in arg2.args + arg3 = setdiff(arg2.args, [2])[1] + @test arg3.head == :^ + @test arg3.args[2] == 3 + @test arg3.args[1].head == :/ + @test x_z in arg3.args[1].args + @test (1-ϵ)*zbin+ϵ in arg3.args[1].args +end +#less than, greater than, equalto +function test_scalar_var_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, x in moiset(5), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test ref[1].func == x_z - 5*zbin + @test ref[1].set isa moiset + @test DP._set_value(ref[1].set) == 0 +end +#less than, greater than, equalto +function test_scalar_affine_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, 1x in moiset(5), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test ref[1].func == x_z - 5*zbin + @test ref[1].set isa moiset + @test DP._set_value(ref[1].set) == 0 +end +#nonpositives, nonnegatives, zeros +function test_vector_var_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, [x; x] in moiset(2), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test ref[1].func == [x_z; x_z] + @test ref[1].set == moiset(2) +end +#nonpositives, nonnegatives, zeros +function test_vector_affine_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, [x - 5; x - 5] in moiset(2), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + method = DP._Hull(Hull(1e-3, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test ref[1].func == [x_z - 5*zbin; x_z - 5*zbin] + @test ref[1].set == moiset(2) +end +#less than, greater than, equalto +function test_scalar_quadratic_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, x^2 in moiset(5), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test ref[1].func.head == :- + @test 5zbin in ref[1].func.args + arg2 = setdiff(ref[1].func.args, [5zbin])[1] + @test 0*zbin in arg2.args + arg3 = setdiff(arg2.args, [0*zbin])[1] + @test arg3.head == :/ + @test x_z^2 in arg3.args + @test (1-ϵ)*zbin+ϵ in arg3.args + @test ref[1].set isa moiset + @test DP._set_value(ref[1].set) == 0 +end +#nonpositives, nonnegatives, zeros +function test_vector_quadratic_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, [x^2 - 5; x^2 - 5] in moiset(2), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test length(ref[1].func) == 2 + for i in 1:2 + @test ref[1].func[i].head == :+ + @test -5zbin in ref[1].func[i].args + arg2 = setdiff(ref[1].func[i].args, [-5zbin])[1] + @test arg2.head == :/ + @test x_z^2 in arg2.args + @test (1-ϵ)*zbin+ϵ in arg2.args + end + @test ref[1].set == moiset(2) +end +#less than, greater than, equalto +function test_scalar_nonlinear_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, x^3 in moiset(5), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test ref[1].func.head == :- + @test 5zbin in ref[1].func.args + arg2 = setdiff(ref[1].func.args, [5zbin])[1] + @test 0*zbin in arg2.args + arg3 = setdiff(arg2.args, [0*zbin])[1] + @test arg3.head == :* + @test (1-ϵ)*zbin+ϵ in arg3.args + arg4 = setdiff(arg3.args, [(1-ϵ)*zbin+ϵ])[1] + @test arg4.head == :^ + @test arg4.args[2] == 3 + @test arg4.args[1].head == :/ + @test x_z in arg4.args[1].args + @test (1-ϵ)*zbin+ϵ in arg4.args[1].args + @test ref[1].set isa moiset + @test DP._set_value(ref[1].set) == 0 +end +#nonpositives, nonnegatives, zeros +function test_vector_nonlinear_hull_1sided(moiset) + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, [x^3 - 5; x^3 - 5] in moiset(2), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 1 + @test length(ref[1].func) == 2 + for i in 1:2 + @test ref[1].func[i].head == :- + @test -5*ϵ*(1-zbin) in ref[1].func[i].args + arg2 = setdiff(ref[1].func[i].args, [-5*ϵ*(1-zbin)])[1] + @test arg2.head == :* + @test (1-ϵ)*zbin+ϵ in arg2.args + arg3 = setdiff(arg2.args, [(1-ϵ)*zbin+ϵ])[1] + @test arg3.head == :- + @test 5 in arg3.args + arg4 = setdiff(arg3.args, [5])[1] + @test arg4.head == :^ + @test arg4.args[2] == 3 + @test arg4.args[1].head == :/ + @test x_z in arg4.args[1].args + @test (1-ϵ)*zbin+ϵ in arg4.args[1].args + end + @test ref[1].set == moiset(2) +end +#interval +function test_scalar_var_hull_2sided() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, x in MOI.Interval(5,5), DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 2 + sets = (MOI.GreaterThan, MOI.LessThan) + for i in 1:2 + @test ref[i].func == x_z - 5*zbin + @test ref[i].set isa sets[i] + @test DP._set_value(ref[1].set) == 0 + end +end +function test_scalar_affine_hull_2sided() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, 5 <= x <= 5, DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 2 + sets = (MOI.GreaterThan, MOI.LessThan) + for i in 1:2 + @test ref[i].func == x_z - 5*zbin + @test ref[i].set isa sets[i] + @test DP._set_value(ref[1].set) == 0 + end +end +function test_scalar_quadratic_hull_2sided() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, 5 <= x^2 <= 5, DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 2 + sets = (MOI.GreaterThan, MOI.LessThan) + for i in 1:2 + @test ref[i].func.head == :- + @test 5zbin in ref[i].func.args + arg2 = setdiff(ref[i].func.args, [5zbin])[1] + @test 0*zbin in arg2.args + arg3 = setdiff(arg2.args, [0*zbin])[1] + @test arg3.head == :/ + @test x_z^2 in arg3.args + @test (1-ϵ)*zbin+ϵ in arg3.args + @test ref[i].set isa sets[i] + @test DP._set_value(ref[i].set) == 0 + end +end +function test_scalar_nonlinear_hull_2sided() + model = GDPModel() + @variable(model, 10 <= x <= 100) + @variable(model, z, LogicalVariable) + @constraint(model, con, 5 <= x^3 <= 5, DisjunctConstraint(z)) + DP._reformulate_logical_variables(model) + zbin = variable_by_name(model, "z") + ϵ = 1e-3 + method = DP._Hull(Hull(ϵ, Dict(x => (0., 100.))), Set([x])) + DP._disaggregate_variables(model, z, Set([x]), method) + x_z = variable_by_name(model, "x_z") + ref = reformulate_disjunct_constraint(model, constraint_object(con), zbin, method) + @test length(ref) == 2 + sets = (MOI.GreaterThan, MOI.LessThan) + for i in 1:2 + @test ref[i].func.head == :- + @test 5zbin in ref[i].func.args + arg2 = setdiff(ref[i].func.args, [5zbin])[1] + @test 0*zbin in arg2.args + arg3 = setdiff(arg2.args, [0*zbin])[1] + @test arg3.head == :* + @test (1-ϵ)*zbin+ϵ in arg3.args + arg4 = setdiff(arg3.args, [(1-ϵ)*zbin+ϵ])[1] + @test arg4.head == :^ + @test arg4.args[2] == 3 + @test arg4.args[1].head == :/ + @test x_z in arg4.args[1].args + @test (1-ϵ)*zbin+ϵ in arg4.args[1].args + @test ref[i].set isa sets[i] + @test DP._set_value(ref[i].set) == 0 + end +end + +@testset "Hull Reformulation" begin + test_default_hull() + test_set_hull() + test_query_variable_bounds() + test_query_variable_bounds_error1() + test_query_variable_bounds_error2() + test_disaggregate_variables() + test_aggregate_variable() + test_disaggregate_expression_affine() + test_disaggregate_expression_quadratic() + test_disaggregate_nl_expression_c() + test_disaggregate_nl_expression_var() + test_disaggregate_nl_expression_aff() + test_disaggregate_nl_expression_quad() + test_disaggregate_nl_expession() + for s in (MOI.LessThan, MOI.GreaterThan, MOI.EqualTo) + test_scalar_var_hull_1sided(s) + test_scalar_affine_hull_1sided(s) + test_scalar_quadratic_hull_1sided(s) + test_scalar_nonlinear_hull_1sided(s) + end + for s in (MOI.Nonpositives, MOI.Nonnegatives, MOI.Zeros) + test_vector_var_hull_1sided(s) + test_vector_affine_hull_1sided(s) + test_vector_quadratic_hull_1sided(s) + test_vector_nonlinear_hull_1sided(s) + end + test_scalar_var_hull_2sided() + test_scalar_affine_hull_2sided() + test_scalar_quadratic_hull_2sided() + test_scalar_nonlinear_hull_2sided() +end \ No newline at end of file diff --git a/test/constraints/indicator.jl b/test/constraints/indicator.jl new file mode 100644 index 0000000..f4f7c0a --- /dev/null +++ b/test/constraints/indicator.jl @@ -0,0 +1,119 @@ +function test_indicator_scalar_constraints() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, x == 5, DisjunctConstraint(y[1])) + @constraint(model, x <= 5, DisjunctConstraint(y[1])) + @constraint(model, x >= 5, DisjunctConstraint(y[1])) + @constraint(model, x == 10, DisjunctConstraint(y[2])) + @constraint(model, x <= 10, DisjunctConstraint(y[2])) + @constraint(model, x >= 10, DisjunctConstraint(y[2])) + @disjunction(model, y) + reformulate_model(model, Indicator()) + + ref_cons = DP._reformulation_constraints(model) + ref_cons_obj = constraint_object.(ref_cons) + @test length(ref_cons) == 6 + @test all(is_valid.(model, ref_cons)) + @test all(isa.(ref_cons_obj, VectorConstraint)) + @test all([cobj.set isa MOI.Indicator for cobj in ref_cons_obj]) +end + +function test_indicator_vector_constraints() + model = GDPModel() + A = [1 0; 0 1] + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, A*[x,x] == [5,5], DisjunctConstraint(y[1])) + @constraint(model, A*[x,x] == [10,10], DisjunctConstraint(y[2])) + @disjunction(model, y) + reformulate_model(model, Indicator()) + + ref_cons = DP._reformulation_constraints(model) + ref_cons_obj = constraint_object.(ref_cons) + @test length(ref_cons) == 4 + @test all(is_valid.(model, ref_cons)) + @test all(isa.(ref_cons_obj, VectorConstraint)) + @test all([cobj.set isa MOI.Indicator for cobj in ref_cons_obj]) +end + +function test_indicator_array() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, [1:3, 1:2], x <= 6, DisjunctConstraint(y[1])) + @constraint(model, [1:3, 1:2], x >= 6, DisjunctConstraint(y[2])) + @disjunction(model, y) + reformulate_model(model, Indicator()) + + ref_cons = DP._reformulation_constraints(model) + ref_cons_obj = constraint_object.(ref_cons) + @test length(ref_cons) == 12 + @test all(is_valid.(model, ref_cons)) + @test all(isa.(ref_cons_obj, VectorConstraint)) + @test all([cobj.set isa MOI.Indicator for cobj in ref_cons_obj]) +end + +function test_indicator_dense_axis() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, [["a","b","c"],[1,2]], x <= 7, DisjunctConstraint(y[1])) + @constraint(model, [["a","b","c"],[1,2]], x >= 7, DisjunctConstraint(y[2])) + @disjunction(model, y) + reformulate_model(model, Indicator()) + + ref_cons = DP._reformulation_constraints(model) + ref_cons_obj = constraint_object.(ref_cons) + @test length(ref_cons) == 12 + @test all(is_valid.(model, ref_cons)) + @test all(isa.(ref_cons_obj, VectorConstraint)) + @test all([cobj.set isa MOI.Indicator for cobj in ref_cons_obj]) +end + +function test_indicator_sparse_axis() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, [i = 1:3, j = 1:3; j > i], x <= 7, DisjunctConstraint(y[1])) + @constraint(model, [i = 1:3, j = 1:3; j > i], x >= 7, DisjunctConstraint(y[2])) + @disjunction(model, y) + reformulate_model(model, Indicator()) + + ref_cons = DP._reformulation_constraints(model) + ref_cons_obj = constraint_object.(ref_cons) + @test length(ref_cons) == 6 + @test all(is_valid.(model, ref_cons)) + @test all(isa.(ref_cons_obj, VectorConstraint)) + @test all([cobj.set isa MOI.Indicator for cobj in ref_cons_obj]) +end + +function test_indicator_nested() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @variable(model, z[1:2], LogicalVariable) + @constraint(model, x <= 5, DisjunctConstraint(y[1])) + @constraint(model, x >= 5, DisjunctConstraint(y[2])) + @disjunction(model, y, DisjunctConstraint(z[1])) + @constraint(model, x <= 10, DisjunctConstraint(z[1])) + @constraint(model, x >= 10, DisjunctConstraint(z[2])) + @disjunction(model, z) + reformulate_model(model, Indicator()) + + ref_cons = DP._reformulation_constraints(model) + ref_cons_obj = constraint_object.(ref_cons) + @test length(ref_cons) == 4 + @test all(is_valid.(model, ref_cons)) + @test all(isa.(ref_cons_obj, VectorConstraint)) + @test all([cobj.set isa MOI.Indicator for cobj in ref_cons_obj]) +end + +@testset "Indicator" begin + test_indicator_scalar_constraints() + test_indicator_vector_constraints() + test_indicator_array() + test_indicator_dense_axis() + test_indicator_sparse_axis() + test_indicator_nested() +end \ No newline at end of file diff --git a/test/constraints/proposition.jl b/test/constraints/proposition.jl new file mode 100644 index 0000000..75cfb46 --- /dev/null +++ b/test/constraints/proposition.jl @@ -0,0 +1,531 @@ +function test_proposition_add_fail() + m = GDPModel() + @variable(m, y[1:3], LogicalVariable) + @test_throws ErrorException @constraint(Model(), logical_or(y...) in IsTrue()) + @test_throws ErrorException @constraint(m, logical_or(y...) == 2) + @test_throws ErrorException @constraint(m, logical_or(y...) <= 1) + @test_throws ErrorException @constraint(m, sum(y) in IsTrue()) + @test_throws ErrorException @constraint(m, prod(y) in IsTrue()) + @test_throws ErrorException @constraint(m, sin(y[1]) in IsTrue()) + @test_throws MethodError @constraint(m, logical_or(y...) == IsTrue()) + @test_throws AssertionError @constraint(GDPModel(), logical_or(y...) in IsTrue()) +end + +function test_negation_add_success() + model = GDPModel() + @variable(model, y, LogicalVariable) + c1 = @constraint(model, logical_not(y) in IsTrue()) + @constraint(model, c2, ¬y in IsTrue()) + @test is_valid(model, c1) + @test is_valid(model, c2) + @test owner_model(c1) == model + @test owner_model(c2) == model + @test name(c1) == "" + @test name(c2) == "c2" + @test index(c1) == LogicalConstraintIndex(1) + @test index(c2) == LogicalConstraintIndex(2) + @test haskey(DP._logical_constraints(model), index(c1)) + @test haskey(DP._logical_constraints(model), index(c2)) + @test DP._logical_constraints(model)[index(c1)] == DP._constraint_data(c1) + @test constraint_object(c1).func isa DP._LogicalExpr + @test constraint_object(c2).func isa DP._LogicalExpr + @test constraint_object(c1).func.head == + constraint_object(c2).func.head == :! + @test constraint_object(c1).func.args == + constraint_object(c2).func.args == Any[y] + @test constraint_object(c1).set == + constraint_object(c2).set == IsTrue() + @test c1 == copy(c1) +end + +function test_implication_add_success() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + @constraint(model, c1, implies(y...) in IsTrue()) + @constraint(model, c2, (y[1] ⟹ y[2]) in IsTrue()) + @test_macro_throws ErrorException @constraint(model, y[1] ⟹ y[2] in IsTrue()) + @test constraint_object(c1).func.head == + constraint_object(c2).func.head == :(=>) + @test constraint_object(c1).func.args == + constraint_object(c2).func.args == Vector{Any}(y) + @test constraint_object(c1).set == + constraint_object(c2).set == IsTrue() +end + +function test_equivalence_add_success() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + @constraint(model, c1, iff(y...) in IsTrue()) + @constraint(model, c2, (y[1] ⇔ y[2]) in IsTrue()) + @test_macro_throws ErrorException @constraint(model, y[1] ⇔ y[2] in IsTrue()) + @test constraint_object(c1).func.head == + constraint_object(c2).func.head == :(==) + @test constraint_object(c1).func.args == + constraint_object(c2).func.args == Vector{Any}(y) + @test constraint_object(c1).set == + constraint_object(c2).set == IsTrue() +end + +function test_intersection_and_flatten_add_success() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, c1, logical_and(y...) in IsTrue()) + @constraint(model, c2, ∧(y...) in IsTrue()) + @constraint(model, c3, y[1] ∧ y[2] ∧ y[3] in IsTrue()) + @test is_valid(model, c1) + @test is_valid(model, c2) + @test is_valid(model, c3) + @test constraint_object(c1).func.head == + constraint_object(c2).func.head == + constraint_object(c3).func.head == :&& + @test Set(constraint_object(c1).func.args) == + Set(constraint_object(c2).func.args) == + Set(DP._flatten(constraint_object(c3).func).args) + @test constraint_object(c1).set == + constraint_object(c2).set == + constraint_object(c3).set == IsTrue() +end + +function test_union_and_flatten_add_success() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, c1, logical_or(y...) in IsTrue()) + @constraint(model, c2, ∨(y...) in IsTrue()) + @constraint(model, c3, y[1] ∨ y[2] ∨ y[3] in IsTrue()) + @test is_valid(model, c1) + @test is_valid(model, c2) + @test is_valid(model, c3) + @test constraint_object(c1).func.head == + constraint_object(c2).func.head == + constraint_object(c3).func.head == :|| + @test Set(constraint_object(c1).func.args) == + Set(constraint_object(c2).func.args) == + Set(DP._flatten(constraint_object(c3).func).args) + @test constraint_object(c1).set == + constraint_object(c2).set == + constraint_object(c3).set == IsTrue() +end + +function test_proposition_add_array() + model = GDPModel() + @variable(model, y[1:2, 1:3, 1:4], LogicalVariable) + @constraint(model, con[i=1:2,j=1:3], ∨(y[i,j,:]...) in IsTrue()) + @test con isa Matrix{LogicalConstraintRef} + @test length(con) == 6 +end + +function test_proposition_add_dense_axis() + model = GDPModel() + I = ["a", "b", "c"] + J = [1, 2] + @variable(model, y[I, J, 1:4], LogicalVariable) + @constraint(model, con[i=I,j=J], ∨(y[i,j,:]...) in IsTrue()) + @test con isa Containers.DenseAxisArray + @test con.axes[1] == ["a","b","c"] + @test con.axes[2] == [1,2] + @test con.data isa Matrix{LogicalConstraintRef} +end + +function test_proposition_add_sparse_axis() + model = GDPModel() + @variable(model, y[1:3, 1:3, 1:4], LogicalVariable) + @constraint(model, con[i=1:3,j=1:3; j > i], ∨(y[i,j,:]...) in IsTrue()) + @test con isa Containers.SparseAxisArray + @test length(con) == 3 + @test con.names == (:i, :j) + @test Set(keys(con.data)) == Set([(1,2),(1,3),(2,3)]) +end + +function test_proposition_set_name() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + c1 = @constraint(model, logical_not(y...) in IsTrue()) + set_name(c1, "proposition") + @test name(c1) == "proposition" +end + +function test_proposition_delete() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + c1 = @constraint(model, logical_not(y...) in IsTrue()) + + @test_throws AssertionError delete(GDPModel(), c1) + delete(model, c1) + @test !haskey(gdp_data(model).logical_constraints, index(c1)) + @test !DP._ready_to_optimize(model) +end + +function test_negation_reformulation() + model = GDPModel() + @variable(model, y, LogicalVariable) + @constraint(model, ¬y in IsTrue()) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.GreaterThan(0.0) + @test ref_con_obj.func == -DP._indicator_to_binary(model)[y] +end + +function test_implication_reformulation() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + @constraint(model, implies(y[1], y[2]) in IsTrue()) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.GreaterThan(0.0) + @test ref_con_obj.func == + -DP._indicator_to_binary(model)[y[1]] + + DP._indicator_to_binary(model)[y[2]] +end + +function test_implication_reformulation_fail() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, implies(y...) in IsTrue()) + @test_throws ErrorException reformulate_model(model, DummyReformulation()) +end + +function test_equivalence_reformulation() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + @constraint(model, iff(y[1], y[2]) in IsTrue()) + reformulate_model(model, DummyReformulation()) + ref_cons = DP._reformulation_constraints(model) + @test all(is_valid.(model, ref_cons)) + ref_con_objs = constraint_object.(ref_cons) + @test ref_con_objs[1].set == + ref_con_objs[2].set == MOI.GreaterThan(0.0) + @test ref_con_objs[1].func == -ref_con_objs[2].func + bvars = DP._indicator_to_binary(model) + for con in ref_cons + @test normalized_coefficient(con, bvars[y[1]]) == + -normalized_coefficient(con, bvars[y[2]]) + end +end + +function test_intersection_reformulation() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + @constraint(model, ∧(y[1], y[2]) in IsTrue()) + reformulate_model(model, DummyReformulation()) + ref_cons = DP._reformulation_constraints(model) + @test all(is_valid.(model, ref_cons)) + ref_con_objs = constraint_object.(ref_cons) + @test ref_con_objs[1].set == + ref_con_objs[2].set == MOI.GreaterThan(1.0) + bvars = DP._indicator_to_binary(model) + funcs = [ref_con_objs[1].func, ref_con_objs[2].func] + @test 1bvars[y[1]] in funcs + @test 1bvars[y[2]] in funcs +end + +function test_implication_reformulation() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + @constraint(model, ∨(y[1], y[2]) in IsTrue()) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.GreaterThan(1.0) + @test ref_con_obj.func == + DP._indicator_to_binary(model)[y[1]] + + DP._indicator_to_binary(model)[y[2]] +end + +function test_lvar_cnf_functions() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test DP._eliminate_equivalence(y) == y + @test DP._eliminate_implication(y) == y + @test DP._move_negations_inward(y) == y + neg_y = DP._negate(y) + @test neg_y.head == :! + @test neg_y.args[1] == y + @test DP._distribute_and_over_or(y) == y + @test DP._flatten(y) == y +end + +function test_eliminate_equivalence() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + ex = y[1] ⇔ y[2] + new_ex = DP._eliminate_equivalence(ex) + @test new_ex.head == :&& + @test length(new_ex.args) == 2 + @test new_ex.args[1].head == :(=>) + @test new_ex.args[2].head == :(=>) + @test Set(new_ex.args[1].args) == Set{Any}(y) + @test Set(new_ex.args[2].args) == Set{Any}(y) +end + +function test_eliminate_equivalence_flat() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + ex = iff(y...) + new_ex = DP._eliminate_equivalence(ex) + @test new_ex.head == :&& + @test new_ex.args[1].head == :(=>) + @test new_ex.args[1].args[1] == y[1] + @test new_ex.args[1].args[2].head == :&& + @test y[2] in new_ex.args[1].args[2].args[1].args + @test y[3] in new_ex.args[1].args[2].args[1].args + @test y[2] in new_ex.args[1].args[2].args[2].args + @test y[3] in new_ex.args[1].args[2].args[2].args + @test new_ex.args[1].args[1] == new_ex.args[2].args[2] + @test new_ex.args[1].args[2] == new_ex.args[2].args[1] +end + +function test_eliminate_equivalence_nested() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + ex = iff(y[1], iff(y[2],y[3])) + new_ex = DP._eliminate_equivalence(ex) + @test new_ex.head == :&& + @test new_ex.args[1].head == :(=>) + @test new_ex.args[1].args[1] == y[1] + @test new_ex.args[1].args[2].head == :&& + @test y[2] in new_ex.args[1].args[2].args[1].args + @test y[3] in new_ex.args[1].args[2].args[1].args + @test y[2] in new_ex.args[1].args[2].args[2].args + @test y[3] in new_ex.args[1].args[2].args[2].args + @test new_ex.args[1].args[1] == new_ex.args[2].args[2] + @test new_ex.args[1].args[2] == new_ex.args[2].args[1] +end + +function test_eliminate_implication() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + ex = y[1] ⟹ y[2] + new_ex = DP._eliminate_implication(ex) + @test new_ex.head == :|| + @test new_ex.args[1].head == :! + @test new_ex.args[1].args[1] == y[1] + @test new_ex.args[2] == y[2] +end + +function test_eliminate_implication_error() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + ex = implies(y...) + @test_throws ErrorException DP._eliminate_implication(ex) +end + +function test_eliminate_implication_nested() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + ex = (y[1] ⟹ y[2]) ⟹ y[3] + new_ex = DP._eliminate_implication(ex) + @test new_ex.head == :|| + @test new_ex.args[1].head == :! + @test new_ex.args[1].args[1].head == :|| + @test new_ex.args[1].args[1].args[1].head == :! + @test new_ex.args[1].args[1].args[1].args[1] == y[1] + @test new_ex.args[1].args[1].args[2] == y[2] + @test new_ex.args[2] == y[3] +end + +function test_move_negation_inward_error() + model = GDPModel() + @variable(model, y, LogicalVariable) + ex = ¬(y, y) + @test_throws ErrorException DP._move_negations_inward(ex) +end + +function test_move_negation_inward() + model = GDPModel() + @variable(model, y, LogicalVariable) + ex = ¬y + new_ex = DP._move_negations_inward(ex) + @test new_ex.head == :! + @test new_ex.args[1] == y +end + +function test_move_negation_inward_nested() + model = GDPModel() + @variable(model, y, LogicalVariable) + ex = ¬¬y + @test DP._move_negations_inward(ex) == y +end + +function test_negate_error() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test_throws ErrorException DP._negate(iff(y,y)) +end + +function test_negate_or() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + ex = ∨(y...) + new_ex = DP._negate_or(ex) + @test new_ex.head == :&& + @test new_ex.args[1].head == :! + @test new_ex.args[1].args[1] == y[1] + @test new_ex.args[2].head == :! + @test new_ex.args[2].args[1] == y[2] +end + +function test_negate_or_error() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test_throws ErrorException DP._negate_or(∨(y)) +end + +function test_negate_and() + model = GDPModel() + @variable(model, y[1:2], LogicalVariable) + ex = ∧(y...) + new_ex = DP._negate_and(ex) + @test new_ex.head == :|| + @test new_ex.args[1].head == :! + @test new_ex.args[1].args[1] == y[1] + @test new_ex.args[2].head == :! + @test new_ex.args[2].args[1] == y[2] +end + +function test_negate_and_error() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test_throws ErrorException DP._negate_or(∧(y)) +end + +function test_negate_negation() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test DP._negate_negation(¬y) == y +end + +function test_negate_negation_error() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test_throws ErrorException DP._negate_negation(¬(y,y)) +end + +function test_distribute_and_over_or() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + ex = y[1] ∨ (y[2] ∧ y[3]) + new_ex = DP._distribute_and_over_or(ex) + @test new_ex.head == :&& + @test new_ex.args[1].head == + new_ex.args[2].head == :|| + @test y[1] in new_ex.args[1].args + @test y[1] in new_ex.args[2].args + @test y[2] in new_ex.args[1].args || y[2] in new_ex.args[2].args + @test y[3] in new_ex.args[1].args || y[3] in new_ex.args[2].args +end + +function test_distribute_and_over_or_nested() + model = GDPModel() + @variable(model, y[1:4], LogicalVariable) + ex = (y[1] ∧ y[2]) ∨ (y[3] ∧ y[4]) + new_ex = DP._flatten(DP._distribute_and_over_or(ex)) + for arg in new_ex.args + @test arg.head == :|| + end + @test (y[1] in new_ex.args[1].args && y[3] in new_ex.args[1].args) || + (y[1] in new_ex.args[2].args && y[3] in new_ex.args[2].args) || + (y[1] in new_ex.args[3].args && y[3] in new_ex.args[3].args) || + (y[1] in new_ex.args[4].args && y[3] in new_ex.args[4].args) + + @test (y[1] in new_ex.args[1].args && y[4] in new_ex.args[1].args) || + (y[1] in new_ex.args[2].args && y[4] in new_ex.args[2].args) || + (y[1] in new_ex.args[3].args && y[4] in new_ex.args[3].args) || + (y[1] in new_ex.args[4].args && y[4] in new_ex.args[4].args) + + @test (y[2] in new_ex.args[1].args && y[3] in new_ex.args[1].args) || + (y[2] in new_ex.args[2].args && y[3] in new_ex.args[2].args) || + (y[2] in new_ex.args[3].args && y[3] in new_ex.args[3].args) || + (y[2] in new_ex.args[4].args && y[3] in new_ex.args[4].args) + + @test (y[2] in new_ex.args[1].args && y[4] in new_ex.args[1].args) || + (y[2] in new_ex.args[2].args && y[4] in new_ex.args[2].args) || + (y[2] in new_ex.args[3].args && y[4] in new_ex.args[3].args) || + (y[2] in new_ex.args[4].args && y[4] in new_ex.args[4].args) +end + +function test_to_cnf() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + ex = iff(y...) + new_ex = DP._to_cnf(ex) + @test new_ex.head == :&& + for arg in new_ex.args + @test arg.head == :|| + end + @test (y[1] in new_ex.args[1].args && y[2] in new_ex.args[1].args && y[3] in new_ex.args[1].args) || + (y[1] in new_ex.args[2].args && y[2] in new_ex.args[2].args && y[3] in new_ex.args[2].args) || + (y[1] in new_ex.args[3].args && y[2] in new_ex.args[3].args && y[3] in new_ex.args[3].args) || + (y[1] in new_ex.args[4].args && y[2] in new_ex.args[4].args && y[3] in new_ex.args[4].args) || + (y[1] in new_ex.args[5].args && y[2] in new_ex.args[5].args && y[3] in new_ex.args[5].args) || + (y[1] in new_ex.args[6].args && y[2] in new_ex.args[6].args && y[3] in new_ex.args[6].args) + + @test (y[1] in new_ex.args[1].args && !(y[2] in new_ex.args[1].args) && !(y[3] in new_ex.args[1].args)) || + (y[1] in new_ex.args[2].args && !(y[2] in new_ex.args[2].args) && !(y[3] in new_ex.args[2].args)) || + (y[1] in new_ex.args[3].args && !(y[2] in new_ex.args[3].args) && !(y[3] in new_ex.args[3].args)) || + (y[1] in new_ex.args[4].args && !(y[2] in new_ex.args[4].args) && !(y[3] in new_ex.args[4].args)) || + (y[1] in new_ex.args[5].args && !(y[2] in new_ex.args[5].args) && !(y[3] in new_ex.args[5].args)) || + (y[1] in new_ex.args[6].args && !(y[2] in new_ex.args[6].args) && !(y[3] in new_ex.args[6].args)) + + @test (!(y[1] in new_ex.args[1].args) && y[2] in new_ex.args[1].args && !(y[3] in new_ex.args[1].args)) || + (!(y[1] in new_ex.args[2].args) && y[2] in new_ex.args[2].args && !(y[3] in new_ex.args[2].args)) || + (!(y[1] in new_ex.args[3].args) && y[2] in new_ex.args[3].args && !(y[3] in new_ex.args[3].args)) || + (!(y[1] in new_ex.args[4].args) && y[2] in new_ex.args[4].args && !(y[3] in new_ex.args[4].args)) || + (!(y[1] in new_ex.args[5].args) && y[2] in new_ex.args[5].args && !(y[3] in new_ex.args[5].args)) || + (!(y[1] in new_ex.args[6].args) && y[2] in new_ex.args[6].args && !(y[3] in new_ex.args[6].args)) + + @test (!(y[1] in new_ex.args[1].args) && !(y[2] in new_ex.args[1].args) && y[3] in new_ex.args[1].args) || + (!(y[1] in new_ex.args[2].args) && !(y[2] in new_ex.args[2].args) && y[3] in new_ex.args[2].args) || + (!(y[1] in new_ex.args[3].args) && !(y[2] in new_ex.args[3].args) && y[3] in new_ex.args[3].args) || + (!(y[1] in new_ex.args[4].args) && !(y[2] in new_ex.args[4].args) && y[3] in new_ex.args[4].args) || + (!(y[1] in new_ex.args[5].args) && !(y[2] in new_ex.args[5].args) && y[3] in new_ex.args[5].args) || + (!(y[1] in new_ex.args[6].args) && !(y[2] in new_ex.args[6].args) && y[3] in new_ex.args[6].args) +end + +@testset "Logical Proposition Constraints" begin + @testset "Add Proposition" begin + test_proposition_add_fail() + test_negation_add_success() + test_implication_add_success() + test_equivalence_add_success() + test_intersection_and_flatten_add_success() + test_union_and_flatten_add_success() + test_proposition_add_array() + test_proposition_add_dense_axis() + test_proposition_add_sparse_axis() + end + @testset "Reformulate Proposition" begin + test_negation_reformulation() + test_implication_reformulation() + test_implication_reformulation_fail() + test_equivalence_reformulation() + test_intersection_reformulation() + test_implication_reformulation() + end + @testset "Conjunctive Normal Form" begin + test_lvar_cnf_functions() + test_eliminate_equivalence() + test_eliminate_equivalence_flat() + test_eliminate_equivalence_nested() + test_eliminate_implication() + test_eliminate_implication_error() + test_eliminate_implication_nested() + test_move_negation_inward_error() + test_move_negation_inward() + test_move_negation_inward_nested() + test_negate_error() + test_negate_or() + test_negate_or_error() + test_negate_and() + test_negate_and_error() + test_negate_negation() + test_negate_negation_error() + test_distribute_and_over_or() + test_distribute_and_over_or_nested() + test_to_cnf() + end +end \ No newline at end of file diff --git a/test/constraints/selector.jl b/test/constraints/selector.jl new file mode 100644 index 0000000..ab7ae37 --- /dev/null +++ b/test/constraints/selector.jl @@ -0,0 +1,200 @@ +function test_selector_add_fail() + m = GDPModel() + @variable(m, y[1:3], LogicalVariable) + @test_throws ErrorException @constraint(Model(), y in AtMost(2)) + @test_throws ErrorException @constraint(m, logical_or(y...) in Exactly(1)) + @test_throws ErrorException @constraint(m, sin.(y) in Exactly(1)) + @test_throws AssertionError @constraint(GDPModel(), y in AtMost(2)) + @test_throws MethodError @constraint(m, y in AtMost(1.0)) + @test_throws MethodError @constraint(m, y[1:2] in AtMost(1y[3])) +end + +function test_selector_add_success() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + c1 = @constraint(model, y in Exactly(1)) + @constraint(model, c2, y in Exactly(1)) + @test owner_model(c1) == model + @test is_valid(model, c1) + @test index(c1) == LogicalConstraintIndex(1) + @test name(c1) == "" + @test name(c2) == "c2" + @test haskey(DP._logical_constraints(model), index(c1)) + @test haskey(DP._logical_constraints(model), index(c2)) + @test DP._logical_constraints(model)[index(c1)] == DP._constraint_data(c1) + @test 1 in constraint_object(c1).func + @test y[1] in constraint_object(c1).func + @test y[2] in constraint_object(c1).func + @test y[3] in constraint_object(c1).func + @test constraint_object(c1).set == DP._MOIExactly(4) + @test constraint_object(c1).func == constraint_object(c2).func + @test constraint_object(c1).set == constraint_object(c2).set + @test c1 == copy(c1) +end + +function test_nested_selector_add_success() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + c1 = @constraint(model, y[1:2] in Exactly(y[3])) + @test is_valid(model, c1) + @test length(constraint_object(c1).func) == 3 + @test y[1] in constraint_object(c1).func + @test y[2] in constraint_object(c1).func + @test y[3] in constraint_object(c1).func +end + +function test_selector_add_array() + model = GDPModel() + @variable(model, y[1:2, 1:3, 1:4], LogicalVariable) + @constraint(model, con[i=1:2, j=1:3], y[i,j,:] in Exactly(1)) + @test con isa Matrix{LogicalConstraintRef} + @test length(con) == 6 +end + +function test_selector_add_dense_axis() + model = GDPModel() + I = ["a", "b", "c"] + J = [1, 2] + @variable(model, y[I, J, 1:4], LogicalVariable) + @constraint(model, con[i=I, j=J], y[i,j,:] in Exactly(1)) + @test con isa Containers.DenseAxisArray + @test con.axes[1] == ["a","b","c"] + @test con.axes[2] == [1,2] + @test con.data isa Matrix{LogicalConstraintRef} +end + +function test_selector_add_sparse_axis() + model = GDPModel() + @variable(model, y[1:3, 1:3, 1:4], LogicalVariable) + @constraint(model, con[i=1:3, j=1:3; j > i], y[i,j,:] in Exactly(1)) + @test con isa Containers.SparseAxisArray + @test length(con) == 3 + @test con.names == (:i, :j) + @test Set(keys(con.data)) == Set([(1,2),(1,3),(2,3)]) +end + +function test_selector_set_name() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + c1 = @constraint(model, y in Exactly(1)) + set_name(c1, "selector") + @test name(c1) == "selector" +end + +function test_selector_delete() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + c1 = @constraint(model, y in Exactly(1)) + + @test_throws AssertionError delete(GDPModel(), c1) + + delete(model, c1) + @test !haskey(gdp_data(model).logical_constraints, index(c1)) + @test !DP._ready_to_optimize(model) +end + +function test_exactly_reformulation() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, y in Exactly(1)) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.EqualTo(1.0) + @test ref_con_obj.func == sum(DP._reformulation_variables(model)) +end + +function test_atleast_reformulation() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, y in AtLeast(1)) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.GreaterThan(1.0) + @test ref_con_obj.func == sum(DP._reformulation_variables(model)) +end + +function test_atmost_reformulation() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, y in AtMost(1)) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.LessThan(1.0) + @test ref_con_obj.func == sum(DP._reformulation_variables(model)) +end + +function test_nested_exactly_reformulation() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, y[1:2] in Exactly(y[3])) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.EqualTo(0.0) + @test ref_con_obj.func == + DP._indicator_to_binary(model)[y[1]] + + DP._indicator_to_binary(model)[y[2]] - + DP._indicator_to_binary(model)[y[3]] +end + +function test_nested_atleast_reformulation() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, y[1:2] in AtLeast(y[3])) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.GreaterThan(0.0) + @test ref_con_obj.func == + DP._indicator_to_binary(model)[y[1]] + + DP._indicator_to_binary(model)[y[2]] - + DP._indicator_to_binary(model)[y[3]] +end + +function test_nested_atmost_reformulation() + model = GDPModel() + @variable(model, y[1:3], LogicalVariable) + @constraint(model, y[1:2] in AtMost(y[3])) + reformulate_model(model, DummyReformulation()) + ref_con = DP._reformulation_constraints(model)[1] + @test is_valid(model, ref_con) + ref_con_obj = constraint_object(ref_con) + @test ref_con_obj.set == MOI.LessThan(0.0) + @test ref_con_obj.func == + DP._indicator_to_binary(model)[y[1]] + + DP._indicator_to_binary(model)[y[2]] - + DP._indicator_to_binary(model)[y[3]] +end + +@testset "Logical Selector Constraints" begin + @testset "Add Selector" begin + test_selector_add_fail() + test_selector_add_success() + test_nested_selector_add_success() + test_selector_add_array() + test_selector_add_dense_axis() + test_selector_add_sparse_axis() + end + @testset "Selector Properties" begin + test_selector_set_name() + end + @testset "Delete Selector" begin + test_selector_delete() + end + @testset "Reformulate Selector" begin + test_exactly_reformulation() + test_atleast_reformulation() + test_atmost_reformulation() + test_nested_exactly_reformulation() + test_nested_atleast_reformulation() + test_nested_atmost_reformulation() + end +end \ No newline at end of file diff --git a/test/disjunction.jl b/test/disjunction.jl new file mode 100644 index 0000000..1032e6e --- /dev/null +++ b/test/disjunction.jl @@ -0,0 +1,216 @@ +function test_disjunction_add_fail() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, x == 5, DisjunctConstraint(y[1])) + + @test_macro_throws ErrorException @disjunction(model) #not enough arguments + @test_macro_throws UndefVarError @disjunction(model, y) #unassociated indicator + @test_macro_throws UndefVarError @disjunction(GDPModel(), y) #wrong model + @test_macro_throws ErrorException @disjunction(Model(), y) #not a GDPModel + @test_macro_throws UndefVarError @disjunction(model, [y[1], y[1]]) #duplicate indicator + @test_macro_throws UndefVarError @disjunction(model, y[1]) #no disjunction expression + @test_macro_throws UndefVarError @disjunction(model, y, "random_arg") #unrecognized extra argument + @test_macro_throws ErrorException @disjunction(model, "ABC") #unrecognized structure + @test_macro_throws ErrorException @disjunction(model, begin y end) #@disjunctions (plural) + @test_macro_throws UndefVarError @disjunction(model, x, y) #name x already exists + + @constraint(model, x == 10, DisjunctConstraint(y[2])) + @disjunction(model, disj, y) + @test_macro_throws UndefVarError @disjunction(model, disj, y) #duplicate name + + @test_macro_throws ErrorException @disjunction(model, "bad"[i=1:2], y) #wrong expression for disjunction name + @test_macro_throws ErrorException @disjunction(model, [model=1:2], y) #index name can't be same as model name +end + +function test_disjunction_add_success() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, x == 5, DisjunctConstraint(y[1])) + @constraint(model, x == 10, DisjunctConstraint(y[2])) + disj = @disjunction(model, y) + @disjunction(model, disj2, y) + @test owner_model(disj) == model + @test is_valid(model, disj) + @test index(disj) == DisjunctionIndex(1) + @test name(disj) == "" + @test name(disj2) == "disj2" + @test haskey(DP._disjunctions(model), index(disj)) + @test haskey(DP._disjunctions(model), index(disj2)) + @test DP._disjunctions(model)[index(disj)] == DP._constraint_data(disj) + @test !constraint_object(disj).nested + @test constraint_object(disj).indicators == y + @test disj == copy(disj) +end + +function test_disjunction_add_nested() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @variable(model, z[1:2], LogicalVariable) + @constraint(model, x <= 5, DisjunctConstraint(y[1])) + @constraint(model, x >= 5, DisjunctConstraint(y[2])) + @disjunction(model, inner, y, DisjunctConstraint(z[1])) + @constraint(model, x <= 10, DisjunctConstraint(z[1])) + @constraint(model, x >= 10, DisjunctConstraint(z[2])) + @disjunction(model, outer, z) + + @test is_valid(model, inner) + @test is_valid(model, outer) + @test haskey(DP._disjunctions(model), index(inner)) + @test haskey(DP._disjunctions(model), index(outer)) + @test constraint_object(inner).nested + @test !constraint_object(outer).nested + @test haskey(DP._indicator_to_constraints(model), z[1]) + @test inner in DP._indicator_to_constraints(model)[z[1]] +end + +function test_disjunction_add_array() + model=GDPModel() + @variable(model, x) + @variable(model, y[1:2, 1:3, 1:4], LogicalVariable) + @constraint(model, con[i=1:2, j=1:3, k=1:4], x==i+j+k, DisjunctConstraint(y[i,j,k])) + @disjunction(model, disj[i=1:2, j=1:3], y[i,j,:]) + + @test disj isa Matrix{DisjunctionRef} + @test length(disj) == 6 + @test all(is_valid.(model, disj)) +end + +function test_disjunciton_add_dense_axis() + model = GDPModel() + @variable(model, x) + I = ["a", "b", "c"] + J = [1, 2] + @variable(model, y[I, J, 1:4], LogicalVariable) + @constraint(model, con[i=I, j=J, k=1:4], x==k, DisjunctConstraint(y[i,j,k])) + @disjunction(model, disj[i=I, j=J], y[i,j,:]) + + @test disj isa Containers.DenseAxisArray + @test disj.axes[1] == ["a","b","c"] + @test disj.axes[2] == [1,2] + @test disj.data isa Matrix{DisjunctionRef} +end + +function test_disjunction_add_sparse_axis() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:3, 1:3, 1:4], LogicalVariable) + @constraint(model, con[i=1:3, j=1:3, k=1:4; j > i], x==i+j+k, DisjunctConstraint(y[i,j,k])) + @disjunction(model, disj[i=1:3, j=1:3; j > i], y[i,j,:]) + + @test disj isa Containers.SparseAxisArray + @test length(disj) == 3 + @test disj.names == (:i, :j) + @test Set(keys(disj.data)) == Set([(1,2),(1,3),(2,3)]) +end + +function test_disjunctions_add_success() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @variable(model, z[1:2], LogicalVariable) + @constraint(model, x <= 5, DisjunctConstraint(y[1])) + @constraint(model, x >= 5, DisjunctConstraint(y[2])) + @constraint(model, x <= 10, DisjunctConstraint(z[1])) + @constraint(model, x >= 10, DisjunctConstraint(z[2])) + @disjunctions(model, begin + disj1, y + disj2, z + end) + @test is_valid(model, disj1) + @test is_valid(model, disj2) + @test haskey(DP._disjunctions(model), index(disj1)) + @test haskey(DP._disjunctions(model), index(disj2)) + + unamed = @disjunctions(model, begin + y + z + end) + @test all(is_valid.(model, unamed)) + @test haskey(DP._disjunctions(model), index(unamed[1])) + @test haskey(DP._disjunctions(model), index(unamed[2])) +end + +function test_disjunction_set_name() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, x == 5, DisjunctConstraint(y[1])) + @constraint(model, x == 10, DisjunctConstraint(y[2])) + @disjunction(model, disj, y) + set_name(disj, "new_name") + @test name(disj) == "new_name" +end + +function test_disjunction_delete() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, x == 5, DisjunctConstraint(y[1])) + @constraint(model, x == 10, DisjunctConstraint(y[2])) + @disjunction(model, disj, y) + + @test_throws AssertionError delete(GDPModel(), disj) + delete(model, disj) + @test !haskey(gdp_data(model).disjunctions, index(disj)) + @test !DP._ready_to_optimize(model) +end + +function test_disjunction_function() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @constraint(model, x == 5, DisjunctConstraint(y[1])) + @constraint(model, x == 10, DisjunctConstraint(y[2])) + disj = disjunction(model, y, "name") + + @test is_valid(model, disj) + @test name(disj) == "name" + set_name(disj, "new_name") + @test name(disj) == "new_name" + @test haskey(DP._disjunctions(model), index(disj)) +end + +function test_disjunction_function_nested() + model = GDPModel() + @variable(model, x) + @variable(model, y[1:2], LogicalVariable) + @variable(model, z[1:2], LogicalVariable) + @constraint(model, x <= 5, DisjunctConstraint(y[1])) + @constraint(model, x >= 5, DisjunctConstraint(y[2])) + @constraint(model, x <= 10, DisjunctConstraint(z[1])) + @constraint(model, x >= 10, DisjunctConstraint(z[2])) + disj1 = disjunction(model, y, DisjunctConstraint(z[1]), "inner") + disj2 = disjunction(model, z, "outer") + + @test is_valid(model, disj1) + @test is_valid(model, disj2) + @test haskey(DP._disjunctions(model), index(disj1)) + @test haskey(DP._disjunctions(model), index(disj2)) + @test constraint_object(disj1).nested + @test !constraint_object(disj2).nested + @test haskey(DP._indicator_to_constraints(model), z[1]) + @test disj1 in DP._indicator_to_constraints(model)[z[1]] +end + +@testset "Disjunction" begin + @testset "Add Disjunction" begin + test_disjunction_add_fail() + test_disjunction_add_success() + test_disjunction_add_nested() + test_disjunction_add_array() + test_disjunciton_add_dense_axis() + test_disjunction_add_sparse_axis() + test_disjunctions_add_success() + test_disjunction_function() + test_disjunction_function_nested() + end + @testset "Disjunction Properties" begin + test_disjunction_set_name() + end + @testset "Delete Disjunction" begin + test_disjunction_delete() + end +end \ No newline at end of file diff --git a/test/model.jl b/test/model.jl new file mode 100644 index 0000000..83a2f4b --- /dev/null +++ b/test/model.jl @@ -0,0 +1,39 @@ +using HiGHS + +function test_empty_model() + model = GDPModel() + @test gdp_data(model) isa GDPData + @test isempty(DP._logical_variables(model)) + @test isempty(DP._logical_constraints(model)) + @test isempty(DP._disjunct_constraints(model)) + @test isempty(DP._disjunctions(model)) + @test isempty(DP._indicator_to_binary(model)) + @test isempty(DP._indicator_to_constraints(model)) + @test isempty(DP._reformulation_variables(model)) + @test isempty(DP._reformulation_constraints(model)) + @test isnothing(DP._solution_method(model)) + @test !DP._ready_to_optimize(model) +end + +function test_non_gdp_model() + model = Model() + @test_throws ErrorException gdp_data(model) +end + +function test_creation_optimizer() + model = GDPModel(HiGHS.Optimizer) + @test solver_name(model) == "HiGHS" +end + +function test_set_optimizer() + model = GDPModel() + set_optimizer(model, HiGHS.Optimizer) + @test solver_name(model) == "HiGHS" +end + +@testset "GDP Model" begin + test_empty_model() + test_non_gdp_model() + test_creation_optimizer() + test_set_optimizer() +end \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index e69de29..e06b246 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -0,0 +1,40 @@ +using DisjunctiveProgramming +using JuMP +using Test + +const DP = DisjunctiveProgramming + +struct DummyReformulation <: AbstractReformulationMethod end + +# Utilities to test macro error exception +# Taken from https://github.com/jump-dev/JuMP.jl/blob/master/test/utilities.jl +function strip_line_from_error(err::ErrorException) + return ErrorException(replace(err.msg, r"^At.+\:[0-9]+\: `@" => "In `@")) +end +strip_line_from_error(err::LoadError) = strip_line_from_error(err.error) +strip_line_from_error(err) = err +macro test_macro_throws(errortype, m) + quote + @test_throws( + $(esc(strip_line_from_error(errortype))), + try + @eval $m + catch err + throw(strip_line_from_error(err)) + end + ) + end +end + +include("aqua.jl") +include("model.jl") +include("variables/query.jl") +include("variables/logical.jl") +include("constraints/selector.jl") +include("constraints/proposition.jl") +include("constraints/disjunct.jl") +include("constraints/indicator.jl") +include("constraints/bigm.jl") +include("constraints/hull.jl") +include("disjunction.jl") +include("solve.jl") \ No newline at end of file diff --git a/test/solve.jl b/test/solve.jl new file mode 100644 index 0000000..697ccde --- /dev/null +++ b/test/solve.jl @@ -0,0 +1,50 @@ +using HiGHS + +function test_linear_gdp_example() + m = GDPModel(HiGHS.Optimizer) + set_attribute(m, MOI.Silent(), true) + @variable(m, 1 ≤ x[1:2] ≤ 9) + @variable(m, Y[1:2], LogicalVariable) + @variable(m, W[1:2], LogicalVariable) + @objective(m, Max, sum(x)) + @constraint(m, y1[i=1:2], [1,4][i] ≤ x[i] ≤ [3,6][i], DisjunctConstraint(Y[1])) + @constraint(m, w1[i=1:2], [1,5][i] ≤ x[i] ≤ [2,6][i], DisjunctConstraint(W[1])) + @constraint(m, w2[i=1:2], [2,4][i] ≤ x[i] ≤ [3,5][i], DisjunctConstraint(W[2])) + @constraint(m, y2[i=1:2], [8,1][i] ≤ x[i] ≤ [9,2][i], DisjunctConstraint(Y[2])) + @disjunction(m, inner, [W[1], W[2]], DisjunctConstraint(Y[1])) + @disjunction(m, outer, [Y[1], Y[2]]) + @constraint(m, Y in Exactly(1)) + @constraint(m, W in Exactly(Y[1])) + + optimize!(m, method = BigM()) + @test termination_status(m) == MOI.OPTIMAL + @test objective_value(m) ≈ 11 + @test value.(x) ≈ [9,2] + bins = gdp_data(m).indicator_to_binary + @test value(bins[Y[1]]) ≈ 0 + @test value(bins[Y[2]]) ≈ 1 + @test value(bins[W[1]]) ≈ 0 + @test value(bins[W[2]]) ≈ 0 + + optimize!(m, method = Hull()) + @test termination_status(m) == MOI.OPTIMAL + @test objective_value(m) ≈ 11 + @test value.(x) ≈ [9,2] + bins = gdp_data(m).indicator_to_binary + @test value(bins[Y[1]]) ≈ 0 + @test value(bins[Y[2]]) ≈ 1 + @test value(bins[W[1]]) ≈ 0 + @test value(bins[W[2]]) ≈ 0 + @test value(variable_by_name(m, "x[1]_Y[1]")) ≈ 0 + @test value(variable_by_name(m, "x[1]_Y[2]")) ≈ 9 + @test value(variable_by_name(m, "x[1]_W[1]")) ≈ 0 + @test value(variable_by_name(m, "x[1]_W[2]")) ≈ 0 + @test value(variable_by_name(m, "x[2]_Y[1]")) ≈ 0 + @test value(variable_by_name(m, "x[2]_Y[2]")) ≈ 2 + @test value(variable_by_name(m, "x[2]_W[1]")) ≈ 0 + @test value(variable_by_name(m, "x[2]_W[2]")) ≈ 0 +end + +@testset "Solve Linear GDP" begin + test_linear_gdp_example() +end \ No newline at end of file diff --git a/test/variables/logical.jl b/test/variables/logical.jl new file mode 100644 index 0000000..489474f --- /dev/null +++ b/test/variables/logical.jl @@ -0,0 +1,168 @@ +# test creating, modifying, and reformulating logical variables +function test_lvar_add_fail() + model = Model() + @test_throws ErrorException @variable(model, y, LogicalVariable) +end + +function test_lvar_add_success() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test typeof(y) == LogicalVariableRef + @test owner_model(y) == model + @test is_valid(model, y) + @test name(y) == "y" + @test index(y) == LogicalVariableIndex(1) + @test isnothing(start_value(y)) + @test isnothing(fix_value(y)) + @test isequal_canonical(y, copy(y)) + @test haskey(DP._logical_variables(model), index(y)) + @test DP._logical_variables(model)[index(y)].variable == LogicalVariable(nothing, nothing) + @test DP._logical_variables(model)[index(y)].name == "y" + #reformulate the variable + test_lvar_reformulation(model, y) +end + +function test_lvar_add_array() + model = GDPModel() + @variable(model, y[1:3, 1:2], LogicalVariable) + @test y isa Array{LogicalVariableRef, 2} + @test length(y) == 6 +end + +function test_lvar_add_dense_axis() + model = GDPModel() + @variable(model, y[["a","b","c"],[1,2]], LogicalVariable) + @test y isa Containers.DenseAxisArray + @test length(y) == 6 + @test y.axes[1] == ["a","b","c"] + @test y.axes[2] == [1,2] + @test y.data isa Array{LogicalVariableRef, 2} +end + +function test_lvar_add_sparse_axis() + model = GDPModel() + @variable(model, y[i = 1:3, j = 1:3; j > i], LogicalVariable) + @test y isa Containers.SparseAxisArray + @test length(y) == 3 + @test y.names == (:i, :j) + @test Set(keys(y.data)) == Set([(1,2),(1,3),(2,3)]) +end + +function test_lvar_set_name() + model = GDPModel() + @variable(model, y, LogicalVariable) + set_name(y, "z") + @test name(y) == "z" + #reformulate the variable + test_lvar_reformulation(model, y) +end + +function test_lvar_creation_start_value() + model = GDPModel() + @variable(model, y, LogicalVariable, start = true) + @test start_value(y) + #reformulate the variable + test_lvar_reformulation(model, y) +end + +function test_lvar_set_start_value() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test isnothing(start_value(y)) + set_start_value(y, false) + @test !start_value(y) + #reformulate the variable + test_lvar_reformulation(model, y) +end + +function test_lvar_fix_value() + model = GDPModel() + @variable(model, y, LogicalVariable) + @test isnothing(fix_value(y)) + fix(y, true) + @test fix_value(y) + #reformulate the variable + test_lvar_reformulation(model, y) + #unfix the value + unfix(y) + @test isnothing(fix_value(y)) +end + +function test_lvar_delete() + model = GDPModel() + @variable(model, y, LogicalVariable) + @variable(model, z, LogicalVariable) + @variable(model, x) + @constraint(model, con, x <= 10, DisjunctConstraint(y)) + @constraint(model, con2, x >= 50, DisjunctConstraint(z)) + @disjunction(model, disj, [y, z]) + @constraint(model, lcon, y ∨ z in IsTrue()) + DP._reformulate_logical_variables(model) + + @test_throws AssertionError delete(GDPModel(), y) + + delete(model, y) + @test !haskey(gdp_data(model).logical_variables, index(y)) + @test haskey(gdp_data(model).logical_variables, index(z)) + @test !haskey(gdp_data(model).disjunct_constraints, index(con)) + @test !haskey(gdp_data(model).disjunctions, index(disj)) + @test !haskey(gdp_data(model).logical_constraints, index(lcon)) + @test !haskey(gdp_data(model).indicator_to_constraints, y) + @test !haskey(gdp_data(model).indicator_to_binary, y) + @test haskey(gdp_data(model).indicator_to_binary, z) + @test !DP._ready_to_optimize(model) +end + +function test_lvar_reformulation() + model = GDPModel() + @variable(model, y, LogicalVariable, start = false) + fix(y, true) + test_lvar_reformulation(model, y) +end + +function test_lvar_reformulation(model::Model, lvref::LogicalVariableRef) + model = owner_model(lvref) + DP._reformulate_logical_variables(model) + @test haskey(DP._indicator_to_binary(model), lvref) + bvref = DP._indicator_to_binary(model)[lvref] + @test bvref in DP._reformulation_variables(model) + @test name(bvref) == name(lvref) + @test is_valid(model, bvref) + @test is_binary(bvref) + if isnothing(start_value(lvref)) + @test isnothing(start_value(bvref)) + elseif start_value(lvref) + @test isone(start_value(bvref)) + else + @test iszero(start_value(bvref)) + end + if isnothing(fix_value(lvref)) + @test_throws Exception fix_value(bvref) + elseif fix_value(lvref) + @test isone(fix_value(bvref)) + else + @test iszero(fix_value(bvref)) + end +end + +@testset "Logical Variables" begin + @testset "Add Logical Variables" begin + test_lvar_add_fail() + test_lvar_add_success() + test_lvar_add_array() + test_lvar_add_dense_axis() + test_lvar_add_sparse_axis() + end + @testset "Logical Variable Properties" begin + test_lvar_set_name() + test_lvar_creation_start_value() + test_lvar_set_start_value() + test_lvar_fix_value() + end + @testset "Delete Logical Variables" begin + test_lvar_delete() + end + @testset "Reformulate Logical Variables" begin + test_lvar_reformulation() + end +end \ No newline at end of file diff --git a/test/variables/query.jl b/test/variables/query.jl new file mode 100644 index 0000000..8ed7015 --- /dev/null +++ b/test/variables/query.jl @@ -0,0 +1,168 @@ +function test_interrogate_non_variables() + vars = Set() + f = Base.Fix1(push!, vars) #interrogator + #numbers + DP._interrogate_variables(f, 1) + @test isempty(vars) + empty!(vars) + DP._interrogate_variables(f, 1.0) + @test isempty(vars) + empty!(vars) + #strings/symbols + @test_throws ErrorException DP._interrogate_variables(f, "a") + @test_throws ErrorException DP._interrogate_variables(f, :a) +end + +function test_interrogate_variables() + vars = Set() + f = Base.Fix1(push!, vars) #interrogator + m = GDPModel() + @variable(m, x) + @variable(m, y, LogicalVariable) + DP._interrogate_variables(f, [x, y]) + @test x in vars + @test y in vars + @test length(vars) == 2 +end + +function test_interrogate_affexpr() + vars = Set() + f = Base.Fix1(push!, vars) #interrogator + m = GDPModel() + @variable(m, x) + @variable(m, y, LogicalVariable) + @variable(m, z) + DP._interrogate_variables(f, x + y + z) + @test x in vars + @test y in vars + @test z in vars + @test length(vars) == 3 +end + +function test_interrogate_quadexpr() + vars = Set() + f = Base.Fix1(push!, vars) #interrogator + m = GDPModel() + @variable(m, x) + @variable(m, y, LogicalVariable) + @variable(m, z) + DP._interrogate_variables(f, x^2 + x*y + z + 1) + @test x in vars + @test y in vars + @test z in vars + @test length(vars) == 3 + empty!(vars) +end + +function test_interrogate_nonlinear_expr() + vars = Set() + f = Base.Fix1(push!, vars) #interrogator + m = GDPModel() + @variable(m, x) + @variable(m, y, LogicalVariable) + @variable(m, z) + DP._interrogate_variables(f, sin(exp(x^2 + 1)) + cos(x) + y + 2) + @test x in vars + @test y in vars + @test !(z in vars) + @test length(vars) == 2 +end + +function test_interrogate_logical_expr() + vars = Set() + f = Base.Fix1(push!, vars) #interrogator + m = GDPModel() + @variable(m, y, LogicalVariable) + @variable(m, w[1:5], LogicalVariable) + ex = (implies(w[1], w[2]) ∧ w[3]) ⇔ (¬w[4] ∨ y) + DP._interrogate_variables(f, ex) + @test w[1] in vars + @test w[2] in vars + @test w[3] in vars + @test w[4] in vars + @test !(w[5] in vars) + @test y in vars + @test length(vars) == 5 +end + +function test_interrogate_proposition_constraint() + m = GDPModel() + @variable(m, y, LogicalVariable) + @variable(m, w[1:5], LogicalVariable) + ex = (implies(w[1], w[2]) ∧ w[3]) ⇔ (¬w[4] ∨ y) + @constraint(m, con, ex in IsTrue()) + obj = constraint_object(con) + vars = DP._get_constraint_variables(m, obj) + @test w[1] in vars + @test w[2] in vars + @test w[3] in vars + @test w[4] in vars + @test !(w[5] in vars) + @test y in vars + @test length(vars) == 5 +end + +function test_interrogate_selector_constraint() + m = GDPModel() + @variable(m, y, LogicalVariable) + @variable(m, w[1:5], LogicalVariable) + @constraint(m, con, w[1:4] in AtMost(y)) + obj = constraint_object(con) + vars = DP._get_constraint_variables(m, obj) + @test w[1] in vars + @test w[2] in vars + @test w[3] in vars + @test w[4] in vars + @test !(w[5] in vars) + @test y in vars + @test length(vars) == 5 +end + +function test_interrogate_disjunction() + m = GDPModel() + @variable(m, -5 ≤ x[1:2] ≤ 10) + @variable(m, Y[1:2], LogicalVariable) + @constraint(m, [i = 1:2], 0 ≤ x[i] ≤ [3,4][i], DisjunctConstraint(Y[1])) + @constraint(m, [i = 1:2], [5,4][i] ≤ x[i] ≤ [9,6][i], DisjunctConstraint(Y[2])) + @disjunction(m, Y) + disj = DP._disjunctions(m)[DisjunctionIndex(1)].constraint + vars = DP._get_disjunction_variables(m, disj) + @test Set(x) == vars +end + +function test_interrogate_nested_disjunction() + m = GDPModel() + @variable(m, -5 <= x[1:3] <= 5) + + @variable(m, y[1:2], LogicalVariable) + @constraint(m, x[1] <= -2, DisjunctConstraint(y[1])) + @constraint(m, x[1] >= 2, DisjunctConstraint(y[2])) + @disjunction(m, y) + + @variable(m, w[1:2], LogicalVariable) + @constraint(m, x[2] <= -3, DisjunctConstraint(w[1])) + @constraint(m, x[2] >= 3, DisjunctConstraint(w[2])) + @disjunction(m, w, DisjunctConstraint(y[1])) + + @variable(m, z[1:2], LogicalVariable) + @constraint(m, x[3] <= -4, DisjunctConstraint(z[1])) + @constraint(m, x[3] >= 4, DisjunctConstraint(z[2])) + @disjunction(m, z, DisjunctConstraint(w[1])) + + disj = DP._disjunctions(m)[DisjunctionIndex(1)].constraint + vars = DP._get_disjunction_variables(m, disj) + @test Set(x) == vars +end + +@testset "Variable Interrogation" begin + test_interrogate_non_variables() + test_interrogate_variables() + test_interrogate_affexpr() + test_interrogate_quadexpr() + test_interrogate_nonlinear_expr() + test_interrogate_logical_expr() + test_interrogate_proposition_constraint() + test_interrogate_selector_constraint() + test_interrogate_disjunction() + test_interrogate_nested_disjunction() +end \ No newline at end of file
        • &5aQydRIRXy*4vza1VO{e1ZB=&h&m+4y2r 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

          l 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 Date: Wed, 11 Oct 2023 12:42:41 -0400 Subject: [PATCH 63/63] merge https://github.com/pulsipher/DisjunctiveProgramming.jl/tree/structure_overall --- .gitignore | 20 +- Project.toml | 14 +- README.md | 246 +- docs/.gitignore | 2 - docs/build/assets/documenter.js | 260 - docs/build/assets/search.js | 247 - docs/build/assets/themes/documenter-dark.css | 7638 ----------------- docs/build/assets/themes/documenter-light.css | 7625 ---------------- docs/build/assets/themeswap.js | 42 - docs/build/index.html | 2 - docs/build/search/index.html | 2 - docs/build/search_index.js | 3 - examples/ex1.jl | 92 +- examples/ex2.jl | 105 +- examples/ex3.jl | 86 +- examples/ex4.jl | 26 + examples/ex5.jl | 35 + examples/ex6.jl | 60 + src/DisjunctiveProgramming.jl | 45 +- src/bigm.jl | 258 +- src/constraint.jl | 163 - src/constraints.jl | 541 ++ src/datatypes.jl | 420 + src/gdp.jl | 22 - src/hull.jl | 391 +- src/indicator.jl | 35 + src/logic.jl | 482 +- src/macros.jl | 435 +- src/model.jl | 84 + src/reformulate.jl | 196 +- src/utils.jl | 252 - src/variables.jl | 337 + test/aqua.jl | 5 + test/constraints/bigm.jl | 329 + test/constraints/disjunct.jl | 98 + test/constraints/hull.jl | 538 ++ test/constraints/indicator.jl | 119 + test/constraints/proposition.jl | 531 ++ test/constraints/selector.jl | 200 + test/disjunction.jl | 216 + test/model.jl | 39 + test/runtests.jl | 40 + test/solve.jl | 50 + test/variables/logical.jl | 168 + test/variables/query.jl | 168 + 45 files changed, 5624 insertions(+), 17043 deletions(-) delete mode 100644 docs/.gitignore delete mode 100644 docs/build/assets/documenter.js delete mode 100644 docs/build/assets/search.js delete mode 100644 docs/build/assets/themes/documenter-dark.css delete mode 100644 docs/build/assets/themes/documenter-light.css delete mode 100644 docs/build/assets/themeswap.js delete mode 100644 docs/build/index.html delete mode 100644 docs/build/search/index.html delete mode 100644 docs/build/search_index.js create mode 100644 examples/ex4.jl create mode 100644 examples/ex5.jl create mode 100644 examples/ex6.jl create mode 100644 src/constraints.jl create mode 100644 src/datatypes.jl create mode 100644 src/indicator.jl create mode 100644 src/model.jl create mode 100644 src/variables.jl create mode 100644 test/aqua.jl create mode 100644 test/constraints/bigm.jl create mode 100644 test/constraints/disjunct.jl create mode 100644 test/constraints/hull.jl create mode 100644 test/constraints/indicator.jl create mode 100644 test/constraints/proposition.jl create mode 100644 test/constraints/selector.jl create mode 100644 test/disjunction.jl create mode 100644 test/model.jl create mode 100644 test/solve.jl create mode 100644 test/variables/logical.jl create mode 100644 test/variables/query.jl diff --git a/.gitignore b/.gitignore index a605485..1f2d5eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,13 @@ +*.jl.*.cov +*.jl.cov +*.jl.mem +.DS_Store /Manifest.toml -*.aux -*.bbl -*.blg -*.fdb_latexmk -*.fls -*.log -*.out -*.gz \ No newline at end of file +/test/Manifest.toml +/dev/ +/docs/build/ +/docs/site/ +/docs/src/examples/*/*.md +/docs/src/examples/*/*.png +/docs/Manifest.toml +.vscode/ \ No newline at end of file diff --git a/Project.toml b/Project.toml index 2fc6858..f6b7da2 100644 --- a/Project.toml +++ b/Project.toml @@ -1,21 +1,21 @@ name = "DisjunctiveProgramming" uuid = "0d27d021-0159-4c7d-b4a7-9ccb5d9366cf" authors = ["hdavid16 "] -version = "0.3.6" +version = "0.4.0" [deps] JuMP = "4076af6c-e467-56ae-b986-b466b2749572" -Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" -Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" +Reexport = "189a3867-3050-52da-a836-e630ba90ab69" [compat] -JuMP = "1.2" -Suppressor = "0.2" -Symbolics = "4" +JuMP = "1.15" +Reexport = "0.2, 1" julia = "1.6" [extras] +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test"] +test = ["Aqua", "HiGHS", "Test"] diff --git a/README.md b/README.md index dd82676..07368ef 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # DisjunctiveProgramming.jl -Generalized Disjunctive Programming extension to JuMP - -![](logo.png) +Generalized Disjunctive Programming (GDP) extension to JuMP, based on the GDP modeling paradigm described in [Perez and Grossmann, 2023](https://arxiv.org/abs/2303.04375). ## Installation @@ -10,80 +8,210 @@ using Pkg Pkg.add("DisjunctiveProgramming") ``` +## Model + +A generalized disjunctive programming (GDP) model is created using `GDPModel()`, where the optimizer can be passed at model creation, along with other keyword arguments supported by JuMP Models. + +```julia +using DisjunctiveProgramming +using HiGHS + +model = GDPModel(HiGHS.Optimizer) +``` + +A `GDPModel` is a `JuMP Model` with a `GDPData` field in the model's `.ext` dictionary, which stores the following: + +- `Logical Variables`: Indicator variables used for the various disjuncts involved in the model's disjunctions. +- `Logical Constraints`: Selector (cardinality) or proposition (Boolean) constraints describing the relationships between the logical variables. +- `Disjunct Constraints`: Constraints associated with each disjunct in the model. +- `Disjunctions`: Disjunction constraints. +- `Solution Method`: The reformulation technique or solution method. Currently supported methods include Big-M, Hull, and Indicator Constraints. +- `Reformulation Variables`: List of JuMP variables created when reformulating a GDP model into a MIP model. +- `Reformulation Constraints`: List of constraints created when reformulating a GDP model into a MIP model. +- `Ready to Optimize`: Flag indicating if the model can be optimized. + +Additionally, the following mapping dictionaries are stored in `GDPData`: + +- `Indicator to Binary`: Maps the Logical variables to their respective reformulated Binary variables. +- `Indicator to Constraints`: Maps the Logical variables to the disjunct constraints associated with them. + +A GDP Model's `GDPData` can be accessed via: + +```julia +data = gdp_data(model) +``` + +## Logical Variables + +Logical variables are JuMP `AbstractVariable`s with two fields: `fix_value` and `start_value`. These can be optionally specified at variable creation. Logical variables are created with the `@variable` JuMP macro by adding the tag `LogicalVariable` as the last keyword argument. As with the regular `@variable` macro, variables can be named and indexed: + +```julia +@variable(model, Y[1:3], LogicalVariable) +``` + +## Logical Constraints + +Two types of logical constraints are supported: + +1. `Selector` or cardinality constraints: A subset of Logical variables is passed and `Exactly`, `AtMost`, or `AtLeast` `n` of these is allowed to be `True`. These constraints are specified with the `func` $\in$ `set` notation in `MathOptInterface` in a `@constraint` JuMP macro. It is not assumed that disjunctions have an `Exactly(1)` constraint enforced on their disjuncts upon creation. This constraint must be explicitly specified. + + ```julia + @constraint(model, [Y[1], Y[2]] in Exactly(1)) + ``` + +2. `Proposition` or Boolean constraints: These describe the relationships between Logical variables via Boolean algebra. Supported logical operators include: + + - `∨` or `logical_or` (OR, typed with `\vee + tab`). + - `∧` or `logical_and` (AND, typed with `\wedge + tab`). + - `¬` or `logical_not` (NOT, typed with `\neg + tab`). + - `⟹` of `implies` (Implication, typed with `\Longrightarrow + tab`). + - `⇔` or `iff` (double implication or equivalence, typed with `\Leftrightarrow + tab`). + + The `@constraint` JuMP macro is used to create these constraints with the `IsTrue` set: + + ```julia + @constraint(model, (Y[1] ⟹ Y[2]) in IsTrue()) + ``` + + _Note_: The parenthesis in the example above around the implication clause are only required when the parent logical operator is `⟹` or `⇔` to avoid parsing errors. + + Logical propositions can be reformulated to IP constraints by automatic reformulation to [Conjunctive Normal Form](https://en.wikipedia.org/wiki/Conjunctive_normal_form). + ## Disjunctions -After defining a JuMP model, disjunctions can be added to the model by using the `@disjunction` macro. This macro is called by `@disjunction(m, disjuncts...; kwargs...), where `disjuncts...` is a list of at least two expressions of the form: -1. A valid expression accepted by [JuMP.@constraint](https://jump.dev/JuMP.jl/stable/reference/constraints/#JuMP.@constraint). Names for the constraints or containers of constraints cannot be passed (use option 2). -2. A valid expression accepted by [JuMP.@constraints](https://jump.dev/JuMP.jl/stable/reference/constraints/#JuMP.@constraints) (using `begin...end) -3. A valid expression accepted by [JuMP.@NLconstraint](https://jump.dev/JuMP.jl/stable/reference/nlp/#JuMP.@NLconstraint). Containers of constraints cannot be passed (use option 4). Naming of non-linear constraints is not currently supported. -4. A valid expression accepted by [JuMP.@NLconstraints](https://jump.dev/JuMP.jl/stable/reference/nlp/#JuMP.@NLconstraints) (using `begin...end) -5. `Tuple` of expressions accepted by options 1 and/or 3. +Disjunctions are built by first defining the constraints associated with each disjunct. This is done via the `@constraint` JuMP macro with the extra `DisjunctConstraint` tag specifying the Logical variable associated with the constraint: + +```julia +@variable(model, x) +@constraint(model, x ≤ 100, DisjunctConstraint(Y[1])) +@constraint(model, x ≥ 200, DisjunctConstraint(Y[2])) +``` + +After all disjunct constraints associated with a disjunction have been defined, the disjunction is created with the `@disjunction` macro, where the disjunction is defined as a `Vector` of Logical variables associated with each disjunct: + +```julia +@disjunction(model, [Y[1], Y[2]]) +``` + +Disjunctions can be nested by passing an additional `DisjunctConstraint` tag. The Logical variable in the `DisjunctConstraint` tag specifies which disjunct, the nested disjunction belongs to: -NOTES: -- Vectorized constraints (using `.` notation) are not currently supported. The current workarround is to first create the constraint with the `@constraint` macro and then use the `add_disjunction!`, instead of the `@disjunction` macro. The `add_disjunction!` function receives the same arguments as the `@disjunction` macro, with the exception that instead of creating the constraints in the disjunctions, references to previously created constraints are used for the disjuncts. -- Any constraints that are of `EqualTo` type are split into two constraints (e.g., `f(x) == 0` -> `0 <= f(x) <= 0`). This is necessary only for the Big-M reformulation of equality constraints, but is currently applied regardless of the reformulation technique. -- Any constraints that are of `Interval` type are split into two constraints (one for each bound). -- It is assumed that the disjuncts belonging to a disjunction are proper disjunctions (mutually exclussive) and only one of them will be selected (`XOR`). +```julia +@disjunction(model, Y[1:2], DisjunctConstraint(Y[3])) +``` -The valid key-word arguments for the `@disjunction` macro are: -- `reformulation::Symbol`: `:big_m` for [Big-M Reformulation](https://optimization.mccormick.northwestern.edu/index.php/Disjunctive_inequalities#Big-M_Reformulation), `:hull` for [Hull Reformulation](https://optimization.mccormick.northwestern.edu/index.php/Disjunctive_inequalities#Convex-Hull_Reformulation) -- `M`: Big-M value used when `reformulation = :big_m`. -- `ϵ`: epsilon tolerance for the perspective function proposed by [Furman, et al. [2020]](https://link.springer.com/article/10.1007/s10589-020-00176-0). Only used when `reformulation = :hull`. -- `name::Symbol`: Name for the disjunction (also name for indicator variable used on that disjunction). If not passed (`name = missing`), a symbolic name will be generated with the prefix `disj`. The mutual exclussion constraint on the binary indicator variables can be accessed with `model[Symbol("XOR(disj_$name)")]`. +Empty disjuncts are supported in GDP models. When used, the only constraints enforced on the model when the empty disjunct is selected are the global constraints and any other disjunction constraints defined. -When a disjunction is defined using the `@disjunction` macro, the disjunctions are reformulated to algebraic constraints via either Big-M or Hull reformulations. For the Hull reformulation, disaggregated variables are generated by adding the suffix `_$name$i` to the original variables, where `i` is the index of the disjunct in that disjunction. Bounding constraints are applied to the disaggregated variables and can be accessed with `model[Symbol("$_$name$i_lb")]` and `model[Symbol("$_$name$i_ub")]` for the lower bound and upper bound constraints, respectively. The aggregation constraint can be accessed with `model[Symbol("$_aggregation")]`. For Big-M reformulations, the user may provide an `M` object that represents the BigM value(s). The `M` object can be a `Number` that is applied to all constraints in the disjuncts, or a `Vector`/`Tuple` of values that are used for each of the disjuncts. For Hull reformulations, the user may provide an `ϵ` value for the perspective function (default is `ϵ = 1e-6`). The `ϵ` object can be a `Number` that is applied to all perspective functions, or a `Vector`/`Tuple` of values that are used for each of the disjuncts. +## MIP Reformulations -For empty disjuncts, use `nothing` for their positional argument (e.g., `@disjunction(m, x <= 1, nothing, reformulation = :big_m)`). +The following reformulation methods are currently supported: -NOTE: `:object_dict` is used in the extension dictionary to store the object dictionary of models using *DisjunctiveProgramming.jl*. +1. [Big-M](https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Big-M_Reformulation[1][2]): The `BigM` struct is created with the following optional arguments: -## Logical Propositions + - `value`: Big-M value to use. Default: `1e9`. Big-M values are currently global to the model. Constraint specific Big-M values can be supported in future releases. + - `tighten`: Boolean indicating if tightening the Big-M value should be attempted (currently supported only for linear disjunct constraints when variable bounds have been set or specified in the `variable_bounds` field). Default: `true`. + - `variable_bounds`: Dictionary specifying the lower and upper bounds for each `VariableRef` (e.g., `Dict(x => (lb, ub))`). Default: populate when calling the reformulation method. -Boolean logic can be included in the model by using the `@proposition` macro. This macro will take an expression that uses only binary variables from the model (typically a subset of the indicator variables used in the disjunctions) and one or more of the following Boolean operators: -- `∨` (or, typed with `\vee + tab`) -- `∧` (and, typed with `\wedge + tab`) -- `¬` (negation, typed with `\neg + tab`) -- `⇒` (implication, typed with `\Rightarrow + tab`) -- `⇔` (double implication or equivalence, typed with `\Leftrightarrow + tab`) -The logical proposition is then internally reformulated to an algebraic constraint that is added to the model. This constrait can be accessed with `model[Symbol("")]`. +2. [Hull](https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Convex-Hull_Reformulation[1][2]): The `Hull` struct is created with the following optional arguments: -## Example + - `value`: `ϵ` value to use when reformulating quadratic or nonlinear constraints via the perspective function proposed by [Furman, et al. [2020]](https://link.springer.com/article/10.1007/s10589-020-00176-0). Default: `1e-6`. `ϵ` values are currently global to the model. Constraint specific tolerances can be supported in future releases. + - `variable_bounds`: Dictionary specifying the lower and upper bounds for each `VariableRef` (e.g., `Dict(x => (lb, ub))`). Default: populate when calling the reformulation method. -The example below is from the [Northwestern University Process Optimization Open Textbook](https://optimization.mccormick.northwestern.edu/index.php/Disjunctive_inequalities). +3. [Indicator](https://jump.dev/JuMP.jl/stable/manual/constraints/#Indicator-constraints): This method reformulates each disjunct constraint into an indicator constraint with the Boolean reformulation counterpart of the Logical variable used to define the disjunct constraint. -To perform the Big-M reformulation, `:big_m` is passed to the `reformulation` keyword argument. If nothing is passed to the keyword argument `M`, tight Big-M values will be inferred from the variable bounds using IntervalArithmetic.jl. If `x` is not bounded, Big-M values must be provided for either the whole system (e.g., `M = 10`) or for each of the constraint arrays in the example (e.g., `M = (10,10)`). +## Release Notes -To perform the Hull reformulation, `reformulation = :hull`. Variables must have bounds for the reformulation to work. +Prior to `v0.4.0`, the package did not leverage the JuMP extension capabilities and was not as robust. For these earlier releases, refer to [Perez, Joshi, and Grossmann, 2023](https://arxiv.org/abs/2304.10492v1) and the following [JuliaCon 2022 Talk](https://www.youtube.com/watch?v=AMIrgTTfUkI). + +## Example + +The example below is from the [Cornell University Computational Optimization Open Textbook](https://optimization.cbe.cornell.edu/index.php?title=Disjunctive_inequalities#Big-M_Reformulation[1][2]). ```julia using JuMP using DisjunctiveProgramming -m = Model() -@variable(m, -5 ≤ x ≤ 10) -@disjunction( - m, - 0 ≤ x ≤ 3, - 5 ≤ x ≤ 9, - reformulation=:big_m, - name=:y -) -@proposition(m, y[1] ∨ y[2]) #this is a redundant proposition +m = GDPModel() +@variable(m, 0 ≤ x[1:2] ≤ 20) +@variable(m, Y[1:2], LogicalVariable) +@constraint(m, [i = 1:2], [2,5][i] ≤ x[i] ≤ [6,9][i], DisjunctConstraint(Y[1])) +@constraint(m, [i = 1:2], [8,10][i] ≤ x[i] ≤ [11,15][i], DisjunctConstraint(Y[2])) +@disjunction(m, Y) +@constraint(m, Y in Exactly(1)) #logical constraint +## Big-M +reformulate_model(m, BigM(100, false)) #specify M value and disable M-tightening print(m) - -┌ Warning: disj_y[1] : x in [0.0, 3.0] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. -┌ Warning: disj_y[2] : x in [5.0, 9.0] uses the `MOI.Interval` set. Each instance of the interval set has been split into two constraints, one for each bound. -Feasibility -Subject to - XOR(disj_y) : y[1] + y[2] == 1.0 <- XOR constraint - y[1] ∨ y[2] : y[1] + y[2] >= 1.0 <- reformulated logical proposition (name is the proposition) - disj_y[1][lb] : -x + 5 y[1] <= 5.0 <- left-side of constraint in 1st disjunct (name is assigned to disj_y[1][lb]) - disj_y[1][ub] : x + 7 y[1] <= 10.0 <- right-side of constraint in 1st disjunct (name is assigned to disj_y[1][ub]) - disj_y[2][lb] : -x + 10 y[2] <= 5.0 <- left-side of constraint in 2nd disjunct (name is assigned to disj_y[2][lb]) - disj_y[2][ub] : x + y[2] <= 10.0 <- right-side of constraint in 2nd disjunct (name is assigned to disj_y[2][ub]) - x >= -5.0 <- variable lower bound - x <= 10.0 <- variable upper bound - y[1] binary <- indicator variable (1st disjunct) is binary - y[2] binary <- indicator variable (2nd disjunct) is binary +# Feasibility +# Subject to +# Y[1] + Y[2] = 1 +# x[1] - 100 Y[1] ≥ -98 +# x[2] - 100 Y[1] ≥ -95 +# x[1] - 100 Y[2] ≥ -92 +# x[2] - 100 Y[2] ≥ -90 +# x[1] + 100 Y[1] ≤ 106 +# x[2] + 100 Y[1] ≤ 109 +# x[1] + 100 Y[2] ≤ 111 +# x[2] + 100 Y[2] ≤ 115 +# x[1] ≥ 0 +# x[2] ≥ 0 +# x[1] ≤ 20 +# x[2] ≤ 20 +# Y[1] binary +# Y[2] binary + +## Hull +reformulate_model(m, Hull()) +print(m) +# Feasibility +# Subject to +# -x[2] + x[2]_Y[1] + x[2]_Y[2] = 0 +# -x[1] + x[1]_Y[1] + x[1]_Y[2] = 0 +# Y[1] + Y[2] = 1 +# -2 Y[1] + x[1]_Y[1] ≥ 0 +# -5 Y[1] + x[2]_Y[1] ≥ 0 +# -8 Y[2] + x[1]_Y[2] ≥ 0 +# -10 Y[2] + x[2]_Y[2] ≥ 0 +# x[2]_Y[1]_lower_bound : -x[2]_Y[1] ≤ 0 +# x[2]_Y[1]_upper_bound : -20 Y[1] + x[2]_Y[1] ≤ 0 +# x[1]_Y[1]_lower_bound : -x[1]_Y[1] ≤ 0 +# x[1]_Y[1]_upper_bound : -20 Y[1] + x[1]_Y[1] ≤ 0 +# x[2]_Y[2]_lower_bound : -x[2]_Y[2] ≤ 0 +# x[2]_Y[2]_upper_bound : -20 Y[2] + x[2]_Y[2] ≤ 0 +# x[1]_Y[2]_lower_bound : -x[1]_Y[2] ≤ 0 +# x[1]_Y[2]_upper_bound : -20 Y[2] + x[1]_Y[2] ≤ 0 +# -6 Y[1] + x[1]_Y[1] ≤ 0 +# -9 Y[1] + x[2]_Y[1] ≤ 0 +# -11 Y[2] + x[1]_Y[2] ≤ 0 +# -15 Y[2] + x[2]_Y[2] ≤ 0 +# x[1] ≥ 0 +# x[2] ≥ 0 +# x[2]_Y[1] ≥ 0 +# x[1]_Y[1] ≥ 0 +# x[2]_Y[2] ≥ 0 +# x[1]_Y[2] ≥ 0 +# x[1] ≤ 20 +# x[2] ≤ 20 +# x[2]_Y[1] ≤ 20 +# x[1]_Y[1] ≤ 20 +# x[2]_Y[2] ≤ 20 +# x[1]_Y[2] ≤ 20 +# Y[1] binary +# Y[2] binary + +## Indicator +reformulate_model(m, Indicator()) +print(m) +# Feasibility +# Subject to +# Y[1] + Y[2] = 1 +# x[1] ≥ 0 +# x[2] ≥ 0 +# x[1] ≤ 20 +# x[2] ≤ 20 +# Y[1] binary +# Y[2] binary +# Y[1] => {x[1] ∈ [2, 6]} +# Y[1] => {x[2] ∈ [5, 9]} +# Y[2] => {x[1] ∈ [8, 11]} +# Y[2] => {x[2] ∈ [10, 15]} ``` diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index a303fff..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -build/ -site/ diff --git a/docs/build/assets/documenter.js b/docs/build/assets/documenter.js deleted file mode 100644 index 22f0f9a..0000000 --- a/docs/build/assets/documenter.js +++ /dev/null @@ -1,260 +0,0 @@ -// Generated by Documenter.jl -requirejs.config({ - paths: { - 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia.min', - 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/headroom.min', - 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min', - 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/contrib/auto-render.min', - 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min', - 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/jQuery.headroom.min', - 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min', - 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min', - 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia-repl.min', - }, - shim: { - "highlight-julia": { - "deps": [ - "highlight" - ] - }, - "katex-auto-render": { - "deps": [ - "katex" - ] - }, - "headroom-jquery": { - "deps": [ - "jquery", - "headroom" - ] - }, - "highlight-julia-repl": { - "deps": [ - "highlight" - ] - } -} -}); -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { -$(document).ready(function() { - renderMathInElement( - document.body, - { - "delimiters": [ - { - "left": "$", - "right": "$", - "display": false - }, - { - "left": "$$", - "right": "$$", - "display": true - }, - { - "left": "\\[", - "right": "\\]", - "display": true - } - ] -} - - ); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) { -$(document).ready(function() { - hljs.initHighlighting(); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { - -// Manages the top navigation bar (hides it when the user starts scrolling down on the -// mobile). -window.Headroom = Headroom; // work around buggy module loading? -$(document).ready(function() { - $('#documenter .docs-navbar').headroom({ - "tolerance": {"up": 10, "down": 10}, - }); -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Modal settings dialog -$(document).ready(function() { - var settings = $('#documenter-settings'); - $('#documenter-settings-button').click(function(){ - settings.toggleClass('is-active'); - }); - // Close the dialog if X is clicked - $('#documenter-settings button.delete').click(function(){ - settings.removeClass('is-active'); - }); - // Close dialog if ESC is pressed - $(document).keyup(function(e) { - if (e.keyCode == 27) settings.removeClass('is-active'); - }); -}); - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// Manages the showing and hiding of the sidebar. -$(document).ready(function() { - var sidebar = $("#documenter > .docs-sidebar"); - var sidebar_button = $("#documenter-sidebar-button") - sidebar_button.click(function(ev) { - ev.preventDefault(); - sidebar.toggleClass('visible'); - if (sidebar.hasClass('visible')) { - // Makes sure that the current menu item is visible in the sidebar. - $("#documenter .docs-menu a.is-active").focus(); - } - }); - $("#documenter > .docs-main").bind('click', function(ev) { - if ($(ev.target).is(sidebar_button)) { - return; - } - if (sidebar.hasClass('visible')) { - sidebar.removeClass('visible'); - } - }); -}) - -// Resizes the package name / sitename in the sidebar if it is too wide. -// Inspired by: https://github.com/davatron5000/FitText.js -$(document).ready(function() { - e = $("#documenter .docs-autofit"); - function resize() { - var L = parseInt(e.css('max-width'), 10); - var L0 = e.width(); - if(L0 > L) { - var h0 = parseInt(e.css('font-size'), 10); - e.css('font-size', L * h0 / L0); - // TODO: make sure it survives resizes? - } - } - // call once and then register events - resize(); - $(window).resize(resize); - $(window).on('orientationchange', resize); -}); - -// Scroll the navigation bar to the currently selected menu item -$(document).ready(function() { - var sidebar = $("#documenter .docs-menu").get(0); - var active = $("#documenter .docs-menu .is-active").get(0); - if(typeof active !== 'undefined') { - sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; - } -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -function set_theme(theme) { - var active = null; - var disabled = []; - for (var i = 0; i < document.styleSheets.length; i++) { - var ss = document.styleSheets[i]; - var themename = ss.ownerNode.getAttribute("data-theme-name"); - if(themename === null) continue; // ignore non-theme stylesheets - // Find the active theme - if(themename === theme) active = ss; - else disabled.push(ss); - } - if(active !== null) { - active.disabled = false; - if(active.ownerNode.getAttribute("data-theme-primary") === null) { - document.getElementsByTagName('html')[0].className = "theme--" + theme; - } else { - document.getElementsByTagName('html')[0].className = ""; - } - disabled.forEach(function(ss){ - ss.disabled = true; - }); - } - - // Store the theme in localStorage - if(typeof(window.localStorage) !== "undefined") { - window.localStorage.setItem("documenter-theme", theme); - } else { - console.error("Browser does not support window.localStorage"); - } -} - -// Theme picker setup -$(document).ready(function() { - // onchange callback - $('#documenter-themepicker').change(function themepick_callback(ev){ - var themename = $('#documenter-themepicker option:selected').attr('value'); - set_theme(themename); - }); - - // Make sure that the themepicker displays the correct theme when the theme is retrieved - // from localStorage - if(typeof(window.localStorage) !== "undefined") { - var theme = window.localStorage.getItem("documenter-theme"); - if(theme !== null) { - $('#documenter-themepicker option').each(function(i,e) { - e.selected = (e.value === theme); - }) - } - } -}) - -}) -//////////////////////////////////////////////////////////////////////////////// -require(['jquery'], function($) { - -// update the version selector with info from the siteinfo.js and ../versions.js files -$(document).ready(function() { - var version_selector = $("#documenter .docs-version-selector"); - var version_selector_select = $("#documenter .docs-version-selector select"); - - version_selector_select.change(function(x) { - target_href = version_selector_select.children("option:selected").get(0).value; - window.location.href = target_href; - }); - - // add the current version to the selector based on siteinfo.js, but only if the selector is empty - if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) { - var option = $(""); - version_selector_select.append(option); - } - - if (typeof DOC_VERSIONS !== 'undefined') { - var existing_versions = version_selector_select.children("option"); - var existing_versions_texts = existing_versions.map(function(i,x){return x.text}); - DOC_VERSIONS.forEach(function(each) { - var version_url = documenterBaseURL + "/../" + each; - var existing_id = $.inArray(each, existing_versions_texts); - // if not already in the version selector, add it as a new option, - // otherwise update the old option with the URL and enable it - if (existing_id == -1) { - var option = $(""); - version_selector_select.append(option); - } else { - var option = existing_versions[existing_id]; - option.value = version_url; - option.disabled = false; - } - }); - } - - // only show the version selector if the selector has been populated - if (version_selector_select.children("option").length > 0) { - version_selector.toggleClass("visible"); - } -}) - -}) diff --git a/docs/build/assets/search.js b/docs/build/assets/search.js deleted file mode 100644 index e30e907..0000000 --- a/docs/build/assets/search.js +++ /dev/null @@ -1,247 +0,0 @@ -// Generated by Documenter.jl -requirejs.config({ - paths: { - 'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.6/lunr.min', - 'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min', - 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min', - } -}); -//////////////////////////////////////////////////////////////////////////////// -require(['jquery', 'lunr', 'lodash'], function($, lunr, _) { - -$(document).ready(function() { - // parseUri 1.2.2 - // (c) Steven Levithan - // MIT License - function parseUri (str) { - var o = parseUri.options, - m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), - uri = {}, - i = 14; - - while (i--) uri[o.key[i]] = m[i] || ""; - - uri[o.q.name] = {}; - uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { - if ($1) uri[o.q.name][$1] = $2; - }); - - return uri; - }; - parseUri.options = { - strictMode: false, - key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], - q: { - name: "queryKey", - parser: /(?:^|&)([^&=]*)=?([^&]*)/g - }, - parser: { - strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, - loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ - } - }; - - $("#search-form").submit(function(e) { - e.preventDefault() - }) - - // list below is the lunr 2.1.3 list minus the intersect with names(Base) - // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) - // ideally we'd just filter the original list but it's not available as a variable - lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'does', - 'either', - 'ever', - 'every', - 'from', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'into', - 'it', - 'its', - 'just', - 'least', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'who', - 'whom', - 'why', - 'will', - 'would', - 'yet', - 'you', - 'your' - ]) - - // add . as a separator, because otherwise "title": "Documenter.Anchors.add!" - // would not find anything if searching for "add!", only for the entire qualification - lunr.tokenizer.separator = /[\s\-\.]+/ - - // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names - lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '') - }) - } - - lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter') - lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer') - - var index = lunr(function () { - this.ref('location') - this.field('title',{boost: 100}) - this.field('text') - documenterSearchIndex['docs'].forEach(function(e) { - this.add(e) - }, this) - }) - var store = {} - - documenterSearchIndex['docs'].forEach(function(e) { - store[e.location] = {title: e.title, category: e.category} - }) - - $(function(){ - searchresults = $('#documenter-search-results'); - searchinfo = $('#documenter-search-info'); - searchbox = $('#documenter-search-query'); - function update_search(querystring) { - tokens = lunr.tokenizer(querystring) - results = index.query(function (q) { - tokens.forEach(function (t) { - q.term(t.toString(), { - fields: ["title"], - boost: 100, - usePipeline: true, - editDistance: 0, - wildcard: lunr.Query.wildcard.NONE - }) - q.term(t.toString(), { - fields: ["title"], - boost: 10, - usePipeline: true, - editDistance: 2, - wildcard: lunr.Query.wildcard.NONE - }) - q.term(t.toString(), { - fields: ["text"], - boost: 1, - usePipeline: true, - editDistance: 0, - wildcard: lunr.Query.wildcard.NONE - }) - }) - }) - searchinfo.text("Number of results: " + results.length) - searchresults.empty() - results.forEach(function(result) { - data = store[result.ref] - link = $(''+data.title+'') - link.attr('href', documenterBaseURL+'/'+result.ref) - cat = $('('+data.category+')') - li = $('

        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