diff --git a/README.md b/README.md index e2768e0e2a..004aab9a7f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ See readme here, directory structure set up in this manner for ease of CodeOcean integration: +Main readme: +https://github.com/verivital/nnv/blob/master/code/README.md + +Main directory is: https://github.com/verivital/nnv/tree/master/code diff --git a/code/nnv/engine/nn/fnn/FFNNS.m b/code/nnv/engine/nn/fnn/FFNNS.m index db24994c71..3f8dbd38f4 100644 --- a/code/nnv/engine/nn/fnn/FFNNS.m +++ b/code/nnv/engine/nn/fnn/FFNNS.m @@ -7,6 +7,7 @@ % Date: 27/2/2019 properties + Name = 'net'; Layers = []; % An array of Layers, eg, Layers = [L1 L2 ...Ln] nL = 0; % number of Layers nN = 0; % number of Neurons @@ -17,12 +18,14 @@ reachMethod = 'exact-star'; % reachable set computation scheme, default - 'star' reachOption = []; % parallel option, default - non-parallel computing - numCores = 0; % number of cores (workers) using in computation + numCores = 1; % number of cores (workers) using in computation inputSet = []; % input set reachSet = []; % reachable set for each layers outputSet = []; % output reach set reachTime = []; % computation time for each layers - totalReachTime = 0; % total computation time + totalReachTime = 0; % total computation time + numSamples = 2000; % default number of samples using to falsify a property + unsafeRegion = []; % unsafe region of the network end @@ -30,7 +33,19 @@ methods % constructor, evaluation, sampling, print methods % constructor - function obj = FFNNS(Layers) + function obj = FFNNS(varargin) + + switch nargin + case 1 + Layers = varargin{1}; + name = 'net'; + case 2 + Layers = varargin{1}; + name = varargin{2}; + otherwise + error('Invalid number of inputs'); + end + nL = size(Layers, 2); % number of Layer for i=1:nL L = Layers(i); @@ -50,6 +65,7 @@ obj.nL = nL; % number of layers obj.nI = size(Layers(1).W, 2); % number of inputs obj.nO = size(Layers(nL).W, 1); % number of outputs + obj.Name = name; nN = 0; for i=1:nL @@ -87,6 +103,25 @@ Y = In; end + % check if all activation functions are piece-wise linear + function b = isPieceWiseNetwork(obj) + % author: Dung Tran + % date: 9/30/2019 + + n = obj.nL; + + b = 1; + for i=1:obj.nL + f = obj.Layers(i).f; + if ~strcmp(f, 'poslin') && ~strcmp(f, 'purelin') && ~strcmp(f, 'satlin') && ~strcmp(f, 'satlins') + b = 0; + return; + end + + end + + end + % print information to a file function print(obj, file_name) @@ -204,9 +239,6 @@ function start_pool(obj) obj.reachSet = cell(1, obj.nL); obj.reachTime = []; - - - % compute reachable set In = obj.inputSet; @@ -234,7 +266,7 @@ function start_pool(obj) In = obj.Layers(i).reach(In, obj.reachMethod, obj.reachOption); t1 = toc(st); - obj.reachSet{1, i} = In; + %obj.reachSet{1, i} = In; obj.reachTime = [obj.reachTime t1]; fprintf('\nExact computation time: %.5f seconds', t1); @@ -254,6 +286,521 @@ function start_pool(obj) end + methods + + function [safe, vt, counterExamples] = verify(varargin) + % 1: @I: input set, need to be a star set + % 2: @U: unsafe region, a set of HalfSpaces + % 3: @method: = 'star' -> compute reach set using stars + % 'abs-dom' -> compute reach set using abstract + % domain (support in the future) + % 'face-latice' -> compute reach set using + % face-latice (support in the future) + % 4: @numOfCores: number of cores you want to run the reachable + % set computation, @numOfCores >= 1, maximum is the number of + % cores in your computer. + + % 5: @n_samples : number of simulations used for falsification if + % using over-approximate reachability analysis, i.e., + % 'approx-zono' or 'abs-dom' or 'abs-star' + % note: n_samples = 0 -> do not do falsification + + switch nargin + case 3 + obj = varargin{1}; + obj.inputSet = varargin{2}; + obj.unsafeRegion = varargin{3}; + + case 4 + obj = varargin{1}; + obj.inputSet = varargin{2}; + obj.unsafeRegion = varargin{3}; + obj.reachMethod = varargin{4}; + + case 5 + obj = varargin{1}; + obj.inputSet = varargin{2}; + obj.unsafeRegion = varargin{3}; + obj.reachMethod = varargin{4}; + obj.numCores = varargin{5}; + case 6 + obj = varargin{1}; + obj.inputSet = varargin{2}; + obj.unsafeRegion = varargin{3}; + obj.reachMethod = varargin{4}; + obj.numCores = varargin{5}; + obj.numSamples = varargin{6}; + + otherwise + error('Invalid number of inputs, should be 2, 3, 4 or 5'); + end + + t = tic; + fprintf('\nPerform fasification with %d random simulations', obj.numSamples); + counterExamples = obj.falsify(obj.inputSet, obj.unsafeRegion, obj.numSamples); + + if ~isempty(counterExamples) + safe = 0; + else + fprintf('\nNo counter examples found, verify the safety using reachability analysis'); + % perform reachability analysis + [R,~] = obj.reach(obj.inputSet, obj.reachMethod, obj.numCores); + + if strcmp(obj.reachMethod, 'exact-star') + + n = length(R); + counterExamples = []; + + for i=1:n + if ~isempty(R(i).intersectHalfSpace(obj.unsafeRegion.G, obj.unsafeRegion.g)) + counterExamples = [counterExamples Star(obj.inputSet.V, R(i).C, R(i).d, R(i).predicate_lb, R(i).predicate_ub)]; + end + end + + if isempty(counterExamples) + safe = 1; + else + safe = 0; + end + + + else + if strcmp(obj.reachMethod, 'zono') + R = R.toStar; + end + + if isempty(R.intersectHalfSpace(obj.unsafeRegion.G, obj.unsafeRegion.g)) + safe = 1; + else + safe = 2; + end + + end + + end + + vt = toc(t); + + end + end + + methods % Input to Output Sensitivity + + function [maxSensInputId, maxSensVal] = getMaxSensitiveInput(obj, I, output_mat) + % @I: input, is a star set, or box, or zono + % @output_mat: output matrix, y = C*x, x is the output vector + % of the networks + % @maxSensInputId: the id of the input that is most sensitive + % with the output changes + % @maxSensVal: percentage of sensitivity of all inputs + + % author: Dung Tran + % date: 10/19/2019 + + + if ~isa(I, 'Box') + I1 = I.getBox; + else + I1 = I; + end + + if I1.dim ~= obj.nI + error('Inconsistency between the input set and the number of inputs in the networks'); + end + + if obj.nO ~= size(output_mat, 2) + error('Inconsistency between the output matrix and the number of outputs of the networks'); + end + + maxSensVal = zeros(1, obj.nI); + [R, ~] = obj.reach(I1.toZono, 'approx-zono'); + R = R.affineMap(output_mat, []); + B = R.getBox; + max_rad = max(B.ub); + + for i=1:obj.nI + I2 = I1.singlePartition(i, 2); % partition into two boxes at index i + [R2, ~] = obj.reach(I2(1).toZono, 'approx-zono'); + R2 = R2.affineMap(output_mat, []); + B2 = R2.getBox; + max_rad2 = max(B2.ub); + maxSensVal(i) = (max_rad - max_rad2)/max_rad; + end + + [~,maxSensInputId] = max(maxSensVal); + + end + + + function Is = partitionInput_MSG(obj, I, U) + % @I: input, is a star set, or box, or zono + % @U: unsafe region, a HalfSpace object + % @Is: two partitioned inputs, the last one is close to the + % unsafe region + + % author: Dung Tran + % date: 10/19/2019 + + + if ~isa(I, 'Box') + I1 = I.getBox; + else + I1 = I; + end + + if I1.dim ~= obj.nI + error('Inconsistency between the input set and the number of inputs in the networks'); + end + + if ~isa(U, 'HalfSpace') + error('Unsafe region is not a HalfSpace object'); + end + + if obj.nO ~= size(U.G, 2) + error('Inconsistency between the output matrix and the number of outputs of the networks'); + end + + maxSensVal = zeros(1, obj.nI); + [R, ~] = obj.reach(I1.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + B = R.getBox; + max_rad = max(B.ub); + + for i=1:obj.nI + I2 = I1.singlePartition(i, 2); % partition into two boxes at index i + [R2, ~] = obj.reach(I2(1).toZono, 'approx-zono'); + R2 = R2.affineMap(U.G, -U.g); + B2 = R2.getBox; + max_rad2 = max(B2.ub); + maxSensVal(i) = (max_rad - max_rad2)/max_rad; + end + + [~,maxSensInputId] = max(maxSensVal); + + I1 = I.partition(maxSensInputId, 2); + R1 = obj.reach(I1(1).toZono, 'approx-zono'); + R1 = R1.affineMap(U.G, -U.g); + B1 = R1.getBox; + max_y1 = max(B1.ub); + R2 = obj.reach(I1(2).toZono, 'approx-zono'); + R2 = R2.affineMap(U.G, -U.g); + B2 = R2.getBox; + max_y2 = max(B2.ub); + + if max_y1 <= max_y2 + Is = [I1(2) I1(1)]; + else + Is = [I1(1) I1(2)]; + end + + + + + end + + + % depth first search for max sensitive inputs in partitioning + function [maxSensInputs, maxSensVals] = searchMaxSensInputs(obj, I, output_mat, k, maxSen_lb) + % @I: input, is a star set, or box, or zono + % @output_mat: output matrix, y = C*x, x is the output vector + % of the networks + % @k: depth of search tree + % @maxSen_lb: the search is stop if the max sensitive value + % is smaller than the maxSen_lb + + % @maxSensInputs: a sequence of input indexes that are most sensitive + % with the output changes + % @maxSensVals: percentage of sensitivity corresponding to + % above sequence of inputs + + + + % author: Dung Tran + % date: 10/19/2019 + + if k < 1 + error('Invalid depth of search tree'); + end + + if ~isa(I, 'Box') + error('Input is not a box'); + end + + maxSensInputs = []; + maxSensVals = []; + for i=1:k + + if i==1 + + [max_id, sens_vals] = obj.getMaxSensitiveInput(I, output_mat); + maxSensInputs = [maxSensInputs max_id]; + maxSensVals = [maxSensVals max(sens_vals)]; + I1 = I; + else + I2 = I1.singlePartition(maxSensInputs(i-1), 2); + I2 = I2(1); + [max_id, sens_vals] = obj.getMaxSensitiveInput(I2, output_mat); + maxSensInputs = [maxSensInputs max_id]; + maxSensVals = [maxSensVals max(sens_vals)]; + I1 = I2; + end + + if ~isempty(maxSen_lb) && (maxSensVals(i) < maxSen_lb) + maxSensInputs(i) = []; + maxSensVals(i) = []; + break; + end + + end + + end + + + % verify safety property using max sensitivity guided (MSG) method + function [safe, VT, counterExamples] = verify_MSG(obj, I, reachMethod, k, sens_lb, U) + % @I: input set, a box + % @reachMethod: reachability method + % @k: depth of search tree for max sensitive inputs + % @sens_lb: lowerbound of sensitive value + % @U: unsafe region, a halfspace object + % @safe: = 1: safe + % = 2: unknown + % = 0: unsafe + + % author: Dung Tran + % date: 10/20/2019 + + t = tic; + [maxSensInputs, ~] = obj.searchMaxSensInputs(I, U.G, k, sens_lb); + n = length(maxSensInputs); + Is = I.partition(maxSensInputs, 2*ones(1, n)); + I1 = []; % set of partitioned inputs + N = 2^n; % number of partitioned inputs + for i=1:N + if strcmp(reachMethod, 'approx-zono') + I1 = [I1 Is(i).toZono]; + elseif strcmp(reachMethod, 'approx-star') || strcmp(reachMethod, 'abs-dom') + I1 = [I1 Is(i).toStar]; + else + error('reachmethod should be approx-zono or approx-star or abs-dom'); + end + end + + safe_vec = zeros(1, N); + [R, ~] = obj.reach(I1, reachMethod); % perform reachability anlaysis + for i=1:N + S = R(i).intersectHalfSpace(U.G, U.g); + if isempty(S) + safe_vec(i) = 1; + else + counterExamples = obj.falsify(I1(i), U, 1); + if length(counterExamples) >= 1 + safe_vec(i) = 0; + break; + else + safe_vec(i) = 2; + end + end + end + + if sum(safe_vec) == N + safe = 'SAFE'; + counterExamples = []; + fprintf('\nTHE NETWORK IS SAFE'); + else + + if ~isempty(counterExamples) + safe = 'UNSAFE'; + fprintf('\nTHE NETWORK IS UNSAFE'); + else + safe = 'UNKNOWN'; + fprintf('\nTHE SAFETY OF THE NETWORK IS UNKNOWN'); + end + + end + + VT = toc(t); + + end + + + % get counter input candidate after a single partition using MSG + function counterInputCand = getStepCounterInputCand_MSG(obj, I, U) + % @I: input, is a star set, or box, or zono + % @output_mat: output matrix, y = C*x, x is the output vector + % of the networks + % @k: + % @maxSensInputId: the id of the input that is most sensitive + % with the output changes + % @counterInputCand: counter input candidate + + % author: Dung Tran + % date: 10/20/2019 + + + if ~isa(I, 'Box') + I1 = I.getBox; + else + I1 = I; + end + + if I1.dim ~= obj.nI + error('Inconsistency between the input set and the number of inputs in the networks'); + end + + if obj.nO ~= size(U.G, 2) + error('Inconsistency between the unsafe region and the number of outputs of the networks'); + end + + maxSensVal = zeros(1, obj.nI); + + [R, ~] = obj.reach(I1.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + B = R.getBox; + max_rad = max(B.ub - B.lb); + + for i=1:obj.nI + I2 = I1.singlePartition(i, 2); % partition into two boxes at index i + [R1, ~] = obj.reach(I2(1).toZono, 'approx-zono'); + R1 = R1.affineMap(U.G, -U.g); + B1 = R1.getBox; + max_rad1 = max(B1.ub - B1.lb); + maxSensVal(i) = (max_rad - max_rad1)/max_rad; + end + + [~,maxSensInputId] = max(maxSensVal); + + I2 = I1.singlePartition(maxSensInputId, 2); + [R1, ~] = obj.reach(I2(1).toZono, 'approx-zono'); + R1 = R1.affineMap(U.G, -U.g); + B1 = R1.getBox; + max_y1 = max(B1.ub); + + [R2, ~] = obj.reach(I2(2).toZono, 'approx-zono'); + R2 = R2.affineMap(U.G, -U.g); + B2 = R2.getBox; + max_y2 = max(B2.ub); + + if max_y1 <= max_y2 + counterInputCand = I2(1); + else + counterInputCand = I2(2); + end + + + end + + + % Depth First Search for Counter Input Candidate + function counterInputCand = searchCounterInputCand_MSG(obj, I, U, k) + % @I: input, is a star set, or box, or zono + % @U: unsafe region of the networks + % @k: depth of search tree + % @maxSensInputId: the id of the input that is most sensitive + % with the output changes + % @counterInputCand: counter input candidate + + % author: Dung Tran + % date: 10/20/2019 + + if k < 1 + error('depth of search tree should be >= 1'); + end + + counterInputCand = I; + for i=1:k + counterInputCand = obj.getStepCounterInputCand_MSG(counterInputCand, U); + end + + end + + + % Depth First Seach for Falsification using Maximum Sensitive + % Guided Method + + function counterInputs = falsify_MSG(obj, I, U) + % @I: input set, is a box + % @U: unsafe region, a halfspace object + % @counterExamples: counter example inputs + + % author: Dung Tran + % date: 10/20/2019 + + + + end + + + function [safe, VT, counterInputs] = verify_MSG2(obj, I, U) + % @I: input set, is a box + % @U: unsafe region, a halfspace object + % @counterExamples: counter example inputs + + % author: Dung Tran + % date: 10/20/2019 + + t = tic; + if ~isa(I, 'Box') + error('Input is not a Box'); + end + + if I.dim ~= obj.nI + error('Inconsistency between input set and the number of network inputs'); + end + + if ~isa(U, 'HalfSpace') + error('Unsafe region is not a HalfSpace Class'); + end + + if size(U.G, 2) ~= obj.nO + error('Inconsistent between the Unsafe region and the number of outputs of the network'); + end + + I0 = I; % a queue to store number of partitioned input sets + safe = 'SAFE'; + counterInputs = []; + while ~isempty(I0) + n = length(I0); + I1 = I0(n); % pop the last input set in the queue + I0(n) = []; + [R, ~] = obj.reach(I1.toZono, 'approx-zono'); + S = R.intersectHalfSpace(U.G, U.g); + if ~isempty(S) + y1 = obj.evaluate(I1.lb); + y2 = obj.evaluate(I1.ub); + y3 = obj.evaluate(0.5*(I1.lb + I1.ub)); + ys = []; + if U.contains(y1) + ys = [ys y1]; + end + if U.contains(y2) + ys = [ys y2]; + end + if U.contains(y3) + ys = [ys y3]; + end + if ~isempty(ys) + safe = 'UNSAFE'; + counterInputs = ys; + break; + else + I0 = [I0 obj.partitionInput_MSG(I1, U)]; % put new partitioned input into the queue + end + end + + + + end + + VT = toc(t); + + + end + + end + + + methods % checking safety method or falsify safety property @@ -451,10 +998,14 @@ function start_pool(obj) counter_inputs = []; - if ~isa(I, 'Star') - error('Input set is not a star set'); + if isa(I, 'Zono') || isa(I, 'Box') + I1 = I.toStar; + elseif isa(I, 'Star') + I1 = I; + else + error('Unknown set representation'); end - + m = length(U); for i=1:m @@ -468,7 +1019,7 @@ function start_pool(obj) error('Invalid number of samples'); end - V = I.sample(n_samples); + V = I1.sample(n_samples); n = size(V, 2); % number of samples diff --git a/code/nnv/engine/nn/fnn/PosLin.m b/code/nnv/engine/nn/fnn/PosLin.m index 0e67f43139..78f0e96f02 100644 --- a/code/nnv/engine/nn/fnn/PosLin.m +++ b/code/nnv/engine/nn/fnn/PosLin.m @@ -86,46 +86,9 @@ % author: Dung Tran % date: 27/2/2019 - if ~isa(I, 'Star') - error('Input is not a star set'); - end - - %fprintf('\nSplit at neuron %d', index); - % S1 = I && x[index] < 0 - c = I.V(index, 1); - V = I.V(index, 2:I.nVar + 1); - new_C = vertcat(I.C, V); - new_d = vertcat(I.d, -c); - new_V = I.V; - new_V(index, :) = 0; - S1 = Star(new_V, new_C, new_d, I.predicate_lb, I.predicate_ub); - %S1 = Star(new_V, new_C, new_d, I.predicate_lb, I.predicate_ub); - - - % S2 = I && x[index] >= 0 - new_C = vertcat(I.C, -V); - new_d = vertcat(I.d, c); - S2 = Star(I.V, new_C, new_d, I.predicate_lb, I.predicate_ub); - - a = S1.isEmptySet; - b = S2.isEmptySet; - - if a && ~b - S = S2; - end - if a && b - S = []; - end - if ~a && b - S = S1; - end - if ~a && ~b - S = [S1 S2]; - end - + [xmin, xmax] = I.getRange(index); + S = PosLin.stepReach(I, index, xmin, xmax); - - end % stepReach with multiple inputs diff --git a/code/nnv/engine/nncs/DLinearNNCS.m b/code/nnv/engine/nncs/DLinearNNCS.m new file mode 100644 index 0000000000..76cd91d5c8 --- /dev/null +++ b/code/nnv/engine/nncs/DLinearNNCS.m @@ -0,0 +1,1542 @@ +classdef DLinearNNCS < handle + %Class for Linear Neural Network Control Systems + % Dung Tran + % Date: 9/30/2019 + + % TODO: need support feedback y(k), y(k-d) + + properties + controller = []; % a feedfoward neural network + plant = []; % linear plant model, DLinearODE or LinearODE + feedbackMap = []; % a feedback matrix decribes the mapping from a group of + % outputs of the plant to a group of inputs of the controller + + % nerual network control system architecture + % + % --->| plant ---> y(t) ---sampling--->y(k) + % | | + % | | + % u(k) <---- controller |<---- v(k)-------|--- (reference inputs to the controller) + % |<----- y(k)------|(output feedback) + + + % the input to neural net controller is grouped into 2 group + % the first group contains all the reference inputs + + % the first layer weight matrix of the controller is decomposed into two + % submatrices: W = [W1 W2] where + % W1 is conresponding to I1 = v[k] (the reference input) + % W2 is conresponding to I2 = y[k] (the feedback inputs) + + % the reach set of the first layer of the controller is: + % R = f(W1 * I1 + W2 * I2 + b), b is the bias vector of + % the first layer, f is the activation function + + nO = 0; % number of output + nI = 0; % number of inputs = size(I1, 1) + size(I2, 1) to the controller + nI_ref = 0; % number of reference inputs to the controller + nI_fb = 0; % number of feedback inputs to the controller + + % for reachability analysis + method = 'exact-star'; % by default + plantReachSet = {}; + controllerReachSet = {}; + numCores = 1; % default setting, using single core for computation + ref_I = []; % reference input set + init_set = []; % initial set for the plant + reachTime = 0; + + % for simulation + simTraces = {}; % simulation trace + controlTraces = {}; % control trace + + % use for falsification + falsifyTraces = {}; + falsifyTime = 0; + + end + + methods % CONTRUCTOR AND REACH METHOD + + %constructor + function obj = DLinearNNCS(controller, plant) + % @controller: a neural net controller + % @plant: a plant model (a LinearODE, DLinearODE or Neural net) + + % author: Dung Tran + % date: 9/30/2019 + + + if ~isa(controller, 'FFNNS') + error('The controller is not a feedforward neural network'); + end + + if ~controller.isPieceWiseNetwork + error('The controller is not a piecewise network, i.e., there exists a layer whose activation function is not piecewise linear'); + end + + if ~isa(plant, 'DLinearODE') + error('The plant is not a discrete linear system'); + end + + if plant.nO > controller.nI + error('Inconsistency between number of feedback outputs and number of controller inputs'); + end + + if plant.nI ~= controller.nO + error('Inconsistency between the number of plant inputs and the number of controller outputs'); + end + + obj.controller = controller; + obj.plant = plant; + obj.nO = plant.nO; % number of outputs of the system == number of the plant's outputs + obj.nI = controller.nI; % number of input to the controller + obj.nI_fb = plant.nO; % number of feedback inputs to the controller + obj.nI_ref = controller.nI - obj.nI_fb; % number of reference inputs to the controller + + end + + + % start parallel pool for computing + function start_pool(obj) + + if obj.numCores > 1 + poolobj = gcp('nocreate'); % If no pool, do not create new one. + if isempty(poolobj) + parpool('local', obj.numCores); + else + if poolobj.NumWorkers ~= obj.numCores + delete(poolobj); % delete the old poolobj + parpool('local', obj.numCores); % start the new one with new number of cores + end + end + end + + end + + + % reach + function [R, reachTime] = reach(varargin) + % @init_set: initial set of state, a star set + % @ref_input: reference input, may be a vector or a star set + % @numOfSteps: number of steps + % @method: 'exact-star' or 'approx-star' + % @numCores: number of cores used in computation + % NOTE***: parallel computing may not help due to + % comuninication overhead in the computation + + + % author: Dung Tran + % date: 10/1/2019 + + + switch nargin + + case 4 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = 'approx-star'; + numCores1 = 1; + + case 5 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = 1; + + case 6 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + + case 7 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + + otherwise + error('Invalid number of inputs, should be 3, 4, 5, or 6'); + end + + if ~isa(init_set1, 'Star') + error('Initial set is not a star set'); + end + + if numCores1 < 1 + error('Invalid number of cores used in computation'); + end + + if ~strcmp(method1, 'exact-star') && ~strcmp(method1, 'approx-star') + error('Unknown reachability method, NNV currently supports exact-star and approx-star methods'); + end + + if numOfSteps < 1 + error('Invalid number of steps'); + end + + + if ~isempty(ref_input1) && ~isa(ref_input1, 'Star') && size(ref_input1, 2) ~= 1 && size(ref_input1, 1) ~= obj.nI_ref + error('Invalid reference input vector'); + end + + + obj.ref_I = ref_input1; + obj.numCores = numCores1; + obj.method = method1; + obj.init_set = init_set1; + + obj.plantReachSet = cell(numOfSteps, 1); + obj.controllerReachSet = cell(numOfSteps, 1); + + if obj.numCores > 1 + obj.start_pool; + end + + t = tic; + + for k=1:numOfSteps + + X = obj.plantStepReach(k); + + if strcmp(obj.method, 'exact-star') + + obj.plantReachSet{k} = X; + + elseif strcmp(obj.method, 'approx-star') + + B = Star.get_hypercube_hull(X); + obj.plantReachSet{k} = B.toStar; % combine all stars into a single over-approximate star + + end + + obj.controllerReachSet{k} = obj.controllerStepReach(k); + + end + + reachTime = toc(t); + + obj.reachTime = reachTime; + + R = obj.plantReachSet; + + + end + + + + % live reachability analysis, plot reachable set on the fly + function [R, reachTime] = reachLive(varargin) + % @init_set: initial set of state, a star set + % @ref_input: reference input, may be a vector or a star set + % @numOfSteps: number of steps + % @method: 'exact-star' or 'approx-star' + % @numCores: number of cores used in computation + % NOTE***: parallel computing may not help due to + % comuninication overhead in the computation + % @map_mat: output mapping matrix + % @map_vec: output mapping bias vector + % *** We plot y = map_mat * x + map_vec on-the-fly + % @color: color for plotting + + % author: Dung Tran + % date: 10/1/2019 + + + switch nargin + + case 4 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = 'approx-star'; + numCores1 = 1; + map_mat = zeros(1, obj.plant.dim); + map_mat(1) = 1; % default setting, plot the reachable set of the first state versus time steps + map_vec = []; % default setting + color = 'blue'; + + case 5 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = 1; + map_mat = zeros(1, obj.plant.dim); + map_mat(1) = 1; % default setting, plot the reachable set of the first state versus time steps + map_vec = []; % default setting + color = 'blue'; + + case 6 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = zeros(1, obj.plant.dim); + map_mat(1) = 1; % default setting, plot the reachable set of the first state versus time steps + map_vec = []; % default setting + color = 'blue'; + + case 7 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = []; % default setting + color = 'blue'; + + case 8 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = 'blue'; + + case 9 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = varargin{9}; + + case 11 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = varargin{9}; + boundary_mat = varargin{10}; + boundary_vec = varargin{11}; + + % Indication of unsafe behavior + % The output: y = map_mat * x + map_vec + % The boundary of the output: y_b = boundary_mat * x + boundary_vec + % Used to indicate whether a output y reach its unsafe + % boundary, i.e. y == y_b? + + if (size(boundary_mat, 1) ~= size(map_mat, 1)) || (size(boundary_mat, 2) ~= size(map_mat, 2)) + error('The size of boundary matrix is not equal to the size of the map_mat, we require this for plotting unsafe boundary'); + end + + if (size(boundary_vec, 1) ~= size(boundary_mat, 1)) || (size(boundary_vec, 2) ~= 1) + error('Invalid boundary vector, it should have one column and have the same number of rows as the boundary matrix'); + end + + + otherwise + error('Invalid number of inputs, should be 3, 4, 5, 6, 7, 8, or 9'); + end + + if ~isa(init_set1, 'Star') + error('Initial set is not a star set'); + end + + if numCores1 < 1 + error('Invalid number of cores used in computation'); + end + + if ~strcmp(method1, 'exact-star') && ~strcmp(method1, 'approx-star') + error('Unknown reachability method, NNV currently supports exact-star and approx-star methods'); + end + + if numOfSteps < 1 + error('Invalid number of steps'); + end + + + if ~isempty(ref_input1) && ~isa(ref_input1, 'Star') && size(ref_input1, 2) ~= 1 && size(ref_input1, 1) ~= obj.nI_ref + error('Invalid reference input vector'); + end + + + obj.ref_I = ref_input1; + obj.numCores = numCores1; + obj.method = method1; + obj.init_set = init_set1; + + obj.plantReachSet = cell(numOfSteps, 1); + obj.controllerReachSet = cell(numOfSteps, 1); + + if obj.numCores > 1 + obj.start_pool; + end + + t = tic; + + for k=1:numOfSteps + + X = obj.plantStepReach(k); + + if strcmp(obj.method, 'exact-star') + + obj.plantReachSet{k} = X; + + elseif strcmp(obj.method, 'approx-star') + + B = Star.get_hypercube_hull(X); + obj.plantReachSet{k} = B.toStar; % combine all stars into a single over-approximate star + + end + + obj.controllerReachSet{k} = obj.controllerStepReach(k); + + % live plotting reachable set + + if size(map_mat, 1) == 1 + + times = 0:1:k+1; + + if nargin == 11 + obj.plotStepOutputReachSets('red', boundary_mat, boundary_vec, k); + hold on; + end + + obj.plotStepOutputReachSets(color, map_mat, map_vec, k); + pause(1.0); + ax = gca; + ax.XTick = times; + hold on; + + elseif (size(map_mat, 1) == 2) || (size(map_mat, 1) == 3) + if nargin == 11 + obj.plotStepOutputReachSets('red', boundary_mat, boundary_vec, k); + hold on; + end + obj.plotStepOutputReachSets(color, map_mat, map_vec, k); + pause(1.0); + hold on; + elseif size(indexes, 1) > 3 + error('NNV plots only three-dimensional output reachable set, please limit number of rows in map_mat <= 3'); + end + + + end + + reachTime = toc(t); + + obj.reachTime = reachTime; + + R = obj.plantReachSet; + + + end + + + + + % plant step reach for step k + function X = plantStepReach(obj, k) + % @k: step + % @X: plant reach set + + % author: Dung Tran + % date: 9/30/2019 + + + + if k==1 + X = obj.init_set.affineMap(obj.plant.A, []); + end + + if k>1 + + X0 = obj.plantReachSet{k-1}; + U0 = obj.controllerReachSet{k-1}; + + nX = length(X0); + + X = []; + + % compute exact reachable set of a plant using star set + % X[k + 1] = A * X[k] + B * u[k] + + for i=1:nX + + V_X0 = obj.plant.A * X0(i).V; + + U0_i = U0{i}; % control set corresponding to the initial set of state X0(i) + + mU = length(U0_i); % number of control sets corresponding to the initial set of state X0(i) + + for j=1:mU + + V_U0 = obj.plant.B * U0_i(j).V; + + X_ij = Star(V_X0 + V_U0, U0_i(j).C, U0_i(j).d, U0_i(j).predicate_lb, U0_i(j).predicate_ub); + + X = [X X_ij]; + + end + + end + + end + end + + + + + % controller step Reach for step k + function U = controllerStepReach(obj, k) + % @k: step + % @U: controller reach set + + % author: Dung Tran + % date: 10/1/2019 + + + I = obj.getControllerInputSet(k); + n = length(I); + + for i=1:n + U{i} = obj.controller.reach(I(i), 'exact-star', obj.numCores); + end + + + end + + % get input set for the controller at step k + function I = getControllerInputSet(obj, k) + % @k: step + % @I: input set to the controller at step k + + % author: Dung Tran + % date: 10/1/2019 + + + X = obj.plantReachSet{k}; + n = length(X); + Y = []; + for i=1:n + Y = [Y X(i).affineMap(obj.plant.C, [])]; + end + + if obj.nI_ref == 0 + I = Y; + else + + I = []; + + for i=1:n + + if isempty(obj.ref_I) % empty reference input is equal to zero vector + + I1 = Y(i).concatenate_with_vector(zeros(obj.nI_ref, 1)); + + else + + if ~isa(obj.ref_I, 'Star') % referece input is just a vector + I1 = Y(i).concatenate_with_vector(obj.ref_I); + else + + if strcmp(obj.method, 'exact-star') + + if k == 1 + I1 = obj.ref_I.concatenate(Y(i)); % only do concatenate at the first step + else + % preseve relationship from second step + V1 = obj.ref_I.V; + Z = zeros(obj.nI_ref, Y(i).nVar - obj.ref_I.nVar); + V2 = Y(i).V; + new_V = [V1 Z; V2]; + I1 = Star(new_V, Y(i).C, Y(i).d, Y(i).predicate_lb, Y(i).predicate_ub); + + end + + elseif strcmp(obj.method, 'approx-star') + + I1 = obj.ref_I.concatenate(Y(i)); + + end + + + end + + end + + I = [I I1]; + + end + + end + + + end + + + + % get output reach set + + function Y = getOutputReachSet(obj, map_mat, map_vec) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @Y: a cell of output reach sets + + % author: Dung Tran + % date: 10/2/2019 + + + if isempty(obj.plantReachSet ) + error('Plant reach set is empty, please perform reachability analysis first'); + end + + dim = obj.plant.dim; % dimension of the plant + + if size(map_mat, 2) ~= dim + error('Inconsistency between map_mat and dimension of the plant, map_mat should have %d columns', dim); + end + + if size(map_mat, 1) > 3 + error('Plot only <= 3 dimensional outputs, the maximum allowable number of rows in map_mat is 3'); + end + + + if ~isempty(map_vec) && (size(map_vec, 2) ~= 1) + error('map vector should have one column'); + end + + if ~isempty(map_vec) && (size(map_vec, 1) ~= size(map_mat, 1)) + error('Inconsistent dimensions between map matrix and map vector'); + end + + % get output reach sets + + n = length(obj.plantReachSet); + Y = cell(n, 1); + for i=1:n + + Xi = obj.plantReachSet{i}; + m = length(Xi); + Y1 = []; + for j=1:m + Xij = Xi(j); + Y1 = [Y1 Xij.affineMap(map_mat, map_vec)]; + end + + Y{i} = Y1; + + end + + end + + % get step output reachable set + function Y = getStepOutputReachSet(obj, map_mat, map_vec, k) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @Y: a cell of output reach sets + % @k: step index + + % author: Dung Tran + % date: 10/2/2019 + + + if isempty(obj.plantReachSet ) + error('Plant reach set is empty, please perform reachability analysis first'); + end + + dim = obj.plant.dim; % dimension of the plant + + if size(map_mat, 2) ~= dim + error('Inconsistency between map_mat and dimension of the plant, map_mat should have %d columns', dim); + end + + if size(map_mat, 1) > 3 + error('Plot only <= 3 dimensional outputs, the maximum allowable number of rows in map_mat is 3'); + end + + + if ~isempty(map_vec) && (size(map_vec, 2) ~= 1) + error('map vector should have one column'); + end + + if ~isempty(map_vec) && (size(map_vec, 1) ~= size(map_mat, 1)) + error('Inconsistent dimensions between map matrix and map vector'); + end + + % get output reach sets + + + X = obj.plantReachSet{k}; + m = length(X); + Y = []; + for i=1:m + Y = [Y X(i).affineMap(map_mat, map_vec)]; + end + + + end + + + end + + + methods % PLOT REACHABLE SETS + + + function plotPlantReachSets(varargin) + % @color: color + % @x_id: id of x state + % @y_id: id of y state + % @z_id: id of z state + + % if plot in 2D, set one of three ids = [] + % if plot in 3D, three ids need to specified + % if plot in 1D, set two of three ids = [] + % plot 1D: plot the ranges vs time steps + + % author: Dung Tran + % date: 10/2/2019 + + + switch nargin + + case 3 + obj = varargin{1}; + color = varargin{2}; + dim = size(obj.plant.A,1); % dimension of the plant + x_id = varargin{3}; + + if isempty(x_id) || x_id < 1 || x_id > dim + error('Invalid x index'); + end + + option = 1; % plot range of the state with time steps + + case 4 + obj = varargin{1}; + color = varargin{2}; + dim = size(obj.plant.A,1); % dimension of the plant + x_id = varargin{3}; + y_id = varargin{4}; + + if isempty(x_id) || x_id < 1 || x_id > dim + error('Invalid x index'); + end + + if isempty(y_id) || y_id < 1 || y_id > dim + error('Invalid y index'); + end + + if y_id == x_id + error('x index and y index need to be different'); + end + + option = 2; % plot 2D reachable set of X = (x_id, y_id) + + case 5 + obj = varargin{1}; + color = varargin{2}; + dim = size(obj.plant.A,1); % dimension of the plant + x_id = varargin{3}; + y_id = varargin{4}; + z_id = varargin{5}; + + if isempty(x_id) || x_id < 1 || x_id > dim + error('Invalid x index'); + end + + if isempty(y_id) || y_id < 1 || y_id > dim + error('Invalid y index'); + end + + if isempty(z_id) || z_id < 1 || z_id > dim + error('Invalid z index'); + end + + if y_id == x_id + error('x index and y index need to be different'); + end + + if y_id == z_id + error('y index and z index need to be different'); + end + + if z_id == x_id + error('z index and x index need to be different'); + end + + option = 3; % plot 3D reachable sets of X = (x_id, y_id, z_id) + + otherwise + error('Invalid number of inputs, should be 2, 3, or 4'); + end + + + if isempty(obj.plantReachSet) + error('Plant Reach Set is empty, please perform reachability analysis first.'); + end + + n = length(obj.plantReachSet); % number of steps + + if option == 1 % plot ranges of specific state versus time steps + + X = obj.init_set; + for i=1:n + X1 = Star.get_hypercube_hull(obj.plantReachSet{i}); + X1 = X1.toStar; + X = [X X1]; + end + T = 0:1:n; + Star.plotRanges_2D(X, x_id, T, color); + ax = gca; + ax.XTick = T; + end + + if option == 2 % plot 2D reach set + + X = obj.init_set; + for i=1:n + X = [X obj.plantReachSet{i}]; + end + + map = zeros(2, dim); + map(1, x_id) = 1; + map(2, y_id) = 1; + + n = length(X); + Y = []; + for i=1:n + Y = [Y X(i).affineMap(map, [])]; + end + + Star.plots(Y, color); + + end + + if option == 3 % plot 3D reach set + + X = obj.init_set; + for i=1:n + X = [X obj.plantReachSet{i}]; + end + + map = zeros(3, dim); + map(1, x_id) = 1; + map(2, y_id) = 1; + map(3, z_id) = 1; + + n = length(X); + Y = []; + for i=1:n + Y = [Y X(i).affineMap(map, [])]; + end + + Star.plots(Y, color); + + end + + + + end + + + + % plot controller reach sets + function plotControllerReachSets(varargin) + % @color: color + % @x_id: id of first control input + % @y_id: id of second control input + % @z_id: id of third control input + + % if plot in 2D, set one of three ids = [] + % if plot in 3D, three ids need to specified + % if plot in 1D, set two of three ids = [] + % plot 1D: plot the ranges vs time steps + + % author: Dung Tran + % date: 10/2/2019 + + + switch nargin + + case 3 + obj = varargin{1}; + color = varargin{2}; + nU = size(obj.plant.B,2); % number of control inputs to the plant + x_id = varargin{3}; + + if isempty(x_id) || x_id < 1 || x_id > nU + error('Invalid x index'); + end + + option = 1; % plot range of the state with time steps + + case 4 + obj = varargin{1}; + color = varargin{2}; + nU = size(obj.plant.B,2); % number of control inputs to the plant + x_id = varargin{3}; + y_id = varargin{4}; + + if isempty(x_id) || x_id < 1 || x_id > nU + error('Invalid x index'); + end + + if isempty(y_id) || y_id < 1 || y_id > nU + error('Invalid y index'); + end + + if y_id == x_id + error('x index and y index need to be different'); + end + + option = 2; % plot 2D reachable set of X = (x_id, y_id) + + case 5 + obj = varargin{1}; + color = varargin{2}; + nU = size(obj.plant.B,2); % number of control inputs to the plant + x_id = varargin{3}; + y_id = varargin{4}; + z_id = varargin{5}; + + if isempty(x_id) || x_id < 1 || x_id > nU + error('Invalid x index'); + end + + if isempty(y_id) || y_id < 1 || y_id > nU + error('Invalid y index'); + end + + if isempty(z_id) || z_id < 1 || z_id > nU + error('Invalid z index'); + end + + if y_id == x_id + error('x index and y index need to be different'); + end + + if y_id == z_id + error('y index and z index need to be different'); + end + + if z_id == x_id + error('z index and x index need to be different'); + end + + option = 3; % plot 3D reachable sets of X = (x_id, y_id, z_id) + + otherwise + error('Invalid number of inputs, should be 2, 3, or 4'); + end + + + if isempty(obj.controllerReachSet) + error('Controller Reach Set is empty, please perform reachability analysis first.'); + end + + n = length(obj.controllerReachSet); % number of steps + + if option == 1 % plot ranges of specific state versus time steps + + U = []; + for i=1:n + + U1 = Star.get_hypercube_hull(obj.controllerReachSet{i}{1}); + U1 = U1.toStar; + U = [U U1]; + end + T = 1:n; + Star.plotRanges_2D(U, x_id, T, color); + ax = gca; + ax.XTick = T; + + end + + if option == 2 % plot 2D reach set + + U = []; + for i=1:n + U = [U obj.controllerReachSet{i}{1}]; + end + + map = zeros(2, dim); + map(1, x_id) = 1; + map(2, y_id) = 1; + + Y = []; + n = length(U); + for i=1:n + Y = [Y U(i).affineMap(map, [])]; + end + + Star.plots(Y, color); + + end + + if option == 3 % plot 3D reach set + + U = []; + for i=1:n + U = [U obj.controllerReachSet{i}{1}]; + end + + map = zeros(3, dim); + map(1, x_id) = 1; + map(2, y_id) = 1; + map(3, z_id) = 1; + + Y = []; + n = length(U); + for i=1:n + Y = [Y U(i).affineMap(map, [])]; + end + + Star.plots(Y, color); + + end + + + end + + + % plot output reach set + % output reach set is derived by mapping the state reach set by + % a maping matrix, M + function plotOutputReachSets(obj, color, map_mat, map_vec) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @color: color + + % author: Dung Tran + % date: 10/2/2019 + + + Y = obj.getOutputReachSet(map_mat, map_vec); + + n = length(Y); + + % plot output reach sets + + option = size(map_mat, 1); + + G = obj.init_set.affineMap(map_mat, map_vec); + + if option == 1 % plot 1D, output versus time steps + + for i=1:n + G1 = Star.get_hypercube_hull(Y{i}); + G1 = G1.toStar; + G = [G G1]; + end + T = 0:1:n; + Star.plotRanges_2D(G, 1, T, color); + ax = gca; + ax.XTick = T; + + end + + if option == 2 || option == 3 % plot 2D or 3D + + for i=1:n + G = [G Y{i}]; + end + + Star.plots(G, color); + + end + + if option > 3 + error('We can plot only 3-dimensional output set, please limit the number of row of the mapping matrix to <= 3'); + end + + + end + + + % plot step output reachable sets + function plotStepOutputReachSets(obj, color, map_mat, map_vec, k) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @color: color + % @k: step index + + % author: Dung Tran + % date: 10/2/2019 + + + Y = obj.getStepOutputReachSet(map_mat, map_vec, k); + + n = length(Y); + + % plot output reach sets + + option = size(map_mat, 1); + + + if option == 1 % plot 1D, output versus time steps + + B = Star.get_hypercube_hull(Y); + ymin = B.lb; + ymax = B.ub; + y = [ymin ymin ymax ymax ymin]; + x = [k-1 k k k-1 k-1]; + plot(x, y, color) + + end + + if option == 2 || option == 3 % plot 2D or 3D + + Star.plots(Y, color); + + end + + if option > 3 + error('We can plot only 3-dimensional output set, please limit the number of row of the mapping matrix to <= 3'); + end + + + + end + + + end + + + + methods % VERIFICATION METHOD + + + function [safe, counterExamples, verifyTime] = verify(obj,init_set, ref_input, numSteps, method, numCores, unsafe_mat, unsafe_vec) + % @init_set: initial set + % @ref_input: reference input + % @numSteps: number of steps + % @method: method for reachability analysis + % @numCores: number of cores used in reachability analysis + % @unsafe_mat: unsafe matrix + % @unsafe_vec: unsafe vector + % Usafe region is defined by: y: unsafe_mat * x <= unsafe_vec + + % @safe: = unsafe + % = safe + % = unknown (due to conservativeness) + % @counterExamples: an array of star set counterExamples or + % falsified input points + % @verifyTime: verification time + + % author: Dung Tran + % date: 10/2/2019 + + + t = tic; + + dim = obj.plant.dim; + + if (size(unsafe_mat, 2) ~= dim) + error('Inconsistent dimensions between the unsafe matrix and the plant'); + end + + if size(unsafe_vec, 2) ~= 1 + error('Unsafe vector should have one column'); + end + + if size(unsafe_vec, 1) ~= size(unsafe_mat, 1) + error('Inconsistent dimension between unsafe matrix and unsafe vector'); + end + + % perform reachability analysis + obj.reach(init_set, ref_input, numSteps, method, numCores); + X = obj.plantReachSet; + n = length(X); + % flatten reach sets + Y = obj.init_set; + for i=1:n + Y = [Y X{i}]; + end + + % check safety + m = length(Y); + G = []; + for i=1:m + G1 = Y(i).intersectHalfSpace(unsafe_mat, unsafe_vec); + if ~isempty(G1) + G = [G G1]; + end + end + + if isempty(G) + safe = 'SAFE'; + counterExamples = []; + else + + if strcmp(obj.method, 'exact-star') + safe = 'UNSAFE'; + % construct a set of counter examples + n = length(G); + counterExamples = []; + for i=1:n + C1 = Star(obj.init_set.V, G(i).C, G(i).d, G(i).predicate_lb, G(i).predicate_ub); + counterExamples = [counterExamples C1]; + end + + elseif strcmp(obj.method, 'approx-star') + % use 1000 simulations to falsify the property + [safe, counterExamples, ~] = obj.falsify(init_set, ref_input, numSteps, 1000, unsafe_mat, unsafe_vec); + end + + + end + + + if strcmp(safe, 'UNSAFE') + fprintf('\n\nThe neural network control system is unsafe, NNV produces %d star sets of counter-examples', n); + elseif strcmp(safe, 'SAFE') + fprintf('\n\nThe neural network control system is safe'); + elseif strcmp(safe, 'UNKNOWN') + fprintf('\n\n The safety of the neural network control system is unknown'); + fprintf('\nYou can try falsification method using simulation to find counter-examples'); + end + + verifyTime = toc(t); + + + end + + + + end + + + methods %SIMULATION + + + % simulate the system + function [simTrace, controlTrace, simTime] = simulate(obj, init_state, ref_input, numSteps) + % @init_state: a vector of initial states + % @ref_input: a vector of reference inputs + % @numSteps: number of simulation steps + % @simTrace: simulation trace + % @controlTrace: control trace + % @simTime: simulation time + + % author: Dung Tran + % date: 10/2/2019 + + t = tic; + + dim = obj.plant.dim; % dimension of the plant + + if size(init_state, 1) ~= dim + error('Inconsistent between init_state vector and plant dimension'); + end + + if size(init_state, 2) ~= 1 + error('Invalid init_state vector, should have one column'); + end + + if ~isempty(ref_input) && (size(ref_input, 2) ~= 1) + error('Invalid ref_input vector, should have one column'); + end + + if numSteps < 1 + error('Invalid number of steps, should be >= 1'); + end + + if ~isempty(ref_input) && (size(ref_input, 1) ~= obj.nI_ref) + error('Invalid ref_input vector, should have %d elements', obj.nI_ref); + end + + + simTrace = zeros(dim, numSteps + 1); + simTrace(:,1) = init_state; + controlTrace = zeros(obj.plant.nI, numSteps + 1); + controlTrace(:,1) = zeros(obj.plant.nI, 1); + + for i=2:numSteps + 1 + x = simTrace(:, i-1); + y = obj.plant.C * x; + y1 = [ref_input; y]; + u = obj.controller.evaluate(y1); + simTrace(:, i) = obj.plant.A * x + obj.plant.B * u; + controlTrace(:,i) = u; + end + + obj.simTraces = [obj.simTraces; simTrace]; + obj.controlTraces = [obj.controlTraces; controlTrace]; + simTime = toc(t); + + end + + + % generate a number of simulation traces, used for falsification + function [sim_Traces, control_Traces, genTime] = generateTraces(obj, init_set, ref_input, numSteps, N) + % @init_set: initial set of state, a star set + % @ref_input: reference input, a star set or a vector + % @numSteps: number of simulation steps + % @N: number of simulation traces need to be generated + % @sim_Traces: a cell of simulation traces + % @control_Traces: a cell of control traces + % @genTim: generating time + + % author: Dung Tran + % date: 10/2/2019 + + t = tic; + + if ~isa(init_set, 'Star') + error('Initial set is not a star set'); + end + + if init_set.dim ~= obj.plant.dim + error('Inconsistent dimension between the initial set and the plant'); + end + + if ~isa(ref_input, 'Star') && ~isempty(ref_input) && (size(ref_input, 2 ~= 1) && size(ref_input, 1) ~= obj.nI_ref) + error('Invalid ref_input, should be a star set, empty or a vector with %d elements', obj.nI_ref); + end + + init_states = init_set.sample(N); % sample initial set of states + + if isempty(ref_input) + + M = size(init_states, 2); + sim_Traces = cell(M, 1); % reset simulation traces + control_Traces = cell(M, 1); % reset control traces + + for i=1:M + [sim_Traces{i}, control_Traces{i}, ~] = obj.simulate(init_states(:,i), ref_input, numSteps); + end + + else + + if isa(ref_input, 'Star') + ref_inputs = ref_input.sample(N); % sample reference inputs + else % ref_input is a vector + ref_inputs = zeros(obj.nI_ref, N); + for i=1:N + ref_inputs(:, i) = ref_input; + end + end + + M = min(size(init_states, 2), size(ref_inputs, 2)); + sim_Traces = cell(M,1); % reset simulation traces + control_Traces = cell(M,1); % reset control traces + + for i=1:M + [sim_Traces{i}, control_Traces{i}, ~] = obj.simulate(init_states(:,i), ref_inputs(:,i), numSteps); + end + + end + + obj.simTraces = sim_Traces; + obj.controlTraces = control_Traces; + genTime = toc(t); + + + end + + + end + + + methods % PLOT SIMULATION TRACES + + function plotSimTraces(varargin) + % @index: index of the state needs to be plotted + % @color: color of trace + % @marker: marker for plot + + % author: Dung Tran + % date: 10/2/2019 + + switch nargin + + case 2 + obj = varargin{1}; + index = varargin{2}; + color = 'blue'; + markers = '-x'; + case 3 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = '-x'; + case 4 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = varargin{4}; + otherwise + error('Invalid number of inputs, should be 1, 2, or 3'); + end + + + if isempty(obj.simTraces) + error('simulation traces are empty, please do simulation first, i.e., run simulate method'); + end + + n = length(obj.simTraces); % number of simulation traces + m = length(obj.simTraces{1}); % number of steps + + T = 1:m; + + for i=1:n-1 + simTrace = obj.simTraces{i}; + plot(T, simTrace(index, :), markers, 'color', color); + hold on; + end + + simTrace = obj.simTraces{n}; + plot(T, simTrace(index, :), markers, 'color', color); + + end + + + + end + + + methods % FALSIFICATION USING SIMULATION + + function [safe, falsifyTraces, falsifyTime] = falsify(obj, init_set, ref_input, numSteps, N, unsafe_mat, unsafe_vec) + % @init_set: initial set of state, a star set + % @ref_input: reference input, a vector or a star set + % @numSteps: number of simulation steps + % @N: number of traces generated for falsification + % @unsafe_mat: unsafe matrix + % @unsafe_vec: unsafe vector + % unsafe region is defined by: U = unsafe_mat * x <= unsafe_vec + + % @safe: = 0: unsafe + % = 2: unknown (falsification is incomplete) + % @falsifyTrace: falsified traces + % @falsifyTime: falsification time + + + % author: Dung Tran + % date: 10/3/2019 + + t = tic; + + obj.generateTraces(init_set, ref_input, numSteps, N); + + n = length(obj.simTraces); + + m = size(obj.simTraces{1}, 2); + + U = HalfSpace(unsafe_mat, unsafe_vec); + + obj.falsifyTraces = {}; % a cell of fasified traces + + for i=1:n + simTrace = obj.simTraces{i}; + for j=1:m + U.contains(simTrace(:,j)); + obj.falsifyTraces = [obj.falsifyTraces; simTrace]; + break; + end + + end + + if isempty(obj.falsifyTraces) + safe = 'UNKNOWN'; + fprintf('The safety of the system is unknown, try increase the number of simulation traces to find counter examples'); + else + safe = 'UNSAFE'; + fprintf('The system is unsafe, %d falsified traces are found', length(obj.falsifyTraces)); + end + + + falsifyTraces = obj.falsifyTraces; + falsifyTime = toc(t); + obj.falsifyTime = falsifyTime; + + + end + + + + % PLOT FALSIFICATION TRACES + function plotFalsifyTraces(varargin) + % @index: index of the state needs to be plotted + % @color: color of trace + % @marker: marker for plot + + % author: Dung Tran + % date: 10/2/2019 + + switch nargin + + case 2 + obj = varargin{1}; + index = varargin{2}; + color = 'blue'; + markers = '-x'; + case 3 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = '-x'; + case 4 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = varargin{4}; + otherwise + error('Invalid number of inputs, should be 1, 2, or 3'); + end + + + if isempty(obj.falsifyTraces) + error('simulation traces are empty, please do simulation first, i.e., run simulate method or generateTraces method'); + end + + n = length(obj.falsifyTraces); % number of falsify traces + m = size(obj.falsifyTraces{1},2); % number of steps + + T = 1:m; + + for i=1:n-1 + falsifyTrace = obj.falsifyTraces{i}; + plot(T, falsifyTrace(index, :), markers, 'color', color); + hold on; + end + + falsifyTrace = obj.falsifyTraces{n}; + plot(T, falsifyTrace(index, :), markers, 'color', color); + + end + + + end + + + + +end + diff --git a/code/nnv/engine/nncs/LinearNNCS.m b/code/nnv/engine/nncs/LinearNNCS.m new file mode 100644 index 0000000000..285e39fb3b --- /dev/null +++ b/code/nnv/engine/nncs/LinearNNCS.m @@ -0,0 +1,1521 @@ +classdef LinearNNCS < handle + %Class for Linear Neural Network Control Systems + % Dung Tran + % Date: 9/30/2019 + + % TODO: need support feedback y(k), y(k-d) + + properties + controller = []; % a feedfoward neural network + plant = []; % linear plant model + feedbackMap = []; % a feedback matrix decribes the mapping from a group of + % outputs of the plant to a group of inputs of the controller + + % nerual network control system architecture + % + % --->| plant ---> y(t) ---sampling--->y(k) + % | | + % | | + % u(k) <---- controller |<---- v(k)-------|--- (reference inputs to the controller) + % |<----- y(k)------|(output feedback) + + + % the input to neural net controller is grouped into 2 group + % the first group contains all the reference inputs + + % the first layer weight matrix of the controller is decomposed into two + % submatrices: W = [W1 W2] where + % W1 is conresponding to I1 = v[k] (the reference input) + % W2 is conresponding to I2 = y[k] (the feedback inputs) + + % the reach set of the first layer of the controller is: + % R = f(W1 * I1 + W2 * I2 + b), b is the bias vector of + % the first layer, f is the activation function + + nO = 0; % number of output + nI = 0; % number of inputs = size(I1, 1) + size(I2, 1) to the controller + nI_ref = 0; % number of reference inputs to the controller + nI_fb = 0; % number of feedback inputs to the controller + + % for reachability analysis + method = 'exact-star'; % by default + plantReachMethod = 'direct'; % by default, direct method, compute e^Ah + % = 'ode45' : using Ode45 solver + % Look at LinearODE class for the detail + + transPlant = []; % a transformed plant for reachability analysis + % A_new = [A B; 0 0]; C_new = [C 0] + % transPlant: dot{x_new} = A_new * x_new; y_new = C_new * x_new + + plantReachSet = {}; + plantIntermediateReachSet = {}; + plantNumOfSimSteps = 20; % default number of simulation steps for the plant between two control step k-1 and k + controlPeriod = 0.1; % default control period + controllerReachSet = {}; + numCores = 1; % default setting, using single core for computation + ref_I = []; % reference input set + init_set = []; % initial set for the plant + reachTime = 0; + + % for simulation + simTraces = {}; % simulation trace + controlTraces = {}; % control trace + + % use for falsification + falsifyTraces = {}; + falsifyTime = 0; + + end + + methods % CONTRUCTOR AND REACH METHOD + + %constructor + function obj = LinearNNCS(controller, plant) + % @controller: a neural net controller + % @plant: a plant model (a LinearODE, DLinearODE or Neural net) + + % author: Dung Tran + % date: 9/30/2019 + + + if ~isa(controller, 'FFNNS') + error('The controller is not a feedforward neural network'); + end + + if ~controller.isPieceWiseNetwork + error('The controller is not a piecewise network, i.e., there exists a layer whose activation function is not piecewise linear'); + end + + if ~isa(plant, 'LinearODE') + error('The plant is not a linear system'); + end + + if plant.nO > controller.nI + error('Inconsistency between number of feedback outputs and number of controller inputs'); + end + + if plant.nI ~= controller.nO + error('Inconsistency between the number of plant inputs and the number of controller outputs'); + end + + obj.controller = controller; + obj.plant = plant; + obj.nO = plant.nO; % number of outputs of the system == number of the plant's outputs + obj.nI = controller.nI; % number of input to the controller + obj.nI_fb = plant.nO; % number of feedback inputs to the controller + obj.nI_ref = controller.nI - obj.nI_fb; % number of reference inputs to the controller + new_A = [obj.plant.A obj.plant.B; zeros(obj.plant.nI, obj.plant.dim) zeros(obj.plant.nI, obj.plant.nI)]; + new_C = [eye(obj.plant.dim) zeros(obj.plant.dim, obj.plant.nI)]; + obj.transPlant = LinearODE(new_A, [], new_C, []); + + end + + + % start parallel pool for computing + function start_pool(obj) + + if obj.numCores > 1 + poolobj = gcp('nocreate'); % If no pool, do not create new one. + if isempty(poolobj) + parpool('local', obj.numCores); + else + if poolobj.NumWorkers ~= obj.numCores + delete(poolobj); % delete the old poolobj + parpool('local', obj.numCores); % start the new one with new number of cores + end + end + end + + end + + + % reach + function [R, reachTime] = reach(varargin) + % @init_set: initial set of state, a star set + % @ref_input: reference input, may be a vector or a star set + % @numOfSteps: number of steps + % @method: 'exact-star' or 'approx-star' + % @numCores: number of cores used in computation + % @numOfSimSteps: number of sim steps to compute reachable set + % for the plant + % NOTE***: parallel computing may not help due to + % comuninication overhead in the computation + + + % author: Dung Tran + % date: 10/1/2019 + + + switch nargin + + case 4 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = 'approx-star'; + numCores1 = 1; + numOfSimSteps = 20; + + case 5 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = 1; + numOfSimSteps = 20; + + + case 6 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + numOfSimSteps = 20; + + case 7 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + numOfSimSteps = varargin{7}; + + + otherwise + error('Invalid number of inputs, should be 3, 4, 5, or 6'); + end + + if ~isa(init_set1, 'Star') + error('Initial set is not a star set'); + end + + if numCores1 < 1 + error('Invalid number of cores used in computation'); + end + + if ~strcmp(method1, 'exact-star') && ~strcmp(method1, 'approx-star') + error('Unknown reachability method, NNV currently supports exact-star and approx-star methods'); + end + + if numOfSteps < 1 + error('Invalid number of steps'); + end + + if numOfSimSteps < 1 + error('Invalid number of simulation steps for computing reachable set of the plant'); + end + + if ~isempty(ref_input1) && ~isa(ref_input1, 'Star') && size(ref_input1, 2) ~= 1 && size(ref_input1, 1) ~= obj.nI_ref + error('Invalid reference input vector'); + end + + + obj.ref_I = ref_input1; + obj.numCores = numCores1; + obj.method = method1; + obj.init_set = init_set1; + + obj.plantReachSet = cell(1, numOfSteps); + obj.plantIntermediateReachSet = cell(1,numOfSteps); + obj.controllerReachSet = cell(1, numOfSteps); + obj.plantNumOfSimSteps = numOfSimSteps; + + if obj.numCores > 1 + obj.start_pool; + end + + t = tic; + + for k=1:numOfSteps + + X = obj.plantStepReach(k); + + if strcmp(obj.method, 'exact-star') + + obj.plantReachSet{k} = X; + + elseif strcmp(obj.method, 'approx-star') + + B = Star.get_hypercube_hull(X); + obj.plantReachSet{k} = B.toStar; % combine all stars into a single over-approximate star + + end + + obj.controllerReachSet{k} = obj.controllerStepReach(k); + + end + + reachTime = toc(t); + + obj.reachTime = reachTime; + + R = obj.plantReachSet; + + + end + + + + % live reachability analysis, plot reachable set on the fly + function [R, reachTime] = reachLive(varargin) + % @init_set: initial set of state, a star set + % @ref_input: reference input, may be a vector or a star set + % @numOfSteps: number of steps + % @method: 'exact-star' or 'approx-star' + % @numCores: number of cores used in computation + % NOTE***: parallel computing may not help due to + % comuninication overhead in the computation + % @map_mat: output mapping matrix + % @map_vec: output mapping bias vector + % *** We plot y = map_mat * x + map_vec on-the-fly + % @color: color for plotting + + % author: Dung Tran + % date: 10/1/2019 + + + switch nargin + + case 4 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = 'approx-star'; + numCores1 = 1; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + map_mat = zeros(1, obj.plant.dim); + map_mat(1) = 1; % default setting, plot the reachable set of the first state versus time steps + map_vec = []; % default setting + color = 'blue'; + boundary_mat = []; + boundary_vec = []; + + + case 5 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = 1; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + map_mat = zeros(1, obj.plant.dim); + map_mat(1) = 1; % default setting, plot the reachable set of the first state versus time steps + map_vec = []; % default setting + color = 'blue'; + boundary_mat = []; + boundary_vec = []; + + case 6 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + map_mat = zeros(1, obj.plant.dim); + map_mat(1) = 1; % default setting, plot the reachable set of the first state versus time steps + map_vec = []; % default setting + color = 'blue'; + boundary_mat = []; + boundary_vec = []; + + case 7 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + map_mat = varargin{7}; + map_vec = []; % default setting + color = 'blue'; + boundary_mat = []; + boundary_vec = []; + + case 8 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = 'blue'; + boundary_mat = []; + boundary_vec = []; + + + case 9 + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = varargin{9}; + boundary_mat = []; + boundary_vec = []; + + case 11 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + numOfSimSteps = 20; % number of simulation steps used for platn reachability analysis + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = varargin{9}; + boundary_mat = varargin{10}; + boundary_vec = varargin{11}; + + % Indication of unsafe behavior + % The output: y = map_mat * x + map_vec + % The boundary of the output: y_b = boundary_mat * x + boundary_vec + % Used to indicate whether a output y reach its unsafe + % boundary, i.e. y == y_b? + + if (size(boundary_mat, 1) ~= size(map_mat, 1)) || (size(boundary_mat, 2) ~= size(map_mat, 2)) + error('The size of boundary matrix is not equal to the size of the map_mat, we require this for plotting unsafe boundary'); + end + + if (size(boundary_vec, 1) ~= size(boundary_mat, 1)) || (size(boundary_vec, 2) ~= 1) + error('Invalid boundary vector, it should have one column and have the same number of rows as the boundary matrix'); + end + + + case 12 + + obj = varargin{1}; + init_set1 = varargin{2}; + ref_input1 = varargin{3}; + numOfSteps = varargin{4}; + method1 = varargin{5}; + numCores1 = varargin{6}; + map_mat = varargin{7}; + map_vec = varargin{8}; + color = varargin{9}; + boundary_mat = varargin{10}; + boundary_vec = varargin{11}; + numOfSimSteps = varargin{12}; % number of simulation steps used for platn reachability analysis + + % Indication of unsafe behavior + % The output: y = map_mat * x + map_vec + % The boundary of the output: y_b = boundary_mat * x + boundary_vec + % Used to indicate whether a output y reach its unsafe + % boundary, i.e. y == y_b? + + if (size(boundary_mat, 1) ~= size(map_mat, 1)) || (size(boundary_mat, 2) ~= size(map_mat, 2)) + error('The size of boundary matrix is not equal to the size of the map_mat, we require this for plotting unsafe boundary'); + end + + if (size(boundary_vec, 1) ~= size(boundary_mat, 1)) || (size(boundary_vec, 2) ~= 1) + error('Invalid boundary vector, it should have one column and have the same number of rows as the boundary matrix'); + end + + + + otherwise + error('Invalid number of inputs, should be 3, 4, 5, 6, 7, 8, or 9'); + end + + if ~isa(init_set1, 'Star') + error('Initial set is not a star set'); + end + + if numCores1 < 1 + error('Invalid number of cores used in computation'); + end + + if ~strcmp(method1, 'exact-star') && ~strcmp(method1, 'approx-star') + error('Unknown reachability method, NNV currently supports exact-star and approx-star methods'); + end + + if numOfSteps < 1 + error('Invalid number of steps'); + end + + + if ~isempty(ref_input1) && ~isa(ref_input1, 'Star') && size(ref_input1, 2) ~= 1 && size(ref_input1, 1) ~= obj.nI_ref + error('Invalid reference input vector'); + end + + + obj.ref_I = ref_input1; + obj.numCores = numCores1; + obj.method = method1; + obj.init_set = init_set1; + + obj.plantNumOfSimSteps = numOfSimSteps; + obj.plantReachSet = cell(numOfSteps, 1); + obj.controllerReachSet = cell(numOfSteps, 1); + + + if obj.numCores > 1 + obj.start_pool; + end + + t = tic; + + for k=1:numOfSteps + + X = obj.plantStepReach(k); + + if strcmp(obj.method, 'exact-star') + + obj.plantReachSet{k} = X; + + elseif strcmp(obj.method, 'approx-star') + + B = Star.get_hypercube_hull(X); + obj.plantReachSet{k} = B.toStar; % combine all stars into a single over-approximate star + + end + + obj.controllerReachSet{k} = obj.controllerStepReach(k); + + % live plotting reachable set + + if size(map_mat, 1) == 1 + + times = 0: obj.controlPeriod: k*obj.controlPeriod; + obj.plotStepOutputReachSets(color, map_mat, map_vec, boundary_mat, boundary_vec, k); + ax = gca; + ax.XTick = times; + hold on; + + elseif (size(map_mat, 1) == 2) || (size(map_mat, 1) == 3) + + obj.plotStepOutputReachSets(color, map_mat, map_vec, boundary_mat, boundary_vec, k); + + elseif size(indexes, 1) > 3 + error('NNV plots only three-dimensional output reachable set, please limit number of rows in map_mat <= 3'); + end + + + end + + reachTime = toc(t); + + obj.reachTime = reachTime; + + R = obj.plantReachSet; + + + end + + + % plant step reach for step k + function X = plantStepReach(obj, k) + % @k: step + % @X: plant reach set + + % author: Dung Tran + % date: 9/30/2019 + + + + h = obj.controlPeriod/obj.plantNumOfSimSteps; % simulation timestep for the plant model + if k==1 + + % step 1: construct initial set for the transformed plant + new_V = [obj.init_set.V; zeros(obj.plant.nI, obj.init_set.nVar + 1)]; + trans_init_set = Star(new_V, obj.init_set.C, obj.init_set.d, obj.init_set.predicate_lb, obj.init_set.predicate_ub); + % step 2: perform the reachability analysis for the time elapse in the first step + + X_imd_trans = obj.transPlant.simReach(obj.plantReachMethod, trans_init_set, [], h, obj.plantNumOfSimSteps, []); + X_imd = []; + for i=1:obj.plantNumOfSimSteps +1 + X_imd = [X_imd X_imd_trans(i).affineMap(obj.transPlant.C, [])]; + end + obj.plantIntermediateReachSet{k} = cell(1,1); + obj.plantIntermediateReachSet{k}{1,1} = {X_imd}; + X = X_imd(obj.plantNumOfSimSteps+1); + end + + if k>1 + + X0 = obj.plantReachSet{k-1}; + U0 = obj.controllerReachSet{k-1}; + + nX = length(X0); + + % compute exact reachable set of the continuous plant from t[k] to t[k+1] using star set + + X = []; + obj.plantIntermediateReachSet{k} = cell(1, nX); + for i=1:nX + U0_i = U0{i}; % control set corresponding to the initial set of state X0(i) + mU = length(U0_i); % number of control sets corresponding to the initial set of state X0(i) + obj.plantIntermediateReachSet{k}{i} = cell(mU, 1); + for j=1:mU + new_V = [X0(i).V; U0_i(j).V]; + trans_init_set = Star(new_V, U0_i(j).C, U0_i(j).d, U0_i(j).predicate_lb, U0_i(j).predicate_ub); + X_imd = obj.transPlant.simReach(obj.plantReachMethod, trans_init_set, [], h, obj.plantNumOfSimSteps, []); + X1 = []; + for l=1:obj.plantNumOfSimSteps + 1 + X1 = [X1 X_imd(l).affineMap(obj.transPlant.C, [])]; + end + X = [X X1(obj.plantNumOfSimSteps+1)]; % store plant reach set at t[k], which is the initial set for the next control period t[k+1] + obj.plantIntermediateReachSet{k}{i}{j} = X1; % store intermediate plant reach set + end + + end + + end + end + + + + + % controller step Reach for step k + function U = controllerStepReach(obj, k) + % @k: step + % @U: controller reach set + + % author: Dung Tran + % date: 10/1/2019 + + + I = obj.getControllerInputSet(k); + n = length(I); + + for i=1:n + U{i} = obj.controller.reach(I(i), 'exact-star', obj.numCores); + end + + + end + + % get input set for the controller at step k + function I = getControllerInputSet(obj, k) + % @k: step + % @I: input set to the controller at step k + + % author: Dung Tran + % date: 10/1/2019 + + + X = obj.plantReachSet{k}; + n = length(X); + Y = []; + for i=1:n + Y = [Y X(i).affineMap(obj.plant.C, [])]; + end + + if obj.nI_ref == 0 + I = Y; + else + + I = []; + + for i=1:n + + if isempty(obj.ref_I) % empty reference input is equal to zero vector + + I1 = Y(i).concatenate_with_vector(zeros(obj.nI_ref, 1)); + + else + + if ~isa(obj.ref_I, 'Star') % referece input is just a vector + I1 = Y(i).concatenate_with_vector(obj.ref_I); + else + + if strcmp(obj.method, 'exact-star') + + if k == 1 + I1 = obj.ref_I.concatenate(Y(i)); % only do concatenate at the first step + else + % preseve relationship from second step + V1 = obj.ref_I.V; + Z = zeros(obj.nI_ref, Y(i).nVar - obj.ref_I.nVar); + V2 = Y(i).V; + new_V = [V1 Z; V2]; + I1 = Star(new_V, Y(i).C, Y(i).d, Y(i).predicate_lb, Y(i).predicate_ub); + + end + + elseif strcmp(obj.method, 'approx-star') + + I1 = obj.ref_I.concatenate(Y(i)); + + end + + + end + + end + + I = [I I1]; + + end + + end + + + end + + + + % get output reach set + + function Y = getOutputReachSet(obj, map_mat, map_vec) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @Y: a cell of output reach sets + + % author: Dung Tran + % date: 10/2/2019 + + + if isempty(obj.plantIntermediateReachSet ) + error('Plant reach set is empty, please perform reachability analysis first'); + end + + dim = obj.plant.dim; % dimension of the plant + + if size(map_mat, 2) ~= dim + error('Inconsistency between map_mat and dimension of the plant, map_mat should have %d columns', dim); + end + + if size(map_mat, 1) > 3 + error('Plot only <= 3 dimensional outputs, the maximum allowable number of rows in map_mat is 3'); + end + + + if ~isempty(map_vec) && (size(map_vec, 2) ~= 1) + error('map vector should have one column'); + end + + if ~isempty(map_vec) && (size(map_vec, 1) ~= size(map_mat, 1)) + error('Inconsistent dimensions between map matrix and map vector'); + end + + % get output reach sets + n = length(obj.plantIntermediateReachSet); + + Y = cell(1, n); + for i=1:n + Y{i} = obj.getStepOutputReachSet(map_mat, map_vec, i); + end + + end + + % get step output reachable set + function Y = getStepOutputReachSet(obj, map_mat, map_vec, k) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @Y: a cell of output reach sets + % @k: step index + + % author: Dung Tran + % date: 10/2/2019 + + + if isempty(obj.plantIntermediateReachSet ) + error('Plant reach set is empty, please perform reachability analysis first'); + end + + dim = obj.plant.dim; % dimension of the plant + + if size(map_mat, 2) ~= dim + error('Inconsistency between map_mat and dimension of the plant, map_mat should have %d columns', dim); + end + + if size(map_mat, 1) > 3 + error('Plot only <= 3 dimensional outputs, the maximum allowable number of rows in map_mat is 3'); + end + + + if ~isempty(map_vec) && (size(map_vec, 2) ~= 1) + error('map vector should have one column'); + end + + if ~isempty(map_vec) && (size(map_vec, 1) ~= size(map_mat, 1)) + error('Inconsistent dimensions between map matrix and map vector'); + end + + % get output reach sets + + + X = obj.plantIntermediateReachSet{k}; + nX = length(X); + + Y = cell(1, obj.plantNumOfSimSteps+1); + + for l=1:obj.plantNumOfSimSteps+1 + Y1 = []; + for i=1:nX + Xi = X{i}; + nXi = length(Xi); + for j=1:nXi + Xij = Xi{j}; + Yijl = Xij(l).affineMap(map_mat, map_vec); + Y1 = [Y1 Yijl]; + end + end + Y{l} = Y1; + end + + end + + + end + + + methods % PLOT REACHABLE SETS + + + % plot controller reach sets + function plotControllerReachSets(varargin) + % @color: color + % @x_id: id of first control input + % @y_id: id of second control input + % @z_id: id of third control input + + % if plot in 2D, set one of three ids = [] + % if plot in 3D, three ids need to specified + % if plot in 1D, set two of three ids = [] + % plot 1D: plot the ranges vs time steps + + % author: Dung Tran + % date: 10/2/2019 + + + switch nargin + + case 3 + obj = varargin{1}; + color = varargin{2}; + nU = size(obj.plant.B,2); % number of control inputs to the plant + x_id = varargin{3}; + + if isempty(x_id) || x_id < 1 || x_id > nU + error('Invalid x index'); + end + + option = 1; % plot range of the state with time steps + + case 4 + obj = varargin{1}; + color = varargin{2}; + nU = size(obj.plant.B,2); % number of control inputs to the plant + x_id = varargin{3}; + y_id = varargin{4}; + + if isempty(x_id) || x_id < 1 || x_id > nU + error('Invalid x index'); + end + + if isempty(y_id) || y_id < 1 || y_id > nU + error('Invalid y index'); + end + + if y_id == x_id + error('x index and y index need to be different'); + end + + option = 2; % plot 2D reachable set of X = (x_id, y_id) + + case 5 + obj = varargin{1}; + color = varargin{2}; + nU = size(obj.plant.B,2); % number of control inputs to the plant + x_id = varargin{3}; + y_id = varargin{4}; + z_id = varargin{5}; + + if isempty(x_id) || x_id < 1 || x_id > nU + error('Invalid x index'); + end + + if isempty(y_id) || y_id < 1 || y_id > nU + error('Invalid y index'); + end + + if isempty(z_id) || z_id < 1 || z_id > nU + error('Invalid z index'); + end + + if y_id == x_id + error('x index and y index need to be different'); + end + + if y_id == z_id + error('y index and z index need to be different'); + end + + if z_id == x_id + error('z index and x index need to be different'); + end + + option = 3; % plot 3D reachable sets of X = (x_id, y_id, z_id) + + otherwise + error('Invalid number of inputs, should be 2, 3, or 4'); + end + + + if isempty(obj.controllerReachSet) + error('Controller Reach Set is empty, please perform reachability analysis first.'); + end + + n = length(obj.controllerReachSet); % number of steps + + if option == 1 % plot ranges of specific state versus time steps + + U = []; + for i=1:n + + U1 = Star.get_hypercube_hull(obj.controllerReachSet{i}{1}); + U1 = U1.toStar; + U = [U U1]; + end + T = 1:n; + Star.plotRanges_2D(U, x_id, T, color); + ax = gca; + ax.XTick = T; + + end + + if option == 2 % plot 2D reach set + + U = []; + for i=1:n + U = [U obj.controllerReachSet{i}{1}]; + end + + map = zeros(2, dim); + map(1, x_id) = 1; + map(2, y_id) = 1; + + Y = []; + n = length(U); + for i=1:n + Y = [Y U(i).affineMap(map, [])]; + end + + Star.plots(Y, color); + + end + + if option == 3 % plot 3D reach set + + U = []; + for i=1:n + U = [U obj.controllerReachSet{i}{1}]; + end + + map = zeros(3, dim); + map(1, x_id) = 1; + map(2, y_id) = 1; + map(3, z_id) = 1; + + Y = []; + n = length(U); + for i=1:n + Y = [Y U(i).affineMap(map, [])]; + end + + Star.plots(Y, color); + + end + + + end + + + % plot output reach set + % output reach set is derived by mapping the state reach set by + % a maping matrix, M + function plotOutputReachSets(obj, color, map_mat, map_vec) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @color: color + + % author: Dung Tran + % date: 10/2/2019 + + + Y = obj.getOutputReachSet(map_mat, map_vec); + + n = length(Y); % number of control periods + + % plot output reach sets + + option = size(map_mat, 1); + + I0 = obj.init_set.affineMap(map_mat, map_vec); + G = I0.getBox; + h = obj.controlPeriod / obj.plantNumOfSimSteps; + + if option == 1 % plot 1D, output versus time steps + + for i=1:n + Y1 = Y{i}; + G1 = []; + for j=1:obj.plantNumOfSimSteps+1 + B = Star.get_hypercube_hull(Y1{j}); + G1 = [G1 B.toStar]; + end + + T1 = (i-1)*obj.controlPeriod:h:i*obj.controlPeriod; + Star.plotRanges_2D(G1, 1, T1, color); + hold on; + end + + T = 0:obj.controlPeriod:n*obj.controlPeriod; + ax = gca; + ax.XTick = T; + + end + + if option == 2 || option == 3 % plot 2D or 3D + + for i=1:n + Y1 = Y{i}; + for j=1:obj.plantNumOfSimSteps+1 + B = Star.get_hypercube_hull(Y1{j}); + G = [G B]; + end + end + + if option == 2 + Box.plotBoxes_2D_noFill(G, 1, 2, color); + elseif option == 3 + Box.plotBoxes_3D_noFill(G, 1, 2, 3, color); + end + + end + + if option > 3 + error('We can plot only 3-dimensional output set, please limit the number of row of the mapping matrix to <= 3'); + end + + + end + + + % plot step output reachable sets + function plotStepOutputReachSets(obj, color, map_mat, map_vec, unsafe_mat, unsafe_vec, k) + % @map_mat: a mapping matrix + % @map_vec: mapping vector + % Y = map_mat * X + map_vec + % @unsafe_mat: unsafe region matrix + % @unsafe_vec: unsafe region vector + % @color: color + % @k: step index + + % author: Dung Tran + % date: 10/2/2019 + % update: 11/2/2019 + + + Y = obj.getStepOutputReachSet(map_mat, map_vec, k); % output set at step k + + if ~isempty(unsafe_mat) && ~isempty(unsafe_vec) + US = obj.getStepOutputReachSet(unsafe_mat, unsafe_vec, k); % unsafe region output + else + US = []; + end + + h = obj.controlPeriod / obj.plantNumOfSimSteps; + n = length(Y); + + % plot output reach sets + + option = size(map_mat, 1); + + + if option == 1 % plot 1D, output versus time steps + + for i=2:obj.plantNumOfSimSteps + 1 + B = Star.get_hypercube_hull(Y{i}); + ymin = B.lb; + ymax = B.ub; + y = [ymin ymin ymax ymax ymin]; + xmin = (k-1)*obj.controlPeriod + (i-2)*h; + xmax = xmin + h; + x = [xmin xmax xmax xmin xmin]; + plot(x, y, color); + hold on; + + if ~isempty(US) + B = Star.get_hypercube_hull(US{i}); + ymin = B.lb; + ymax = B.ub; + y = [ymin ymin ymax ymax ymin]; + xmin = (k-1)*obj.controlPeriod + (i-2)*h; + xmax = xmin + h; + x = [xmin xmax xmax xmin xmin]; + plot(x, y, 'red'); + end + pause(0.25); + + end + + end + + if option == 2 || option == 3 % plot 2D or 3D + + for i=2:obj.plantNumOfSimSteps + 1 + + B = Star.get_hypercube_hull(Y{i}); + Star.plots(B.toStar, color); + hold on; + + if ~isempty(US) + B = Star.get_hypercube_hull(US{i}); + Star.plots(B.toStar, 'red'); + hold on; + end + pause(0.25); + end + + end + + if option > 3 + error('We can plot only 3-dimensional output set, please limit the number of row of the mapping matrix to <= 3'); + end + + + + end + + + end + + + + methods % VERIFICATION METHOD + + + function [safe, counterExamples, verifyTime] = verify(obj, unsafe_mat, unsafe_vec) + % @unsafe_mat: unsafe matrix + % @unsafe_vec: unsafe vector + % Usafe region is defined by: x: unsafe_mat * x <= unsafe_vec + + % @safe: = 0: unsafe + % = 1: safe + % = 2: unknown (due to conservativeness) + % @counterExamples: an array of star set counterExamples + % @verifyTime: verification time + + % author: Dung Tran + % date: 10/2/2019 + + + t = tic; + if isempty(obj.plantReachSet) + error('Plant reachable set is empty, please do reachability analysis first'); + end + + dim = obj.plant.dim; + + if (size(unsafe_mat, 2) ~= dim) + error('Inconsistent dimensions between the unsafe matrix and the plant'); + end + + if size(unsafe_vec, 2) ~= 1 + error('Unsafe vector should have one column'); + end + + if size(unsafe_vec, 1) ~= size(unsafe_mat, 1) + error('Inconsistent dimension between unsafe matrix and unsafe vector'); + end + + X = obj.plantReachSet; + n = length(X); + % flatten reach sets + Y = obj.init_set; + for i=1:n + Y = [Y X{i}]; + end + + % check safety + m = length(Y); + G = []; + for i=1:m + G1 = Y(i).intersectHalfSpace(unsafe_mat, unsafe_vec); + if ~isempty(G1) + G = [G G1]; + end + end + + if isempty(G) + safe = 1; + counterExamples = []; + else + + if strcmp(obj.method, 'exact-star') + safe = 0; + % construct a set of counter examples + n = length(G); + counterExamples = []; + for i=1:n + C1 = Star(obj.init_set.V, G(i).C, G(i).d, G(i).predicate_lb, G(i).predicate_ub); + counterExamples = [counterExamples C1]; + end + + + elseif strcmp(obj.method, 'approx-star') + safe = 2; % unknown due to over-approximation error, we can try using simulation to falsify the property + counterExamples = []; + end + + + end + + + if safe == 0 + fprintf('\n\nThe neural network control system is unsafe, NNV produces %d star sets of counter-examples', n); + elseif safe == 1 + fprintf('\n\nThe neural network control system is safe'); + elseif safe == 2 + fprintf('\n\n The safety of the neural network control system is unknown'); + fprintf('\nYou can try falsification method using simulation to find counter-examples'); + end + + verifyTime = toc(t); + + + end + + + + end + + + methods %SIMULATION + + + % simulate the system + function [simTrace, controlTrace, simTime] = simulate(obj, init_state, ref_input, numSteps) + % @init_state: a vector of initial states + % @ref_input: a vector of reference inputs + % @numSteps: number of simulation steps + % @simTrace: simulation trace + % @controlTrace: control trace + % @simTime: simulation time + + % author: Dung Tran + % date: 10/2/2019 + + t = tic; + + dim = obj.plant.dim; % dimension of the plant + + if size(init_state, 1) ~= dim + error('Inconsistent between init_state vector and plant dimension'); + end + + if size(init_state, 2) ~= 1 + error('Invalid init_state vector, should have one column'); + end + + if ~isempty(ref_input) && (size(ref_input, 2) ~= 1) + error('Invalid ref_input vector, should have one column'); + end + + if numSteps < 1 + error('Invalid number of steps, should be >= 1'); + end + + if ~isempty(ref_input) && (size(ref_input, 1) ~= obj.nI_ref) + error('Invalid ref_input vector, should have %d elements', obj.nI_ref); + end + + + simTrace = zeros(dim, numSteps + 1); + simTrace(:,1) = init_state; + controlTrace = zeros(obj.plant.nI, numSteps + 1); + controlTrace(:,1) = zeros(obj.plant.nI, 1); + + for i=2:numSteps + 1 + x = simTrace(:, i-1); + y = obj.plant.C * x; + y1 = [ref_input; y]; + u = obj.controller.evaluate(y1); + simTrace(:, i) = obj.plant.A * x + obj.plant.B * u; + controlTrace(:,i) = u; + end + + obj.simTraces = [obj.simTraces; simTrace]; + obj.controlTraces = [obj.controlTraces; controlTrace]; + simTime = toc(t); + + end + + + % generate a number of simulation traces, used for falsification + function [sim_Traces, control_Traces, genTime] = generateTraces(obj, init_set, ref_input, numSteps, N) + % @init_set: initial set of state, a star set + % @ref_input: reference input, a star set or a vector + % @numSteps: number of simulation steps + % @N: number of simulation traces need to be generated + % @sim_Traces: a cell of simulation traces + % @control_Traces: a cell of control traces + % @genTim: generating time + + % author: Dung Tran + % date: 10/2/2019 + + t = tic; + + if ~isa(init_set, 'Star') + error('Initial set is not a star set'); + end + + if init_set.dim ~= obj.plant.dim + error('Inconsistent dimension between the initial set and the plant'); + end + + if ~isa(ref_input, 'Star') && ~isempty(ref_input) && (size(ref_input, 2 ~= 1) && size(ref_input, 1) ~= obj.nI_ref) + error('Invalid ref_input, should be a star set, empty or a vector with %d elements', obj.nI_ref); + end + + init_states = init_set.sample(N); % sample initial set of states + + if isempty(ref_input) + + M = size(init_states, 2); + sim_Traces = cell(M, 1); % reset simulation traces + control_Traces = cell(M, 1); % reset control traces + + for i=1:M + [sim_Traces{i}, control_Traces{i}, ~] = obj.simulate(init_states(:,i), ref_input, numSteps); + end + + else + + if isa(ref_input, 'Star') + ref_inputs = ref_input.sample(N); % sample reference inputs + else % ref_input is a vector + ref_inputs = zeros(obj.nI_ref, N); + for i=1:N + ref_inputs(:, i) = ref_input; + end + end + + M = min(size(init_states, 2), size(ref_inputs, 2)); + sim_Traces = cell(M,1); % reset simulation traces + control_Traces = cell(M,1); % reset control traces + + for i=1:M + [sim_Traces{i}, control_Traces{i}, ~] = obj.simulate(init_states(:,i), ref_inputs(:,i), numSteps); + end + + end + + obj.simTraces = sim_Traces; + obj.controlTraces = control_Traces; + genTime = toc(t); + + + end + + + end + + + methods % PLOT SIMULATION TRACES + + function plotSimTraces(varargin) + % @index: index of the state needs to be plotted + % @color: color of trace + % @marker: marker for plot + + % author: Dung Tran + % date: 10/2/2019 + + switch nargin + + case 2 + obj = varargin{1}; + index = varargin{2}; + color = 'blue'; + markers = '-x'; + case 3 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = '-x'; + case 4 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = varargin{4}; + otherwise + error('Invalid number of inputs, should be 1, 2, or 3'); + end + + + if isempty(obj.simTraces) + error('simulation traces are empty, please do simulation first, i.e., run simulate method'); + end + + n = length(obj.simTraces); % number of simulation traces + m = length(obj.simTraces{1}); % number of steps + + T = 1:m; + + for i=1:n-1 + simTrace = obj.simTraces{i}; + plot(T, simTrace(index, :), markers, 'color', color); + hold on; + end + + simTrace = obj.simTraces{n}; + plot(T, simTrace(index, :), markers, 'color', color); + + end + + + + end + + + methods % FALSIFICATION USING SIMULATION + + function [safe, falsifyTraces, falsifyTime] = falsify(obj, init_set, ref_input, numSteps, N, unsafe_mat, unsafe_vec) + % @init_set: initial set of state, a star set + % @ref_input: reference input, a vector or a star set + % @numSteps: number of simulation steps + % @N: number of traces generated for falsification + % @unsafe_mat: unsafe matrix + % @unsafe_vec: unsafe vector + % unsafe region is defined by: U = unsafe_mat * x <= unsafe_vec + + % @safe: = 0: unsafe + % = 2: unknown (falsification is incomplete) + % @falsifyTrace: falsified traces + % @falsifyTime: falsification time + + + % author: Dung Tran + % date: 10/3/2019 + + t = tic; + + display(N); + + obj.generateTraces(init_set, ref_input, numSteps, N); + + n = length(obj.simTraces); + + display(n); + + m = size(obj.simTraces{1}, 2); + + U = HalfSpace(unsafe_mat, unsafe_vec); + + obj.falsifyTraces = {}; % a cell of fasified traces + + for i=1:n + simTrace = obj.simTraces{i}; + for j=1:m + U.contains(simTrace(:,j)); + obj.falsifyTraces = [obj.falsifyTraces; simTrace]; + break; + end + + end + + if isempty(obj.falsifyTraces) + safe = 2; + fprintf('The safety of the system is unknown, try increase the number of simulation traces to find counter examples'); + else + safe = 0; + fprintf('The system is unsafe, %d falsified traces are found', length(obj.falsifyTraces)); + end + + + falsifyTraces = obj.falsifyTraces; + falsifyTime = toc(t); + obj.falsifyTime = falsifyTime; + + + end + + + + % PLOT FALSIFICATION TRACES + function plotFalsifyTraces(varargin) + % @index: index of the state needs to be plotted + % @color: color of trace + % @marker: marker for plot + + % author: Dung Tran + % date: 10/2/2019 + + switch nargin + + case 2 + obj = varargin{1}; + index = varargin{2}; + color = 'blue'; + markers = '-x'; + case 3 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = '-x'; + case 4 + obj = varargin{1}; + index = varargin{2}; + color = varargin{3}; + markers = varargin{4}; + otherwise + error('Invalid number of inputs, should be 1, 2, or 3'); + end + + + if isempty(obj.falsifyTraces) + error('simulation traces are empty, please do simulation first, i.e., run simulate method or generateTraces method'); + end + + n = length(obj.falsifyTraces); % number of falsify traces + m = size(obj.falsifyTraces{1},2); % number of steps + + T = 1:m; + + for i=1:n-1 + falsifyTrace = obj.falsifyTraces{i}; + plot(T, falsifyTrace(index, :), markers, 'color', color); + hold on; + end + + falsifyTrace = obj.falsifyTraces{n}; + plot(T, falsifyTrace(index, :), markers, 'color', color); + + end + + + end + + + + +end + diff --git a/code/nnv/engine/nncs/LinearODE.m b/code/nnv/engine/nncs/LinearODE.m index ced09bd857..2d6882fc5f 100644 --- a/code/nnv/engine/nncs/LinearODE.m +++ b/code/nnv/engine/nncs/LinearODE.m @@ -52,7 +52,7 @@ obj.B = B; obj.C = C; obj.D = D; - obj.nI = mB; + obj.nI = size(B, 2); if ~isempty(C) obj.nO = nC; end diff --git a/code/nnv/engine/nncs/NNCS.m b/code/nnv/engine/nncs/NNCS.m index a0a4052bbb..7204d72bff 100644 --- a/code/nnv/engine/nncs/NNCS.m +++ b/code/nnv/engine/nncs/NNCS.m @@ -62,7 +62,7 @@ % date: 11/1/2018 - if ~isa(controller, 'FFNN') + if ~isa(controller, 'FFNN') && ~isa(controller, 'FFNNS') error('The controller is not a feedforward neural network'); end @@ -104,7 +104,7 @@ % author: Dung Tran % date: 11/20/2018 - if ~strcmp(method, 'approx-polytope') && ~strcmp(method, 'approx-star') && ~strcmp(method, 'exact-polytope') + if ~strcmp(method, 'approx-polytope') && ~strcmp(method, 'approx-star') && ~strcmp(method, 'exact-polytope') && ~strcmp(method, 'exact-star') error('Unknown reachability analysis method'); end @@ -124,7 +124,46 @@ [R, reachTime] = obj.reachPolyhedron_exact(init_set, ref_inputSet, n_cores, n_steps); end + if strcmp(method, 'exact-star') + [R, reachTime] = obj.reach_star_exact(init_set, ref_inputSet, n_cores, n_steps); + end + + end + + + % reachability analysis of NNCS using exact-star method + % require: Plant is Linear + % FFNN has linear activation functions + function [P, reachTime] = reach_star_exact(obj, init_set, ref_inputSet, n_cores, n_steps) + % @init_set: the initial set of condition for the plant + % @ref_inputSet: the reference input set applied to the controller + % @n_steps: number of steps + % @P: the state reachable set of the plant + % we get the output reachable set by mapping P on the + % direction of interest plant.C + + % author: Dung Tran + % date: 9/30/2019 + + + if ~isa(obj.plant, 'DLinearODE') && ~isa(obj.plant, 'LinearODE') + error('Reachability analysis of NNCS using exact-star only supports for Discrete linear ODE or Continuous ODE plant'); + end + + if ~isa(init_set, 'Star') + error('Initial set of the plant is not a Star'); + end + + if ~isempty(ref_inputSet) && ~isa(ref_inputSet, 'Star') + error('The reference input set is not a Star'); + end + + % TODO: need to be generalized + end + + + % reachability analysis of NNCS using polyhedron % main limitation: the number of vertices in the reachable set diff --git a/code/nnv/engine/set/Box.m b/code/nnv/engine/set/Box.m index e09f420eb9..5ba3c71b9e 100644 --- a/code/nnv/engine/set/Box.m +++ b/code/nnv/engine/set/Box.m @@ -48,6 +48,88 @@ end + % single partition of a box + function Bs = singlePartition(obj, part_id, part_num) + % @part_id: index of the state being partitioned + % @part_num: number of partition + + % author: Dung Tran + % date: 10/19/2019 + + if part_id < 1 || part_id > obj.dim + error('Invalid partition index'); + end + + if part_num < 1 + error('Invalid partition number'); + end + + if part_num == 1 + Bs = obj; + else + del = (obj.ub(part_id) - obj.lb(part_id))/part_num; + + Bs = []; + + for i=1:part_num + new_lb = obj.lb; + new_ub = obj.ub; + new_lb(part_id) = obj.lb(part_id) + (i-1)*del; + new_ub(part_id) = new_lb(part_id) + del; + Bs = [Bs Box(new_lb, new_ub)]; + end + + end + + end + + % partition a box into smaller boxes + function Bs = partition(obj, part_indexes, part_numbers) + % @part_indexes: the indexes of the states being + % partitioned, an 1D array + % @part_numbers: the number of partitions at specific + % index, an 1D array + + % author: Dung Tran + % date: 10/19/2019 + + [n1, m1] = size(part_indexes); + [n2, m2] = size(part_numbers); + + if (n1 ~= 1 || n2 ~= 1) + error('Invalid part_indexes or part_numbers array, should have one row'); + end + + if m1 ~= m2 + error('Inconsistent between part_indexes and part_number array, should have the same number of elements'); + end + + for i=1:m1 + if ((part_indexes(i) < 1) || (part_indexes(i) > obj.dim)) + error('The %d^th index in part_indexes array is invalid', i); + end + + if part_numbers(i) < 1 + error('The %d^th number in part_numbers array is invalid', i); + end + end + + Bs = []; + B1 = obj; + for i=1:m1 + n = length(B1); + B2 = []; + for j=1:n + B2 = [B2 B1(j).singlePartition(part_indexes(i), part_numbers(i))]; + end + B1 = B2; + end + + Bs = B1; + + end + + % affine mapping of a box function B = affineMap(obj, W, b) @@ -131,6 +213,12 @@ function plot(obj) Z = Zono(obj.center, obj.generators); end + % get Range + function [lb, ub] = getRange(obj) + lb = obj.lb; + ub = obj.ub; + end + % get all vertices of the box function V = getVertices(obj) % author: Dung Tran @@ -159,6 +247,7 @@ function plot(obj) end + % partition a box into smaller boxes end diff --git a/code/nnv/engine/set/Star.m b/code/nnv/engine/set/Star.m index c7efa047a9..ff7603821d 100644 --- a/code/nnv/engine/set/Star.m +++ b/code/nnv/engine/set/Star.m @@ -609,7 +609,8 @@ function plot(obj) if isempty(obj.C) || isempty(obj.d) % star set is just a vector (one point) lb = obj.V(:, 1); - ub = obj.V(:, 1); + ub = obj.V(:, 1); + B = Box(lb, ub); else % star set is a set @@ -898,24 +899,67 @@ function plot(obj) new_C = blkdiag(obj.C, X.C); new_d = vertcat(obj.d, X.d); - S = Star(new_V, new_C, new_d); + new_predicate_lb = [obj.predicate_lb; X.predicate_lb]; + new_predicate_ub = [obj.predicate_ub; X.predicate_ub]; + + S = Star(new_V, new_C, new_d, new_predicate_lb, new_predicate_ub); + + end + + + % concatenate a star with a vector + function S = concatenate_with_vector(obj, v) + % @v: a vector + % @S: output star after concatenation + % author: Dung Tran + % date: 10/1/2019 + + + if size(v, 2) ~= 1 + error('Input is not a vector'); + end + + new_c = [v; obj.V(:, 1)]; + new_V = [zeros(size(v,1), obj.nVar); obj.V(:,2:obj.nVar + 1)]; + S = Star([new_c new_V], obj.C, obj.d, obj.predicate_lb, obj.predicate_ub); + end + end methods(Static) % plot methods % plot an array of Star (plot exactly, this is time consuming) - function plots(S) + function plots(varargin) % @S: an array of Stars + % @colar: color + + % author: Dung Tran + % date: update in 10/2/2019 + + switch nargin + + case 2 + + S = varargin{1}; + color = varargin{2}; + + case 1 + S = varargin{1}; + color = 'blue'; + + otherwise + error('Invalid number of inputs, should be 1 or 2'); + end n = length(S); P = []; for i=1:n P = [P S(i).toPolyhedron]; end - P.plot; + P.plot('color', color); end diff --git a/code/nnv/engine/set/Zono.m b/code/nnv/engine/set/Zono.m index 49d46a21e5..164f96a37e 100644 --- a/code/nnv/engine/set/Zono.m +++ b/code/nnv/engine/set/Zono.m @@ -284,10 +284,24 @@ function S = toStar(obj) n = size(obj.V, 2); lb = -ones(n, 1); - ub = ones(n, 1); - Pa = Polyhedron('lb', lb, 'ub', ub); + ub = ones(n, 1); + + C = [eye(n);-eye(n)]; + d = [ones(n,1); ones(n,1)]; + S = Star([obj.c obj.V], C, d, lb, ub); + end + + % intersect with HalfSpace + function S = intersectHalfSpace(obj, H, g) + % @H: half space matrix + % @g: half space vector + % @S: intersection is a star + + % author: Dung Tran + % date: 10/20/2019 - S = Star([obj.c obj.V], Pa.A, Pa.b, lb, ub); + S = obj.toStar; + S = S.intersectHalfSpace(H, g); end % plot a zonotope diff --git a/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_10_20.mat b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_10_20.mat new file mode 100644 index 0000000000..3a952133f9 Binary files /dev/null and b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_10_20.mat differ diff --git a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/outputSet.mat b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_3_20.mat similarity index 53% rename from code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/outputSet.mat rename to code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_3_20.mat index b66ed7ccb9..9cd922b06a 100644 Binary files a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/outputSet.mat and b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_3_20.mat differ diff --git a/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_5_20.mat b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_5_20.mat new file mode 100644 index 0000000000..ffa255683e Binary files /dev/null and b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_5_20.mat differ diff --git a/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_7_20.mat b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_7_20.mat new file mode 100644 index 0000000000..88d0a08b1e Binary files /dev/null and b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/controller_7_20.mat differ diff --git a/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/reach.m b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/reach.m new file mode 100644 index 0000000000..13d5dd8245 --- /dev/null +++ b/code/nnv/examples/NNCS/ACC/Verification/ACC_Linear/reach.m @@ -0,0 +1,52 @@ +% Reachability analysis for Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +A = [0 1 0 0 0 0; 0 0 1 0 0 0; 0 0 -2 0 0 0; 0 0 0 0 1 0; 0 0 0 0 0 1; 0 0 0 0 0 -2]; +B = transpose([0 0 2 0 0 0; 0 0 0 0 0 2]); +C = [1 0 0 -1 0 0; 0 1 0 0 -1 0; 0 0 0 0 1 0]; % feedback relative distance, relative velocity, longitudinal velocity + +D = [0 0; 0 0; 0 0]; + +plant = LinearODE(A, B, C, D); + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +feedbackMap = [0]; % feedback map, y[k] +ncs = NNCS(Controller, plant, feedbackMap); % the neural network control system diff --git a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_abs_dom.info b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_abs_dom.info index 3068d65732..624748059f 100644 --- a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_abs_dom.info +++ b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_abs_dom.info @@ -8,11 +8,11 @@ Number of outputs: 5 Reach Set Information Reachability method: abs-dom Number of cores used in computation: 1 -Layer 1 reach set consists of 1 sets that are computed in 1.01568 seconds -Layer 2 reach set consists of 1 sets that are computed in 0.96689 seconds -Layer 3 reach set consists of 1 sets that are computed in 0.93900 seconds -Layer 4 reach set consists of 1 sets that are computed in 0.93818 seconds -Layer 5 reach set consists of 1 sets that are computed in 0.99953 seconds -Layer 6 reach set consists of 1 sets that are computed in 1.33516 seconds -Output Layer reach set consists of 1 sets that are computed in 0.00366 seconds -Total reachable set computation time: 6.19811 \ No newline at end of file +Layer 1 reach set consists of 0 sets that are computed in 0.17359 seconds +Layer 2 reach set consists of 0 sets that are computed in 0.44865 seconds +Layer 3 reach set consists of 0 sets that are computed in 0.86023 seconds +Layer 4 reach set consists of 0 sets that are computed in 1.37030 seconds +Layer 5 reach set consists of 0 sets that are computed in 2.37540 seconds +Layer 6 reach set consists of 0 sets that are computed in 3.91956 seconds +Output Layer reach set consists of 0 sets that are computed in 0.00025 seconds +Total reachable set computation time: 9.14797 \ No newline at end of file diff --git a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_star.info b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_star.info index 946d5aedbe..4524ccfeb0 100644 --- a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_star.info +++ b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_star.info @@ -8,11 +8,11 @@ Number of outputs: 5 Reach Set Information Reachability method: approx-star Number of cores used in computation: 1 -Layer 1 reach set consists of 1 sets that are computed in 0.87637 seconds -Layer 2 reach set consists of 1 sets that are computed in 0.91573 seconds -Layer 3 reach set consists of 1 sets that are computed in 1.06084 seconds -Layer 4 reach set consists of 1 sets that are computed in 2.03269 seconds -Layer 5 reach set consists of 1 sets that are computed in 3.24850 seconds -Layer 6 reach set consists of 1 sets that are computed in 5.62896 seconds -Output Layer reach set consists of 1 sets that are computed in 0.00263 seconds -Total reachable set computation time: 13.76572 \ No newline at end of file +Layer 1 reach set consists of 0 sets that are computed in 0.37853 seconds +Layer 2 reach set consists of 0 sets that are computed in 0.42934 seconds +Layer 3 reach set consists of 0 sets that are computed in 0.70969 seconds +Layer 4 reach set consists of 0 sets that are computed in 2.10983 seconds +Layer 5 reach set consists of 0 sets that are computed in 4.86554 seconds +Layer 6 reach set consists of 0 sets that are computed in 8.91776 seconds +Output Layer reach set consists of 0 sets that are computed in 0.00049 seconds +Total reachable set computation time: 17.41118 \ No newline at end of file diff --git a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_zono.info b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_zono.info index bb663f5e65..4bc9ed9f2e 100644 --- a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_zono.info +++ b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/F_approx_zono.info @@ -8,11 +8,11 @@ Number of outputs: 5 Reach Set Information Reachability method: approx-zono Number of cores used in computation: 1 -Layer 1 reach set consists of 1 sets that are computed in 0.00929 seconds -Layer 2 reach set consists of 1 sets that are computed in 0.00993 seconds -Layer 3 reach set consists of 1 sets that are computed in 0.00701 seconds -Layer 4 reach set consists of 1 sets that are computed in 0.00881 seconds -Layer 5 reach set consists of 1 sets that are computed in 0.00890 seconds -Layer 6 reach set consists of 1 sets that are computed in 0.00840 seconds -Output Layer reach set consists of 1 sets that are computed in 0.00141 seconds -Total reachable set computation time: 0.05375 \ No newline at end of file +Layer 1 reach set consists of 0 sets that are computed in 0.02748 seconds +Layer 2 reach set consists of 0 sets that are computed in 0.00588 seconds +Layer 3 reach set consists of 0 sets that are computed in 0.00499 seconds +Layer 4 reach set consists of 0 sets that are computed in 0.00713 seconds +Layer 5 reach set consists of 0 sets that are computed in 0.00733 seconds +Layer 6 reach set consists of 0 sets that are computed in 0.00450 seconds +Output Layer reach set consists of 0 sets that are computed in 0.00074 seconds +Total reachable set computation time: 0.05805 \ No newline at end of file diff --git a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/reach_P1.m b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/reach_P1.m index 0a899a5810..c31300f684 100644 --- a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/reach_P1.m +++ b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/reach_P1.m @@ -46,5 +46,12 @@ [R4, ~] = F.reach(I, 'abs-dom'); % approximate reach set using abstract domain F.print('F_abs_dom.info'); % print all information to a file + +% NOTE ******** +% we just found out that I made a mistake of copying a wrong the outputSet.mat file for this property. +% the Zonotope, abstract-domain and approx-star cannot prove the safety +% property for this network which is wrongly stated in the FM2019 paper. We are sorry about this mistake +% Dung Tran: 10/11/2019 + save outputSet.mat R1 R2 R3 R4; diff --git a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/safety_checking_time.mat b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/safety_checking_time.mat index 2b17f6f14e..1505db9cdd 100644 Binary files a/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/safety_checking_time.mat and b/code/nnv/examples/Submission/FM2019/ACASXU/Verify P1/On N1_1/safety_checking_time.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACASXu/others_p12.mat b/code/nnv/examples/Submission/HSCC2020/ACASXu/others_p12.mat new file mode 100644 index 0000000000..f54697ef96 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACASXu/others_p12.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACASXu/others_p34.mat b/code/nnv/examples/Submission/HSCC2020/ACASXu/others_p34.mat new file mode 100644 index 0000000000..1ef9907474 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACASXu/others_p34.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACASXu/readme.txt b/code/nnv/examples/Submission/HSCC2020/ACASXu/readme.txt new file mode 100644 index 0000000000..909a7681f6 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACASXu/readme.txt @@ -0,0 +1,7 @@ +# These codes are generating the comparison between NNV tool, Reluplex, Marabou, Marabou_DNC, and ReluVal. + +1. The data file "other_p12" contains results of testing the first 9 ACASXu networks with properties p1 and p2 on Reluplex, Marabou, Marabou_DNC, and ReluVal. +2. The data file "other_p34" contains results of testing the 45 ACASXu networks with properties p3 and p4 on Reluplex, Marabou, Marabou_DNC, and ReluVal. +3. run "verify_p3_p4" to test the NNV tool for properties p3 and p4, and generate a comparison table with the aforementioned approaches (recommended). The NNV test results are stored into the variable "nnv". Running time: around 3 hours if we use 4 cores. + +4. run "verify_p1_p2" to test the NNV tool for properties p1 and p2, and generate a comparison table with the aforementioned approaches (not recommended due to large computational time and potential out-of-memory error). The NNV test results are stored into the variable "nnv". Running time: around 45 hours. diff --git a/code/nnv/examples/Submission/HSCC2020/ACASXu/verify_p1_p2.m b/code/nnv/examples/Submission/HSCC2020/ACASXu/verify_p1_p2.m new file mode 100644 index 0000000000..3dfed463c5 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACASXu/verify_p1_p2.m @@ -0,0 +1,175 @@ +clear + +P0 = 4; N1 = 1; N2 = 9; + +for n1 = 1:N1 + for n2 = 1:N2 + % %%%%%%%%%%%% exact star + R1 = compute_P0_N00_star(1, N1, N2); + % p1 + results = verify_P0_N00(1, N1, N2, R1); + nnv.p1.star.safe(end+1,1) = results.safe; + nnv.p1.star.set_num(end+1,1) = results.set_number; + nnv.p1.star.time(end+1,1) = results.total_time; + % p2 + results = verify_P0_N00(2, N1, N2, R1); + nnv.p2.star.safe(end+1,1) = results.safe; + nnv.p2.star.set_num(end+1,1) = results.set_number; + nnv.p2.star.time(end+1,1) = results.total_time; + R1 = []; + + end +end + + +save history12.mat + +%% +load others_p12.mat % load results of reluplex, marabou and reluval +property_str = ["p1","p2"]; +method_str = {"reluplex";"marabou";"maradnc";"reluval";"star"}; +for p_temp = property_str + fprintf("Table of "+p_temp+": \n") + + SAT = []; UNSAT=[]; UNK= []; TIMEOUT_1h=[]; TIMEOUT_2h=[]; TIMEOUT_10h=[]; TIME = []; + for n = 1:length(method_str) + method_temp = method_str{n}; + if n<=4 + time_temp = others.(p_temp).(method_temp).time; + safe_temp = others.(p_temp).(method_temp).safe; + else + time_temp = nnv.(p_temp).(method_temp).time; + safe_temp = nnv.(p_temp).(method_temp).safe; + end + + SAT = [SAT; length(find(safe_temp==0))]; % unsafe + UNSAT = [UNSAT; length(find(safe_temp==1))]; % safe + UNK = [UNK; length(find(safe_temp==-1))]; % unknown + TIMEOUT_1h = [TIMEOUT_1h; length(find(time_temp>=3600*1))]; + TIMEOUT_2h = [TIMEOUT_2h; length(find(time_temp>=3600*2))]; + TIMEOUT_10h = [TIMEOUT_10h; length(find(time_temp>=3600*10))]; + TIME = [TIME; sum(time_temp)]; % total time + + end + T = table(method_str,SAT,UNSAT,UNK,TIMEOUT_1h,TIMEOUT_2h,TIMEOUT_10h, TIME) + filename = ["Table of "+p_temp+".txt"]; + writetable(T,filename) +end + + +%% helper function +function R1 = compute_P0_N00_star(P0, N1, N2) + + load(['ACASXU_run2a_',num2str(N1),'_',num2str(N2),'_batch_2000.mat']); + switch P0 + case 1 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-1500]; + case 2 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + case 3 + lb = [1500; -0.06; 3.1; 980; 960]; + ub = [1800; 0.06; 3.14; 1200; 1200]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + case 4 + lb = [1500; -0.06; 0; 1000; 700]; + ub = [1800; 0.06; 0; 1200; 800]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + end + + Layers = []; + n = length(b); + for i=1:n - 1 + bi = cell2mat(b(i)); + Wi = cell2mat(W(i)); + Li = LayerS(Wi, bi, 'poslin'); + Layers = [Layers Li]; + end + bn = cell2mat(b(n)); + Wn = cell2mat(W(n)); + Ln = LayerS(Wn, bn, 'purelin'); + + Layers = [Layers Ln]; + F = FFNNS(Layers); + + % normalize input + for i=1:5 + lb(i) = (lb(i) - means_for_scaling(i))/range_for_scaling(i); + ub(i) = (ub(i) - means_for_scaling(i))/range_for_scaling(i); + end + + I = Star(lb, ub); + + numCores = parcluster('local').NumWorkers; + + [R1, ~] = F.reach(I, 'exact-star', numCores); % exact reach set using star + +end + +function results = verify_P0_N00(P0, N1, N2, R1) + + load(['ACASXU_run2a_',num2str(N1),'_',num2str(N2),'_batch_2000.mat']); + + switch P0 + case 1 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-1500]; + case 2 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + case 3 + lb = [1500; -0.06; 3.1; 980; 960]; + ub = [1800; 0.06; 3.14; 1200; 1200]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + case 4 + lb = [1500; -0.06; 0; 1000; 700]; + ub = [1800; 0.06; 0; 1200; 800]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + end + normalized_mat = range_for_scaling(6) * eye(5); + normalized_vec = means_for_scaling(6) * ones(5,1); + + t = tic; + n = length(R1); + R1_norm = []; + parfor i=1:n + R1_norm = [R1_norm R1(i).affineMap(normalized_mat, normalized_vec)]; % exact normalized reach set + end + check_time = toc(t); + + t = tic; + fprintf('\nVerifying exact star reach set...'); + unsafe = 0; + n = length(R1); + parfor i=1:n + S = R1_norm(i).intersectHalfSpace(unsafe_mat, unsafe_vec); + if ~isempty(S) + unsafe = unsafe + 1; + end + end + + check_time = check_time + toc(t); + + if unsafe>=1 + safe = 0; + else + safe = 1; + end + + results.safe = safe; + results.set_number = length(F.outputSet); + results.total_time = check_time + F.totalReachTime; +end \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACASXu/verify_p3_p4.m b/code/nnv/examples/Submission/HSCC2020/ACASXu/verify_p3_p4.m new file mode 100644 index 0000000000..8f27d58bab --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACASXu/verify_p3_p4.m @@ -0,0 +1,429 @@ +clear + +P0 = 4; N1 = 5; N2 = 9; +for p0=3:4 + star.safe = []; star.set_num = []; star.time = []; + star_appr.safe = []; star_appr.set_num = []; star_appr.time = []; + abs.safe = []; abs.set_num = []; abs.time = []; + zono.safe = []; zono.set_num = []; zono.time = []; + + for n1 = 1:N1 + for n2 = 1:N2 + % %%%%%%%%%%%% exact star + [results, ~] = verify_P0_N00_star(p0, n1, n2); + star.safe(end+1,1) = results.safe; + star.set_num(end+1,1) = results.set_number; + star.time(end+1,1) = results.total_time; + + % %%%%%%%%%%%% approximated star + [results, ~] = verify_P0_N00_star_appr(p0, n1, n2); + star_appr.safe(end+1,1) = results.safe; + star_appr.set_num(end+1,1) = results.set_number; + star_appr.time(end+1,1) = results.total_time; + + % %%%%%%%%%%%% abstract domain + [results, ~] = verify_P0_N00_abs(p0, n1, n2); + abs.safe(end+1,1) = results.safe; + abs.set_num(end+1,1) = results.set_number; + abs.time(end+1,1) = results.total_time; + + % %%%%%%%%%%%%% zonotope + [results, ~] = verify_P0_N00_zono(p0, n1, n2); + zono.safe(end+1,1) = results.safe; + zono.set_num(end+1,1) = results.set_number; + zono.time(end+1,1) = results.total_time; + + end + end + + switch p0 + case 1 + results_p1.star = star; + results_p1.star_appr = star_appr; + results_p1.abs = abs; + results_p1.zono = zono; + nnv.p1 = results_p1; + case 2 + results_p2.star = star; + results_p2.star_appr = star_appr; + results_p2.abs = abs; + results_p2.zono = zono; + nnv.p2 = results_p2; + case 3 + results_p3.star = star; + results_p3.star_appr = star_appr; + results_p3.abs = abs; + results_p3.zono = zono; + nnv.p3 = results_p3; + case 4 + results_p4.star = star; + results_p4.star_appr = star_appr; + results_p4.abs = abs; + results_p4.zono = zono; + nnv.p4 = results_p4; + end + + +end + +save history34.mat + +%% +load others_p34.mat % load results of reluplex, marabou and reluval +property_str = ["p3","p4"]; +method_str = {"reluplex";"marabou";"maradnc";"reluval";"zono";"abs";"star";"star_appr"}; +for p_temp = property_str + fprintf("Table of "+p_temp+": \n") + + SAT = []; UNSAT=[]; UNK= []; TIMEOUT_1h=[]; TIMEOUT_2h=[]; TIMEOUT_10h=[]; TIME = []; + for n = 1:length(method_str) + method_temp = method_str{n}; + if n<=4 + time_temp = others.(p_temp).(method_temp).time; + safe_temp = others.(p_temp).(method_temp).safe; + else + time_temp = nnv.(p_temp).(method_temp).time; + safe_temp = nnv.(p_temp).(method_temp).safe; + end + + SAT = [SAT; length(find(safe_temp==0))]; % unsafe + UNSAT = [UNSAT; length(find(safe_temp==1))]; % safe + UNK = [UNK; length(find(safe_temp==-1))]; % unknown + TIMEOUT_1h = [TIMEOUT_1h; length(find(time_temp>=3600*1))]; + TIMEOUT_2h = [TIMEOUT_2h; length(find(time_temp>=3600*2))]; + TIMEOUT_10h = [TIMEOUT_10h; length(find(time_temp>=3600*10))]; + TIME = [TIME; sum(time_temp)]; % total time + + end + T = table(method_str,SAT,UNSAT,UNK,TIMEOUT_1h,TIMEOUT_2h,TIMEOUT_10h, TIME) + filename = ["Table-of-"+p_temp+".txt"]; + writetable(T,filename) +end + + +%% helper functions +function [results, R1]= verify_P0_N00_abs(P0, N1, N2) + +% addpath(genpath("../../engine")); +% addpath(genpath("../../tbxmanager")); +% addpath("nnet-mat-files/") +load(['ACASXU_run2a_',num2str(N1),'_',num2str(N2),'_batch_2000.mat']); + +switch P0 + case 1 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-1500]; + case 2 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + case 3 + lb = [1500; -0.06; 3.1; 980; 960]; + ub = [1800; 0.06; 3.14; 1200; 1200]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + case 4 + lb = [1500; -0.06; 0; 1000; 700]; + ub = [1800; 0.06; 0; 1200; 800]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; +end + +Layers = []; +n = length(b); +for i=1:n - 1 + bi = cell2mat(b(i)); + Wi = cell2mat(W(i)); + Li = LayerS(Wi, bi, 'poslin'); + Layers = [Layers Li]; +end +bn = cell2mat(b(n)); +Wn = cell2mat(W(n)); +Ln = LayerS(Wn, bn, 'purelin'); + +Layers = [Layers Ln]; +F = FFNNS(Layers); + +% normalize input +for i=1:5 + lb(i) = (lb(i) - means_for_scaling(i))/range_for_scaling(i); + ub(i) = (ub(i) - means_for_scaling(i))/range_for_scaling(i); +end + +I = Star(lb, ub); + + +[R1, ~] = F.reach(I, 'abs-dom'); % approximate reach set using abstract domain + +normalized_mat = range_for_scaling(6) * eye(5); +normalized_vec = means_for_scaling(6) * ones(5,1); + +t = tic; +R1_norm = R1.affineMap(normalized_mat, normalized_vec); % over-approximate normalized reach set using abstract domain +S = R1_norm.intersectHalfSpace(unsafe_mat, unsafe_vec); +check_time = toc(t); + +if isempty(S) + safe = 1; +else + safe = -1; +end +results.safe = safe; +results.set_number = length(F.outputSet); +results.total_time = check_time + F.totalReachTime; +%save(['batch_abs\P',num2str(P0),'_N',num2str(N1),num2str(N2),'_abs.mat'],'results') +end + +function [results, R1] = verify_P0_N00_zono(P0, N1, N2) + +% addpath(genpath("../../engine")); +% addpath(genpath("../../tbxmanager")); +% addpath("nnet-mat-files/") +load(['ACASXU_run2a_',num2str(N1),'_',num2str(N2),'_batch_2000.mat']); + +switch P0 + case 1 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-1500]; + case 2 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + case 3 + lb = [1500; -0.06; 3.1; 980; 960]; + ub = [1800; 0.06; 3.14; 1200; 1200]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + case 4 + lb = [1500; -0.06; 0; 1000; 700]; + ub = [1800; 0.06; 0; 1200; 800]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; +end + +Layers = []; +n = length(b); +for i=1:n - 1 + bi = cell2mat(b(i)); + Wi = cell2mat(W(i)); + Li = LayerS(Wi, bi, 'poslin'); + Layers = [Layers Li]; +end +bn = cell2mat(b(n)); +Wn = cell2mat(W(n)); +Ln = LayerS(Wn, bn, 'purelin'); + +Layers = [Layers Ln]; +F = FFNNS(Layers); + +% normalize input +for i=1:5 + lb(i) = (lb(i) - means_for_scaling(i))/range_for_scaling(i); + ub(i) = (ub(i) - means_for_scaling(i))/range_for_scaling(i); +end + +I = Star(lb, ub); + + +[R1, ~] = F.reach(I.getZono, 'approx-zono'); % approximate reach set using zonotope + +normalized_mat = range_for_scaling(6) * eye(5); +normalized_vec = means_for_scaling(6) * ones(5,1); + +t = tic; +R1_norm = R1.affineMap(normalized_mat, normalized_vec); % over-approximate normalized reach set using zonotope +R = R1_norm.toStar; +S = R.intersectHalfSpace(unsafe_mat, unsafe_vec); + +check_time = toc(t); +if isempty(S) + safe = 1; +else + safe = -1; +end +results.safe = safe; +results.set_number = length(F.outputSet); +results.total_time = check_time + F.totalReachTime; +%save(['batch_zono\P',num2str(P0),'_N',num2str(N1),num2str(N2),'_zono.mat'],'results') + +end + +function [results, R1] = verify_P0_N00_star_appr(P0, N1, N2) + +% addpath(genpath("../../engine")); +% addpath(genpath("../../tbxmanager")); +% addpath("nnet-mat-files/") +load(['ACASXU_run2a_',num2str(N1),'_',num2str(N2),'_batch_2000.mat']); + +switch P0 + case 1 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-1500]; + case 2 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + case 3 + lb = [1500; -0.06; 3.1; 980; 960]; + ub = [1800; 0.06; 3.14; 1200; 1200]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + case 4 + lb = [1500; -0.06; 0; 1000; 700]; + ub = [1800; 0.06; 0; 1200; 800]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; +end + +Layers = []; +n = length(b); +for i=1:n - 1 + bi = cell2mat(b(i)); + Wi = cell2mat(W(i)); + Li = LayerS(Wi, bi, 'poslin'); + Layers = [Layers Li]; +end +bn = cell2mat(b(n)); +Wn = cell2mat(W(n)); +Ln = LayerS(Wn, bn, 'purelin'); + +Layers = [Layers Ln]; +F = FFNNS(Layers); + +% normalize input +for i=1:5 + lb(i) = (lb(i) - means_for_scaling(i))/range_for_scaling(i); + ub(i) = (ub(i) - means_for_scaling(i))/range_for_scaling(i); +end + +I = Star(lb, ub); + + +[R1, ~] = F.reach(I, 'approx-star'); % approximate reach set using star + +normalized_mat = range_for_scaling(6) * eye(5); +normalized_vec = means_for_scaling(6) * ones(5,1); + +t = tic; +fprintf('\nVerifying over-approximate star reach set...'); +R1_norm = R1.affineMap(normalized_mat, normalized_vec); % over-approximate normalized reach set using star +S = R1_norm.intersectHalfSpace(unsafe_mat, unsafe_vec); +check_time = toc(t); + +if isempty(S) + safe = 1; +else + safe = -1; +end + +results.safe = safe; +results.set_number = length(F.outputSet); +results.total_time = check_time + F.totalReachTime; +%save(['batch_star_appr\P',num2str(P0),'_N',num2str(N1),num2str(N2),'_star_appr.mat'],'results') + +end + +function [results, R1] = verify_P0_N00_star(P0, N1, N2) + +% addpath(genpath("../../engine")); +% addpath(genpath("../../tbxmanager")); +% addpath("nnet-mat-files/") +load(['ACASXU_run2a_',num2str(N1),'_',num2str(N2),'_batch_2000.mat']); + +switch P0 + case 1 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-1500]; + case 2 + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + case 3 + lb = [1500; -0.06; 3.1; 980; 960]; + ub = [1800; 0.06; 3.14; 1200; 1200]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; + case 4 + lb = [1500; -0.06; 0; 1000; 700]; + ub = [1800; 0.06; 0; 1200; 800]; + unsafe_mat = [1 -1 0 0 0; 1 0 -1 0 0; 1 0 0 -1 0; 1 0 0 0 -1]; + unsafe_vec = [0; 0; 0; 0]; +end + +Layers = []; +n = length(b); +for i=1:n - 1 + bi = cell2mat(b(i)); + Wi = cell2mat(W(i)); + Li = LayerS(Wi, bi, 'poslin'); + Layers = [Layers Li]; +end +bn = cell2mat(b(n)); +Wn = cell2mat(W(n)); +Ln = LayerS(Wn, bn, 'purelin'); + +Layers = [Layers Ln]; +F = FFNNS(Layers); + +% normalize input +for i=1:5 + lb(i) = (lb(i) - means_for_scaling(i))/range_for_scaling(i); + ub(i) = (ub(i) - means_for_scaling(i))/range_for_scaling(i); +end + +I = Star(lb, ub); + +c = parcluster('local'); +numCores = c.NumWorkers; + +[R1, ~] = F.reach(I, 'exact-star', numCores); % exact reach set using star + +normalized_mat = range_for_scaling(6) * eye(5); +normalized_vec = means_for_scaling(6) * ones(5,1); + +t = tic; +n = length(R1); +R1_norm = []; +parfor i=1:n + R1_norm = [R1_norm R1(i).affineMap(normalized_mat, normalized_vec)]; % exact normalized reach set +end +check_time = toc(t); + +t = tic; +fprintf('\nVerifying exact star reach set...'); +unsafe = 0; +n = length(R1); +parfor i=1:n + S = R1_norm(i).intersectHalfSpace(unsafe_mat, unsafe_vec); + if ~isempty(S) + unsafe = unsafe + 1; + end +end + +check_time = check_time + toc(t); + +if unsafe>=1 + safe = 0; +else + safe = 1; +end + +results.safe = safe; +results.set_number = length(F.outputSet); +results.total_time = check_time + F.totalReachTime; +%save(['batch_star\P',num2str(P0),'_N',num2str(N1),num2str(N2),'_star.mat'],'results') + +end + diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/How to run ACC case study.txt b/code/nnv/examples/Submission/HSCC2020/ACC/How to run ACC case study.txt new file mode 100644 index 0000000000..817dd3e8eb --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/How to run ACC case study.txt @@ -0,0 +1,32 @@ + +NOTE***: To run ACC case study, we need to have CORA installed. + +1) Install NNV: + + a) git clone --recursive https://github.com/verivital/nnv.git + + b) go to ..code/nnv/ folder to run install.m + +2) Run ACC case study: + + a) Run ACC with discrete linear plant model: + + a1) using exact analysis: run verify_discrete_ACC_exact_star.m + + total runtime is about 5.5 hours + + a2) using approximate analysis: run verify_discrete_ACC_approx_star.m + + total runtime is about 4 minutes + + b) Run ACC with nonlinear plant model using approx-star method + + run verify_nonlinear_ACC.m + + total runtime is about 30 minutes + +NOTE***: + +We use 4 cores for computation. If your computer does not have >= 4 cores + +Set numCores (or n_cores) parameter (default = 4) in the script to a suitable number \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/car_dynamics.m b/code/nnv/examples/Submission/HSCC2020/ACC/car_dynamics.m new file mode 100644 index 0000000000..86cc73e422 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/car_dynamics.m @@ -0,0 +1,21 @@ +function [dx]=car_dynamics(t,x,a_ego) + +mu=0.0001; % friction parameter + +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead car dynamics +a_lead = -5; +dx(1,1)=x(2); +dx(2,1) = x(3); +dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; +% ego car dyanmics +dx(4,1)= x(5); +dx(5,1) = x(6); +dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/controller_5_20.mat b/code/nnv/examples/Submission/HSCC2020/ACC/controller_5_20.mat new file mode 100644 index 0000000000..ffa255683e Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/controller_5_20.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/counterExample.fig b/code/nnv/examples/Submission/HSCC2020/ACC/counterExample.fig new file mode 100644 index 0000000000..290218a3e3 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/counterExample.fig differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/counterExample.pdf b/code/nnv/examples/Submission/HSCC2020/ACC/counterExample.pdf new file mode 100644 index 0000000000..2cb51828c1 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/counterExample.pdf differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/dis_ACC_ncs_1.mat b/code/nnv/examples/Submission/HSCC2020/ACC/dis_ACC_ncs_1.mat new file mode 100644 index 0000000000..230ead4c85 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/dis_ACC_ncs_1.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/dis_ACC_ncs_6.mat b/code/nnv/examples/Submission/HSCC2020/ACC/dis_ACC_ncs_6.mat new file mode 100644 index 0000000000..38ce35747e Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/dis_ACC_ncs_6.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_approx_star.mat b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_approx_star.mat new file mode 100644 index 0000000000..d1fbb18444 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_approx_star.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_approx_star.txt b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_approx_star.txt new file mode 100644 index 0000000000..a7db4640f5 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_approx_star.txt @@ -0,0 +1,14 @@ + +====================================================== +VERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL +====================================================== +v_lead(0) approx-star + safety | VT +[29 30] SAFE | 15.764 +[28 29] SAFE | 14.479 +[27 28] SAFE | 17.387 +[26 27] UNSAFE | 31.844 +[25 26] UNSAFE | 41.238 +[24 25] UNSAFE | 43.326 +------------------------------------------------------- +Total verification time: 164.038 \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_verification_results.mat b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_verification_results.mat new file mode 100644 index 0000000000..bf2a8da9fc Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_verification_results.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_verification_results.txt b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_verification_results.txt new file mode 100644 index 0000000000..b3e84f5502 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/discrete_ACC_verification_results.txt @@ -0,0 +1,16 @@ + +====================================================== +VERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL +====================================================== +x_lead(0) exact-star approx-star + safety | VT safety | VT +[29 30] | 0.000 | 0.000 +[28 29] | 0.000 | 0.000 +[27 28] | 0.000 | 0.000 +[26 27] | 0.000 | 0.000 +[25 26] | 0.000 | 0.000 +[24 25] | 0.000 UNSAFE | 49.589 +[23 24] | 0.000 | 0.000 +[22 23] | 0.000 | 0.000 +[21 22] | 0.000 | 0.000 +[20 21] | 0.000 | 0.000 \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/nonlinear_ACC.txt b/code/nnv/examples/Submission/HSCC2020/ACC/nonlinear_ACC.txt new file mode 100644 index 0000000000..a3ee54ff83 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/nonlinear_ACC.txt @@ -0,0 +1,14 @@ + +======================================================= +VERIFICATION RESULTS FOR ACC WITH NONLINEAR PLANT MODEL +======================================================= +v_lead(0) approx-star + safety | VT +[29 30] UNSAFE | 265.006 +[28 29] UNSAFE | 283.954 +[27 28] UNSAFE | 292.673 +[26 27] UNSAFE | 294.249 +[25 26] UNSAFE | 300.120 +[24 25] UNSAFE | 276.630 +------------------------------------------------------- +Total verification time: 1712.633 \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/plot_discrete_ACC_reachSets.m b/code/nnv/examples/Submission/HSCC2020/ACC/plot_discrete_ACC_reachSets.m new file mode 100644 index 0000000000..afbfcf1db4 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/plot_discrete_ACC_reachSets.m @@ -0,0 +1,49 @@ +% Plot reachable sets for Discrete Linear ACC model +% Dung Tran: 10/22/2019 + + + +%% Plot output reach sets: actual distance vs. safe distance + +% plot reachable set of the distance between two cars d = x1 - x4 vs. ego +% car's velocity + +figure; +h1 = subplot(2,1,1); +load dis_ACC_ncs_1.mat; +map_mat = [1 0 0 -1 0 0 0]; +map_vec = []; +ncs.plotOutputReachSets('blue', map_mat, map_vec); +hold on; +% plot safe distance between two cars: d_safe = D_default + t_gap * v_ego; +% D_default = 10; t_gap = 1.4 +% d_safe = 10 + 1.4 * x5; + +map_mat = [0 0 0 0 1.4 0 0]; +map_vec = [10]; +ncs.plotOutputReachSets('red', map_mat, map_vec); +title(h1,'Actual Distance (blue) vs. Safe Distance (red)'); +xlabel(h1, 'Control Time Steps'); +ylabel(h1, 'Distance'); +xticks(h1, [0:5:50]) + +h2 = subplot(2,1,2); +load dis_ACC_ncs_6.mat; +map_mat = [1 0 0 -1 0 0 0]; +map_vec = []; +ncs.plotOutputReachSets('blue', map_mat, map_vec); +hold on; +% plot safe distance between two cars: d_safe = D_default + t_gap * v_ego; +% D_default = 10; t_gap = 1.4 +% d_safe = 10 + 1.4 * x5; + +map_mat = [0 0 0 0 1.4 0 0]; +map_vec = [10]; +ncs.plotOutputReachSets('red', map_mat, map_vec); +title(h2,'Actual Distance (blue) vs. Safe Distance (red)'); +xlabel(h2, 'Control Time Steps'); +ylabel(h2, 'Distance'); +xticks(h2, [0:5:50]) + + +%% END OF SCRIPT \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/plot_nonlinear_ACC_counterExamples.m b/code/nnv/examples/Submission/HSCC2020/ACC/plot_nonlinear_ACC_counterExamples.m new file mode 100644 index 0000000000..a5a76d1002 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/plot_nonlinear_ACC_counterExamples.m @@ -0,0 +1,17 @@ +cI = counterExamples{1}; +cI = cell2mat(cI); +d_rel = [1 0 0 -1 0 0]*cI; +d_safe = [0 0 0 1.4 0 0]*cI + 10; + +figure; +T = 0:1:50; +plot(T, d_rel, 'blue'); +hold on; +plot(T, d_safe, 'red'); + +xlabel('Control Time Steps', 'FontSize', 13); +ylabel('Distance', 'FontSize', 13); +xticks([0:5:50]); +a = get(gca,'XTickLabel'); +set(gca,'XTickLabel',a,'FontName','Times','fontsize',13) +title('Actual Distance (blue) vs. Safe Distance (red)'); diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/reachSet.fig b/code/nnv/examples/Submission/HSCC2020/ACC/reachSet.fig new file mode 100644 index 0000000000..38fd03b6b6 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/reachSet.fig differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/reachSet.pdf b/code/nnv/examples/Submission/HSCC2020/ACC/reachSet.pdf new file mode 100644 index 0000000000..006dc2a3ee Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/reachSet.pdf differ diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC.m b/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC.m new file mode 100644 index 0000000000..96baa5839b --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC.m @@ -0,0 +1,173 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -5 + + +%% Controller +load controller_5_20.mat; + +weights = network.weights; +bias = network.bias; +n = length(weights); +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 92]; +% initial condition of v_lead +v_lead = cell(10, 1); +v_lead{1, 1} = [29 30]; +v_lead{2, 1} = [28 29]; +v_lead{3, 1} = [27 28]; +v_lead{4, 1} = [26 27]; +v_lead{5, 1} = [25 26]; +v_lead{6, 1} = [24 25]; +v_lead{7, 1} = [23 24]; +v_lead{8, 1} = [22 23]; +v_lead{9, 1} = [21 22]; +v_lead{10, 1} = [20 21]; + +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [30 31]; +% initial condition of v_ego +v_ego = [30 30.5]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; + +a_lead = -5; +% initial condition for new introduced variable +x7_0 = [2*a_lead 2*a_lead]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + +N = length(v_lead); +for i=1:N + lb = [x_lead(1); v_lead{i}(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; + ub = [x_lead(2); v_lead{i}(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; + init_set(i) = Star(lb, ub); +end + + + +%% Reachability Analysis && Verification +numSteps = 50; +numCores = 4; +% safety property: actual distance > alpha * safe distance <=> d = x1 - x4 > alpha * d_safe = alpha * (1.4 * v_ego + 10) + +% usafe region: x1 - x4 <= alpha * (1.4 * v_ego + 10) +alpha = 1; +unsafe_mat = [1 0 0 -1 -alpha*1.4 0 0]; +unsafe_vec = alpha*10; + +% N = 1; % just for testing +safe_exact = cell(1,N); +VT_exact = zeros(1, N); +counterExamples_exact = cell(1, N); +dis_ACC_exact = cell(1,N); + +for i=1:N + [safe_exact{i}, counterExamples_exact{i}, VT_exact(i)] = ncs.verify(init_set(i), ref_input, numSteps, 'exact-star', numCores, unsafe_mat, unsafe_vec); + dis_ACC_exact{i} = ncs; %store for plotting reachable sets +end + + +safe_approx = cell(1, N); +VT_approx = zeros(1, N); +counterExamples_approx = cell(1, N); +dis_ACC_approx = cell(1, N); + +for i=1:N + [safe_approx{i}, counterExamples_approx{i}, VT_approx(i)] = ncs.verify(init_set(i), ref_input, numSteps, 'approx-star', numCores, unsafe_mat, unsafe_vec); + dis_ACC_approx{i} = ncs; % store for plotting reachable sets +end + + +%% Safe verification results + +save discrete_ACC_verification_results.mat safe_exact VT_exact counterExamples_exact safe_approx VT_approx counterExamples_approx dis_ACC_exact dis_ACC_approx; + +%% Print verification results to screen +fprintf('\n======================================================'); +fprintf('\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); +fprintf('\n======================================================'); +fprintf('\nv_lead(0) exact-star approx-star '); +fprintf('\n safety | VT safety | VT '); +fprintf('\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{1}(1), v_lead{1}(2), safe_exact{1}, VT_exact(1), safe_approx{1}, VT_approx(1)); +for i=2:N +fprintf('\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_exact{i}, VT_exact(i), safe_approx{i}, VT_approx(i)); +end + +%% Print verification results to a file + +fid = fopen('discrete_ACC_verification_results.txt', 'wt'); +fprintf(fid,'\n======================================================'); +fprintf(fid,'\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); +fprintf(fid,'\n======================================================'); +fprintf(fid,'\nx_lead(0) exact-star approx-star '); +fprintf(fid,'\n safety | VT safety | VT '); +fprintf(fid,'\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{1}(1), v_lead{1}(2), safe_exact{1}, VT_exact(1), safe_approx{1}, VT_approx(1)); +for i=2:N +fprintf(fid,'\n[%d %d] %s | %3.3f %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_exact{i}, VT_exact(i), safe_approx{i}, VT_approx(i)); +end +fclose(fid); + +%% END diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC_approx_star.m b/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC_approx_star.m new file mode 100644 index 0000000000..6a5819bc7d --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC_approx_star.m @@ -0,0 +1,161 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -5 + + +%% Controller +load controller_5_20.mat; + +weights = network.weights; +bias = network.bias; +n = length(weights); +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 92]; +% initial condition of v_lead +v_lead = cell(6, 1); +v_lead{1, 1} = [29 30]; +v_lead{2, 1} = [28 29]; +v_lead{3, 1} = [27 28]; +v_lead{4, 1} = [26 27]; +v_lead{5, 1} = [25 26]; +v_lead{6, 1} = [24 25]; + +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [30 31]; +% initial condition of v_ego +v_ego = [30 30.5]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; + +a_lead = -5; +% initial condition for new introduced variable +x7_0 = [2*a_lead 2*a_lead]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + +N = length(v_lead); +for i=1:N + lb = [x_lead(1); v_lead{i}(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; + ub = [x_lead(2); v_lead{i}(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; + init_set(i) = Star(lb, ub); +end + + + +%% Reachability Analysis && Verification +numSteps = 50; +numCores = 4; +% safety property: actual distance > alpha * safe distance <=> d = x1 - x4 > alpha * d_safe = alpha * (1.4 * v_ego + 10) + +% usafe region: x1 - x4 <= alpha * (1.4 * v_ego + 10) +alpha = 1; +unsafe_mat = [1 0 0 -1 -alpha*1.4 0 0]; +unsafe_vec = alpha*10; + +% N = 1; % just for testing + +safe_approx = cell(1, N); +VT_approx = zeros(1, N); +counterExamples_approx = cell(1, N); +dis_ACC_approx = cell(1, N); + +for i=1:N + [safe_approx{i}, counterExamples_approx{i}, VT_approx(i)] = ncs.verify(init_set(i), ref_input, numSteps, 'approx-star', numCores, unsafe_mat, unsafe_vec); +end + + +%% Safe verification results + +save discrete_ACC_approx_star.mat safe_approx VT_approx counterExamples_approx; + +%% Print verification results to screen +fprintf('\n======================================================'); +fprintf('\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); +fprintf('\n======================================================'); +fprintf('\nv_lead(0) approx-star '); +fprintf('\n safety | VT '); +for i=1:N +fprintf('\n[%d %d] %s %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_approx{i}, VT_approx(i)); +end +fprintf('\n-------------------------------------------------------'); +fprintf('\nTotal verification time: %3.3f', sum(VT_approx)); + +%% Print verification results to a file + +fid = fopen('discrete_ACC_approx_star.txt', 'wt'); + +fprintf(fid,'\n======================================================'); +fprintf(fid,'\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); +fprintf(fid,'\n======================================================'); +fprintf(fid,'\nv_lead(0) approx-star '); +fprintf(fid,'\n safety | VT '); +for i=1:N +fprintf(fid,'\n[%d %d] %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_approx{i}, VT_approx(i)); +end +fprintf(fid,'\n-------------------------------------------------------'); +fprintf(fid,'\nTotal verification time: %3.3f', sum(VT_approx)); +fclose(fid); + +%% END diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC_exact_star.m b/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC_exact_star.m new file mode 100644 index 0000000000..51ba7c8e8e --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/verify_discrete_ACC_exact_star.m @@ -0,0 +1,161 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -5 + + +%% Controller +load controller_5_20.mat; + +weights = network.weights; +bias = network.bias; +n = length(weights); +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 92]; +% initial condition of v_lead +v_lead = cell(6, 1); +v_lead{1, 1} = [29 30]; +v_lead{2, 1} = [28 29]; +v_lead{3, 1} = [27 28]; +v_lead{4, 1} = [26 27]; +v_lead{5, 1} = [25 26]; +v_lead{6, 1} = [24 25]; + +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [30 31]; +% initial condition of v_ego +v_ego = [30 30.5]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; + +a_lead = -5; +% initial condition for new introduced variable +x7_0 = [2*a_lead 2*a_lead]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + +N = length(v_lead); +for i=1:N + lb = [x_lead(1); v_lead{i}(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; + ub = [x_lead(2); v_lead{i}(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; + init_set(i) = Star(lb, ub); +end + + + +%% Reachability Analysis && Verification +numSteps = 50; +numCores = 4; +% safety property: actual distance > alpha * safe distance <=> d = x1 - x4 > alpha * d_safe = alpha * (1.4 * v_ego + 10) + +% usafe region: x1 - x4 <= alpha * (1.4 * v_ego + 10) +alpha = 1; +unsafe_mat = [1 0 0 -1 -alpha*1.4 0 0]; +unsafe_vec = alpha*10; + +% N = 1; % just for testing + +safe_exact = cell(1,N); +VT_exact = zeros(1, N); +counterExamples_exact = cell(1, N); +dis_ACC_exact = cell(1,N); + +for i=1:N + [safe_exact{i}, counterExamples_exact{i}, VT_exact(i)] = ncs.verify(init_set(i), ref_input, numSteps, 'exact-star', numCores, unsafe_mat, unsafe_vec); + dis_ACC_exact{i} = ncs; %store for plotting reachable sets +end + +%% Safe verification results + +save discrete_ACC_exact_star.mat safe_exact VT_exact counterExamples_exact; + +%% Print verification results to screen +fprintf('\n======================================================'); +fprintf('\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); +fprintf('\n======================================================'); +fprintf('\nv_lead(0) exact-star '); +fprintf('\n safety | VT '); +for i=1:N +fprintf('\n[%d %d] %s %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_exact{i}, VT_exact(i)); +end +fprintf('\n-------------------------------------------------------'); +fprintf('\nTotal verification time: %3.3f', sum(VT_approx)); + +%% Print verification results to a file + +fid = fopen('discrete_ACC_exact_star.txt', 'wt'); + +fprintf(fid,'\n======================================================'); +fprintf(fid,'\nVERIFICATION RESULTS FOR ACC WITH DISCRETE PLANT MODEL'); +fprintf(fid,'\n======================================================'); +fprintf(fid,'\nv_lead(0) exact-star '); +fprintf(fid,'\n safety | VT '); +for i=1:N +fprintf(fid,'\n[%d %d] %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe_exact{i}, VT_exact(i)); +end +fprintf(fid,'\n-------------------------------------------------------'); +fprintf(fid,'\nTotal verification time: %3.3f', sum(VT_exact)); +fclose(fid); + +%% END diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/verify_nonlinear_ACC.m b/code/nnv/examples/Submission/HSCC2020/ACC/verify_nonlinear_ACC.m new file mode 100644 index 0000000000..d9871a27d1 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/ACC/verify_nonlinear_ACC.m @@ -0,0 +1,161 @@ +load controller_5_20.mat; + +weights = network.weights; +bias = network.bias; +n = length(weights); +Layers = []; +for i=1:n - 1 + L = Layer(weights{1, i}, bias{i, 1}, 'ReLU'); + Layers = [Layers L]; +end + +L = Layer(weights{1, n}, bias{n, 1}, 'Linear'); + +Layers = [Layers L]; + +Controller = FFNN(Layers); % feedforward neural network controller +Plant = NonLinearODE(6, 1, @car_dynamics); +Plant.set_timeStep(0.01); % time step for reachability analysis of the plant +Plant.set_tFinal(0.1); % Ts = 0.1, sampling time for control signal from neural network controller +output_mat = [0 0 0 0 1 0;1 0 0 -1 0 0; 0 1 0 0 -1 0]; % feedback: relative distance, relative velocity and ego-car velocity +Plant.set_output_mat(output_mat); % Define the outputs that is feedback to the controller + +feedbackMap = [0]; % feedback map, y[k] + +ncs = NNCS(Controller, Plant, feedbackMap); % the neural network control system + +%% Construct initial conditions +% initial condition of the Plant + +% x = [x_lead v_lead internal_acc_lead x_ego v_ego internal_acc_ego]' + +% initial position of lead car x_lead +x_lead = [90 92]; +% initial condition of v_lead +v_lead = cell(6, 1); +v_lead{1, 1} = [29 30]; +v_lead{2, 1} = [28 29]; +v_lead{3, 1} = [27 28]; +v_lead{4, 1} = [26 27]; +v_lead{5, 1} = [25 26]; +v_lead{6, 1} = [24 25]; + + +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; + +n = length(v_lead); + +init_set(n) = Star(); + +for i=1:n + lb = [x_lead(1); v_lead{i}(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1)]; + ub = [x_lead(2); v_lead{i}(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2)]; + init_set(i) = Star(lb, ub); +end + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +lb = [30; 1.4]; +ub = [30; 1.4]; + +input_ref = Star(lb, ub); % input reference set + +%% Verification + +N = 50; % number of control steps + +n_cores = 4; % number of cores + +% safety specification: relative distance > safe distance +% dis = x_lead - x_ego +% safe distance between two cars, see here +% https://www.mathworks.com/help/mpc/examples/design-an-adaptive-cruise-control-system-using-model-predictive-control.html +% dis_safe = D_default + t_gap * v_ego; + +t_gap = 1.4; +D_default = 10; + +% safety specification: x_lead - x_ego - t_gap * v_ego - D_default > 0 +% unsafe region: x_lead - x_ego - t_gap * v_ego <= D_default + +unsafe_mat = [1 0 0 -1 -t_gap 0]; +unsafe_vec = [D_default]; + +safe = cell(1, n); % safety status +VT = zeros(1,n); % verification time +counterExamples = cell(1,n); % counter examples +for i=1:n + t = tic; + ncs.reach('approx-star', init_set(i), input_ref, n_cores, N); + [safe1, ~] = ncs.check_safety(unsafe_mat, unsafe_vec, n_cores); + if safe1 == 1 + safe{i} = 'SAFE'; + else + Bi = init_set(i).getBox; + Br = input_ref.getBox; + [rs, ~, counterExamples, ~, ~, ~] = ncs.falsify(0.1, N, Bi, Br, unsafe_mat, unsafe_vec, 1000); + + if rs == 1 + safe{i} = 'UNSAFE'; + else + safe{i} = 'UNKNOWN'; + end + end + VT(i) = toc(t); +end + +%% Safe verification results +save verify_nonlinear_ACC.mat safe VT counterExamples; + + +%% Print verification results to screen +fprintf('\n======================================================='); +fprintf('\nVERIFICATION RESULTS FOR ACC WITH NONLINEAR PLANT MODEL'); +fprintf('\n======================================================='); +fprintf('\nv_lead(0) approx-star '); +fprintf('\n safety | VT '); +for i=1:n +fprintf('\n[%d %d] %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe{i}, VT(i)); +end +fprintf('\n-------------------------------------------------------'); +fprintf('\nTotal verification time: %3.3f', sum(VT)); + +%% Print verification results to a file + +fid = fopen('nonlinear_ACC.txt', 'wt'); +fprintf(fid,'\n======================================================='); +fprintf(fid,'\nVERIFICATION RESULTS FOR ACC WITH NONLINEAR PLANT MODEL'); +fprintf(fid,'\n======================================================='); +fprintf(fid,'\nv_lead(0) approx-star '); +fprintf(fid,'\n safety | VT '); +for i=1:n +fprintf(fid,'\n[%d %d] %s | %3.3f ', v_lead{i}(1), v_lead{i}(2), safe{i}, VT(i)); +end +fprintf(fid,'\n-------------------------------------------------------'); +fprintf(fid,'\nTotal verification time: %3.3f', sum(VT)); +fclose(fid); + +%% Plot counter examples +cI = counterExamples{1}; +cI = cell2mat(cI); +d_rel = [1 0 0 -1 0 0]*cI; +d_safe = [0 0 0 1.4 0 0]*cI + 10; + +figure; +T = 0:1:50; +plot(T, d_rel, 'blue'); +hold on; +plot(T, d_safe, 'red'); + +xlabel('Control Time Steps', 'FontSize', 13); +ylabel('Distance', 'FontSize', 13); +xticks([0:5:50]); +title('Actual Distance (blue) vs. Safe Distance (red)'); \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/ACC/verify_nonlinear_ACC.mat b/code/nnv/examples/Submission/HSCC2020/ACC/verify_nonlinear_ACC.mat new file mode 100644 index 0000000000..716767a87e Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/ACC/verify_nonlinear_ACC.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/P1_results.txt b/code/nnv/examples/Submission/HSCC2020/TestACASXU/P1_results.txt new file mode 100644 index 0000000000..6693f1d09b --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/P1_results.txt @@ -0,0 +1,50 @@ +Network NNV-MSG + Safety | VT +--------------------------------------- +N_1_1 SAFE 14.875 +N_1_2 SAFE 15.248 +N_1_3 SAFE 23.070 +N_1_4 SAFE 14.017 +N_1_5 SAFE 10.773 +N_1_6 SAFE 11.640 +N_1_7 SAFE 7.088 +N_1_8 SAFE 3.787 +N_1_9 SAFE 2.990 +N_2_1 SAFE 17.505 +N_2_2 SAFE 47.189 +N_2_3 SAFE 22.148 +N_2_4 SAFE 19.787 +N_2_5 SAFE 48.801 +N_2_6 SAFE 42.245 +N_2_7 SAFE 92.131 +N_2_8 SAFE 119.103 +N_2_9 SAFE 135.723 +N_3_1 SAFE 37.718 +N_3_2 SAFE 22.146 +N_3_3 SAFE 29.333 +N_3_4 SAFE 15.928 +N_3_5 SAFE 52.465 +N_3_6 SAFE 114.311 +N_3_7 SAFE 103.635 +N_3_8 SAFE 100.282 +N_3_9 SAFE 95.766 +N_4_1 SAFE 52.784 +N_4_2 SAFE 37.322 +N_4_3 SAFE 29.445 +N_4_4 SAFE 17.864 +N_4_5 SAFE 54.756 +N_4_6 SAFE 128.565 +N_4_7 SAFE 157.021 +N_4_8 SAFE 76.862 +N_4_9 SAFE 200.888 +N_5_1 SAFE 23.103 +N_5_2 SAFE 26.375 +N_5_3 SAFE 15.144 +N_5_4 SAFE 13.939 +N_5_5 SAFE 36.758 +N_5_6 SAFE 87.764 +N_5_7 SAFE 75.367 +N_5_8 SAFE 100.455 +N_5_9 SAFE 110.197 +-------------------------------------- +TOTAL VT: 2464.316 \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/P2_results.txt b/code/nnv/examples/Submission/HSCC2020/TestACASXU/P2_results.txt new file mode 100644 index 0000000000..df643cf6f2 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/P2_results.txt @@ -0,0 +1,6 @@ +Network approx-zono approx-star abs-dom + Safety | VT Safety | VT Safety | VT +--------------------------------------------------------------------------- +N_1_1 UNKNOWN 1.922 UNKNOWN 62.509 UNKNOWN 71.477 +--------------------------------------------------------------------------- +TOTAL VT: 1.922 62.509 71.477 \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/test.m b/code/nnv/examples/Submission/HSCC2020/TestACASXU/test.m new file mode 100644 index 0000000000..f6cc46249c --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/test.m @@ -0,0 +1,50 @@ + + str = sprintf('ACASXU_run2a_1_2_batch_2000.mat'); + load(str); + Layers = []; + n = length(b); + for k=1:n - 1 + bk = cell2mat(b(k)); + Wk = cell2mat(W(k)); + Lk = LayerS(Wk, bk, 'poslin'); + Layers = [Layers Lk]; + end + bn = cell2mat(b(n)); + Wn = cell2mat(W(n)); + Ln = LayerS(Wn, bn, 'purelin'); + + Layers = [Layers Ln]; + F = FFNNS(Layers); + + % Input Constraints + % 55947.69 <= i1(\rho) <= 60760, + % -3.14 <= i2 (\theta) <= 3.14, + %-3.14 <= i3 (\shi) <= -3.14 + % 1145 <= i4 (\v_own) <= 1200, + % 0 <= i5 (\v_in) <= 60 + + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + + % normalize input + for k=1:5 + lb(k) = (lb(k) - means_for_scaling(k))/range_for_scaling(k); + ub(k) = (ub(k) - means_for_scaling(k))/range_for_scaling(k); + end + + % unsafe: COC is the maximal score + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + % unsafe region before scaling +% unsafe_mat = [-1 0 0 0 0]; +% unsafe_vec = [-3.9911]; + + B = Box(lb, ub); + + U = HalfSpace(unsafe_mat, unsafe_vec); %unsafe region + + [safe, VT, counterInput] = F.verify_MSG2(B, U) + + + + \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/test1.m b/code/nnv/examples/Submission/HSCC2020/TestACASXU/test1.m new file mode 100644 index 0000000000..adfbc05351 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/test1.m @@ -0,0 +1,73 @@ +N = 1; +M = 1; + +fid = fopen('P1_results.txt', 'wt'); +fprintf(fid, 'Network approx-zono approx-star abs-dom'); +fprintf(fid, '\n Safety | VT Safety | VT Safety | VT'); +fprintf(fid, '\n---------------------------------------------------------------------------'); +VT1_total = 0; +VT2_total = 0; +VT3_total = 0; + +for i=1:N + for j=1:M + + %str = sprintf('ACASXU_run2a_%d_%d_batch_2000.mat', i, j); + str = sprintf('ACASXU_run2a_1_1_batch_2000.mat'); + load(str); + Layers = []; + n = length(b); + for k=1:n - 1 + bk = cell2mat(b(k)); + Wk = cell2mat(W(k)); + Lk = LayerS(Wk, bk, 'poslin'); + Layers = [Layers Lk]; + end + bn = cell2mat(b(n)); + Wn = cell2mat(W(n)); + Ln = LayerS(Wn, bn, 'purelin'); + + Layers = [Layers Ln]; + F = FFNNS(Layers); + + % Input Constraints + % 55947.69 <= i1(\rho) <= 60760, + % -3.14 <= i2 (\theta) <= 3.14, + %-3.14 <= i3 (\shi) <= -3.14 + % 1145 <= i4 (\v_own) <= 1200, + % 0 <= i5 (\v_in) <= 60 + + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + + % normalize input + for k=1:5 + lb(k) = (lb(k) - means_for_scaling(k))/range_for_scaling(k); + ub(k) = (ub(k) - means_for_scaling(k))/range_for_scaling(k); + end + + % unsafe region before scaling + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-3.9911]; + + B = Box(lb, ub); + + U = HalfSpace(unsafe_mat, unsafe_vec); %unsafe region + k = 5; + sens_lb = 0.2; % 20% + [safe1, VT1, ~] = F.verify_MSG(B, 'approx-zono', k, sens_lb, U); + [safe2, VT2, ~] = F.verify_MSG(B, 'approx-star', k, sens_lb, U); + [safe3, VT3, ~] = F.verify_MSG(B, 'abs-dom', k, sens_lb, U); + + VT1_total = VT1_total + VT1; + VT2_total = VT2_total + VT2; + VT3_total = VT3_total + VT3; + + fprintf(fid, '\nN_%d_%d %s %5.3f %s %5.3f %s %5.3f', i, j, safe1, VT1, safe2, VT2, safe3, VT3); + + end +end +fprintf(fid, '\n---------------------------------------------------------------------------'); +fprintf(fid, '\nTOTAL VT: %5.3f %5.3f %5.3f', VT1_total, VT2_total, VT3_total); + +fclose(fid); \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/test2.m b/code/nnv/examples/Submission/HSCC2020/TestACASXU/test2.m new file mode 100644 index 0000000000..d54ba3c383 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/test2.m @@ -0,0 +1,81 @@ + + str = sprintf('ACASXU_run2a_1_2_batch_2000.mat'); + load(str); + Layers = []; + n = length(b); + for k=1:n - 1 + bk = cell2mat(b(k)); + Wk = cell2mat(W(k)); + Lk = LayerS(Wk, bk, 'poslin'); + Layers = [Layers Lk]; + end + bn = cell2mat(b(n)); + Wn = cell2mat(W(n)); + Ln = LayerS(Wn, bn, 'purelin'); + + Layers = [Layers Ln]; + F = FFNNS(Layers); + + % Input Constraints + % 55947.69 <= i1(\rho) <= 60760, + % -3.14 <= i2 (\theta) <= 3.14, + %-3.14 <= i3 (\shi) <= -3.14 + % 1145 <= i4 (\v_own) <= 1200, + % 0 <= i5 (\v_in) <= 60 + + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + + % normalize input + for k=1:5 + lb(k) = (lb(k) - means_for_scaling(k))/range_for_scaling(k); + ub(k) = (ub(k) - means_for_scaling(k))/range_for_scaling(k); + end + + % unsafe: COC is the maximal score + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + % unsafe region before scaling +% unsafe_mat = [-1 0 0 0 0]; +% unsafe_vec = [-3.9911]; + + B = Box(lb, ub); + + U = HalfSpace(unsafe_mat, unsafe_vec); %unsafe region + + %[safe, VT, counterInput] = F.verify_MSG2(B, U) + + R = F.reach(B.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + y = R.getBox; + + + cI2 = F.searchCounterInputCand_MSG(B, U, 2); + R = F.reach(cI2.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + y2 = R.getBox; + + + cI4 = F.searchCounterInputCand_MSG(B, U, 4); + R = F.reach(cI4.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + y4 = R.getBox; + + + cI10 = F.searchCounterInputCand_MSG(B, U, 10); + R = F.reach(cI10.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + y10 = R.getBox; + + + cI16 = F.searchCounterInputCand_MSG(B, U, 16); + R = F.reach(cI10.toZono, 'approx-zono'); + R = R.affineMap(U.G, -U.g); + y16 = R.getBox; + + + %y = max(y.ub) + %y2 = max(y2.ub) + %y4 = max(y4.ub) + %y10 = max(y10.ub) + %y16 = max(y16.ub) \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/verify_P1.m b/code/nnv/examples/Submission/HSCC2020/TestACASXU/verify_P1.m new file mode 100644 index 0000000000..91c48b4ad8 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/verify_P1.m @@ -0,0 +1,66 @@ +N = 5; +M = 9; + +fid = fopen('P1_results.txt', 'wt'); +fprintf(fid, 'Network NNV-MSG '); +fprintf(fid, '\n Safety | VT '); +fprintf(fid, '\n---------------------------------------'); +VT1_total = 0; + +for i=1:N + for j=1:M + + str = sprintf('ACASXU_run2a_%d_%d_batch_2000.mat', i, j); + load(str); + Layers = []; + n = length(b); + for k=1:n - 1 + bk = cell2mat(b(k)); + Wk = cell2mat(W(k)); + Lk = LayerS(Wk, bk, 'poslin'); + Layers = [Layers Lk]; + end + bn = cell2mat(b(n)); + Wn = cell2mat(W(n)); + Ln = LayerS(Wn, bn, 'purelin'); + + Layers = [Layers Ln]; + F = FFNNS(Layers); + + % Input Constraints + % 55947.69 <= i1(\rho) <= 60760, + % -3.14 <= i2 (\theta) <= 3.14, + %-3.14 <= i3 (\shi) <= -3.14 + % 1145 <= i4 (\v_own) <= 1200, + % 0 <= i5 (\v_in) <= 60 + + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + + % normalize input + for k=1:5 + lb(k) = (lb(k) - means_for_scaling(k))/range_for_scaling(k); + ub(k) = (ub(k) - means_for_scaling(k))/range_for_scaling(k); + end + + % unsafe region before scaling + unsafe_mat = [-1 0 0 0 0]; + unsafe_vec = [-3.9911]; + + B = Box(lb, ub); + + U = HalfSpace(unsafe_mat, unsafe_vec); %unsafe region + k = 5; % depth of search tree + sens_lb = 0.2; % 20% + [safe1, VT1, ~] = F.verify_MSG2(B, U); + + VT1_total = VT1_total + VT1; + + fprintf(fid, '\nN_%d_%d %s %5.3f', i, j, safe1, VT1); + + end +end +fprintf(fid, '\n--------------------------------------'); +fprintf(fid, '\nTOTAL VT: %5.3f ', VT1_total); + +fclose(fid); \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/TestACASXU/verify_P2.m b/code/nnv/examples/Submission/HSCC2020/TestACASXU/verify_P2.m new file mode 100644 index 0000000000..2c609e0daa --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/TestACASXU/verify_P2.m @@ -0,0 +1,71 @@ +N = 1; +M = 1; + +fid = fopen('P2_results.txt', 'wt'); +fprintf(fid, 'Network approx-zono approx-star abs-dom'); +fprintf(fid, '\n Safety | VT Safety | VT Safety | VT'); +fprintf(fid, '\n---------------------------------------------------------------------------'); +VT1_total = 0; +VT2_total = 0; +VT3_total = 0; + +for i=1:N + for j=1:M + + str = sprintf('ACASXU_run2a_%d_%d_batch_2000.mat', i, j); + load(str); + Layers = []; + n = length(b); + for k=1:n - 1 + bk = cell2mat(b(k)); + Wk = cell2mat(W(k)); + Lk = LayerS(Wk, bk, 'poslin'); + Layers = [Layers Lk]; + end + bn = cell2mat(b(n)); + Wn = cell2mat(W(n)); + Ln = LayerS(Wn, bn, 'purelin'); + + Layers = [Layers Ln]; + F = FFNNS(Layers); + + % Input Constraints + % 55947.69 <= i1(\rho) <= 60760, + % -3.14 <= i2 (\theta) <= 3.14, + %-3.14 <= i3 (\shi) <= -3.14 + % 1145 <= i4 (\v_own) <= 1200, + % 0 <= i5 (\v_in) <= 60 + + lb = [55947.69; -3.14; -3.14; 1145; 0]; + ub = [60760; 3.14; 3.14; 1200; 60]; + + % normalize input + for k=1:5 + lb(k) = (lb(k) - means_for_scaling(k))/range_for_scaling(k); + ub(k) = (ub(k) - means_for_scaling(k))/range_for_scaling(k); + end + + % unsafe: COC is the maximal score + unsafe_mat = [-1 1 0 0 0; -1 0 1 0 0; -1 0 0 1 0; -1 0 0 0 1]; + unsafe_vec = [0; 0; 0; 0]; + B = Box(lb, ub); + + U = HalfSpace(unsafe_mat, unsafe_vec); %unsafe region + k = 5; % depth of search tree + sens_lb = 0.2; % 20% + [safe1, VT1, ~] = F.verify_MSG(B, 'approx-zono', k, sens_lb, U); + [safe2, VT2, ~] = F.verify_MSG(B, 'approx-star', k, sens_lb, U); + [safe3, VT3, ~] = F.verify_MSG(B, 'abs-dom', k, sens_lb, U); + + VT1_total = VT1_total + VT1; + VT2_total = VT2_total + VT2; + VT3_total = VT3_total + VT3; + + fprintf(fid, '\nN_%d_%d %s %5.3f %s %5.3f %s %5.3f', i, j, safe1, VT1, safe2, VT2, safe3, VT3); + + end +end +fprintf(fid, '\n---------------------------------------------------------------------------'); +fprintf(fid, '\nTOTAL VT: %5.3f %5.3f %5.3f', VT1_total, VT2_total, VT3_total); + +fclose(fid); \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/Exp10_pipe.csv b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/Exp10_pipe.csv new file mode 100644 index 0000000000..58fb406f5e --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/Exp10_pipe.csv @@ -0,0 +1,26 @@ +1.633018888132068014e+01,-1.996267764336316759e+03,-5.950000000000000000e+01 +5.585001765612980051e+01,-1.913526444264845622e+03,-5.950000000000000000e+01 +5.751535726055305275e+01,-1.910039779430783483e+03,-5.950000000000000000e+01 +1.025061174190113746e+02,-1.815844156576702062e+03,-5.950000000000000000e+01 +1.036851670926097739e+02,-1.813375620415291451e+03,-5.950000000000000000e+01 +1.222725531916943424e+02,-1.774459842938626480e+03,-5.950000000000000000e+01 +1.226659988920007720e+02,-1.773636099070572527e+03,-5.950000000000000000e+01 +1.374190805086927298e+02,-1.742748074351565037e+03,-5.950000000000000000e+01 +1.389778507721802328e+02,-1.739484530118515977e+03,-5.950000000000000000e+01 +2.402435960191115782e+02,-1.527467886840615620e+03,-5.950000000000000000e+01 +2.410075741908911766e+02,-1.525868371751645100e+03,-5.950000000000000000e+01 +2.530538571268808141e+02,-1.500647479278711216e+03,-5.950000000000000000e+01 +2.537555186961201343e+02,-1.499178434338939496e+03,-5.950000000000000000e+01 +2.643506591753823045e+02,-1.476995749424180076e+03,-5.950000000000000000e+01 +2.651577270469221048e+02,-1.475306018897790636e+03,-5.950000000000000000e+01 +3.881577818425012083e+02,-1.217784991652432609e+03,-5.950000000000000000e+01 +3.886577181501521636e+02,-1.216738292025204828e+03,-5.950000000000000000e+01 +4.163120214712972711e+02,-1.158839418639727455e+03,-5.950000000000000000e+01 +4.164651075888772880e+02,-1.158518907447096353e+03,-5.950000000000000000e+01 +4.585134746121029252e+02,-1.070483672927834277e+03,-5.950000000000000000e+01 +4.603809556874461464e+02,-1.066573791377920315e+03,-5.950000000000000000e+01 +5.220140623308071781e+02,-9.375346542694096570e+02,-5.950000000000000000e+01 +5.221454289773589608e+02,-9.372596163735230448e+02,-5.950000000000000000e+01 +5.222767956160089398e+02,-9.369845784738622569e+02,-5.950000000000000000e+01 +5.224081622467571151e+02,-9.367095405704272935e+02,-5.950000000000000000e+01 +5.225395288696033731e+02,-9.364345026632181543e+02,-5.950000000000000000e+01 diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/Exp10a_all.csv b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/Exp10a_all.csv new file mode 100644 index 0000000000..cc0b6ddaae --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/Exp10a_all.csv @@ -0,0 +1,355 @@ +0.000000000000000000e+00,1.144983064465327338e+01,1.647594314360637302e+00,-1.647594314360637302e+00,2.000000000000312639e-02,0.000000000000000000e+00,0.000000000000000000e+00,-6.000000000000000000e+01,-6.000000000000000000e+01,3.898762529590000248e-01,3.033792972559999912e-01,-1.948639485960000002e+03,4.021532075209999846e+01,4.499047372630000297e+01,1.514439950239999888e+00,-5.459833174459999553e-08,-2.002368347520000146e-08,-2.866914699240000337e-09,-2.808945613870000137e-08,-2.069128048840000029e-09,0.000000000000000000e+00,-5.527756327949999611e-03,-3.525655024709999648e-08,1.212304140560000040e-03,1.212305204650000181e-03,1.212304140560000040e-03,-5.000465940029999927e-08,-1.212303732390000071e-03,-1.212301947719999964e-03,5.128843306010000330e-08,5.326158638869999609e-08,-6.198204339960000198e+02,-1.882469125700000134e+01,3.898782730099999982e-01 +1.016145944999999884e+00,8.300657697085853215e+00,1.582488775963224237e+00,-1.582488775963224237e+00,9.999999999998010480e-03,0.000000000000000000e+00,0.000000000000000000e+00,-6.000000000000000000e+01,-6.000000000000000000e+01,5.794021101780000294e-01,2.959875464439999937e-01,-1.946805908869999939e+03,4.021872087359999881e+01,4.499069603529999739e+01,1.249165546900000034e+00,5.243206327959999691e-03,-1.272043308210000102e-03,1.444621375659999938e-05,-1.258242436089999959e-03,9.766859708250001746e-04,0.000000000000000000e+00,-6.454058125210000718e-03,4.553641727520000605e-03,4.704441516729999245e-03,3.862429247200000176e-03,4.704441516729999245e-03,-3.359302375169999876e-03,-5.016479628329999912e-03,-4.233867334189999991e-03,2.925280014059999847e-03,2.987864288179999626e-03,-2.411993249600000127e+02,-2.867243102089999773e+00,3.184976577760000316e-01 +2.044075011999999969e+00,7.521265559814739099e+00,1.352302381521464536e+00,-1.352302381521464536e+00,3.000000000000113687e-02,0.000000000000000000e+00,0.000000000000000000e+00,-6.000000000000000000e+01,-6.000000000000000000e+01,7.214350377750000654e-01,2.947800755500000203e-01,-1.945656358149999960e+03,4.022469476090000029e+01,4.498893449649999354e+01,1.069451553730000004e+00,6.686311830420000463e-03,-2.692557702840000112e-03,2.135558643169999877e-05,-2.095714577949999748e-03,8.404785853710001250e-04,0.000000000000000000e+00,-8.296423827979999485e-03,7.149896206359999604e-03,8.453530103069999482e-03,7.685336703699999390e-03,8.453530103069999482e-03,-4.963730685300000306e-03,-8.870280771880000373e-03,-8.138390381550000482e-03,4.510004280319999601e-03,4.510677007450000081e-03,-2.620597286690000374e+02,-3.293548266859999796e+00,3.117761611939999788e-01 +3.065768003999999713e+00,0.000000000000000000e+00,-0.000000000000000000e+00,0.000000000000000000e+00,1.059999999999995168e+00,3.454399999999999693e+00,3.454399999999999693e+00,-6.000000000000000000e+01,-6.000000000000000000e+01,5.890801396910000376e-01,2.755908370019999887e-01,-1.944596971030000077e+03,4.023165232679999548e+01,4.498599979689999628e+01,9.596570642669999263e-01,7.055820535800000695e-03,-3.064191391859999707e-03,2.794712134780000153e-05,-2.528175811869999741e-03,6.953731361439998261e-04,0.000000000000000000e+00,-1.095159764990000055e-02,8.958063250049998552e-03,1.144202998719999996e-02,1.087263504189999938e-02,1.144202998719999996e-02,-6.592005594580000426e-03,-1.196084780550000018e-02,-1.141845983379999839e-02,6.036959801860000002e-03,6.046180802729999616e-03,-2.880933430690000137e+02,-3.991994372639999789e+00,7.582092285159999778e-02 +4.083925963000000436e+00,0.000000000000000000e+00,-0.000000000000000000e+00,0.000000000000000000e+00,2.079999999999998295e+00,1.376679999999999993e+01,1.376679999999999993e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,3.076100830000000341e-01,2.603642940520000115e-01,-1.943686127859999942e+03,4.023835069420000110e+01,4.498193426050000454e+01,8.786519757649999818e-01,5.688882298409999108e-03,-4.449624833120000185e-03,3.342964606059999820e-05,-3.347979561719999567e-03,-4.629562096929999877e-04,0.000000000000000000e+00,-1.399826781279999918e-02,8.228561073479998683e-03,1.923567585729999904e-02,1.874513952800000230e-02,1.923567585729999904e-02,-4.705937695510000601e-03,-1.916865114960000088e-02,-1.871462614829999885e-02,4.888333752560000342e-03,4.736451075169999594e-03,-2.980447380489999887e+02,-4.377727219359999644e+00,-1.638517379760000003e-01 +5.093331099000000250e+00,0.000000000000000000e+00,-0.000000000000000000e+00,0.000000000000000000e+00,3.089999999999996305e+00,2.407920000000000016e+01,2.407920000000000016e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-5.986399364400000339e-02,2.487651556730000046e-01,-1.942839135780000106e+03,4.024335726689999859e+01,4.497665798350000443e+01,8.267348508199999779e-01,3.162317814989999958e-03,-5.313276644340000215e-03,3.030660122109999876e-05,-4.072018153510000016e-03,-1.665080853439999866e-03,0.000000000000000000e+00,-1.769016721890000199e-02,5.544452600380000984e-03,2.775604882480000105e-02,2.761243696169999803e-02,2.775604882480000105e-02,-1.196023871109999940e-03,-2.646966839629999804e-02,-2.637966175580000114e-02,2.798214841199999671e-03,2.428799077019999902e-03,-3.024025058469999863e+02,-4.498899664219999650e+00,-3.775377273559999969e-01 +6.117619037999999954e+00,0.000000000000000000e+00,-0.000000000000000000e+00,0.000000000000000000e+00,4.100000000000001421e+00,3.441700000000000159e+01,3.441700000000000159e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-5.058572957219999999e-01,2.384812235830000016e-01,-1.941992862099999911e+03,4.024573089119999736e+01,4.497076931449999648e+01,7.926563926639998980e-01,-8.833646924139999779e-05,-5.180132578850000537e-03,1.452716290500000087e-05,-4.400054599270000408e-03,-2.626892339909999916e-03,0.000000000000000000e+00,-2.198927133100000292e-02,1.386353118069999849e-03,3.421054798599999780e-02,3.463462076110000037e-02,3.421054798599999780e-02,2.979546943420000125e-03,-3.110126972579999732e-02,-3.159251976520000005e-02,5.929494815169999425e-04,6.255405249900000447e-05,-3.048419977940000081e+02,-4.574566680590000267e+00,-5.852894783020000657e-01 +7.131557941999999706e+00,0.000000000000000000e+00,-0.000000000000000000e+00,0.000000000000000000e+00,5.119999999999997442e+00,4.472939999999999827e+01,4.472939999999999827e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.034785458350000020e+00,2.292909622189999996e-01,-1.941214991029999965e+03,4.024473669639999684e+01,4.496554124300000410e+01,7.698492586020000417e-01,-3.675522662000000034e-03,-4.423563787510000067e-03,-1.040656440289999947e-05,-4.330673754090000674e-03,-3.430907970489999962e-03,0.000000000000000000e+00,-2.612443877100000325e-02,-3.866338933979999656e-03,3.838150335230000598e-02,3.933917344840000274e-02,3.838150335230000598e-02,8.223997485860000053e-03,-3.286883948900000407e-02,-3.389432079910000006e-02,-2.118915075769999944e-03,-2.779144836539999917e-03,-3.055174351439999896e+02,-4.600222013019999778e+00,-8.132605552670000293e-01 +8.166348934000000170e+00,2.693026040455797077e+00,-3.065093837561885248e+00,3.065093837561885248e+00,3.999999999999914735e-02,5.105399999999999494e+01,3.441700000000000159e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-9.339331710289999755e-01,2.354818433520000087e-01,-1.940456310110000004e+03,4.024013488489999446e+01,4.496124895479999850e+01,7.532994954819999256e-01,-7.622443718550000330e-03,-3.306097847269999848e-03,-3.955193144619999701e-05,-3.945985308090000504e-03,-4.151194119670000016e-03,0.000000000000000000e+00,-2.991671735450000119e-02,-1.018713892760000038e-02,4.075464833379999902e-02,4.214959019339999807e-02,4.075464833379999902e-02,1.465091905359999953e-02,-3.227344092979999440e-02,-3.371792893330000096e-02,-5.443995964060001184e-03,-6.219257793509999632e-03,-3.049512358919999997e+02,-4.585405786289999952e+00,-3.502531051640000448e-01 +9.200474977999999027e+00,3.625946369598521013e+00,-3.272914516772708726e+00,3.272914516772708726e+00,3.000000000000113687e-02,5.374640000000000128e+01,3.441700000000000159e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.041058907820000101e+00,2.355097681280000077e-01,-1.939662831430000097e+03,4.023011376230000025e+01,4.496099122460000075e+01,7.557662346769999928e-01,-1.034131561650000058e-02,2.650499587249999667e-03,-6.384820555399999843e-05,-1.493123219319999941e-03,-1.851196433369999873e-03,0.000000000000000000e+00,-3.284721612540000141e-02,-1.285912134900000017e-02,1.829740410280000090e-02,2.100139160490000281e-02,1.829740410280000090e-02,7.978300422979998918e-03,-1.141029402439999903e-02,-1.388089239259999996e-02,-7.375276600479999545e-04,-8.578012107180000645e-04,-3.076486637219999807e+02,-4.611317247069999681e+00,-3.042855262759999735e-01 +1.023242306699999915e+01,3.789651228631722990e+00,-3.477871742188250348e+00,3.477871742188250348e+00,1.000000000000511591e-02,5.488939999999999486e+01,3.441700000000000159e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.122258831869999973e+00,2.354278117419999761e-01,-1.938870905389999962e+03,4.021932948730000135e+01,4.496589801079999660e+01,7.530877464730000304e-01,-1.039017909589999913e-02,6.409137704789999446e-03,-3.894254529569999982e-05,1.237632037249999971e-03,-7.120026952630000494e-04,0.000000000000000000e+00,-3.277468670739999701e-02,-1.463569599789999939e-02,-4.508798632230000833e-04,1.886634653699999827e-03,-4.508798632230000833e-04,8.746145690249999827e-03,5.594488122420000244e-03,3.563345868629999840e-03,-3.490763331500000219e-03,-3.296165167909999912e-03,-3.102588064020000047e+02,-4.709472901149999835e+00,-2.836952209470000041e-01 +1.126590108899999976e+01,5.040135390575119168e+00,-3.789116635590908722e+00,3.789116635590908722e+00,4.000000000000625278e-02,6.581139999999999191e+01,3.441700000000000159e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.067609884770000184e+00,2.333381175990000000e-01,-1.938118693549999989e+03,4.020944373769999913e+01,4.497317218390000448e+01,7.515865327369999349e-01,-9.631135991790001558e-03,7.789863615170000179e-03,-1.776735169140000211e-06,3.185029326889999689e-03,-2.677645708240000130e-05,0.000000000000000000e+00,-3.034982142440000030e-02,-1.530964928610000116e-02,-1.282210799439999910e-02,-1.143439856429999922e-02,-1.282210799439999910e-02,1.021469956779999869e-02,1.601244664089999936e-02,1.491007566760000139e-02,-7.007390498079999613e-03,-6.739022464590000046e-03,-3.115239597709999657e+02,-4.751150394290000634e+00,-1.904315948490000188e-01 +1.231350898800000060e+01,5.877093305786602606e+00,-4.176053792915721985e+00,4.176053792915721985e+00,1.999999999999602096e-02,5.115559999999999974e+01,4.472939999999999827e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.244747915360000068e+00,2.388292998079999951e-01,-1.937331619470000078e+03,4.019975521820000353e+01,4.498124819899999949e+01,7.485819714110000245e-01,-8.592509837940000283e-03,7.210862474159999633e-03,2.822555841269999981e-05,4.142875584389999789e-03,5.900320637230000668e-04,0.000000000000000000e+00,-2.650262264959999878e-02,-1.473574951550000144e-02,-1.957726684509999981e-02,-1.933371094550000169e-02,-1.957726684509999981e-02,9.157427199659999573e-03,2.052228651850000057e-02,2.047925299040000147e-02,-8.300756252649999292e-03,-8.011885154709999859e-03,-3.115212965210000107e+02,-4.761751431849999605e+00,-4.004516601560000333e-01 +1.334413409299999920e+01,6.679029936750809249e+00,-4.607038747530845413e+00,4.607038747530845413e+00,2.000000000000312639e-02,5.841999999999999460e+01,4.472939999999999827e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.220930045770000083e+00,2.352953553199999825e-01,-1.936541507030000048e+03,4.019153951100000199e+01,4.498708771890000691e+01,7.542168650149999598e-01,-8.052340122109999040e-03,3.612762735970000052e-03,4.950667769659999944e-05,3.556993601769999763e-03,-3.460736854399999707e-04,0.000000000000000000e+00,-2.197326160740000270e-02,-1.524624676329999935e-02,-1.134622844189999910e-02,-1.248037556839999909e-02,-1.134622844189999910e-02,1.320345703950000053e-02,1.213303119260000090e-02,1.330448976939999951e-02,-1.221476144679999910e-02,-1.237934283859999998e-02,-3.119993929419999859e+02,-4.755292081020000339e+00,-3.473844528199999671e-01 +1.437963700299999914e+01,7.308656438332373106e+00,-5.055945562740459920e+00,5.055945562740459920e+00,5.000000000000426326e-02,6.286499999999999488e+01,5.504179999999999495e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.424923535770000305e+00,2.317108213900000158e-01,-1.935790103670000008e+03,4.018289781099999658e+01,4.498873844140000244e+01,7.500864286049999663e-01,-9.249601792299999570e-03,-2.128777376049999887e-04,3.326674427690000174e-05,1.814031202960000172e-03,-7.782058279519999495e-04,0.000000000000000000e+00,-1.930915602009999898e-02,-1.572387101899999987e-02,9.616932378450000524e-05,-1.505132926429999943e-03,9.616932378450000524e-05,1.079615994329999849e-02,6.321303985560000052e-04,2.212819888940000153e-03,-9.800863827919999854e-03,-1.008847298079999961e-02,-3.110395995679999714e+02,-4.754701213999999787e+00,-5.240120887760000290e-01 +1.541716408699999974e+01,7.237573976628132399e+00,-5.467384444101286434e+00,5.467384444101286434e+00,3.999999999999914735e-02,4.330699999999999505e+01,4.330699999999999505e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.318121054089999911e+00,2.472789436580000166e-01,-1.935005319370000052e+03,4.017250463940000316e+01,4.498593775540000195e+01,7.463006008220000043e-01,-1.163952973889999937e-02,-4.707294180920000223e-03,6.968907145069999727e-07,-7.471583282769999213e-04,-2.170982009519999926e-03,0.000000000000000000e+00,-1.846127323029999809e-02,-1.820148436579999834e-02,1.930278173950000092e-02,1.757477648590000108e-02,1.930278173950000092e-02,1.178544988750000050e-02,-1.741669229140000233e-02,-1.577236776160000076e-02,-9.324235841350000248e-03,-9.983041163219999806e-03,-3.082221387170000071e+02,-4.668573433540000650e+00,-2.752528190610000203e-01 +1.644949197800000107e+01,7.117514400955606391e+00,-5.833303588267684248e+00,5.833303588267684248e+00,2.000000000000312639e-02,5.562599999999999767e+01,5.504179999999999495e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.623357606290000144e+00,2.358378916979999851e-01,-1.934209664290000092e+03,4.015808430780000293e+01,4.498086378020000353e+01,7.627888098289999919e-01,-1.502943755460000100e-02,-4.713082980920000123e-03,-3.426761546849999945e-05,-2.024600847349999726e-03,-1.770406793650000079e-03,0.000000000000000000e+00,-1.999949897649999989e-02,-1.984236981529999971e-02,2.278520493920000237e-02,2.237038954500000093e-02,2.278520493920000237e-02,5.240149736020000525e-03,-2.078814174969999956e-02,-2.040443052490000311e-02,-2.777281619489999596e-03,-3.274190715889999798e-03,-3.114004352029999723e+02,-4.706503482959999651e+00,-4.864735603329999880e-01 +1.748477697399999897e+01,7.143168015008842353e+00,-6.220664719787418306e+00,6.220664719787418306e+00,1.000000000000511591e-02,4.569460000000000122e+01,4.569460000000000122e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.640006518059999863e+00,2.454472929239999990e-01,-1.933418398239999988e+03,4.014161293589999957e+01,4.497512607080000180e+01,7.499852330039999959e-01,-1.774632697340000273e-02,-5.638158599170000826e-03,-6.345557607090000221e-05,-3.132020979599999758e-03,-2.743932475780000175e-03,0.000000000000000000e+00,-2.256106547940000054e-02,-2.366523185450000386e-02,3.252115363580000001e-02,3.236708793529999989e-02,3.252115363580000001e-02,7.695001707470000042e-03,-2.891737388659999797e-02,-2.883841388909999873e-02,-3.530958712480000185e-03,-4.166327661250000119e-03,-3.104891055049999977e+02,-4.763362130590000021e+00,-2.840886116030000297e-01 +1.864396595499999876e+01,7.297492882490886679e+00,-6.624368320133939392e+00,6.624368320133939392e+00,4.000000000000625278e-02,4.386580000000000013e+01,4.386580000000000013e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.713894609479999831e+00,2.480434030290000202e-01,-1.932660832909999954e+03,4.012223747379999850e+01,4.497080004659999730e+01,7.602343602740000428e-01,-2.063744052499999829e-02,-2.912717903249999966e-03,-7.868196595410000644e-05,-2.792144441690000423e-03,-2.010614384639999950e-03,0.000000000000000000e+00,-2.537493182390000365e-02,-2.611428776500000076e-02,2.635561691140000246e-02,2.746365708329999780e-02,2.635561691140000246e-02,4.373312657870000522e-03,-2.258240045580000091e-02,-2.366745783290000182e-02,-1.806959028469999921e-04,-5.771134074660000434e-04,-3.120672064409999962e+02,-4.739274542330000450e+00,-2.176561355590000135e-01 +1.997357725499999859e+01,7.519220375926881417e+00,-7.041868381409322808e+00,7.041868381409322808e+00,1.999999999999602096e-02,4.886959999999999837e+01,4.886959999999999837e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.904552503009999898e+00,2.435982525350000039e-01,-1.931860946839999997e+03,4.009982105800000340e+01,4.496948595100000290e+01,7.625155739689999379e-01,-2.207255116259999872e-02,4.118399190269998993e-04,-5.998372091610000128e-05,-1.411306585829999721e-03,-1.255849347920000173e-03,0.000000000000000000e+00,-2.744698895759999785e-02,-2.815449871379999830e-02,1.568196999710000025e-02,1.726040067840000150e-02,1.568196999710000025e-02,3.642981494470000099e-03,-1.215206049839999934e-02,-1.363012318029999982e-02,1.010925038959999996e-04,-1.270399630069999943e-05,-3.146551915580000127e+02,-4.840294655219999242e+00,-2.914185523989999971e-01 +2.133592819500000104e+01,7.654348955259204779e+00,-7.460981411863292223e+00,7.460981411863292223e+00,4.999999999999715783e-02,5.158739999999999526e+01,4.472939999999999827e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.891876546019999994e+00,2.441397905350000119e-01,-1.931101865769999904e+03,4.007788824139999662e+01,4.497072206250000193e+01,7.575528678820000472e-01,-2.257542420270000280e-02,2.069056207789999723e-03,-2.938625658870000056e-05,-2.109232594430000016e-04,-1.131002574630000142e-03,0.000000000000000000e+00,-2.804184596630000109e-02,-3.018465630220000182e-02,9.109162399390000747e-03,1.046364804570000008e-02,9.109162399390000747e-03,6.420109232270000341e-03,-5.539796958249999792e-03,-6.783902238920000612e-03,-2.682936697409999890e-03,-2.740363425520000312e-03,-3.144812775230000170e+02,-4.855364744910000141e+00,-1.624231338499999844e-01 +2.161642003100000053e+01,7.814098943527720387e+00,-7.819181325902747837e+00,7.819181325902747837e+00,3.999999999999914735e-02,4.513579999999999615e+01,4.472939999999999827e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.914866338970000248e+00,2.489326894280000091e-01,-1.930305939119999948e+03,4.005397726949999537e+01,4.497409529210000301e+01,7.581750348950000440e-01,-2.270216340720000378e-02,4.109628098629999719e-03,8.539682282220000344e-06,1.244348741640000002e-03,-2.274947251099999988e-04,0.000000000000000000e+00,-2.748291497369999975e-02,-3.079770009159999919e-02,-1.649182477190000093e-03,-5.112450379019999134e-04,-1.649182477190000093e-03,5.299834456609999606e-03,3.887819259350000067e-03,2.915767697510000377e-03,-3.027223841530000091e-03,-2.895311796999999656e-03,-3.144528164719999950e+02,-4.841522455359999810e+00,-1.502881050110000116e-01 +2.265726709400000161e+01,8.066785669023463612e+00,-8.271790789489262608e+00,8.271790789489262608e+00,1.999999999999602096e-02,4.472939999999999827e+01,4.472939999999999827e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.884520761679999934e+00,2.500791847709999960e-01,-1.929506151739999950e+03,4.003043434519999977e+01,4.497894354660000005e+01,7.632618297619999659e-01,-2.211754227599999761e-02,4.734148952330000104e-03,4.962490253090000249e-05,2.346022601969999580e-03,1.844172854190000458e-04,0.000000000000000000e+00,-2.541377698170000157e-02,-3.083882688799999966e-02,-8.360151917030000240e-03,-7.889867789359999301e-03,-8.360151917030000240e-03,6.024474414310000518e-03,9.400619324530000778e-03,9.066784878120001667e-03,-4.980432656010000576e-03,-4.847557325549999886e-03,-3.160889747179999745e+02,-4.880512005950000010e+00,-1.175861358640000048e-01 +2.370214509999999919e+01,8.098392849442348052e+00,-8.721314812386257387e+00,8.721314812386257387e+00,9.999999999998010480e-03,5.666740000000000066e+01,5.504179999999999495e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.040363190369999913e+00,2.390211969609999931e-01,-1.928703950569999961e+03,4.000745872969999795e+01,4.498354168199999492e+01,7.643623334190000618e-01,-2.152875772179999730e-02,3.757687405619999834e-03,6.741556161290000184e-05,2.576116685550000271e-03,3.562298888009999827e-04,0.000000000000000000e+00,-2.279030484079999988e-02,-3.037761949359999922e-02,-9.551195083329999322e-03,-9.815226410729998435e-03,-9.551195083329999322e-03,5.645140115640000060e-03,9.644349919000001076e-03,9.980636111169999616e-03,-5.581025235840001049e-03,-5.479730415199999746e-03,-3.169350209520000021e+02,-4.920033491959999949e+00,-2.998538017269999911e-01 +2.474139809600000106e+01,7.910700093783247233e+00,-9.145967406656021481e+00,9.145967406656021481e+00,0.000000000000000000e+00,4.381499999999999773e+01,4.381499999999999773e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-1.848919882390000158e+00,2.523046731949999955e-01,-1.927910667009999997e+03,3.998526733989999826e+01,4.498534799760000169e+01,7.528148705730000056e-01,-2.176941427120000078e-02,4.961345041289999828e-05,4.275830910310000145e-05,1.242998315450000038e-03,-6.638013876659998834e-04,0.000000000000000000e+00,-2.062222065650000033e-02,-3.136996561190000254e-02,2.034264137170000222e-03,9.413261604289998707e-04,2.034264137170000222e-03,8.128540196819999605e-03,-1.330615134869999987e-03,-2.605876365569999862e-04,-7.247283741949999032e-03,-7.447801672949999098e-03,-3.127911494119999816e+02,-4.835435749180000187e+00,-5.155324935909999517e-02 +2.578542613999999844e+01,7.514585233136451770e+00,-9.517112983412619798e+00,9.517112983412619798e+00,4.000000000000625278e-02,5.336540000000000106e+01,5.336540000000000106e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.008543716709999760e+00,2.416654378180000118e-01,-1.927147412239999994e+03,3.996233175719999764e+01,4.498544065160000116e+01,7.671856136409999083e-01,-2.288839555180000040e-02,-1.383727268559999991e-04,2.436360266260000055e-05,7.903073561319999421e-04,-4.254717766990000303e-05,0.000000000000000000e+00,-1.983011442870000196e-02,-3.084587584429999974e-02,1.908643780890000030e-03,1.259697155859999980e-03,1.908643780890000030e-03,2.981156031760000009e-03,-1.866232457700000083e-03,-1.205526056659999993e-03,-2.822596654400000033e-03,-2.926984932559999805e-03,-3.149204751579999879e+02,-4.823055558080000083e+00,-2.412052154540000048e-01 +2.682449197800000107e+01,7.280673119751509326e+00,-9.896778877857848045e+00,9.896778877857848045e+00,3.000000000000113687e-02,5.069839999999999947e+01,5.069839999999999947e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.017412626790000107e+00,2.444497346880000199e-01,-1.926350632809999979e+03,3.993844162879999971e+01,4.498365855489999632e+01,7.555250371320000324e-01,-2.363412478020000124e-02,-2.894269315460000231e-03,-1.273501755359999968e-05,-6.704503252030001147e-04,-1.081595168519999903e-03,0.000000000000000000e+00,-1.964413092720000004e-02,-3.223564190270000046e-02,1.352624505450000097e-02,1.261055747489999920e-02,1.352624505450000097e-02,4.804386603729999920e-03,-1.262545189810000169e-02,-1.176428587779999868e-02,-3.643688523019999667e-03,-3.958115006619999585e-03,-3.132619595049999930e+02,-4.847215721280000444e+00,-1.704463958740000118e-01 +2.786368608500000121e+01,7.364991178607394495e+00,-1.031500124064445600e+01,1.031500124064445600e+01,2.000000000000312639e-02,5.138419999999999987e+01,5.138419999999999987e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.075737345679999901e+00,2.443015128369999955e-01,-1.925554961759999969e+03,3.991262606640000143e+01,4.498029046949999810e+01,7.586476596469999834e-01,-2.547687520380000070e-02,-3.290859604010000581e-03,-4.610901823670000057e-05,-1.551114642709999943e-03,-1.164456375499999929e-03,0.000000000000000000e+00,-2.082127995700000164e-02,-3.346875873150000069e-02,1.784679926240000103e-02,1.757383176799999849e-02,1.784679926240000103e-02,2.709950057969999493e-03,-1.656836246340000207e-02,-1.633055762070000083e-02,-1.151019634920000126e-03,-1.466675910650000253e-03,-3.124186031030000095e+02,-4.773513331810000260e+00,-1.581187248229999898e-01 +2.889816808699999839e+01,7.527389574080303625e+00,-1.072912787603966756e+01,1.072912787603966756e+01,9.999999999998010480e-03,5.483859999999999957e+01,5.483859999999999957e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.205548760940000186e+00,2.414412200450000157e-01,-1.924758632239999997e+03,3.988516527679999513e+01,4.497702639689999415e+01,7.583152648710000943e-01,-2.700239461050000025e-02,-2.698638473040000131e-03,-6.213205539999999759e-05,-1.822007651360000062e-03,-1.176488109049999989e-03,0.000000000000000000e+00,-2.256184287620000006e-02,-3.497878995409999664e-02,1.874530716479999928e-02,1.900761231830000106e-02,1.874530716479999928e-02,1.852459595829999799e-03,-1.705132218559999788e-02,-1.732942994209999907e-02,8.091731136269999798e-05,-1.742772196460000086e-04,-3.129018196860000103e+02,-4.796358578999999622e+00,-2.014117240909999995e-01 +2.992879891400000147e+01,7.713169531678410351e+00,-1.115304529790260624e+01,1.115304529790260624e+01,3.999999999999204192e-02,5.212079999999999558e+01,5.212079999999999558e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.224314524049999964e+00,2.449924498800000183e-01,-1.924002615659999947e+03,3.985783105449999653e+01,4.497460909739999835e+01,7.552077771990000077e-01,-2.822359662130000113e-02,-1.870711710930000144e-03,-6.550782276709999643e-05,-1.723466298989999963e-03,-1.290196947440000116e-03,0.000000000000000000e+00,-2.423082193740000098e-02,-3.681976378739999778e-02,1.843370621080000007e-02,1.901484868650000007e-02,1.843370621080000007e-02,2.809323279909999548e-03,-1.617564425749999993e-02,-1.675720195920000002e-02,-3.176992766919999956e-04,-5.516765526440000830e-04,-3.123414566970000124e+02,-4.787203470419999718e+00,-1.146974563600000052e-01 +3.096752500599999891e+01,7.808313019155915136e+00,-1.158354972507073555e+01,1.158354972507073555e+01,1.999999999999602096e-02,5.438139999999999930e+01,5.438139999999999930e+01,-6.000000000000000000e+01,-6.000000000000000000e+01,-2.307604592500000162e+00,2.432077378029999792e-01,-1.923206856799999969e+03,3.982757741999999723e+01,4.497384240649999754e+01,7.589869855589999048e-01,-2.921217846790000183e-02,3.723083626600000805e-04,-4.457410293879999818e-05,-8.362449786439999158e-04,-6.966734106429999396e-04,0.000000000000000000e+00,-2.551481724870000023e-02,-3.793088397609999801e-02,1.108259080189999933e-02,1.208268184249999995e-02,1.108259080189999933e-02,1.867385710930000034e-03,-9.100192164940000897e-03,-1.003459251289999868e-02,2.393607071909999997e-04,1.807036186450000225e-04,-3.133259479459999852e+02,-4.797456825560000304e+00,-1.343250274660000021e-01 +3.201362991399999913e+01,7.857083332009870524e+00,-1.200884782809071361e+01,1.200884782809071361e+01,1.000000000000511591e-02,5.400039999999999907e+01,5.400039999999999907e+01,2.397091237758182738e-02,4.900199017883564778e+01,-7.322532546909999995e-01,1.043482303620000051e+00,-1.922411436520000052e+03,3.979699234179999934e+01,4.497494525500000151e+01,7.569708313380000275e-01,-2.935008326109999829e-02,1.697307842829999915e-03,-1.243679134170000064e-05,7.172216628470000084e-05,-4.542280195280000822e-04,0.000000000000000000e+00,-2.580839867940000129e-02,-3.890114672509999844e-02,5.446197543499999190e-03,6.309085611700000415e-03,5.446197543499999190e-03,3.010673201380000084e-03,-3.714206363770000078e-03,-4.499039897510000163e-03,-1.222171940649999927e-03,-1.200627487190000049e-03,-3.136302169730000173e+02,-4.823512367530000233e+00,1.496618270870000211e+00 +3.305568599699999766e+01,8.144032483755045959e+00,-1.245699360507471454e+01,1.245699360507471454e+01,1.000000000000511591e-02,4.424680000000000035e+01,4.424680000000000035e+01,5.606500605767948953e-01,4.768264498576767352e+01,3.102880014039999801e-01,1.059697389599999928e+00,-1.921036654609999914e+03,3.975078915969999827e+01,4.501486753609999880e+01,1.588141766369999930e+00,-1.471397158620000103e-02,5.278061803190000484e-02,6.647192194440000026e-04,2.665442193179999933e-02,2.465870601700000109e-02,0.000000000000000000e+00,-9.282357629270000451e-03,-2.089258944300000087e-02,-5.813137186019999569e-02,-7.597058423989999643e-02,-5.813137186019999569e-02,1.380614267089999916e-02,5.240741954070000236e-02,7.029462822330000138e-02,-2.449198404820000438e-02,-1.948209868749999768e-02,-6.232080219109999462e+02,-1.744134619229999927e+01,1.507345199580000017e+00 +3.409881305700000098e+01,9.265253342818551729e+00,-1.303366502443072150e+01,1.303366502443072150e+01,0.000000000000000000e+00,0.000000000000000000e+00,4.312919999999999732e+01,1.259166879812006590e+00,4.620715473925572780e+01,1.408651717170000151e+00,1.030692219729999914e+00,-1.919370229130000098e+03,3.975540031869999780e+01,4.504180665500000202e+01,1.590801165900000091e+00,1.780077728700000042e-02,5.697844668829999716e-04,2.423531251260000038e-05,8.332082841600000830e-03,7.948100697170000159e-03,0.000000000000000000e+00,5.454074360019999651e-03,2.558655036780000010e-03,-7.743406915700000621e-03,-1.561578910079999827e-02,-7.743406915700000621e-03,7.854041843200000247e-03,8.180111634319999631e-03,1.562249706539999873e-02,-6.411299067479999531e-03,-7.847333878539999169e-03,-6.472852589180000678e+02,-2.064631956439999882e+01,1.262051582340000033e+00 +3.513550305399999729e+01,1.072784997639914017e+01,-1.377053195518102413e+01,1.377053195518102413e+01,3.999999999999204192e-02,0.000000000000000000e+00,4.792980000000000018e+01,1.624158362056559834e+00,4.486809749782198509e+01,2.397615617120000042e+00,1.027089953419999979e+00,-1.917806525550000060e+03,3.977882703249999707e+01,4.504097867310000680e+01,1.556225608079999878e+00,3.675614893380000497e-02,-8.226748989630000217e-03,-9.410658759980000394e-05,3.319878884760000572e-03,6.578428246339999494e-03,0.000000000000000000e+00,8.183196846609999339e-03,1.940557590940000104e-02,-4.857452295849999831e-04,-7.081942272779999901e-03,-4.857452295849999831e-04,1.097136277570000045e-03,1.675766960189999967e-03,8.428401635199998798e-03,9.035531708969999753e-04,2.493230848420000412e-04,-6.348177394189999632e+02,-1.997584670210000013e+01,1.285758018489999932e+00 +3.617206001299999940e+01,1.178101406942628060e+01,-1.449159545036070185e+01,1.449159545036070185e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.825999999999999801e+01,1.911844644908114121e+00,4.349305177761795704e+01,3.325930757080000078e+00,1.031409263610000071e+00,-1.916179504660000021e+03,3.982346530249999716e+01,4.503528393930000107e+01,1.548442378970000144e+00,5.728267817260000033e-02,-7.240785408600000639e-03,-9.882310617339999973e-05,2.122429489740000185e-03,7.266988498489999546e-03,0.000000000000000000e+00,7.494036619100000358e-03,3.461470540639999954e-02,-2.016152253920000265e-03,-7.937700986140000178e-03,-2.016152253920000265e-03,-2.776703558650000115e-03,3.147115935740000051e-03,9.231301694920000800e-03,4.047243663409999526e-03,4.070304267430000303e-03,-6.320134624439999698e+02,-1.970297698329999747e+01,1.342654228210000023e+00 +3.720139813400000151e+01,1.201423451984567414e+01,-1.512844431858508010e+01,1.512844431858508010e+01,1.000000000000511591e-02,3.454399999999999693e+00,4.899660000000000082e+01,2.198484734665064444e+00,4.210607429510178434e+01,4.217743384350000291e+00,1.030280232429999776e+00,-1.914554376269999921e+03,3.989179430389999936e+01,4.503139176789999709e+01,1.549360358289999962e+00,8.071095655629999255e-02,-5.037777569120000486e-03,-1.297700830099999961e-04,2.220378660439999846e-03,7.896192521679999340e-03,0.000000000000000000e+00,6.510218179029999067e-03,4.994667056630000546e-02,-3.927707572079999591e-03,-9.651866869760000398e-03,-3.927707572079999591e-03,-3.954312222540000074e-03,4.929866344140000113e-03,1.078471156709999955e-02,4.814716288109999534e-03,5.087156919899999720e-03,-6.335609001480000870e+02,-1.977003935859999828e+01,1.356009960170000195e+00 +3.822374200800000210e+01,1.146005769737437241e+01,-1.569035498251745153e+01,1.569035498251745153e+01,4.000000000000625278e-02,3.454399999999999693e+00,4.472939999999999827e+01,2.835356535360468389e+00,4.056134858766686335e+01,5.074246062709999450e+00,1.030420780179999829e+00,-1.913009333669999933e+03,3.998141377119999618e+01,4.502990435950000148e+01,1.545401260379999808e+00,1.047284910229999977e-01,-4.284763490389999901e-03,-1.677542224570000256e-04,2.310881650879999943e-03,7.975812763669999292e-03,0.000000000000000000e+00,6.112480493109999011e-03,6.537299210640000469e-02,-4.303982005210000433e-03,-9.911885564909999474e-03,-4.303982005210000433e-03,-4.093920449409999690e-03,5.247258893870000024e-03,1.096839887039999933e-02,4.946960133379999999e-03,5.150433754929999858e-03,-6.332910298040000043e+02,-1.976767349089999826e+01,1.328649520870000211e+00 +3.924292898200000224e+01,1.104632526715685259e+01,-1.623372215308223687e+01,1.623372215308223687e+01,1.000000000000511591e-02,3.454399999999999693e+00,4.472939999999999827e+01,3.434234802496446193e+00,3.894255260564633403e+01,5.917055416950000257e+00,1.026084065440000082e+00,-1.911389773460000015e+03,4.009981414869999838e+01,4.502797242970000013e+01,1.542904137979999701e+00,1.277143107210000073e-01,-3.897560576760000003e-03,-1.915176265419999931e-04,2.198145146820000041e-03,7.765115207200000598e-03,0.000000000000000000e+00,5.580240803590000298e-03,8.048361269319999345e-02,-4.389488434840000362e-03,-9.758406803929999679e-03,-4.389488434840000362e-03,-4.209495047939999790e-03,5.220032434840000263e-03,1.068997878860000056e-02,4.892610193220000257e-03,5.141067032630000297e-03,-6.332606918459999861e+02,-1.975702788879999972e+01,1.305684089660000158e+00 +4.026928806299999763e+01,1.079191334969119787e+01,-1.678217205987304794e+01,1.678217205987304794e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,3.998344205943269447e+00,3.740734155240176051e+01,6.749018679849999813e+00,1.021980762479999916e+00,-1.909853158390000090e+03,4.023581704330000264e+01,4.502720150949999578e+01,1.535985854499999803e+00,1.502907843000000077e-01,-3.682919971309999655e-03,-2.266878795820000288e-04,2.235079733550000315e-03,7.636624428140000725e-03,0.000000000000000000e+00,5.348966532070000175e-03,9.531592543830000319e-02,-4.332678919859999332e-03,-9.626207154149999529e-03,-4.332678919859999332e-03,-4.103461727479999939e-03,5.119232014409999705e-03,1.050360475300000061e-02,4.815907128750000592e-03,4.980859326330000156e-03,-6.316294006230000377e+02,-1.966772482640000064e+01,1.287818431850000112e+00 +4.130334401100000008e+01,1.045241207635521974e+01,-1.728762562554074123e+01,1.728762562554074123e+01,1.000000000000511591e-02,3.454399999999999693e+00,4.472939999999999827e+01,4.532147757746909811e+00,3.580315299622499481e+01,7.568105124680000628e+00,1.017055869100000010e+00,-1.908246430709999913e+03,4.040149081140000220e+01,4.502587241649999328e+01,1.529204038700000101e+00,1.721164230939999928e-01,-3.416134879139999872e-03,-2.534939388559999764e-04,2.188718403449999624e-03,7.456604303210000867e-03,0.000000000000000000e+00,4.965821742409999399e-03,1.099947265470000018e-01,-4.363026117379999701e-03,-9.531268032260000952e-03,-4.363026117379999701e-03,-4.120181716150000083e-03,5.076711777790000185e-03,1.032959677539999933e-02,4.737493537020000256e-03,4.918510459310000693e-03,-6.299338388700000451e+02,-1.955976683189999932e+01,1.265871524810000093e+00 +4.233976507199999872e+01,9.424885336514828182e+00,-1.761009946535073567e+01,1.761009946535073567e+01,4.000000000000625278e-02,3.454399999999999693e+00,4.472939999999999827e+01,5.031276539240097989e+00,3.428444917786040946e+01,8.350333635800000209e+00,1.011269450189999919e+00,-1.906723847470000010e+03,4.058127868569999919e+01,4.502546842100000646e+01,1.521481736229999937e+00,1.935266470179999865e-01,-3.237373339110000050e-03,-2.910559225829999837e-04,2.243227517530000173e-03,7.390542118560000304e-03,0.000000000000000000e+00,4.816645742739999320e-03,1.243565641379999892e-01,-4.444959111640000259e-03,-9.584044018589999228e-03,-4.444959111640000259e-03,-4.065850961550000406e-03,5.130540671649999780e-03,1.034569499729999856e-02,4.689702471319999975e-03,4.827501940249999922e-03,-6.279492408510000132e+02,-1.943777974890000237e+01,1.225227355959999986e+00 +4.336933398299999709e+01,9.117201971258909410e+00,-1.805520467355518832e+01,1.805520467355518832e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,5.491262146746882955e+00,3.270024493875590821e+01,9.121973237799998913e+00,1.005297780040000033e+00,-1.905133473189999904e+03,4.079154651559999678e+01,4.502410346279999942e+01,1.512783207860000090e+00,2.134576652569999955e-01,-3.501753615570000165e-03,-2.834852510219999940e-04,1.962093118859999791e-03,6.990542922489999082e-03,0.000000000000000000e+00,4.496012610130000094e-03,1.382566715809999958e-01,-3.978868771279999925e-03,-8.817247691630000078e-03,-3.978868771279999925e-03,-4.204792518550000413e-03,4.599311343239999815e-03,9.511873743790000627e-03,4.770398284630000471e-03,4.899418570710000094e-03,-6.255212210369999184e+02,-1.928487879509999914e+01,1.200449466710000079e+00 +4.439748001099999897e+01,8.185821175342352873e+00,-1.843319458647271603e+01,1.843319458647271603e+01,9.999999999990905053e-03,3.454399999999999693e+00,4.368799999999999528e+01,5.917763269169165952e+00,3.112817976866499237e+01,9.856354063380001307e+00,9.999296069149998800e-01,-1.903552385980000054e+03,4.102249828610000293e+01,4.502287252060000355e+01,1.503715353249999831e+00,2.329631530769999959e-01,-3.136942251889999513e-03,-3.116627806700000380e-04,1.978330982480000066e-03,6.864067683409999336e-03,0.000000000000000000e+00,4.119139330789999519e-03,1.518399850469999979e-01,-4.108657077870000313e-03,-8.854393687969999011e-03,-4.108657077870000313e-03,-4.202268003540000213e-03,4.663902118010000361e-03,9.475250533709999104e-03,4.698779066310000176e-03,4.823124849270000493e-03,-6.230987579339999911e+02,-1.913494096739999861e+01,1.156563758849999957e+00 +4.541807603899999890e+01,7.950986928086663852e+00,-1.883050950981319005e+01,1.883050950981319005e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,6.303923187399782080e+00,2.964333118170581471e+01,1.057783594570000041e+01,9.958040714260000259e-01,-1.902055433200000152e+03,4.126190812829999999e+01,4.502223675750000353e+01,1.495203502789999916e+00,2.514822015379999942e-01,-3.197324990110000150e-03,-3.220850338660000145e-04,1.888735560710000025e-03,6.657337217129999894e-03,0.000000000000000000e+00,3.933533603230000147e-03,1.648004513430000040e-01,-3.974968068420000299e-03,-8.562073169399999142e-03,-3.974968068420000299e-03,-4.228528773930000442e-03,4.491362037939999712e-03,9.136062015310000145e-03,4.706646601550000010e-03,4.802517619840000578e-03,-6.208389602009999635e+02,-1.898966115470000204e+01,1.135465621949999893e+00 +4.643806290599999897e+01,7.753280885638075048e+00,-1.921375187698599873e+01,1.921375187698599873e+01,4.999999999999715783e-02,3.454399999999999693e+00,4.472939999999999827e+01,6.653382180218482489e+00,2.817010119416040581e+01,1.126750072849999817e+01,9.908865094179999389e-01,-1.900565733379999983e+03,4.151876134199999768e+01,4.502115451010000413e+01,1.487758628929999993e+00,2.689379587280000261e-01,-1.932503433139999907e-03,-4.153396715980000611e-04,2.275575804379999841e-03,6.902729493689999281e-03,0.000000000000000000e+00,3.469678654369999938e-03,1.772202269100000005e-01,-5.237319504039999671e-03,-1.051653819679999879e-02,-5.237319504039999671e-03,-4.246266521329999412e-03,5.709574429730000095e-03,1.104903656620000001e-02,4.683440169079999653e-03,4.778764890710000129e-03,-6.195890785499999538e+02,-1.892086130730000093e+01,1.113529682160000034e+00 +4.746827101699999929e+01,7.378847827757208044e+00,-1.955928126948129986e+01,1.955928126948129986e+01,1.999999999999602096e-02,3.454399999999999693e+00,4.472939999999999827e+01,6.985980221593477424e+00,2.663769889239940269e+01,1.195882881619999871e+01,9.852201938629999711e-01,-1.899009976479999978e+03,4.180768261979999778e+01,4.502037250619999753e+01,1.479457372890000011e+00,2.867107599729999956e-01,-3.038032963210000447e-03,-3.421972857530000147e-04,1.749985112190000037e-03,6.275557418720000696e-03,0.000000000000000000e+00,3.383731480100000185e-03,1.897439340320000167e-01,-3.806390146179999736e-03,-8.113701578309999787e-03,-3.806390146179999736e-03,-4.225037067270000397e-03,4.224631363630000636e-03,8.577701839789999769e-03,4.607441459800000472e-03,4.689037328739999698e-03,-6.170776973800000178e+02,-1.875306102249999896e+01,1.087302207950000099e+00 +4.848906111699999855e+01,7.016555346387880476e+00,-1.988816181809610129e+01,1.988816181809610129e+01,4.999999999999715783e-02,3.454399999999999693e+00,4.472939999999999827e+01,7.281033382746579186e+00,2.519421091266548274e+01,1.261389496540000010e+01,9.799033999439999976e-01,-1.897537049410000009e+03,4.209917419349999790e+01,4.501943615420000100e+01,1.470253598879999846e+00,3.028348011509999771e-01,-1.764116216009999853e-03,-4.483948584499999586e-04,2.164673688460000151e-03,6.561633230509999852e-03,0.000000000000000000e+00,2.959270396949999736e-03,2.016052647469999959e-01,-5.083935892689999542e-03,-1.007609989020000034e-02,-5.083935892689999542e-03,-4.208585598449999556e-03,5.466163943210000133e-03,1.050687315299999973e-02,4.584965458030000086e-03,4.639358861229999319e-03,-6.153094528479999781e+02,-1.866048177029999877e+01,1.062764167789999936e+00 +4.966824650499999905e+01,6.655617251766988041e+00,-2.021380672456357885e+01,2.021380672456357885e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,7.558170520227617928e+00,2.369763183943854656e+01,1.326954197920000134e+01,9.738798141480000670e-01,-1.895999886329999981e+03,4.242303916230000027e+01,4.501872205720000153e+01,1.461404802120000124e+00,3.192179538809999939e-01,-2.860651805290000127e-03,-3.612682968269999208e-04,1.645537987589999881e-03,5.954391058060000234e-03,0.000000000000000000e+00,2.888707145880000261e-03,2.134975643739999707e-01,-3.692149451929999538e-03,-7.768646877409999402e-03,-3.692149451929999538e-03,-4.233476151130000781e-03,4.029567541909999905e-03,8.141779090619999382e-03,4.544571825539999929e-03,4.606608364350000574e-03,-6.125819920609999372e+02,-1.847751426890000204e+01,1.037032604219999987e+00 +5.089878773499999909e+01,6.310978437147235276e+00,-2.050357600810339420e+01,2.050357600810339420e+01,4.999999999999715783e-02,3.454399999999999693e+00,4.157979999999999876e+01,7.801473336592957608e+00,2.229298577607177023e+01,1.388406129290000024e+01,9.660461544989999982e-01,-1.894545169570000098e+03,4.274650723250000084e+01,4.501782465579999837e+01,1.451722581870000139e+00,3.340261436040000143e-01,-1.697432995020000009e-03,-4.643810818899999737e-04,2.011859451119999819e-03,6.213771224350000261e-03,0.000000000000000000e+00,2.485175559130000170e-03,2.247461193890000208e-01,-4.895027887300000546e-03,-9.573027331030001599e-03,-4.895027887300000546e-03,-4.227225267560000450e-03,5.197914770350000463e-03,9.914586910380000090e-03,4.538854633590000062e-03,4.568784846909999808e-03,-6.106386972640000295e+02,-1.837440429269999953e+01,1.007057189940000042e+00 +5.222559761499999809e+01,5.962498407716863902e+00,-2.077222565593247339e+01,2.077222565593247339e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,8.026127436935192705e+00,2.084479209480042528e+01,1.450499536059999883e+01,9.617499709129999630e-01,-1.893029208859999926e+03,4.310213490590000163e+01,4.501700920129999872e+01,1.440320339050000120e+00,3.484085086090000227e-01,-2.882222608880000061e-03,-3.511234045499999506e-04,1.446586001869999737e-03,5.552675391279998825e-03,0.000000000000000000e+00,2.406591691130000044e-03,2.359382296559999759e-01,-3.361021474139999892e-03,-7.137912256970000563e-03,-3.361021474139999892e-03,-4.309351773669999920e-03,3.625230075949999881e-03,7.429789870629999529e-03,4.573079924140000495e-03,4.601229387319999940e-03,-6.069875119099999665e+02,-1.814394764029999862e+01,9.867305755619999452e-01 +5.348460602499999794e+01,5.658585706446751296e+00,-2.104143600597059560e+01,2.104143600597059560e+01,9.999999999990905053e-03,3.454399999999999693e+00,3.873499999999999943e+01,8.226282297118197917e+00,1.942551314748107316e+01,1.509362844390000191e+01,9.506913423540001018e-01,-1.891522647569999890e+03,4.347266160030000037e+01,4.501601676359999971e+01,1.432267832359999993e+00,3.628934083309999781e-01,-2.363915103710000076e-03,-3.920918316209999932e-04,1.546938627979999904e-03,5.557765488609999784e-03,0.000000000000000000e+00,2.048814821330000036e-03,2.468242505490000072e-01,-3.732055407989999605e-03,-7.511894660139999819e-03,-3.732055407989999605e-03,-4.274397588380000196e-03,3.947529919470000107e-03,7.751429271009999816e-03,4.444826726500000595e-03,4.513932199260000874e-03,-6.051207314409999753e+02,-1.802261731759999819e+01,9.516406059270000606e-01 +5.362510991100000268e+01,5.363410478496719591e+00,-2.130708585345799477e+01,2.130708585345799477e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,8.401861872757145022e+00,1.810985568511234689e+01,1.567900041130000055e+01,9.492216110230000670e-01,-1.890101026170000068e+03,4.383892074739999600e+01,4.501544832089999915e+01,1.417619229889999888e+00,3.749292765879999600e-01,-2.714419723140000171e-03,-3.570754909530000345e-04,1.350175042599999816e-03,5.260274650250000225e-03,0.000000000000000000e+00,1.927016537869999987e-03,2.572523986879999836e-01,-3.247166630110000316e-03,-6.805171593930000283e-03,-3.247166630110000316e-03,-4.357597906520000938e-03,3.442403710820000212e-03,7.018945322170000271e-03,4.575665489129999985e-03,4.571371634769999873e-03,-6.008544769490000590e+02,-1.778611144379999942e+01,9.395236968989999493e-01 +5.465173912099999853e+01,5.062451515513031630e+00,-2.153956534361674358e+01,2.153956534361674358e+01,9.999999999990905053e-03,3.454399999999999693e+00,4.472939999999999827e+01,8.557672875432011494e+00,1.676680757350569806e+01,1.624283435930000152e+01,9.425716996190000030e-01,-1.888616079260000106e+03,4.423726337709999967e+01,4.501450949229999310e+01,1.412352912949999872e+00,3.889023469089999963e-01,-2.137167319520000015e-03,-4.037289532380000439e-04,1.469446522030000077e-03,5.304932776310000708e-03,0.000000000000000000e+00,1.560641699270000175e-03,2.675120061749999834e-01,-3.757472771959999812e-03,-7.331949501500000313e-03,-3.757472771959999812e-03,-4.315727574539999882e-03,3.904733066980000181e-03,7.495452840350000194e-03,4.400322752520000220e-03,4.479230913390000630e-03,-5.998750479139999925e+02,-1.769853730029999994e+01,9.155254364010000367e-01 +5.568829011900000125e+01,4.782813514999768145e+00,-2.177202058039285859e+01,2.177202058039285859e+01,3.999999999999204192e-02,3.454399999999999693e+00,3.639819999999999567e+01,8.693368347219694314e+00,1.553422591236960670e+01,1.677284152840000075e+01,9.281147718430000637e-01,-1.887211123139999927e+03,4.462987220560000168e+01,4.501415396560000204e+01,1.401916276310000153e+00,4.011167037280000125e-01,-2.300948956389999890e-03,-3.934536602950000346e-04,1.380906886080000059e-03,5.120216715270000697e-03,0.000000000000000000e+00,1.454500514890000058e-03,2.774539743039999840e-01,-3.496236412739999952e-03,-6.944458658389999345e-03,-3.496236412739999952e-03,-4.350101820329999557e-03,3.623255811179999612e-03,7.080963043430000929e-03,4.469134875300000490e-03,4.486606205370000273e-03,-5.973662530249999918e+02,-1.756341235789999899e+01,8.758997917180000314e-01 +5.671271300299999751e+01,4.529016218737040411e+00,-2.198187696947848480e+01,2.198187696947848480e+01,1.999999999999602096e-02,3.454399999999999693e+00,4.472939999999999827e+01,8.808170991959052287e+00,1.430481150092477627e+01,1.730640590049999972e+01,9.273284673689999869e-01,-1.885751967830000012e+03,4.505281531709999854e+01,4.501286592499999983e+01,1.384119507020000306e+00,4.099878693639999461e-01,-2.840397215950000217e-03,-2.966288376640000197e-04,1.002722584339999943e-03,4.649834217939999639e-03,0.000000000000000000e+00,1.183564943990000114e-03,2.869739561960000240e-01,-2.634265656940000012e-03,-5.720720403380000728e-03,-2.634265656940000012e-03,-4.490321260999999634e-03,2.736297127929999875e-03,5.833852438930000467e-03,4.627845162329999491e-03,4.603453296550000240e-03,-5.917614961169999788e+02,-1.725615574920000128e+01,8.640093803409999440e-01 +5.774543404599999974e+01,4.247312185802065265e+00,-2.216737060640107515e+01,2.216737060640107515e+01,0.000000000000000000e+00,3.454399999999999693e+00,4.419599999999999795e+01,8.907019462262981691e+00,1.314949779918753414e+01,1.781705195589999846e+01,9.175300002099999741e-01,-1.884301675960000011e+03,4.548807919160000068e+01,4.501217567029999600e+01,1.379536539710000120e+00,4.229158597689999799e-01,-2.563160306030000044e-03,-3.086955859849999963e-04,1.014402081389999960e-03,4.604268981009999699e-03,0.000000000000000000e+00,9.039083138700000110e-04,2.964315186370000132e-01,-2.932149392049999883e-03,-5.655151764500000386e-03,-2.932149392049999883e-03,-4.377442628260000065e-03,2.985831050530000311e-03,5.710301134110000107e-03,4.370443386080000332e-03,4.432591997859999106e-03,-5.907122674849999839e+02,-1.714287219190000044e+01,8.327770233149999202e-01 +5.877404594400000093e+01,4.008871632381660888e+00,-2.235757695416364044e+01,2.235757695416364044e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,8.986272080305178989e+00,1.213773974823137181e+01,1.830335773779999897e+01,9.102863669399998692e-01,-1.882931561350000038e+03,4.591301972050000302e+01,4.501149102749999997e+01,1.366221860079999795e+00,4.320840671109999476e-01,-2.224395836300000276e-03,-3.501248986750000276e-04,1.114882026059999844e-03,4.570677945219999913e-03,0.000000000000000000e+00,6.489673621790000837e-04,3.053424235469999748e-01,-3.071982216390000114e-03,-6.084867091220000183e-03,-3.071982216390000114e-03,-4.397459937959999864e-03,3.101169270610000094e-03,6.115026417129999781e-03,4.424109425090000380e-03,4.427619263870000328e-03,-5.872713477259999308e+02,-1.697952023380000242e+01,8.085255622859999214e-01 +5.980912804599999788e+01,3.749514023610597935e+00,-2.253363929868568505e+01,2.253363929868568505e+01,1.000000000000511591e-02,3.454399999999999693e+00,4.472939999999999827e+01,9.049524968378227285e+00,1.119056960213394802e+01,1.877340094430000050e+01,9.021333456039999366e-01,-1.881504408219999959e+03,4.636917562180000374e+01,4.501046141810000734e+01,1.355568983810000017e+00,4.414420377239999804e-01,-2.165380611349999873e-03,-3.290680838820000476e-04,1.018367893880000024e-03,4.380693416670000326e-03,0.000000000000000000e+00,3.270616480359999885e-04,3.139832415390000353e-01,-2.949337902910000031e-03,-5.805477611239999447e-03,-2.949337902910000031e-03,-4.415714551000000238e-03,2.944822552719999695e-03,5.800329955469999896e-03,4.389110893020000716e-03,4.410566895220000005e-03,-5.842049441950000528e+02,-1.679232824769999866e+01,7.834863662720000788e-01 +6.083931493800000112e+01,3.485186589840031601e+00,-2.269237241168407593e+01,2.269237241168407593e+01,4.000000000000625278e-02,3.454399999999999693e+00,4.251959999999999695e+01,9.097586884507693483e+00,1.042424118362146324e+01,1.922106071480000011e+01,8.926860094069999363e-01,-1.880156812790000004e+03,4.681265686149999539e+01,4.500986621709999724e+01,1.344079213899999958e+00,4.500397655680000164e-01,-2.039436471770000175e-03,-3.348825031839999973e-04,1.010510993800000029e-03,4.286475190239999629e-03,0.000000000000000000e+00,1.058422888270000168e-04,3.222650532030000292e-01,-2.990192411760000252e-03,-5.761753294290000021e-03,-2.990192411760000252e-03,-4.414720694240000139e-03,2.955570941280000370e-03,5.721123034880000631e-03,4.360834746509999714e-03,4.374090434829999881e-03,-5.809433294250000017e+02,-1.660673874339999756e+01,7.566332817080000384e-01 +6.186748790800000108e+01,3.276883918496286352e+00,-2.285087062587665230e+01,2.285087062587665230e+01,1.999999999999602096e-02,3.454399999999999693e+00,4.254500000000000171e+01,9.131644027418365894e+00,9.792249120253302408e+00,1.966234762990000107e+01,8.874421119689999138e-01,-1.878754329679999955e+03,4.728671832500000249e+01,4.500882154390000522e+01,1.331483158439999981e+00,4.575044579779999898e-01,-2.135968409570000118e-03,-2.904891116380000087e-04,8.550684029920000741e-04,4.030638649679999484e-03,0.000000000000000000e+00,-2.037911299190000246e-04,3.302657694910000052e-01,-2.648996609880000051e-03,-5.226460719729999170e-03,-2.648996609880000051e-03,-4.437306553449999608e-03,2.587690385070000321e-03,5.158263082310000566e-03,4.359535367979999222e-03,4.369108916020000323e-03,-5.771408813140000120e+02,-1.639216977310000090e+01,7.395129203800000495e-01 +6.289347195599999907e+01,3.059383642476909415e+00,-2.297092639141794734e+01,2.297092639141794734e+01,4.999999999999715783e-02,3.454399999999999693e+00,4.472939999999999827e+01,9.152824396369657833e+00,9.382189190624622199e+00,2.010396487450000080e+01,8.864321708679999690e-01,-1.877428545380000060e+03,4.774648992489999699e+01,4.500829885590000146e+01,1.322967336139999839e+00,4.660562227549999714e-01,-1.718952763159999975e-03,-3.389934906719999910e-04,9.748615386530000686e-04,4.070019672159999775e-03,0.000000000000000000e+00,-4.576094671050000133e-04,3.379869849539999804e-01,-3.059116464749999948e-03,-5.645720370610000059e-03,-3.059116464749999948e-03,-4.384423086770000179e-03,2.962568717329999712e-03,5.537597112689999698e-03,4.243853634499999972e-03,4.276299828849999818e-03,-5.748353080030000228e+02,-1.624793125660000115e+01,7.387371063230000479e-01 +6.391685008999999695e+01,2.925995051901941313e+00,-2.312769879258027572e+01,2.312769879258027572e+01,1.999999999999602096e-02,3.454399999999999693e+00,4.472939999999999827e+01,9.162264604316503025e+00,9.176966568852828132e+00,2.054526778219999983e+01,8.843076825139999375e-01,-1.876042217350000101e+03,4.823916273430000246e+01,4.500783474069999812e+01,1.318368023070000117e+00,4.760268302510000105e-01,-1.363578847739999999e-03,-3.868106758409999902e-04,1.085480552509999986e-03,4.081022961780000381e-03,0.000000000000000000e+00,-6.818270070800000818e-04,3.457763589280000160e-01,-3.353547038729999801e-03,-5.961612495730000266e-03,-3.353547038729999801e-03,-4.237407311900000077e-03,3.229705146860000105e-03,5.823859265600000133e-03,4.047932114730000419e-03,4.099654081779999758e-03,-5.742125074379999887e+02,-1.620011691099999851e+01,7.337417602539999528e-01 +6.494500207900000532e+01,2.689710320610239513e+00,-2.325199461039207804e+01,2.325199461039207804e+01,0.000000000000000000e+00,3.454399999999999693e+00,4.472939999999999827e+01,-9.217042450832996892e+00,-9.217042450832996892e+00,2.109778333459999899e+01,7.202713489530000457e-01,-1.874661863119999907e+03,4.874247308859999350e+01,4.500786205859999711e+01,1.312511952539999971e+00,4.858749911920000053e-01,-1.761696748549999858e-03,-3.420646168729999975e-04,9.405845426130000561e-04,3.866063960069999941e-03,0.000000000000000000e+00,-6.557698814490000010e-04,3.537050313750000341e-01,-2.870756158350000128e-03,-5.150442550470000179e-03,-2.870756158350000128e-03,-4.108328053340000452e-03,2.742306735570000219e-03,5.000302823449999899e-03,3.909990935900000200e-03,3.958188326320000172e-03,-5.732307498149999674e+02,-1.613980748670000054e+01,8.319778442380000305e-01 +6.597934699099999989e+01,2.445096337389737862e+00,-2.334177594004574985e+01,2.334177594004574985e+01,3.000000000000113687e-02,3.454399999999999693e+00,4.472939999999999827e+01,-9.463249247831077682e+00,-9.463249247831077682e+00,2.159934642469999844e+01,7.166835069660000279e-01,-1.873419140329999891e+03,4.920848465750000145e+01,4.500557702140000060e+01,1.211188481440000020e+00,4.593257142559999950e-01,-4.716765103350000800e-03,2.948825687749999716e-04,-7.667169591349999071e-04,2.924552142470000175e-03,0.000000000000000000e+00,-8.486330257830000884e-04,3.625176814060000474e-01,5.842372300140000717e-04,-5.562488454919999438e-04,5.842372300140000717e-04,-7.154346146299999688e-03,-7.069863428210001544e-04,4.099037875380000186e-04,7.072992783979999143e-03,7.008001088340000927e-03,-5.063210376030000361e+02,-1.286002411039999949e+01,8.286132812500000000e-01 +6.700875806800000589e+01,2.187266971983417907e+00,-2.344660374702564098e+01,2.344660374702564098e+01,1.000000000000511591e-02,3.454399999999999693e+00,5.222240000000000038e+01,-9.896596038218401503e+00,-9.896596038218401503e+00,2.201949859269999976e+01,7.105311751369999262e-01,-1.872164528450000034e+03,4.968767911899999490e+01,4.500415297439999307e+01,1.181486643750000010e+00,4.586389213350000049e-01,-9.963673601030001090e-04,-2.530976577599999833e-04,6.638589520880000452e-04,4.196424130999999724e-03,0.000000000000000000e+00,-2.093819608240000268e-03,3.703927233129999941e-01,-4.206328837349999732e-03,-6.260223573089999591e-03,-4.206328837349999732e-03,-7.240942027610000435e-03,3.892197720429999962e-03,5.934590078910000066e-03,6.797127944100000464e-03,6.915308533430000910e-03,-5.034919706369999517e+02,-1.245984427130000149e+01,7.975587844850000607e-01 +6.803664612800000100e+01,1.912803150740994163e+00,-2.350417854415011121e+01,2.350417854415011121e+01,4.000000000000625278e-02,1.376679999999999993e+01,5.504179999999999495e+01,-1.045123091033217833e+01,-1.045123091033217833e+01,2.232006628019999894e+01,6.451953053469999810e-01,-1.870996525869999914e+03,5.014504737359999353e+01,4.500434944959999939e+01,1.158915398629999816e+00,4.601759096479999811e-01,-8.333049158710001229e-04,-3.054821258519999777e-04,7.900998955790000102e-04,4.133897548910000011e-03,0.000000000000000000e+00,-2.305023941310000227e-03,3.778930182370000557e-01,-4.803851752799999895e-03,-6.803068898409999829e-03,-4.803851752799999895e-03,-7.105670176709999626e-03,4.402254697400000139e-03,6.368769035700000067e-03,6.515467523300000167e-03,6.671370313999999864e-03,-5.019459153519999859e+02,-1.238959459289999998e+01,6.683912277219999920e-01 +6.906452202799999895e+01,1.637485784261576649e+00,-2.357348577500501108e+01,2.357348577500501108e+01,2.000000000001023182e-02,1.376679999999999993e+01,4.899660000000000082e+01,-1.112862537337306890e+01,-1.112862537337306890e+01,2.270743941639999974e+01,6.485095620159999630e-01,-1.869830705509999916e+03,5.061152877579999654e+01,4.500143549479999194e+01,1.090683153620000123e+00,4.395097605740000413e-01,-4.533792233890000280e-03,4.853884515040000490e-04,-1.186174071780000039e-03,2.434691071829999959e-03,0.000000000000000000e+00,-2.800155237140000263e-03,3.838469837990000078e-01,1.706754593729999840e-03,9.350833153810000345e-04,1.706754593729999840e-03,-8.201830123520000015e-03,-2.031435004599999906e-03,-1.294027785800000050e-03,7.724528390419999752e-03,7.842885653100000257e-03,-4.775410658569999782e+02,-1.143366038660000150e+01,7.146272659299999219e-01 +7.008575296399999388e+01,1.460888705697011902e+00,-2.364237597748491737e+01,2.364237597748491737e+01,4.000000000000625278e-02,1.376679999999999993e+01,5.026659999999999684e+01,-1.185192300145585165e+01,-1.185192300145585165e+01,2.302340565280000106e+01,6.313331127169999890e-01,-1.868741569200000185e+03,5.105248282399999482e+01,4.499974990310000322e+01,1.085746815250000052e+00,4.448315766610000388e-01,-8.867200142070000724e-04,-5.773851817670000268e-05,1.518073917110000131e-04,3.599195736000000007e-03,0.000000000000000000e+00,-4.253077618040000327e-03,3.897326216120000075e-01,-3.881656039349999643e-03,-5.103519310580000024e-03,-3.881656039349999643e-03,-8.474801669210000471e-03,3.331403013029999964e-03,4.540982980800000075e-03,7.605306888609999864e-03,7.912265339420000709e-03,-4.766863244769999710e+02,-1.114057850270000039e+01,6.933712959289999311e-01 +7.110663008699999921e+01,1.358852440649748861e+00,-2.370474001303196232e+01,2.370474001303196232e+01,9.999999999990905053e-03,1.376679999999999993e+01,5.189219999999999544e+01,-1.267773981660378091e+01,-1.267773981660378091e+01,2.334306192510000244e+01,6.127526760100000525e-01,-1.867617516400000113e+03,5.151639972479999585e+01,4.499942062499999906e+01,1.062727241349999963e+00,4.432733165720000312e-01,-8.257116831229999220e-04,-9.409347238569999619e-05,2.476386027619999837e-04,3.341062052520000179e-03,0.000000000000000000e+00,-4.673933133300000285e-03,3.957094025010000071e-01,-3.932488861970000193e-03,-5.085269581170000046e-03,-3.932488861970000193e-03,-8.004174649499999974e-03,3.253482943369999988e-03,4.366745006460000071e-03,7.005285295220000340e-03,7.285650074780000186e-03,-4.714715015169999788e+02,-1.096420098289999956e+01,6.705832481379999654e-01 +7.213876009000000522e+01,1.190933657277454705e+00,-2.375260952827278516e+01,2.375260952827278516e+01,3.999999999999204192e-02,1.376679999999999993e+01,4.643119999999999692e+01,-1.350704695436479064e+01,-1.350704695436479064e+01,2.372976260289999928e+01,6.164945363999999595e-01,-1.866570138280000037e+03,5.195600478890000318e+01,4.499919754270000283e+01,1.040742515489999853e+00,4.410710716080000204e-01,-8.553481979510000168e-04,-1.033660372760000079e-04,2.687286265290000464e-04,3.240492727189999821e-03,0.000000000000000000e+00,-4.992487031540000092e-03,4.013900590950000291e-01,-3.945837146050000868e-03,-5.082005187510000264e-03,-3.945837146050000868e-03,-7.988439645910000789e-03,3.194628606929999452e-03,4.283540954389999933e-03,6.915696842210000347e-03,7.189975412789999590e-03,-4.642754387119999819e+02,-1.063853858320000079e+01,7.318062782290000179e-01 +7.317407703400000685e+01,1.091940181875900251e+00,-2.379742917174471373e+01,2.379742917174471373e+01,1.999999999999602096e-02,1.376679999999999993e+01,5.864859999999999474e+01,-1.442391619908546119e+01,-1.442391619908546119e+01,2.396097923880000025e+01,5.721305608750000271e-01,-1.865476552189999893e+03,5.242221289369999937e+01,4.499981639439999270e+01,1.040507478839999944e+00,4.489703630300000414e-01,6.113559278649999523e-04,-4.127503950180000034e-04,9.815583958960000070e-04,3.846320490210000057e-03,0.000000000000000000e+00,-5.215553407899999744e-03,4.077471696800000212e-01,-6.961677734349999529e-03,-8.393494805970000416e-03,-6.961677734349999529e-03,-7.989466113339999467e-03,6.075705961030000192e-03,7.463339619370000858e-03,6.715563884130000029e-03,7.059310926749999722e-03,-4.644748886880000214e+02,-1.057942434320000125e+01,5.987873077390000187e-01 +7.420237398199999745e+01,8.926377174010203808e-01,-2.382126071530488076e+01,2.382126071530488076e+01,0.000000000000000000e+00,1.376679999999999993e+01,4.190999999999999659e+01,-1.535451164349152187e+01,-1.535451164349152187e+01,2.438067957840000233e+01,5.976927280429999989e-01,-1.864417614160000085e+03,5.288207156880000070e+01,4.499869229970000362e+01,9.959698591729999606e-01,4.353015317769999837e-01,-2.675575705429999920e-03,2.143722269559999733e-04,-4.618011171830000306e-04,2.457444253970000013e-03,0.000000000000000000e+00,-5.179829846539999935e-03,4.127383780330000085e-01,-4.864852542419999997e-04,-1.362941911200000111e-03,-4.864852542419999997e-04,-7.985815152950000162e-03,-2.397550079299999972e-04,5.751716079060000333e-04,6.981129559140000773e-03,7.198044849649999459e-03,-4.495624617759999637e+02,-1.008755701349999967e+01,7.325124740600000850e-01 +7.523205399500000112e+01,8.357068156695248717e-01,-2.387953979095642509e+01,2.387953979095642509e+01,3.000000000000113687e-02,1.376679999999999993e+01,5.232399999999999807e+01,-1.627549581335883744e+01,-1.627549581335883744e+01,2.462825991909999956e+01,5.558015704150000014e-01,-1.863404427310000074e+03,5.332653283329999994e+01,4.499885705580000206e+01,1.017984016750000054e+00,4.520321443020000052e-01,1.147246433619999919e-03,-4.665799329830000539e-04,1.066783198220000060e-03,4.041605517719999881e-03,0.000000000000000000e+00,-5.912768659519999914e-03,4.186722721750000265e-01,-7.993407746079999113e-03,-9.327600938380000567e-03,-7.993407746079999113e-03,-8.701100043049999136e-03,7.022760167789999196e-03,8.332026855029999249e-03,7.257549187499999326e-03,7.705525959700000420e-03,-4.553934700209999846e+02,-1.010612974150000021e+01,6.401057243350000148e-01 +7.626315712900000676e+01,7.026260642002544188e-01,-2.389152006361252489e+01,2.389152006361252489e+01,1.000000000000511591e-02,1.376679999999999993e+01,6.535419999999999163e+01,-1.724784794354978601e+01,-1.724784794354978601e+01,2.481161303570000243e+01,5.205302238460000064e-01,-1.862367542680000042e+03,5.379031215720000603e+01,4.499846081310000301e+01,9.755911635780000202e-01,4.395374599090000056e-01,-1.938068436889999911e-03,9.451492480639999512e-05,-1.791675844090000213e-04,2.742748760889999592e-03,0.000000000000000000e+00,-5.673446959679999922e-03,4.239914067750000237e-01,-2.104356101460000059e-03,-3.009888269640000058e-03,-2.104356101460000059e-03,-8.511114769769999658e-03,1.216770740750000015e-03,2.055456491060000165e-03,7.268809760599999857e-03,7.556682991200000012e-03,-4.430768840669999804e+02,-9.793874970090000076e+00,5.186948776249999948e-01 +7.729022908199999620e+01,4.240648490420448335e-01,-2.389179163377577098e+01,2.389179163377577098e+01,4.000000000000625278e-02,2.407920000000000016e+01,6.233159999999999457e+01,-1.815943034404030598e+01,-1.815943034404030598e+01,2.500589573800000309e+01,4.898101091379999938e-01,-1.861417230920000065e+03,5.422006594560000536e+01,4.499590902649999435e+01,9.415974050239999116e-01,4.277892212529999516e-01,-3.259600309829999848e-03,4.506377617140000231e-04,-9.668890074840000379e-04,1.980678349320000049e-03,0.000000000000000000e+00,-6.559919337010000628e-03,4.276766421350000069e-01,2.088077053920000224e-03,1.480880426020000050e-03,2.088077053920000224e-03,-8.515886075999999985e-03,-2.841010181340000024e-03,-2.283613909350000123e-03,7.505338679100000479e-03,7.713152592669999912e-03,-4.283691245449999769e+02,-9.131165648539999680e+00,5.018291473390000812e-01 +7.832554006600000207e+01,4.608462653013197241e-01,-2.391130149387617365e+01,2.391130149387617365e+01,2.000000000001023182e-02,2.407920000000000016e+01,4.947919999999999874e+01,-1.910326312006464278e+01,-1.910326312006464278e+01,2.534462902309999777e+01,5.054156780240000035e-01,-1.860450383269999975e+03,5.466062102300000447e+01,4.499271370119999602e+01,9.121092717820000750e-01,4.175362142880000293e-01,-2.943439607939999942e-03,5.619134204659999472e-04,-1.205835481839999911e-03,1.769219080519999782e-03,0.000000000000000000e+00,-8.200562399420000328e-03,4.309817847230000276e-01,3.137975561739999881e-03,2.861828574100000033e-03,3.137975561739999881e-03,-9.054977709709999614e-03,-3.928474235580000327e-03,-3.688067371380000271e-03,7.984609915069999092e-03,8.228738912419999996e-03,-4.157826767700000232e+02,-8.590970830899999910e+00,6.511917114259999639e-01 +7.935659408600000120e+01,4.265994774273348389e-01,-2.395559234058793763e+01,2.395559234058793763e+01,5.000000000001136868e-02,2.407920000000000016e+01,6.535419999999999163e+01,-2.001682692364312999e+01,-2.001682692364312999e+01,2.540421899610000267e+01,4.624182283880000077e-01,-1.859528253590000077e+03,5.508381055659999959e+01,4.499230293060000463e+01,9.258518296919999724e-01,4.288330220909999935e-01,1.306834710180000084e-03,-1.837605543320000232e-04,4.011447991909999791e-04,3.342845144559999926e-03,0.000000000000000000e+00,-9.464726389469999349e-03,4.354300895820000239e-01,-6.434837851250000719e-03,-6.785337607790000412e-03,-6.434837851250000719e-03,-1.015365323800000025e-02,5.138501515060000038e-03,5.490742430060000477e-03,8.301478486909999455e-03,8.859058060260001366e-03,-4.181363426180000147e+02,-8.543717446639998769e+00,4.559125900270000198e-01 +8.039029407499999991e+01,4.534782225865783833e-01,-2.396964056873293458e+01,2.396964056873293458e+01,3.000000000000113687e-02,2.407920000000000016e+01,5.567680000000000007e+01,-2.096266356748116522e+01,-2.096266356748116522e+01,2.569785778399999998e+01,4.702805280690000034e-01,-1.858588074430000006e+03,5.552170704050000438e+01,4.499195396760000420e+01,8.848620841590000285e-01,4.136940381870000127e-01,-1.431166968259999948e-03,2.291236024179999734e-04,-4.651095977810000017e-04,1.882127997099999938e-03,0.000000000000000000e+00,-9.562960163370000377e-03,4.384515055210000400e-01,1.691081704450000001e-04,-2.883699102690000043e-04,1.691081704450000001e-04,-8.111069518899999622e-03,-1.256479667030000044e-03,-8.550727777849999409e-04,6.630862739309999893e-03,6.967626830840000299e-03,-4.049350596000000451e+02,-8.224553076150000308e+00,5.764369964600000174e-01 +8.141364097599999639e+01,3.219121573567875760e-01,-2.398020476716524030e+01,2.398020476716524030e+01,9.999999999990905053e-03,2.407920000000000016e+01,5.590540000000000020e+01,-2.191294715951249117e+01,-2.191294715951249117e+01,2.592327636969999816e+01,4.580034017560000170e-01,-1.857653711729999941e+03,5.595975338550000089e+01,4.499207547660000017e+01,8.909534883280000317e-01,4.209719508340000194e-01,8.949071765449999891e-04,-2.118577706250000120e-04,4.634097974419999874e-04,2.793805061030000397e-03,0.000000000000000000e+00,-1.020069992000000036e-02,4.426118128679999986e-01,-5.466757625490000112e-03,-5.939714333499999770e-03,-5.466757625490000112e-03,-8.887361560129999546e-03,4.060786303000000347e-03,4.506718701119999566e-03,7.027101647899999283e-03,7.454365927750000211e-03,-4.048239028559999610e+02,-8.014721950700000264e+00,5.634875297550000495e-01 +8.244764113399999417e+01,6.101125485551455591e-02,-2.395342738024749352e+01,2.395342738024749352e+01,3.999999999999204192e-02,2.407920000000000016e+01,5.560060000000000002e+01,-2.281947888855075846e+01,-2.281947888855075846e+01,2.614859021499999869e+01,4.467719793320000243e-01,-1.856772484489999897e+03,5.637810008630000169e+01,4.499311920419999922e+01,8.772460276319999917e-01,4.193431951290000348e-01,6.727922733080001112e-04,-2.646891656499999828e-04,5.795267521989999398e-04,2.735984797260000538e-03,0.000000000000000000e+00,-1.002453116529999910e-02,4.467655151039999772e-01,-5.785487305600000782e-03,-6.432883559439999885e-03,-5.785487305600000782e-03,-8.639976671669999733e-03,4.226117573039999721e-03,4.817718695149999543e-03,6.601882959779999289e-03,7.024811807379999391e-03,-4.017761114209999960e+02,-7.959579605860001017e+00,5.508117675779999889e-01 +8.347671508800000595e+01,1.031591644396520277e-02,-2.394980644911183632e+01,2.394980644911183632e+01,1.999999999999602096e-02,2.407920000000000016e+01,5.115559999999999974e+01,-2.376751546757393285e+01,-2.376751546757393285e+01,2.635923505439999914e+01,4.454025924209999987e-01,-1.855859856959999888e+03,5.681616551479999799e+01,4.499367354239999628e+01,8.651929387579999631e-01,4.179840927090000546e-01,3.286407900259999664e-05,-1.968116743529999782e-04,4.361278882750000167e-04,2.562577678380000088e-03,0.000000000000000000e+00,-9.848775994420000054e-03,4.508860765050000108e-01,-4.669525717090000118e-03,-5.407686873660000337e-03,-4.669525717090000118e-03,-8.466358754129999983e-03,3.123514334500000159e-03,3.796980713040000021e-03,6.485966206180000283e-03,6.855652593510000968e-03,-3.970791047180000533e+02,-7.771251179280000088e+00,5.253658294680000340e-01 +8.506593342499999721e+01,-3.059394518794342950e-06,-2.394318968877679765e+01,2.394318968877679765e+01,4.999999999999715783e-02,2.407920000000000016e+01,4.805679999999999552e+01,-2.467246707475405643e+01,-2.467246707475405643e+01,2.655209950030000243e+01,4.502353072170000026e-01,-1.854995991920000051e+03,5.723487523220000384e+01,4.499377439609999385e+01,8.626697553500000115e-01,4.206367366159999843e-01,-1.111944448380000058e-04,-1.831326413819999951e-04,4.012296931859999911e-04,2.541016469160000020e-03,0.000000000000000000e+00,-9.828377606870001421e-03,4.546013531600000546e-01,-4.361855410850000274e-03,-5.083658639069999624e-03,-4.361855410850000274e-03,-8.378118616770000027e-03,2.868901604369999882e-03,3.533175062349999673e-03,6.459921404269999834e-03,6.827635040050000076e-03,-3.955965117730000316e+02,-7.680929252979999511e+00,5.053606033330000358e-01 +8.582536673500000290e+01,-3.059394518794342950e-06,-2.394228737838035315e+01,2.394228737838035315e+01,3.000000000000113687e-02,2.407920000000000016e+01,4.663439999999999941e+01,-2.563140062940348329e+01,-2.563140062940348329e+01,2.673985476160000019e+01,4.476663470269999778e-01,-1.854087535799999841e+03,5.767942496510000439e+01,4.499381213499999888e+01,8.657349390599999861e-01,4.261864811540000408e-01,-1.895483327330000018e-04,-1.890408979290000271e-04,4.084624909059999393e-04,2.421983994229999927e-03,0.000000000000000000e+00,-9.764343975990000604e-03,4.582767428459999515e-01,-4.019672421300000270e-03,-4.774235056540000049e-03,-4.019672421300000270e-03,-7.850858112149999846e-03,2.616927529349999827e-03,3.316076878669999874e-03,6.060014731939999781e-03,6.392699934290000351e-03,-3.967717957790000014e+02,-7.706233046169999490e+00,4.825315475460000281e-01 +8.716940712500000643e+01,-2.965394833372077613e-02,-2.395350293853909562e+01,2.395350293853909562e+01,1.000000000000511591e-02,2.407920000000000016e+01,5.288279999999999603e+01,-2.659492843689683284e+01,-2.659492843689683284e+01,2.690964669869999781e+01,4.164395928379999723e-01,-1.853181113639999921e+03,5.812713889890000019e+01,4.499355647619999843e+01,8.617552391050000704e-01,4.279714982519999822e-01,-5.832341057640000629e-04,-1.031901972940000049e-04,2.320083793779999812e-04,2.224323154659999923e-03,0.000000000000000000e+00,-9.777698086360000346e-03,4.617839387509999893e-01,-2.880026602650000156e-03,-3.596612042400000077e-03,-2.880026602650000156e-03,-7.613337820800000419e-03,1.557448274509999923e-03,2.218613020860000281e-03,5.933119082640000465e-03,6.235338799260000189e-03,-3.963614671480000311e+02,-7.713379384010000450e+00,4.513759613040000396e-01 +8.846181797500000243e+01,-1.805604754717917981e-01,-2.391572113397364063e+01,2.391572113397364063e+01,4.000000000000625278e-02,2.407920000000000016e+01,5.849619999999999465e+01,-2.749236603091050668e+01,-2.749236603091050668e+01,2.704911058100000076e+01,3.952526450159999927e-01,-1.852341939350000075e+03,5.854509261159999767e+01,4.499211975810000297e+01,8.317412676100001123e-01,4.157652088059999862e-01,-2.114822624570000028e-03,2.991176413359999888e-04,-5.704746843370000044e-04,1.689956740710000117e-03,0.000000000000000000e+00,-1.026662671610000140e-02,4.647814260909999828e-01,1.567397715519999908e-03,1.000311635830000018e-03,1.567397715519999908e-03,-8.268923744989999450e-03,-2.809126589389999810e-03,-2.305381915829999954e-03,6.718727985369999864e-03,6.963853464989999513e-03,-3.862684470789999978e+02,-7.439756518019999376e+00,4.190964698789999554e-01 +8.862606692299999622e+01,-3.940648583506642932e-01,-2.388771853612165330e+01,2.388771853612165330e+01,1.999999999999602096e-02,3.441700000000000159e+01,5.135879999999999512e+01,-2.841500297226710714e+01,-2.841500297226710714e+01,2.718488013929999880e+01,4.101300835610000028e-01,-1.851483218299999862e+03,5.897517773680000630e+01,4.498968065260000060e+01,8.118339340710000185e-01,4.078490222599999715e-01,-2.428664103309999961e-03,5.082400023150000518e-04,-9.874138797039998857e-04,1.397396334320000037e-03,0.000000000000000000e+00,-1.150973502569999952e-02,4.672145266879999537e-01,4.043564826169999959e-03,3.735365295869999547e-03,4.043564826169999959e-03,-8.621264634340000677e-03,-5.177160460979999927e-03,-4.918463272560000266e-03,7.217544769320000282e-03,7.438166657649999090e-03,-3.769900814069999910e+02,-7.044376054589999825e+00,4.154596328740000066e-01 +8.966206002299999511e+01,-4.573126660803079613e-01,-2.385758242632124393e+01,2.385758242632124393e+01,4.999999999999715783e-02,3.441700000000000159e+01,6.212839999999999918e+01,-2.930198945434857549e+01,-2.930198945434857549e+01,2.725278275949999696e+01,3.731009364130000172e-01,-1.850661030400000072e+03,5.938895059409999533e+01,4.498842286979999727e+01,8.254479182160000539e-01,4.171728809390000126e-01,-4.907177079780000077e-04,1.849662161510000162e-04,-3.551416799540000127e-04,1.783795435329999825e-03,0.000000000000000000e+00,-1.250801380160000004e-02,4.695223731189999694e-01,-7.546211766439999617e-05,-1.500672351759999967e-04,-7.546211766439999617e-05,-8.253191831549998997e-03,-1.119712821010000140e-03,-1.063744004700000086e-03,6.726286789070000036e-03,7.040888923409999861e-03,-3.793986039159999564e+02,-7.011021254580001028e+00,3.511323928830000218e-01 +9.069014000900000383e+01,-3.591690951849495494e-01,-2.385585404677458143e+01,2.385585404677458143e+01,3.000000000000113687e-02,3.441700000000000159e+01,4.902199999999999847e+01,-3.021309926680365976e+01,-3.021309926680365976e+01,2.741322165010000234e+01,4.041386544699999694e-01,-1.849820214540000052e+03,5.981505251520000144e+01,4.498713446499999691e+01,7.920133140250000814e-01,4.022676628599999860e-01,-1.535046585839999972e-03,4.039439112769999097e-04,-7.759424113200001465e-04,1.180696105779999953e-03,0.000000000000000000e+00,-1.342517806770000127e-02,4.714347619679999934e-01,3.581154128469999851e-03,3.396100978180000094e-03,3.581154128469999851e-03,-7.634433965280000393e-03,-4.686921289669999935e-03,-4.545235469789999337e-03,6.222440609089999880e-03,6.485299515210000455e-03,-3.682039658280000367e+02,-6.798457288609998983e+00,4.019994735719999435e-01 +9.172108507199999394e+01,-3.912944280372447903e-01,-2.382172868509914920e+01,2.382172868509914920e+01,1.000000000000511591e-02,3.441700000000000159e+01,5.316219999999999857e+01,-3.114003996434225385e+01,-3.114003996434225385e+01,2.752070785020000088e+01,3.851457834240000211e-01,-1.848967616760000055e+03,6.024887364279999957e+01,4.498737687739999558e+01,8.199367113179999444e-01,4.193919788660000481e-01,1.381807830160000075e-03,-2.137156539809999516e-04,4.211144350859999364e-04,2.002877019779999816e-03,0.000000000000000000e+00,-1.385264799300000085e-02,4.739295605070000250e-01,-3.983931119150000214e-03,-4.040534236099999933e-03,-3.983931119150000214e-03,-7.156537901609999475e-03,2.610736918959999896e-03,2.667387804530000576e-03,5.447402729789999759e-03,5.783391470029999870e-03,-3.750495991010000125e+02,-6.807646397570000119e+00,3.665442466740000405e-01 +9.275103712099999598e+01,-4.412797703778357783e-01,-2.379662224216314570e+01,2.379662224216314570e+01,4.000000000000625278e-02,3.441700000000000159e+01,5.130799999999999983e+01,-3.201938205340798049e+01,-3.201938205340798049e+01,2.765773284579999824e+01,3.841559886929999945e-01,-1.848162348560000055e+03,6.066207198569999548e+01,4.498834922750000231e+01,7.999913227639999791e-01,4.119971711659999869e-01,5.899514390900000536e-04,-1.672428097089999994e-04,3.414386825259999709e-04,1.703543724080000023e-03,0.000000000000000000e+00,-1.366132224339999986e-02,4.763571919929999732e-01,-2.946586925869999762e-03,-3.249119787159999908e-03,-2.946586925869999762e-03,-6.593457373310000584e-03,1.485747027889999924e-03,1.748064050059999893e-03,4.753787764279999301e-03,5.092401636210000353e-03,-3.726785295509999969e+02,-6.879014083939999580e+00,3.644762039180000079e-01 +9.378264403400000049e+01,-4.636786490614770995e-01,-2.375198807387946687e+01,2.375198807387946687e+01,1.999999999998181011e-02,3.441700000000000159e+01,4.023359999999999559e+01,-3.293876645938454573e+01,-3.293876645938454573e+01,2.795606627099999741e+01,4.052943587300000261e-01,-1.847323331690000032e+03,6.109522456430000403e+01,4.498907381399999394e+01,7.980910173770000560e-01,4.136966830989999844e-01,5.406912805510000111e-04,-2.234608767350000072e-04,4.493530511059999578e-04,1.720141028069999784e-03,0.000000000000000000e+00,-1.344490022019999981e-02,4.788938407739999903e-01,-3.178433407540000050e-03,-3.592053288840000094e-03,-3.178433407540000050e-03,-6.226494029279999384e-03,1.686164064900000283e-03,2.057340246900000395e-03,4.408797423179999612e-03,4.691780987340000118e-03,-3.704498639660000094e+02,-6.730926538320000319e+00,5.174703598019999573e-01 +9.482493400600000655e+01,-4.984555720834175085e-01,-2.373867584399649999e+01,2.373867584399649999e+01,1.000000000001932676e-02,3.441700000000000159e+01,5.250179999999999580e+01,-3.387526916986966086e+01,-3.387526916986966086e+01,2.799708988900000151e+01,3.689750432969999827e-01,-1.846471609550000039e+03,6.153773758079999823e+01,4.499115700180000488e+01,8.160606903460000394e-01,4.271423402899999777e-01,2.629744573110000261e-03,-7.554072191700000058e-04,1.457442764430000185e-03,2.801844894730000108e-03,0.000000000000000000e+00,-1.290329180879999822e-02,4.828184061389999560e-01,-1.013361422910000025e-02,-1.071676955979999901e-02,-1.013361422910000025e-02,-7.566406666030000595e-03,8.140717850800000335e-03,8.700366309799999198e-03,5.111323153379999755e-03,5.550003415989998926e-03,-3.770321696980000183e+02,-6.912626933769999482e+00,3.336329460140000092e-01 +9.586187791800000468e+01,-4.459953352237543966e-01,-2.370324536611069988e+01,2.370324536611069988e+01,5.000000000001136868e-02,3.441700000000000159e+01,5.567680000000000007e+01,-3.474828678033900786e+01,-3.474828678033900786e+01,2.809643242539999974e+01,3.569579422469999486e-01,-1.845681253530000049e+03,6.195283936460000263e+01,4.499158237050000508e+01,7.828103379759999703e-01,4.120838976269999843e-01,-1.108419571329999831e-03,-5.452482845269999778e-05,1.349675378810000182e-04,1.486108600299999903e-03,0.000000000000000000e+00,-1.209284896970000064e-02,4.850402930780000066e-01,-6.245642296410000962e-04,-1.520893949230000099e-03,-6.245642296410000962e-04,-6.139229113089999558e-03,-9.112251907719999674e-04,-9.696864938350000050e-05,4.292019050059999764e-03,4.521366514470000209e-03,-3.663798144730000104e+02,-6.733655572900000053e+00,3.056707382199999601e-01 +9.689397501999999918e+01,-4.731686579450549712e-01,-2.369510042708803610e+01,2.369510042708803610e+01,3.000000000000113687e-02,3.441700000000000159e+01,6.543039999999999168e+01,-3.564886447391771895e+01,-3.564886447391771895e+01,2.813182483320000316e+01,3.337608277799999912e-01,-1.844867712739999888e+03,6.238158665390000124e+01,4.498963721300000174e+01,7.709742556240000155e-01,4.070627999629999882e-01,-2.427343124499999928e-03,3.696587827500000473e-04,-6.727632799890000256e-04,9.986225434400000395e-04,0.000000000000000000e+00,-1.265532024779999869e-02,4.868532005330000190e-01,4.562926107289999936e-03,3.952060966649999924e-03,4.562926107289999936e-03,-6.390395251499999749e-03,-5.748610677970000804e-03,-5.204445138189999626e-03,5.032072292419999954e-03,5.138011079960000047e-03,-3.600849092009999595e+02,-6.396787595140000171e+00,2.371912002560000177e-01 +9.792262911800000325e+01,-6.508209798961092085e-01,-2.363071919983502411e+01,2.363071919983502411e+01,1.000000000001932676e-02,3.441700000000000159e+01,5.572759999999999536e+01,-3.652858254452598885e+01,-3.652858254452598885e+01,2.823026163010000289e+01,3.465755581859999990e-01,-1.844074431120000099e+03,6.280069550189999461e+01,4.498635078659999920e+01,7.493425758210000565e-01,3.960357752020000066e-01,-3.442198647420000035e-03,7.847869039489998449e-04,-1.458102831830000029e-03,4.111228064260000182e-04,0.000000000000000000e+00,-1.416384963529999756e-02,4.877640759059999609e-01,1.017368586299999961e-02,9.834524111570000504e-03,1.017368586299999961e-02,-6.412615175270000752e-03,-1.096216706170000110e-02,-1.068150899829999924e-02,5.528653379359999703e-03,5.565630288530000469e-03,-3.519537354839999921e+02,-6.160579846180000096e+00,2.834386825560000212e-01 +9.895462107699999876e+01,-6.146902060204388896e-01,-2.361023563189008101e+01,2.361023563189008101e+01,4.000000000002046363e-02,4.472939999999999827e+01,5.694679999999999609e+01,-3.737054813297896771e+01,-3.737054813297896771e+01,2.826015555599999729e+01,3.365340828900000303e-01,-1.843315980110000055e+03,6.320155658040000191e+01,4.498403246770000408e+01,7.613933666619999707e-01,4.032399647330000003e-01,-1.369684192679999912e-03,5.374251920469999512e-04,-1.005781820059999804e-03,8.658078265950000345e-04,0.000000000000000000e+00,-1.570825492210000188e-02,4.888789426039999997e-01,5.721311152749999906e-03,5.980042172070000259e-03,5.721311152749999906e-03,-7.039546816899999726e-03,-6.535607670449999906e-03,-6.804740799249999611e-03,6.049642644680000396e-03,6.214848189710000560e-03,-3.533571683440000015e+02,-6.079127214809999735e+00,2.494554519649999913e-01 +9.997876691800000515e+01,-7.341613957295155535e-01,-2.356160713503225423e+01,2.356160713503225423e+01,2.000000000001023182e-02,4.472939999999999827e+01,6.845300000000000296e+01,-3.825140019516657475e+01,-3.825140019516657475e+01,2.818576764630000042e+01,3.168661594389999836e-01,-1.842524039079999966e+03,6.362165056560000664e+01,4.498303163920000003e+01,7.511659236540000339e-01,3.991545433990000280e-01,-4.825452298780000130e-04,3.415420802059999537e-04,-6.373208182729999532e-04,8.251301269520000016e-04,0.000000000000000000e+00,-1.683272543950000213e-02,4.898978617649999978e-01,3.921738281439999911e-03,4.188609548099999670e-03,3.921738281439999911e-03,-6.163718294199999753e-03,-4.739837578200000248e-03,-5.016455859880000062e-03,5.116026177050000609e-03,5.335871982419999361e-03,-3.521338820849999820e+02,-6.111126516690000621e+00,1.166877746580000097e-01 +1.010355329519999970e+02,-7.565578807607611367e-01,-2.353114642956375135e+01,2.353114642956375135e+01,9.999999999990905053e-03,4.472939999999999827e+01,5.643880000000000052e+01,-3.911392485858914370e+01,-3.911392485858914370e+01,2.830412169860000304e+01,3.277340233330000019e-01,-1.841749902040000052e+03,6.403357463999999766e+01,4.498202562830000062e+01,7.331493044729999742e-01,3.900704107399999843e-01,-9.848600283340000223e-04,4.029317395529999845e-04,-7.494277969750000930e-04,2.641861098590000110e-04,0.000000000000000000e+00,-1.776696669709999787e-02,4.900027523409999919e-01,6.786419211050000524e-03,6.867018790389999884e-03,6.786419211050000524e-03,-3.857299395050000322e-03,-7.186050554859999343e-03,-7.288957956479999792e-03,3.328398753170000099e-03,3.435360228959999981e-03,-3.443301978609999878e+02,-5.883056879299999764e+00,2.290320396420000015e-01 +1.020781099799999936e+02,-7.778932647183481874e-01,-2.348627186930196586e+01,2.348627186930196586e+01,1.000000000001932676e-02,4.472939999999999827e+01,7.757160000000000366e+01,-3.998083749149648014e+01,-3.998083749149648014e+01,2.815436560619999895e+01,2.968508601190000262e-01,-1.840972468239999898e+03,6.444739075580000076e+01,4.498229904680000146e+01,7.431792392520000234e-01,3.966648966809999677e-01,1.193499547980000127e-03,-5.779321955020000145e-05,1.015678707110000167e-04,9.917460269880001063e-04,0.000000000000000000e+00,-1.829971191920000059e-02,4.912527711760000249e-01,-1.443072935889999934e-04,2.073402769200000096e-04,-1.443072935889999934e-04,-4.697296596399999809e-03,-7.120591923440000148e-04,-1.040141652880000132e-03,3.644248704110000445e-03,3.864495220449999744e-03,-3.462343961359999867e+02,-5.842423034010000293e+00,7.655143737789999771e-03 +1.031170370579999940e+02,-7.457132954059517704e-01,-2.345518385017978247e+01,2.345518385017978247e+01,5.000000000001136868e-02,5.504179999999999495e+01,6.024879999999999569e+01,-4.078744914942932098e+01,-4.078744914942932098e+01,2.822588567130000214e+01,3.072120249270000047e-01,-1.840250466720000077e+03,6.483330066800000679e+01,4.498220059189999631e+01,7.162164707940000818e-01,3.824002529770000325e-01,-6.877290691919998823e-04,1.967928688920000122e-04,-3.623353502710000094e-04,7.028248607629999953e-06,0.000000000000000000e+00,-1.858326211390000024e-02,4.907902254300000600e-01,6.214475252549999697e-03,5.973122648220000226e-03,6.214475252549999697e-03,-1.375439289960000023e-03,-6.358030618410000050e-03,-6.142352996850001211e-03,1.140729412779999900e-03,1.206208941319999875e-03,-3.368056512840000210e+02,-5.687415709799999775e+00,1.056771278379999984e-01 +1.041533291340000034e+02,-6.439249332697661865e-01,-2.343501921487375839e+01,2.343501921487375839e+01,3.999999999999204192e-02,5.504179999999999495e+01,6.548120000000000118e+01,-4.163590863475268122e+01,-4.163590863475268122e+01,2.818941146119999885e+01,2.986070215699999642e-01,-1.839491197560000046e+03,6.523864786260000415e+01,4.498215752020000480e+01,7.256619495100000705e-01,3.879007449939999574e-01,4.265307199130000874e-04,7.862394778000000639e-06,-1.727503684380000029e-05,4.163996246069999875e-04,0.000000000000000000e+00,-1.886776352790000069e-02,4.913767620040000450e-01,2.746205313169999742e-03,2.895113913829999892e-03,2.746205313169999742e-03,-2.174575914579999613e-03,-3.140153107580000158e-03,-3.277969054119999649e-03,1.720794375710000103e-03,1.791720774279999826e-03,-3.373701047989999893e+02,-5.545170303569999959e+00,3.559684753419999764e-02 +1.051875469689999960e+02,-7.042204822671701558e-01,-2.338540409508203055e+01,2.338540409508203055e+01,2.000000000001023182e-02,5.504179999999999495e+01,6.535419999999999163e+01,-4.248113912738575237e+01,-4.248113912738575237e+01,2.817989888070000148e+01,2.954228818419999958e-01,-1.838735706630000095e+03,6.564280705459999865e+01,4.498224759510000581e+01,7.170114116779999769e-01,3.835639125190000165e-01,-1.081771857659999994e-04,6.293077417420000260e-05,-1.143958076650000163e-04,1.212512435789999960e-04,0.000000000000000000e+00,-1.896862927380000077e-02,4.914416988000000486e-01,4.327670518379999991e-03,4.306090793700000086e-03,4.327670518379999991e-03,-1.115930092940000101e-03,-4.538514514800000808e-03,-4.528190214950000153e-03,8.454263127369999586e-04,8.938306716960001163e-04,-3.362601038799999742e+02,-5.569863209480001132e+00,2.236366271970000041e-02 +1.062285330299999941e+02,-6.641414950271137263e-01,-2.335919474362696846e+01,2.335919474362696846e+01,9.999999999990905053e-03,4.180839999999999890e+01,4.180839999999999890e+01,-4.332154762407837723e+01,-4.332154762407837723e+01,2.865202386620000041e+01,3.242040276529999931e-01,-1.837984956889999921e+03,6.604448268760000929e+01,4.498202089970000372e+01,7.140760255989999639e-01,3.820285375169999997e-01,-2.582509359529999607e-04,9.874648293620000197e-05,-1.816496086009999542e-04,2.780818593139999849e-05,0.000000000000000000e+00,-1.916812676790000114e-02,4.914656410970000278e-01,5.082896359770000191e-03,5.087203960089999900e-03,5.082896359770000191e-03,-7.732592216190000518e-04,-5.183397324750000507e-03,-5.196858907479999512e-03,6.523453735750000659e-04,6.636042742290000065e-04,-3.343623618290000081e+02,-5.488038653049999382e+00,4.931168556209999942e-01 +1.072692620760000040e+02,-7.879715067871126966e-01,-2.329284899815324295e+01,2.329284899815324295e+01,0.000000000000000000e+00,4.762500000000000000e+01,4.762500000000000000e+01,-4.418428293032266652e+01,-4.418428293032266652e+01,2.872563218149999997e+01,3.085716664790000285e-01,-1.837214452369999890e+03,6.645635181539999792e+01,4.498525235090000507e+01,7.395486524609999890e-01,3.985764276219999624e-01,4.910947288640000498e-03,-1.060241476840000172e-03,1.938907062530000188e-03,2.641311781210000254e-03,0.000000000000000000e+00,-1.878466196850000006e-02,4.951900537870000396e-01,-1.452571882220000075e-02,-1.424187162459999989e-02,-1.452571882220000075e-02,-7.437493898779999960e-03,1.230455095059999893e-02,1.211857194129999961e-02,4.788980741069999610e-03,5.314194215529999613e-03,-3.443831150959999832e+02,-5.729863517180000976e+00,3.533320426939999814e-01 +1.083073310850000013e+02,-6.975014049564032259e-01,-2.326712357312924695e+01,2.326712357312924695e+01,3.999999999999204192e-02,5.504179999999999495e+01,5.816599999999999682e+01,-4.500217133412227355e+01,-4.500217133412227355e+01,2.864205789380000056e+01,2.918783128260000193e-01,-1.836487021910000067e+03,6.685017913389999933e+01,4.498906839689999515e+01,7.229829614409999383e-01,3.930955420120000321e-01,2.758103336800000246e-03,-9.257097547400000266e-04,1.721342454059999940e-03,2.093043762359999942e-03,0.000000000000000000e+00,-1.679867232740000008e-02,4.978647331759999961e-01,-1.158046731189999942e-02,-1.218075730020000066e-02,-1.158046731189999942e-02,-5.650641497459999926e-03,9.096441502489999512e-03,9.659675658969999607e-03,2.692016084669999944e-03,3.129559856179999801e-03,-3.420860309299999926e+02,-5.795380844030000311e+00,1.165099143980000002e-01 +1.093622570039999999e+02,-7.475993141103358663e-01,-2.320972452856213053e+01,2.320972452856213053e+01,2.000000000001023182e-02,5.504179999999999495e+01,6.103620000000000090e+01,-4.584457638404108337e+01,-4.584457638404108337e+01,2.863093163780000339e+01,2.865604758260000273e-01,-1.835739597289999892e+03,6.725764950670000530e+01,4.498973824729999649e+01,7.073857580110000098e-01,3.857788031600000167e-01,-1.191462997640000028e-03,-2.020697531529999874e-04,4.073353537640000163e-04,6.527620456409999675e-04,0.000000000000000000e+00,-1.538669482970000078e-02,4.988058655929999974e-01,9.802310254160000614e-04,-2.054555753799999968e-04,9.802310254160000614e-04,-2.115074718619999652e-03,-2.511016837159999772e-03,-1.424537564880000223e-03,4.639503026269999855e-04,4.850815783640000296e-04,-3.345827051680000181e+02,-5.549105336240001130e+00,5.146074295040000551e-02 +1.104024629590000046e+02,-6.411547212414804298e-01,-2.319768749496886429e+01,2.319768749496886429e+01,3.000000000000113687e-02,5.440679999999999694e+01,5.440679999999999694e+01,-4.667843004701677501e+01,-4.667843004701677501e+01,2.879344679480000124e+01,2.883496284479999949e-01,-1.835000039239999978e+03,6.766082783950000135e+01,4.498714672540000237e+01,7.030878489030000233e-01,3.829110328320000090e-01,-3.433149196709999774e-03,4.956959029409999540e-04,-8.769171844429999967e-04,-1.322743389009999970e-04,0.000000000000000000e+00,-1.571770001999999930e-02,4.989896152740000423e-01,1.062654293819999957e-02,9.726681933430000870e-03,1.062654293819999957e-02,-1.924857276950000130e-03,-1.134323814029999933e-02,-1.053387467010000016e-02,1.276519939789999992e-03,1.117664540249999885e-03,-3.306846928100000014e+02,-5.376511522120000386e+00,2.034478187559999873e-01 +1.114353790290000035e+02,-7.560274403403590693e-01,-2.314402875038913265e+01,2.314402875038913265e+01,2.000000000001023182e-02,5.504179999999999495e+01,5.765799999999999415e+01,-4.751224002175933947e+01,-4.751224002175933947e+01,2.876338458369999884e+01,2.824809849259999894e-01,-1.834260179379999954e+03,6.806302315239999245e+01,4.498390400659999955e+01,7.051234884919999057e-01,3.835949254039999756e-01,-2.618424884989999524e-03,6.649051713870000012e-04,-1.203701097730000037e-03,3.126178398719999690e-04,0.000000000000000000e+00,-1.732649507230000011e-02,4.998064648189999848e-01,1.009703078410000010e-02,9.979925064269999646e-03,1.009703078410000010e-02,-5.456557606460000175e-03,-1.078631263080000006e-02,-1.070582010839999862e-02,4.711749576449999165e-03,4.730662562300000026e-03,-3.308026558949999867e+02,-5.357524500380000276e+00,1.265835762020000033e-01 +1.124725270269999982e+02,-8.750194903332292329e-01,-2.308884979046737485e+01,2.308884979046737485e+01,0.000000000000000000e+00,5.300979999999999848e+01,5.300979999999999848e+01,-4.834256969131513415e+01,-4.834256969131513415e+01,2.886234048020000031e+01,2.832706570630000309e-01,-1.833523909069999945e+03,6.846373815930000717e+01,4.498126700379999932e+01,6.996323387589999943e-01,3.807041349409999720e-01,-2.206982690400000318e-03,7.186123041350000453e-04,-1.306105835819999913e-03,4.381460791209999697e-05,0.000000000000000000e+00,-1.888461184650000110e-02,4.998212666380000280e-01,1.125540497720000158e-02,1.140183785889999947e-02,1.125540497720000158e-02,-4.580615169380000164e-03,-1.156159968620000186e-02,-1.173905083940000003e-02,4.230618819099999858e-03,4.243402188819999851e-03,-3.295481881999999700e+02,-5.340566516069999992e+00,2.246913909910000229e-01 +1.136123468849999938e+02,-8.598733023236089235e-01,-2.305228131641042566e+01,2.305228131641042566e+01,3.999999999999204192e-02,4.663439999999999941e+01,4.663439999999999941e+01,-4.913250692811640619e+01,-4.913250692811640619e+01,2.905526558249999880e+01,2.887055873869999734e-01,-1.832823608290000038e+03,6.884474581729999443e+01,4.498008587100000710e+01,7.003202355019999548e-01,3.816287466610000512e-01,-2.551639308979999974e-04,3.930112749539999657e-04,-7.236165112789999911e-04,6.167966895689999587e-04,0.000000000000000000e+00,-2.023767540670000017e-02,5.006172211069999101e-01,5.635983073109999617e-03,6.166263904379999661e-03,5.635983073109999617e-03,-5.886434934779999351e-03,-6.262036627220000234e-03,-6.777645509590000082e-03,5.094682779720000054e-03,5.275053329559999983e-03,-3.293837792680000121e+02,-5.313644474519999328e+00,3.720116615300000373e-01 +1.150096476049999978e+02,-9.750872406525739056e-01,-2.297139219368554919e+01,2.297139219368554919e+01,3.000000000000113687e-02,4.912359999999999616e+01,4.912359999999999616e+01,-4.996671616565457441e+01,-4.996671616565457441e+01,2.910888220090000189e+01,2.819433510300000112e-01,-1.832084863820000010e+03,6.924778269130000297e+01,4.498148356210000287e+01,7.044964206170000187e-01,3.860352651250000267e-01,2.538853756840000163e-03,-3.042854552300000223e-04,5.366615329599999347e-04,1.666910369190000149e-03,0.000000000000000000e+00,-2.064646804990000195e-02,5.027183902790000047e-01,-5.094803541899999878e-03,-4.493918118949999548e-03,-5.094803541899999878e-03,-7.591559096330000728e-03,3.440096257250000074e-03,2.895428289709999718e-03,5.565888731909999360e-03,5.993069267100000277e-03,-3.315368825630000060e+02,-5.371356424800000084e+00,3.052401542660000411e-01 +1.164083073049999939e+02,-8.002892919207531541e-01,-2.296017370646686118e+01,2.296017370646686118e+01,2.000000000001023182e-02,5.504179999999999495e+01,6.245859999999999701e+01,-5.079806002071827464e+01,-5.079806002071827464e+01,2.893868433449999955e+01,2.684754133219999783e-01,-1.831350486399999909e+03,6.965154467089999457e+01,4.498421200529999453e+01,6.970076160340000770e-01,3.845721396630000233e-01,2.503558797820000081e-03,-5.738819918190000199e-04,1.041167088829999957e-03,1.601866130589999935e-03,0.000000000000000000e+00,-1.978033838929999996e-02,5.046775547559999575e-01,-7.369300327880000563e-03,-7.332176730969999952e-03,-7.369300327880000563e-03,-5.819004249629999848e-03,5.354262859450000141e-03,5.317842738849999987e-03,3.418869802839999937e-03,3.804670257510000316e-03,-3.303842597870000191e+02,-5.373239454030000140e+00,2.279043197629999906e-02 +1.166331090930000016e+02,-8.146697703556561310e-01,-2.289731205380672918e+01,2.289731205380672918e+01,9.999999999990905053e-03,5.504179999999999495e+01,7.513320000000000221e+01,-5.161743785696418030e+01,-5.161743785696418030e+01,2.872421113729999931e+01,2.579552531239999724e-01,-1.830628184140000030e+03,7.005121290009999768e+01,4.498525308829999858e+01,6.844733719900000235e-01,3.786195474710000175e-01,-2.853940591420000119e-04,-1.811051791990000211e-04,3.513131979900000618e-04,3.034687749310000003e-04,0.000000000000000000e+00,-1.872003669869999956e-02,5.047966571919999534e-01,1.886263538809999874e-03,1.214996473390000248e-03,1.886263538809999874e-03,-7.088052079089998724e-04,-2.890802014619999697e-03,-2.288862568119999844e-03,-3.853741246030000238e-04,-3.650608868169999931e-04,-3.249482339099999990e+02,-5.222538785000000239e+00,-1.985068321229999933e-01 +1.176701099870000036e+02,-7.903879201761326856e-01,-2.287905387996737616e+01,2.287905387996737616e+01,4.999999999998294697e-02,5.504179999999999495e+01,6.342379999999999995e+01,-5.238616580611187601e+01,-5.238616580611187601e+01,2.884629756010000179e+01,2.630639076229999707e-01,-1.829950658470000008e+03,7.042605336600000498e+01,4.498329919350000239e+01,6.757165045490000077e-01,3.726138852400000534e-01,-3.112497045070000343e-03,4.968310457659999178e-04,-8.717815158110001073e-04,-1.009328195460000056e-03,0.000000000000000000e+00,-1.881428733370000064e-02,5.033641244140000248e-01,1.421641723209999923e-02,1.339289040460000038e-02,1.421641723209999923e-02,3.016651699459999871e-03,-1.383070104340000141e-02,-1.309956317449999935e-02,-2.407343177109999999e-03,-2.722401710219999726e-03,-3.197775106040000423e+02,-5.046559245769999258e+00,5.657672882080000062e-03 +1.187068040369999977e+02,-7.839637906002356882e-01,-2.283720849886987025e+01,2.283720849886987025e+01,3.000000000000113687e-02,6.106159999999999854e+01,6.106159999999999854e+01,-5.319470867406911196e+01,-5.319470867406911196e+01,2.887904359909999741e+01,2.581429183480000167e-01,-1.829236895569999888e+03,7.081841267289999564e+01,4.498042830560000738e+01,6.814700611300000821e-01,3.742844918279999988e-01,-2.229467922400000298e-03,6.417932608300000539e-04,-1.158793854850000008e-03,-4.556430438569999963e-04,0.000000000000000000e+00,-2.026700526880000075e-02,5.031181433810000270e-01,1.307524110670000086e-02,1.312527896849999959e-02,1.307524110670000086e-02,-1.064765162840000017e-03,-1.268640500730000044e-02,-1.275706664930000012e-02,1.565398366739999877e-03,1.432977507470000042e-03,-3.199365029319999962e+02,-4.999446098539999994e+00,5.249738693239999754e-02 +1.197440149789999992e+02,-9.231682226103359312e-01,-2.277887092750761511e+01,2.277887092750761511e+01,2.000000000001023182e-02,5.377179999999999893e+01,5.377179999999999893e+01,-5.400127707868246318e+01,-5.400127707868246318e+01,2.901940467440000049e+01,2.629570961000000096e-01,-1.828524681590000000e+03,7.120923603129999435e+01,4.497856333899999726e+01,6.770164580940000176e-01,3.713873752560000185e-01,-1.179808391619999956e-03,5.557209833299999987e-04,-1.012819402679999894e-03,-1.855140322070000195e-04,0.000000000000000000e+00,-2.174158663029999994e-02,5.029049199669999304e-01,1.086105115379999882e-02,1.125611423769999966e-02,1.086105115379999882e-02,-2.401381734310000134e-03,-1.052273779969999969e-02,-1.091461465019999931e-02,2.738541127420000051e-03,2.742881321859999989e-03,-3.196672352269999919e+02,-5.023278943540000263e+00,2.050752639770000163e-01 +1.207781119349999983e+02,-8.477916263932583352e-01,-2.274229119299335622e+01,2.274229119299335622e+01,9.999999999990905053e-03,5.237480000000000047e+01,5.237480000000000047e+01,-5.481020122716044085e+01,-5.481020122716044085e+01,2.910320926679999687e+01,2.620249986650000085e-01,-1.827810415659999990e+03,7.160094239510000591e+01,4.497876922819999379e+01,6.813464221690000988e-01,3.744899792770000069e-01,1.365769326230000013e-03,2.153035715099999982e-05,-6.001829363100000806e-05,7.540620305329999613e-04,0.000000000000000000e+00,-2.259298646410000042e-02,5.038373839480000393e-01,1.514244731440000241e-03,2.242278548039999993e-03,1.514244731440000241e-03,-4.665018307020000511e-03,-2.030574984989999988e-03,-2.696755028780000417e-03,3.971643534479999717e-03,4.210541826269999406e-03,-3.208119750779999890e+02,-5.028656449499999681e+00,2.354536056520000198e-01 +1.218100450040000027e+02,-1.023704621056580555e+00,-2.267005817384437449e+01,2.267005817384437449e+01,3.999999999999204192e-02,5.935979999999999990e+01,5.935979999999999990e+01,-5.558167266149244057e+01,-5.558167266149244057e+01,2.903380596570000094e+01,2.524427473549999967e-01,-1.827130118269999912e+03,7.197551043500000389e+01,4.498088876130000102e+01,6.796397166249998900e-01,3.753057468309999867e-01,2.643464719000000046e-03,-4.457736834109999940e-04,7.893935395639999205e-04,1.209317631499999979e-03,0.000000000000000000e+00,-2.229806367509999665e-02,5.052125465269999838e-01,-5.020027422120000235e-03,-4.541805363850000797e-03,-5.020027422120000235e-03,-4.662055188640000340e-03,3.737370436449999681e-03,3.311050071940000242e-03,3.088820659320000005e-03,3.431299896739999598e-03,-3.215004026340000109e+02,-5.068978578930000367e+00,8.725929260249999653e-02 +1.228441390990000031e+02,-8.383030377480664708e-01,-2.264134661408092342e+01,2.264134661408092342e+01,2.000000000001023182e-02,5.486399999999999721e+01,5.486399999999999721e+01,-5.638443510550263937e+01,-5.638443510550263937e+01,2.916623334810000046e+01,2.547701895239999903e-01,-1.826423458649999930e+03,7.236675143890001038e+01,4.498300549909999546e+01,6.702855269759999679e-01,3.715001351389999873e-01,1.433388228380000308e-03,-4.313077104199999770e-04,7.834539795430000252e-04,6.646272358299999423e-04,0.000000000000000000e+00,-2.127765136659999848e-02,5.058405145009999826e-01,-2.471873335489999796e-03,-2.640703392900000182e-03,-2.471873335489999796e-03,-1.545777932950000155e-03,1.397724762130000097e-03,1.552856674180000049e-03,2.883794468719999733e-04,4.579312142240000473e-04,-3.184616595649999908e+02,-5.003069425350000543e+00,1.837067604060000081e-01 +1.238812580109999999e+02,-8.928175781509960496e-01,-2.257282377838598109e+01,2.257282377838598109e+01,9.999999999990905053e-03,4.846320000000000050e+01,4.846320000000000050e+01,-5.718638186658945699e+01,-5.718638186658945699e+01,2.938614926940000061e+01,2.587358057499999919e-01,-1.825717959750000091e+03,7.275797988370000269e+01,4.498459594370000048e+01,6.722943111669998917e-01,3.736991367029999789e-01,1.420628957389999912e-03,-5.001395307180000679e-04,9.047589922020001126e-04,9.999315853430001087e-04,0.000000000000000000e+00,-2.045317140220000163e-02,5.073201511089999727e-01,-4.065554288100000323e-03,-4.316026598500000144e-03,-4.065554288100000323e-03,-2.935817578000000146e-03,2.568944454760000145e-03,2.814326281720000000e-03,1.242278678699999936e-03,1.434117261220000002e-03,-3.178049611499999969e+02,-4.943552752480000478e+00,3.188457489009999812e-01 +1.249199500090000043e+02,-8.199740193715572278e-01,-2.254182692400460297e+01,2.254182692400460297e+01,3.999999999999204192e-02,6.357620000000000005e+01,6.357620000000000005e+01,-5.795416822404404655e+01,-5.795416822404404655e+01,2.920195001440000127e+01,2.424185276030000058e-01,-1.825043203890000086e+03,7.313331024720000073e+01,4.498641153399999837e+01,6.752411096060000339e-01,3.770566825800000244e-01,1.868085411299999932e-03,-6.554629979059999056e-04,1.178232401869999928e-03,1.618799379750000085e-03,0.000000000000000000e+00,-1.959602053059999668e-02,5.096382344659999841e-01,-7.785407122089999833e-03,-8.091724334470000099e-03,-7.785407122089999833e-03,-5.574985601810000455e-03,5.551466662859999221e-03,5.856997488629999381e-03,3.019187352190000253e-03,3.340258755970000170e-03,-3.193809120059999600e+02,-4.989583545709999512e+00,1.830101013180000053e-03 +1.259589481360000036e+02,-8.043559129297562782e-01,-2.249867969082411889e+01,2.249867969082411889e+01,3.000000000000113687e-02,5.504179999999999495e+01,6.136639999999999873e+01,-5.874909237048328237e+01,-5.874909237048328237e+01,2.924852871350000072e+01,2.457079887389999884e-01,-1.824345985290000044e+03,7.352367635470000096e+01,4.498641263540000068e+01,6.599413974180000642e-01,3.692076659359999624e-01,-1.554424872339999928e-03,-2.048302936279999955e-05,6.715102963480000671e-05,1.189232055350000029e-04,0.000000000000000000e+00,-1.864397588870000261e-02,5.095946719080000076e-01,4.905467034819999475e-03,3.860846401499999723e-03,4.905467034819999475e-03,-5.353149681000000720e-04,-5.964145185490000653e-03,-5.007617334240000058e-03,-5.525275929740000114e-04,-6.114559646410000059e-04,-3.145697061600000097e+02,-4.911713455780000182e+00,5.090475082399999879e-02 +1.270180630689999930e+02,-8.601679763955113467e-01,-2.244915530063652298e+01,2.244915530063652298e+01,2.000000000001023182e-02,5.003799999999999670e+01,5.003799999999999670e+01,-5.954199951704351435e+01,-5.954199951704351435e+01,2.949088488889999837e+01,2.504327297210000025e-01,-1.823650275230000034e+03,7.391248674819999565e+01,4.498424044529999577e+01,6.636434030800000272e-01,3.707141588369999852e-01,-2.452376487909999764e-03,4.041064157079999751e-04,-6.989162774930000963e-04,-8.631619205410000467e-05,0.000000000000000000e+00,-1.911412924990000053e-02,5.098044685649999463e-01,1.007759925839999890e-02,9.467317768969999922e-03,1.007759925839999890e-02,-1.738397218710000230e-03,-1.067336478829999935e-02,-1.012835474289999933e-02,1.194997910180000105e-03,1.077360244810000043e-03,-3.131738940129999946e+02,-4.795608700599999885e+00,2.812404632569999730e-01 +1.280547809599999880e+02,-8.337060651904842912e-01,-2.240383538702095123e+01,2.240383538702095123e+01,3.000000000000113687e-02,5.504179999999999495e+01,6.764019999999999300e+01,-6.033958796500525779e+01,-6.033958796500525779e+01,2.921665975650000036e+01,2.395879924300000074e-01,-1.822950115450000112e+03,7.430291214289999857e+01,4.498251178930000549e+01,6.679199515529999909e-01,3.732184105439999566e-01,-8.760256286789999203e-04,3.128278335159999325e-04,-5.557701238169998658e-04,8.035927140110000642e-04,0.000000000000000000e+00,-2.030781060370000224e-02,5.112093294409999489e-01,5.207305595539999873e-03,5.291619506149999527e-03,5.207305595539999873e-03,-6.615875991869999556e-03,-6.352665510260000446e-03,-6.436138852740000242e-03,5.305540086100000476e-03,5.471356645270000763e-03,-3.153768954249999865e+02,-4.861117489180000639e+00,-7.347726821899999705e-02 +1.290920760630000075e+02,-1.005731090892897139e+00,-2.233034219422324895e+01,2.233034219422324895e+01,2.000000000001023182e-02,5.504179999999999495e+01,5.859779999999999944e+01,-6.113050895081529035e+01,-6.113050895081529035e+01,2.932245743260000381e+01,2.402686476709999797e-01,-1.822256741570000031e+03,7.469123142910000013e+01,4.498058854410000151e+01,6.578358504379999694e-01,3.676491377589999887e-01,-2.465581847190000120e-03,6.262808002979999627e-04,-1.099140096640000225e-03,-5.652492596430000070e-04,0.000000000000000000e+00,-2.101439772540000112e-02,5.100321856759999495e-01,1.388281659939999933e-02,1.359001739839999987e-02,1.388281659939999933e-02,-4.543426748690000336e-04,-1.367701691029999875e-02,-1.345087125229999826e-02,7.491225952719998389e-04,5.934888209480000979e-04,-3.125014719150000246e+02,-4.821956903710000297e+00,9.976577758789999251e-02 +1.301257579329999885e+02,-1.020109931030532824e+00,-2.229710818520328530e+01,2.229710818520328530e+01,5.000000000001136868e-02,4.287519999999999953e+01,4.287519999999999953e+01,-6.188117223209048490e+01,-6.188117223209048490e+01,2.967150408019999830e+01,2.508262395859999772e-01,-1.821598020720000022e+03,7.505870566779999820e+01,4.497871242350000642e+01,6.589794408379999746e-01,3.676375098409999653e-01,-1.203631786890000136e-03,5.511527562449999558e-04,-9.849074990860001017e-04,-2.238614043960000140e-05,0.000000000000000000e+00,-2.243196829909999829e-02,5.101786418500000586e-01,1.075149829729999881e-02,1.107227424770000114e-02,1.075149829729999881e-02,-3.260225958719999931e-03,-1.071672716279999799e-02,-1.103890455589999833e-02,3.278614652270000172e-03,3.293595650550000010e-03,-3.116762105029999930e+02,-4.758110383620000050e+00,4.404211044309999656e-01 +1.311670191290000105e+02,-1.011152635757897045e+00,-2.224500709446592950e+01,2.224500709446592950e+01,3.999999999999204192e-02,5.184140000000000015e+01,5.184140000000000015e+01,-6.267768908629267344e+01,-6.267768908629267344e+01,2.960409553280000239e+01,2.403179556129999839e-01,-1.820898960989999978e+03,7.544831265100000905e+01,4.497979237640000605e+01,6.681326461640000325e-01,3.742192085540000379e-01,2.861926120239999694e-03,-3.059274334940000279e-04,5.087893073600000243e-04,1.817319682689999983e-03,0.000000000000000000e+00,-2.325723872559999975e-02,5.126044489580000585e-01,-5.788093587040000175e-03,-4.874936289189999924e-03,-5.788093587040000175e-03,-9.201508279059999670e-03,3.988114954810000230e-03,3.187106345429999588e-03,7.019685601550001118e-03,7.513678335300000635e-03,-3.155911999539999897e+02,-4.851962192390000261e+00,2.340240478520000111e-01 +1.322056949139999915e+02,-1.026415365583275507e+00,-2.216868985673962555e+01,2.216868985673962555e+01,3.000000000000113687e-02,5.504179999999999495e+01,5.727700000000000102e+01,-6.346985036786380618e+01,-6.346985036786380618e+01,2.956635506320000317e+01,2.349203675990000073e-01,-1.820205582210000102e+03,7.583831662919999417e+01,4.498248396700000029e+01,6.570948004899999084e-01,3.705289390309999820e-01,2.258703668449999705e-03,-5.133096284310000425e-04,9.068767878650000561e-04,1.274382455569999812e-03,0.000000000000000000e+00,-2.232718022509999969e-02,5.138741650929999905e-01,-6.031940882299999945e-03,-5.907073791089999595e-03,-6.031940882299999945e-03,-5.076493615949999837e-03,4.162286696989999854e-03,4.046238669630000499e-03,2.870010467150000202e-03,3.215658494489999873e-03,-3.140947164259999909e+02,-4.871897534019999476e+00,1.235342025760000073e-01 +1.332413229940000008e+02,-8.945266570404922790e-01,-2.214321394219268768e+01,2.214321394219268768e+01,2.000000000001023182e-02,5.841999999999999460e+01,5.841999999999999460e+01,-6.425489041557409564e+01,-6.425489041557409564e+01,2.959955824360000065e+01,2.311690002679999967e-01,-1.819519437559999915e+03,7.622612374349999698e+01,4.498417603800000109e+01,6.518396564299999696e-01,3.688951095720000017e-01,9.486677599470000116e-04,-4.161898436559999552e-04,7.499376791910000988e-04,7.659929935530000256e-04,0.000000000000000000e+00,-2.125989708140000115e-02,5.147718510850000095e-01,-2.469673732969999719e-03,-2.855859242540000325e-03,-2.469673732969999719e-03,-2.368755256729999838e-03,9.035776863289999520e-04,1.252070845410000128e-03,6.212177543119998778e-04,7.649668596019999940e-04,-3.108504538779999962e+02,-4.753423239619999130e+00,1.053037643429999975e-01 +1.342786269190000041e+02,-9.361923218653686041e-01,-2.209033217966162965e+01,2.209033217966162965e+01,5.000000000001136868e-02,4.574539999999999651e+01,4.574539999999999651e+01,-6.499849142886378672e+01,-6.499849142886378672e+01,2.990962496899999934e+01,2.399828135970000220e-01,-1.818869923259999950e+03,7.659393657799999744e+01,4.498451788779999561e+01,6.483477551670000505e-01,3.674336407919999714e-01,-2.232269362059999653e-04,-1.735238833539999993e-04,3.249540194070000068e-04,5.082749790449999847e-04,0.000000000000000000e+00,-2.071212514990000003e-02,5.155408642600001201e-01,1.448906434189999948e-03,9.146437738700000141e-04,1.448906434189999948e-03,-2.169464083360000180e-03,-2.771831739139999848e-03,-2.287408641239999790e-03,7.380503408760001388e-04,7.966992159949999857e-04,-3.090497639409999806e+02,-4.691432704260000364e+00,3.713092803959999744e-01 +1.353203620909999927e+02,-9.495109839242354965e-01,-2.204643242885395082e+01,2.204643242885395082e+01,3.999999999999204192e-02,5.504179999999999495e+01,8.003539999999999566e+01,-6.578492160437220093e+01,-6.578492160437220093e+01,2.937223488550000283e+01,2.198306918140000010e-01,-1.818183033869999917e+03,7.698286209060000829e+01,4.498514528350000319e+01,6.562231677790000273e-01,3.730002764890000266e-01,1.181077346339999860e-03,-3.931035845750000131e-04,6.902729517429999698e-04,1.584207459549999853e-03,0.000000000000000000e+00,-2.060253909480000076e-02,5.179481564190000498e-01,-4.978147553329999482e-03,-5.112364031960000069e-03,-4.978147553329999482e-03,-7.293496998779999685e-03,2.723679129780000232e-03,2.870911434550000012e-03,4.729678734989999599e-03,5.052044401370000062e-03,-3.110501480180000158e+02,-4.717798757069999738e+00,-3.040084838870000250e-01 +1.363756380080000099e+02,-8.964125353468458401e-01,-2.199854740163644706e+01,2.199854740163644706e+01,3.000000000000113687e-02,5.054599999999999937e+01,5.054599999999999937e+01,-6.655849990571489627e+01,-6.655849990571489627e+01,2.980001505030000075e+01,2.320742309090000066e-01,-1.817508872460000021e+03,7.736750966169999799e+01,4.498379137050000054e+01,6.378360140339999207e-01,3.624410744800000139e-01,-3.297606835580000392e-03,4.007964092350000296e-04,-6.694050764119998612e-04,-1.104772305230000088e-03,0.000000000000000000e+00,-2.005171321400000053e-02,5.155736822259999741e-01,1.494791511090000011e-02,1.360963495339999850e-02,1.494791511090000011e-02,4.700180868260000339e-03,-1.455740838699999887e-02,-1.334029146729999969e-02,-4.074653839540000148e-03,-4.430837382159999796e-03,-3.053984942339999975e+02,-4.651212098430000275e+00,2.598190307620000250e-01 +1.374148969649999970e+02,-1.041265449384365160e+00,-2.192400990472196654e+01,2.192400990472196654e+01,3.999999999999204192e-02,5.328920000000000101e+01,5.328920000000000101e+01,-6.733576037254314883e+01,-6.733576037254314883e+01,2.982316701710000117e+01,2.280014604329999861e-01,-1.816829799079999930e+03,7.775138597859999834e+01,4.498156209550000284e+01,6.501021913270000896e-01,3.682008017750000306e-01,-9.881662733139998621e-04,3.454113219669999939e-04,-6.146377003819999182e-04,6.247152849199999990e-04,0.000000000000000000e+00,-2.154381300990000289e-02,5.170414351359999827e-01,6.863849524539999969e-03,6.945068890919999655e-03,6.863849524539999969e-03,-5.701471451939999803e-03,-7.585818870139999365e-03,-7.637149340290000366e-03,4.888086755710000474e-03,5.009391002560001013e-03,-3.067033721899999819e+02,-4.575546060399999782e+00,1.988749504089999953e-01 +1.384440670019999970e+02,-1.080570347816240062e+00,-2.185916342344405194e+01,2.185916342344405194e+01,2.000000000001023182e-02,5.504179999999999495e+01,5.735320000000000107e+01,-6.811402273561182596e+01,-6.811402273561182596e+01,2.978039358099999845e+01,2.242922484870000233e-01,-1.816150509329999977e+03,7.813661057689999723e+01,4.498069574960000239e+01,6.455794196049999822e-01,3.665568746119999832e-01,-5.893397235319999686e-04,2.928100496419999937e-04,-5.141417530030000915e-04,5.515215279169999579e-04,0.000000000000000000e+00,-2.232693292090000281e-02,5.177281944980000050e-01,5.987775133680000098e-03,6.130198249790000213e-03,5.987775133680000098e-03,-5.390320935270000863e-03,-6.855640436520000353e-03,-6.996622627329999664e-03,4.380492197209999786e-03,4.523896557729999678e-03,-3.076399533150000138e+02,-4.651561775550000277e+00,1.167531013489999936e-01 +1.394797489649999989e+02,-1.034017211551055526e+00,-2.181605674177573206e+01,2.181605674177573206e+01,5.000000000001136868e-02,4.714239999999999498e+01,4.714239999999999498e+01,-6.885139130064527535e+01,-6.885139130064527535e+01,3.000622546620000008e+01,2.298315018419999911e-01,-1.815507391299999881e+03,7.850219868220000308e+01,4.498010540579999628e+01,6.419478213420000134e-01,3.650634037619999717e-01,-5.422184431989999793e-04,2.693898379030000003e-04,-4.673727977869999517e-04,2.854180229979999994e-04,0.000000000000000000e+00,-2.286797888840000001e-02,5.179596713809999642e-01,6.692983584170000139e-03,6.810807469900000306e-03,6.692983584170000139e-03,-3.641215905250000124e-03,-7.326798318219999648e-03,-7.461720229260000552e-03,2.919908071399999767e-03,2.990303145889999445e-03,-3.062851331290000303e+02,-4.605815483480000694e+00,3.293223381040000231e-01 +1.406700680250000062e+02,-1.060652847920308561e+00,-2.176298943038595013e+01,2.176298943038595013e+01,3.999999999999204192e-02,5.748019999999999641e+01,5.748019999999999641e+01,-6.962866236234485484e+01,-6.962866236234485484e+01,2.989338066590000054e+01,2.199468016620000077e-01,-1.814829519590000018e+03,7.888754382710000357e+01,4.498077048430000247e+01,6.467377455739999892e-01,3.688395370530000439e-01,1.596233696650000127e-03,-1.893772059250000198e-04,3.163484165379999886e-04,1.301286600790000020e-03,0.000000000000000000e+00,-2.329825453499999657e-02,5.197481197190000346e-01,-2.401145784400000177e-03,-1.929668462019999784e-03,-2.401145784400000177e-03,-7.181554278209999892e-03,7.272631664489997852e-04,3.062301385990000074e-04,5.225386029990000333e-03,5.558115954790000292e-03,-3.075065452210000103e+02,-4.618034056690000000e+00,1.140069961549999983e-01 +1.420179374150000058e+02,-1.000427388269985451e+00,-2.170854948314308075e+01,2.170854948314308075e+01,1.999999999998181011e-02,4.813299999999999557e+01,4.813299999999999557e+01,-7.040025388414021279e+01,-7.040025388414021279e+01,3.011045641850000010e+01,2.256987988949999968e-01,-1.814157807799999773e+03,7.927175860199999136e+01,4.498183534399999672e+01,6.369542884329999488e-01,3.646316115980000050e-01,5.333119172659999893e-04,-1.555117006029999808e-04,2.796576524140000444e-04,5.801821222409999246e-04,0.000000000000000000e+00,-2.283283020259999768e-02,5.201955045560000546e-01,8.896860869039999392e-04,7.677591815110000432e-04,8.896860869039999392e-04,-3.044663859640000213e-03,-2.106968644279999872e-03,-2.010698959659999903e-03,1.656580026220000074e-03,1.801724081500000098e-03,-3.053690603300000248e+02,-4.604335113240000332e+00,3.054494857789999962e-01 +1.433718864850000045e+02,-9.242290125622855124e-01,-2.167364630844377871e+01,2.167364630844377871e+01,1.000000000001932676e-02,4.305299999999999727e+01,4.305299999999999727e+01,-7.117335467936165116e+01,-7.117335467936165116e+01,3.034042342429999906e+01,2.292045652870000061e-01,-1.813484974349999902e+03,7.965692212329999222e+01,4.498313552460000153e+01,6.420068558110000323e-01,3.687182187510000264e-01,1.716603871650000147e-03,-4.437576282620000145e-04,7.669963549980000038e-04,1.369777313910000181e-03,0.000000000000000000e+00,-2.251371454580000306e-02,5.221433219850000196e-01,-5.144023842779999606e-03,-5.074646062539999586e-03,-5.144023842779999606e-03,-6.103564642699999682e-03,3.081304043860000254e-03,3.035096605199999638e-03,3.758887884699999710e-03,4.064015185349999920e-03,-3.058061614050000117e+02,-4.566766768249999942e+00,4.238147735599999688e-01 +1.436220169069999884e+02,-1.041913664155904806e+00,-2.159581681264755559e+01,2.159581681264755559e+01,3.999999999999204192e-02,4.838700000000000045e+01,4.838700000000000045e+01,-7.191424749080293566e+01,-7.191424749080293566e+01,3.036764718730000112e+01,2.224015444519999996e-01,-1.812841059240000050e+03,8.002727587359999006e+01,4.498548500670000294e+01,6.441162288319999263e-01,3.722042478959999845e-01,2.625451791250000416e-03,-7.743724106179999478e-04,1.335545478690000013e-03,2.046495570490000030e-03,0.000000000000000000e+00,-2.163257916350000074e-02,5.248557962400000054e-01,-1.129255328229999793e-02,-1.134249145989999798e-02,-1.129255328229999793e-02,-8.382159410069998928e-03,8.222772862610000510e-03,8.294271548029998747e-03,4.876771335010000007e-03,5.333939498180000939e-03,-3.078767716159999850e+02,-4.637262275130000333e+00,2.956252098080000001e-01 +1.446602220540000019e+02,-1.052579705146076128e+00,-2.153284507754521826e+01,2.153284507754521826e+01,3.000000000000113687e-02,5.504179999999999495e+01,6.164579999999999416e+01,-7.268812911412103972e+01,-7.268812911412103972e+01,3.020798221969999631e+01,2.137919366360000184e-01,-1.812170005109999920e+03,8.041631767350000359e+01,4.498737528529999707e+01,6.368122177539999873e-01,3.702313582289999960e-01,9.364372651810001303e-04,-5.838470634440000220e-04,1.026665458799999901e-03,1.483362360809999721e-03,0.000000000000000000e+00,-2.021274432359999873e-02,5.268032601979999452e-01,-6.817622041739999222e-03,-7.501030100130000322e-03,-6.817622041739999222e-03,-6.062819218459999764e-03,3.916087355430000055e-03,4.542198813020000177e-03,2.830313743939999981e-03,3.103987931350000052e-03,-3.062191184170000042e+02,-4.620562427930000382e+00,2.437877655030000132e-02 +1.457166681289999985e+02,-9.983059024145803928e-01,-2.150546993384455519e+01,2.150546993384455519e+01,2.000000000001023182e-02,5.504179999999999495e+01,6.906260000000000332e+01,-7.345339425607191686e+01,-7.345339425607191686e+01,3.007340344289999834e+01,2.096031606199999786e-01,-1.811507400319999988e+03,8.080241438659999176e+01,4.498659017810000194e+01,6.289400019949999976e-01,3.662287040820000339e-01,-2.233152828860000133e-03,9.984326881449999652e-05,-1.300145658299999799e-04,1.059872859389999897e-04,0.000000000000000000e+00,-1.944843805059999833e-02,5.269075217010000811e-01,6.724217949529999114e-03,5.486657698560000462e-03,6.724217949529999114e-03,-1.268700841200000057e-03,-8.266033208399999402e-03,-7.149339314879999893e-03,-2.812834178729999393e-04,-3.939807751209999835e-04,-3.020419217459999572e+02,-4.501263217710000042e+00,-1.161737442019999955e-01 +1.467563400269999931e+02,-1.053051130693902326e+00,-2.142826378194665082e+01,2.142826378194665082e+01,2.000000000001023182e-02,5.621020000000000039e+01,5.621020000000000039e+01,-7.421294868577918180e+01,-7.421294868577918180e+01,3.026030659380000287e+01,2.115792781109999965e-01,-1.810849527760000001e+03,8.118525444370000343e+01,4.498284934729999662e+01,6.259383707779999639e-01,3.632389591889999547e-01,-4.561869430010000344e-03,8.914825323310001087e-04,-1.492084091780000125e-03,-9.401419116039998842e-04,0.000000000000000000e+00,-2.031010906740000205e-02,5.258714797710000166e-01,1.991224864270000131e-02,1.884331517859999874e-02,1.991224864270000131e-02,7.964511327239998627e-04,-1.998326321790000124e-02,-1.904450886309999591e-02,-6.409626498180001023e-04,-9.976448172350001631e-04,-2.991776626070000020e+02,-4.399327659519999933e+00,1.300902366639999919e-01 +1.477936761379999950e+02,-1.106026653180126829e+00,-2.137347374958550716e+01,2.137347374958550716e+01,9.999999999990905053e-03,5.234939999999999571e+01,5.234939999999999571e+01,-7.497271344551349159e+01,-7.497271344551349159e+01,3.033390723840000192e+01,2.128569930789999953e-01,-1.810190314120000039e+03,8.156641483229999778e+01,4.497854798260000564e+01,6.285657631319999661e-01,3.632086667700000215e-01,-3.417936173829999764e-03,1.104246888339999785e-03,-1.887005829880000199e-03,-2.931057341850000064e-04,0.000000000000000000e+00,-2.273900633640000071e-02,5.259576142149999800e-01,1.900839734500000058e-02,1.904232329799999957e-02,1.900839734500000058e-02,-4.807671173870000335e-03,-1.903319581140000202e-02,-1.911101760829999816e-02,4.838841132830000447e-03,4.738976863579999824e-03,-2.996597841359999848e+02,-4.393842707490000166e+00,1.987557411190000178e-01 +1.488388431070000024e+02,-1.200246460681774874e+00,-2.130084729916746866e+01,2.130084729916746866e+01,4.999999999998294697e-02,4.813299999999999557e+01,4.813299999999999557e+01,-7.569796031658488289e+01,-7.569796031658488289e+01,3.042744995400000008e+01,2.149729728699999731e-01,-1.809560834220000061e+03,8.192987837529999240e+01,4.497611195460000033e+01,6.297347188440000076e-01,3.638146285450000184e-01,-1.417981414850000071e-03,8.504277065870000183e-04,-1.468004405980000236e-03,1.678985959820000090e-04,0.000000000000000000e+00,-2.483196838959999750e-02,5.261841018600000863e-01,1.356462760849999963e-02,1.425811929260000117e-02,1.356462760849999963e-02,-6.479286874319999112e-03,-1.374306763170000251e-02,-1.442868421889999947e-02,6.227422127900000305e-03,6.308721948039999576e-03,-3.007865355769999951e+02,-4.428574330680000060e+00,2.793216705319999660e-01 +1.498840100769999992e+02,-1.293517087754131101e+00,-2.123010983232629201e+01,2.123010983232629201e+01,3.999999999999204192e-02,4.249419999999999931e+01,4.249419999999999931e+01,-7.646150229154973488e+01,-7.646150229154973488e+01,3.059693283540000053e+01,2.182086259129999983e-01,-1.808898350669999900e+03,8.231282443399999238e+01,4.497609245179999959e+01,6.312016218909999310e-01,3.656721927920000281e-01,1.263404865089999942e-03,2.191048895370000167e-04,-3.992626762619999581e-04,8.727327882350000357e-04,0.000000000000000000e+00,-2.611017815390000163e-02,5.271139725490000538e-01,3.230159424850000040e-03,4.278458810899999666e-03,3.230159424850000040e-03,-7.370488935590000130e-03,-4.130606106329999701e-03,-5.113708317709999597e-03,6.238822432069999341e-03,6.535239428779999332e-03,-3.020411138960000130e+02,-4.463354720849999957e+00,3.955268859859999986e-01 +1.509243760109999926e+02,-1.183512445335942020e+00,-2.118571000342568311e+01,2.118571000342568311e+01,3.999999999999204192e-02,5.864859999999999474e+01,5.864859999999999474e+01,-7.722826029673406367e+01,-7.722826029673406367e+01,3.039261015579999992e+01,2.041849493980000263e-01,-1.808233853270000054e+03,8.269848625560000244e+01,4.497900281359999752e+01,6.330895649069999687e-01,3.690746778099999736e-01,3.947367459540000040e-03,-6.345929989490000289e-04,1.052060897600000031e-03,1.832179661339999877e-03,0.000000000000000000e+00,-2.592938964929999632e-02,5.292566711010000535e-01,-1.012459847920000114e-02,-9.128309269829999739e-03,-1.012459847920000114e-02,-8.505154315600000139e-03,7.763322880270000573e-03,6.877580849050000771e-03,5.720160425979998846e-03,6.248684099220000281e-03,-3.037825460679999878e+02,-4.512986765959999147e+00,6.843662261959999882e-02 +1.519697229859999936e+02,-1.124647193157262803e+00,-2.113377081042354533e+01,2.113377081042354533e+01,3.000000000000113687e-02,5.882639999999999958e+01,5.882639999999999958e+01,-7.798521724804159305e+01,-7.798521724804159305e+01,3.041054344870000037e+01,2.027360051869999957e-01,-1.807579495539999925e+03,8.308163098840000771e+01,4.498211876100000239e+01,6.194373332529999887e-01,3.630494309069999814e-01,2.101501867169999847e-03,-6.483024707929999769e-04,1.113317033539999940e-03,7.687001823000000561e-04,0.000000000000000000e+00,-2.438882307450000037e-02,5.296443178410000785e-01,-5.622220149569999437e-03,-5.777525900150000046e-03,-5.622220149569999437e-03,-1.547581199389999867e-03,4.010724496730000248e-03,4.143271983679999888e-03,-3.049308406240000113e-04,-8.667287519290000351e-05,-2.999520322189999888e+02,-4.460507318560000378e+00,6.415939331049999583e-02 +1.530329289439999911e+02,-1.059533217489159851e+00,-2.106029052577300931e+01,2.106029052577300931e+01,3.000000000000113687e-02,5.242559999999999576e+01,5.242559999999999576e+01,-7.873711498316060897e+01,-7.873711498316060897e+01,3.057432285380000181e+01,2.061007469889999943e-01,-1.806929904789999910e+03,8.346275999659999911e+01,4.498374781790000299e+01,6.181706462899999588e-01,3.630640426389999953e-01,9.428821384380001343e-04,-5.147450239129999902e-04,8.912938679739999988e-04,5.588674618109999237e-04,0.000000000000000000e+00,-2.317075239780000059e-02,5.304263992619999701e-01,-2.554195720310000004e-03,-3.038262504840000006e-03,-2.554195720310000004e-03,-6.906733909900000801e-04,1.098380023079999863e-03,1.546755056719999926e-03,-8.830395390619999669e-04,-8.008340571300000005e-04,-2.974141995730000190e+02,-4.339979421189999798e+00,1.831288337709999769e-01 +1.540834500789999879e+02,-1.082338160701388663e+00,-2.099595918168150988e+01,2.099595918168150988e+01,3.000000000000113687e-02,4.671059999999999945e+01,4.671059999999999945e+01,-7.949132406432387654e+01,-7.949132406432387654e+01,3.077133184300000224e+01,2.092804014680000046e-01,-1.806278487320000067e+03,8.384527334890000816e+01,4.498465758399999714e+01,6.211209057869999661e-01,3.654481004879999717e-01,6.845774625930000539e-04,-4.446324050649999690e-04,7.650436953239998479e-04,9.000273878480001023e-04,0.000000000000000000e+00,-2.239387908689999956e-02,5.318694730109999602e-01,-2.889455569000000303e-03,-3.338520091079999648e-03,-2.889455569000000303e-03,-3.280798122829999778e-03,1.048663824679999879e-03,1.480030810609999714e-03,1.269995343599999906e-03,1.422308842350000031e-03,-2.978878513700000212e+02,-4.339800771530000212e+00,2.974557876589999927e-01 +1.551224849230000018e+02,-1.104848130087919156e+00,-2.094504181923583275e+01,2.094504181923583275e+01,3.000000000000113687e-02,5.229860000000000042e+01,5.229860000000000042e+01,-8.024917304088609171e+01,-8.024917304088609171e+01,3.076500003590000176e+01,2.035590708259999992e-01,-1.805624371870000004e+03,8.423026175510000257e+01,4.498546466789999698e+01,6.234596011909999680e-01,3.680058535740000081e-01,7.271306830799999926e-04,-4.331800482849999909e-04,7.408799396280000334e-04,1.307876172239999957e-03,0.000000000000000000e+00,-2.177258726850000298e-02,5.338359947519999427e-01,-4.366324746759999743e-03,-4.768271457229999663e-03,-4.366324746759999743e-03,-6.020181357080000434e-03,1.970059620310000113e-03,2.360595511260000536e-03,3.361360195069999952e-03,3.612505411110000005e-03,-2.993190506619999951e+02,-4.382859188640000347e+00,1.784505844119999851e-01 +1.561611270909999973e+02,-1.146184994645218946e+00,-2.086859811601217274e+01,2.086859811601217274e+01,1.999999999998181011e-02,5.504179999999999495e+01,5.902959999999999496e+01,-8.100371606459660256e+01,-8.100371606459660256e+01,3.068833029880000041e+01,1.994410455229999879e-01,-1.804973992570000064e+03,8.461486089839999636e+01,4.498535141869999876e+01,6.176726250449999789e-01,3.656646026510000369e-01,-8.749654121930001190e-04,-8.186724158419999924e-05,1.619250790719999977e-04,7.133711941480000559e-04,0.000000000000000000e+00,-2.123083978420000142e-02,5.348456566089999642e-01,2.038302817299999896e-03,1.297009379489999980e-03,2.038302817299999896e-03,-4.330740021760000509e-03,-4.013012078550000535e-03,-3.336662687370000116e-03,2.203239407009999987e-03,2.291086713880000156e-03,-2.980019523469999854e+02,-4.372486524890000226e+00,4.393148422240000101e-02 +1.572069120410000096e+02,-1.196800839918486625e+00,-2.080415219120731152e+01,2.080415219120731152e+01,1.000000000001932676e-02,5.504179999999999495e+01,5.643880000000000052e+01,-8.175335957304687895e+01,-8.175335957304687895e+01,3.073411797400000012e+01,1.986125111579999936e-01,-1.804328192030000082e+03,8.499746413329999939e+01,4.498343277529999540e+01,6.140828637949999891e-01,3.635487749889999565e-01,-2.609984592900000018e-03,4.315906376240000197e-04,-6.962473516529998950e-04,-7.513908001840000073e-05,0.000000000000000000e+00,-2.148616182800000204e-02,5.348432074550000248e-01,1.123695951760000054e-02,1.040633493879999927e-02,1.123695951760000054e-02,-2.150569126449999955e-03,-1.225529558069999962e-02,-1.151918380990000004e-02,1.157700269459999891e-03,1.037720255360000078e-03,-2.956428148990000295e+02,-4.296666805269999223e+00,8.985948562619998359e-02 +1.582413611409999987e+02,-1.281555306982181675e+00,-2.072282009856400364e+01,2.072282009856400364e+01,5.000000000001136868e-02,6.535419999999999163e+01,6.687819999999999254e+01,-8.246553747746615670e+01,-8.246553747746615670e+01,3.053831164880000060e+01,1.910293251279999993e-01,-1.803714349630000015e+03,8.536043652450000252e+01,4.498061462409999933e+01,6.137302250880000143e-01,3.626881025979999951e-01,-2.861347977050000130e-03,7.507535157190000025e-04,-1.243801977839999835e-03,-1.593886547010000100e-04,0.000000000000000000e+00,-2.274049494669999963e-02,5.348912639760000642e-01,1.500729848879999925e-02,1.463027665670000102e-02,1.500729848879999925e-02,-3.552938356190000081e-03,-1.555806526160000147e-02,-1.524914396970000058e-02,3.035941380880000182e-03,2.934071043170000028e-03,-2.949468622229999824e+02,-4.264828074110000422e+00,-1.087002754209999977e-01 +1.592815690040000050e+02,-1.463083665804080669e+00,-2.062155301342329849e+01,2.062155301342329849e+01,3.999999999999204192e-02,6.535419999999999163e+01,6.842759999999999820e+01,-8.320716745652164548e+01,-8.320716745652164548e+01,3.041519784800000181e+01,1.892488747839999874e-01,-1.803075048539999898e+03,8.573827763030000426e+01,4.497700449050000060e+01,6.073176808500000412e-01,3.579658135909999928e-01,-3.695744341439999910e-03,1.120139397460000056e-03,-1.867015771900000162e-03,-1.022795611159999949e-03,0.000000000000000000e+00,-2.452929184559999795e-02,5.334266805589999993e-01,2.294916522590000063e-02,2.268163754970000182e-02,2.294916522590000063e-02,-3.275671331920000212e-05,-2.206910373580000043e-02,-2.189825014890000102e-02,1.103107779230000059e-03,8.161441141170000134e-04,-2.925827886120000016e+02,-4.219152856490000048e+00,-1.478996276860000125e-01 +1.603246390820000045e+02,-1.127108761672801274e+00,-2.062556529780924919e+01,2.062556529780924919e+01,3.000000000000113687e-02,4.777740000000000009e+01,4.777740000000000009e+01,-8.394517597531896058e+01,-8.394517597531896058e+01,3.071701686070000292e+01,2.007617205380000103e-01,-1.802438129209999943e+03,8.611312400459999594e+01,4.497328335539999955e+01,6.066275897580000187e-01,3.559819445660000192e-01,-3.134888489640000157e-03,1.239034006569999938e-03,-2.087650830519999917e-03,-1.268208330850000010e-03,0.000000000000000000e+00,-2.686464478420000010e-02,5.317088446670000801e-01,2.517890095000000286e-02,2.550026581959999664e-02,2.517890095000000286e-02,1.072322773940000097e-03,-2.318822612920000067e-02,-2.357541931770000196e-02,1.152993190300000094e-03,8.525237280289999289e-04,-2.911550195229999645e+02,-4.157194233819999418e+00,2.523441314700000104e-01 +1.613877270220000071e+02,-1.259048266569092966e+00,-2.054776499104462317e+01,2.054776499104462317e+01,2.000000000001023182e-02,4.660899999999999466e+01,4.660899999999999466e+01,-8.469145146382126654e+01,-8.469145146382126654e+01,3.077950300119999838e+01,2.002147883179999921e-01,-1.801792951449999919e+03,8.649043577829999663e+01,4.497253856999999755e+01,6.175105460699999993e-01,3.618906657789999759e-01,1.516915801740000101e-03,3.683475715589999873e-04,-6.718394845659999854e-04,6.065195407790000557e-04,0.000000000000000000e+00,-2.889850001029999754e-02,5.325223482890000248e-01,6.410802937359999683e-03,7.962295291379999432e-03,6.410802937359999683e-03,-6.326716694729999681e-03,-6.101018941879999928e-03,-7.513955432339999851e-03,6.510116759540000159e-03,6.775056553770000128e-03,-2.947661947729999952e+02,-4.224482288409999953e+00,2.682199478150000260e-01 +1.624359989170000063e+02,-1.372795164118640443e+00,-2.047214874343574564e+01,2.047214874343574564e+01,3.999999999999204192e-02,6.535419999999999163e+01,7.343139999999999645e+01,-8.544111005561725847e+01,-8.544111005561725847e+01,3.034170462770000043e+01,1.841207295659999799e-01,-1.801145663020000029e+03,8.687065497839999750e+01,4.497561716590000458e+01,6.157454310369999684e-01,3.628868805809999931e-01,4.125748925760000171e-03,-5.457741153260000071e-04,8.747487166739998299e-04,1.296148466780000074e-03,0.000000000000000000e+00,-2.885426548950000350e-02,5.337729043669999784e-01,-7.400369144599999900e-03,-6.022893442729999013e-03,-7.400369144599999900e-03,-5.910244312550000899e-03,6.275202195699999298e-03,5.041100544539999645e-03,4.457597970840000180e-03,4.928451414370000477e-03,-2.970032069779999802e+02,-4.323995068680000387e+00,-2.412300109859999986e-01 +1.634711420540000120e+02,-1.292512666638526264e+00,-2.040526331886982447e+01,2.040526331886982447e+01,3.000000000000113687e-02,6.118860000000000099e+01,6.118860000000000099e+01,-8.617781687567922688e+01,-8.617781687567922688e+01,3.048107099780000340e+01,1.877526938919999722e-01,-1.800510977469999943e+03,8.724642556379998837e+01,4.497863682709999722e+01,6.007230969469999904e-01,3.551166619569999794e-01,1.846246290540000000e-03,-5.517261554559999568e-04,9.358224795790001009e-04,-2.963264389169999896e-04,0.000000000000000000e+00,-2.735495454470000115e-02,5.323006877929999936e-01,3.282533650810000206e-05,-6.171496246800000523e-05,3.282533650810000206e-05,5.397533453039999977e-03,6.664820558359999198e-04,7.427673075910001680e-04,-4.723794189649999607e-03,-4.716481107919999992e-03,-2.922109078390000150e+02,-4.243498256439999672e+00,-1.751184463499999913e-02 +1.646640860949999876e+02,-1.205783088190493624e+00,-2.034502453213076478e+01,2.034502453213076478e+01,2.000000000001023182e-02,5.979159999999999542e+01,5.979159999999999542e+01,-8.691287299547904865e+01,-8.691287299547904865e+01,3.054077666400000268e+01,1.877019703389999905e-01,-1.799877256729999999e+03,8.762063334660000180e+01,4.498076020470000458e+01,6.044904628549999659e-01,3.573005030479999844e-01,2.039979380050000075e-03,-6.722823050160000452e-04,1.125983115539999982e-03,3.048052853659999882e-04,0.000000000000000000e+00,-2.624961778429999934e-02,5.328929236980000095e-01,-3.331042248799999904e-03,-3.343987545869999897e-03,-3.331042248799999904e-03,2.181206018389999796e-03,3.200379629719999394e-03,3.259537747369999940e-03,-2.346406271249999991e-03,-2.265655816889999754e-03,-2.909334588579999945e+02,-4.137007286900000302e+00,8.261203765869999313e-03 +1.659943363650000094e+02,-1.105437391750914822e+00,-2.028198110902171791e+01,2.028198110902171791e+01,9.999999999990905053e-03,5.295899999999999608e+01,5.295899999999999608e+01,-8.764921199069183899e+01,-8.764921199069183899e+01,3.070166324659999901e+01,1.912899315359999908e-01,-1.799242675519999921e+03,8.799583958620000601e+01,4.498259961060000478e+01,6.042305418050000210e-01,3.576038567390000256e-01,1.384652793710000173e-03,-6.281658164029999729e-04,1.058548591910000048e-03,4.022635239509999715e-04,0.000000000000000000e+00,-2.497998225440000233e-02,5.335091843210000295e-01,-3.070172150329999669e-03,-3.370155271929999464e-03,-3.070172150329999669e-03,1.190418922630000122e-03,2.454245415500000155e-03,2.775272276179999945e-03,-1.871405446769999932e-03,-1.785301918369999827e-03,-2.912355409659999737e+02,-4.157571511919999629e+00,1.338386535639999875e-01 +1.674290568749999863e+02,-1.117281501414669531e+00,-2.021808419462745832e+01,2.021808419462745832e+01,3.999999999999204192e-02,4.864099999999999824e+01,4.864099999999999824e+01,-8.835329728886810585e+01,-8.835329728886810585e+01,3.085441161960000045e+01,1.931879073380000089e-01,-1.798636017110000012e+03,8.835477823719999435e+01,4.498403881800000192e+01,6.072934319720000307e-01,3.600189793999999943e-01,1.293724219230000042e-03,-6.333643612139999842e-04,1.065201007240000044e-03,8.287287279850000113e-04,0.000000000000000000e+00,-2.394259473019999876e-02,5.347975347369999799e-01,-4.724650434740000453e-03,-5.075414881850000455e-03,-4.724650434740000453e-03,-1.717406762099999741e-03,3.311982338869999976e-03,3.686165216440000399e-03,1.626495936500000153e-04,3.281570966890000503e-04,-2.919756578619999914e+02,-4.167874223760000163e+00,2.127699851990000057e-01 +1.676346831319999922e+02,-1.162771413979756696e+00,-2.015856220507424368e+01,2.015856220507424368e+01,3.999999999999204192e-02,5.999479999999999791e+01,5.999479999999999791e+01,-8.909509872697155686e+01,-8.909509872697155686e+01,3.073259912329999821e+01,1.845644712450000002e-01,-1.797997310749999997e+03,8.873360275180000656e+01,4.498524018119999823e+01,6.084821484350000365e-01,3.617387860160000135e-01,8.802702641079999555e-04,-5.597544261619999840e-04,9.449450034279999492e-04,1.069231286590000126e-03,0.000000000000000000e+00,-2.292281670089999987e-02,5.364117905210000758e-01,-4.809413171780000176e-03,-5.293419257569999779e-03,-4.809413171780000176e-03,-3.860673952999999891e-03,2.772847166649999948e-03,3.258819399039999867e-03,1.620676827949999940e-03,1.826074094480000009e-03,-2.929398582590000046e+02,-4.201243230919999405e+00,-1.532554626459999968e-03 +1.686740899090000028e+02,-1.200364305137325838e+00,-2.009083297584258787e+01,2.009083297584258787e+01,3.000000000000113687e-02,6.703059999999999263e+01,6.703059999999999263e+01,-8.983078958790856916e+01,-8.983078958790856916e+01,3.060407661400000023e+01,1.795045137409999880e-01,-1.797364606829999957e+03,8.911041134559999932e+01,4.498474442699999543e+01,6.003772262380000502e-01,3.573751338589999937e-01,-1.668929466239999935e-03,6.916353526569999541e-06,1.671326843400000104e-05,4.815111608699999840e-05,0.000000000000000000e+00,-2.220681464020000245e-02,5.364524267199999308e-01,6.305038817460000521e-03,5.246100727920000387e-03,6.305038817460000521e-03,-3.609202046150000536e-04,-7.443870039390000810e-03,-6.467007984350000259e-03,-7.798026661160000449e-04,-8.599870518119998855e-04,-2.904411800139999968e+02,-4.165065406850000151e+00,-1.323833465579999924e-01 +1.697217381000000103e+02,-1.198478792628502987e+00,-2.002754681692309546e+01,2.002754681692309546e+01,2.000000000001023182e-02,5.372099999999999653e+01,5.372099999999999653e+01,-9.055994792959744188e+01,-9.055994792959744188e+01,3.078636489559999845e+01,1.864742487670000004e-01,-1.796737376719999929e+03,8.948363330669999982e+01,4.498170508439999793e+01,5.964488008020000231e-01,3.540380505430000269e-01,-3.862995304870000049e-03,7.272683630270000525e-04,-1.187371234260000069e-03,-8.694903759219999072e-04,0.000000000000000000e+00,-2.282019848199999881e-02,5.354788768429999957e-01,1.898373421190000312e-02,1.790370648799999992e-02,1.898373421190000312e-02,1.692244744809999783e-03,-1.883406650890000200e-02,-1.786868254950000137e-02,-1.335321879039999852e-03,-1.657220806299999905e-03,-2.873848282609999956e+02,-4.064384515909999607e+00,1.056852340699999948e-01 +1.707709140780000041e+02,-1.170019025199209750e+00,-1.997234672761002727e+01,1.997234672761002727e+01,2.000000000001023182e-02,6.212839999999999918e+01,6.212839999999999918e+01,-9.129295958264758326e+01,-9.129295958264758326e+01,3.063836783120000007e+01,1.802649646999999744e-01,-1.796105799089999891e+03,8.985723163430000682e+01,4.497816172800000345e+01,6.036110493440000058e-01,3.568850961749999717e-01,-2.767662358309999886e-03,8.965952252489999301e-04,-1.500399961680000090e-03,-2.327528668229999586e-04,0.000000000000000000e+00,-2.472999448249999996e-02,5.355759129489999770e-01,1.751284185410000027e-02,1.748565436979999943e-02,1.751284185410000027e-02,-3.776160574070000497e-03,-1.744950824999999886e-02,-1.745067489700000141e-02,3.905046989970000198e-03,3.811140046829999701e-03,-2.887535359659999585e+02,-4.064485886689999994e+00,-4.787158966059999743e-02 +1.718049590589999980e+02,-1.248915345101517360e+00,-1.990273394833585385e+01,1.990273394833585385e+01,9.999999999990905053e-03,4.691379999999999484e+01,4.691379999999999484e+01,-9.202336904673394713e+01,-9.202336904673394713e+01,3.084768676820000266e+01,1.887280642990000201e-01,-1.795476431600000069e+03,9.022943202060000090e+01,4.497516077369999721e+01,5.980066366189999982e-01,3.529895509359999850e-01,-2.698306220890000010e-03,1.019590153200000118e-03,-1.706767026789999999e-03,-7.614406852819999294e-04,0.000000000000000000e+00,-2.663632264759999840e-02,5.344210300410000558e-01,2.097860380830000177e-02,2.112607605860000043e-02,2.097860380830000177e-02,-1.154648016589999862e-03,-1.994044581609999769e-02,-2.014339534449999941e-02,2.315012496989999908e-03,2.137328730779999852e-03,-2.883165124889999902e+02,-4.092893720759999354e+00,2.276172637939999910e-01 +1.728443899160000115e+02,-1.325980517300363148e+00,-1.982993429547009967e+01,1.982993429547009967e+01,3.999999999999204192e-02,6.723380000000000223e+01,6.723380000000000223e+01,-9.272362509270406861e+01,-9.272362509270406861e+01,3.051082212689999906e+01,1.754099279639999842e-01,-1.794872361199999887e+03,9.058519958089999591e+01,4.497418382579999729e+01,6.060135924769999294e-01,3.574735741219999818e-01,5.265136633180000740e-04,4.492769437459999404e-04,-7.857042304229999328e-04,4.699719030250000085e-04,0.000000000000000000e+00,-2.830601661709999592e-02,5.351012150639999909e-01,8.352609163489999738e-03,9.459303496450001403e-03,8.352609163489999738e-03,-6.077761022689999286e-03,-8.380233909389999888e-03,-9.404512948230000016e-03,5.945214468359999969e-03,6.132551570909999805e-03,-2.902099668430000179e+02,-4.101404810200000028e+00,-1.482191085820000198e-01 +1.738909709460000101e+02,-1.327630179002048605e+00,-1.976493207127342799e+01,1.976493207127342799e+01,3.999999999999204192e-02,6.421119999999999095e+01,6.421119999999999095e+01,-9.345080197881043205e+01,-9.345080197881043205e+01,3.047361912929999761e+01,1.761173307899999985e-01,-1.794245871400000169e+03,9.095584979500000600e+01,4.497430957109999383e+01,5.935112070279999763e-01,3.505266405190000101e-01,-2.390876475059999995e-05,3.189559567159999860e-04,-5.399151449580001086e-04,-5.921249111030000905e-04,0.000000000000000000e+00,-2.892529608829999890e-02,5.335653505809999642e-01,1.164534666929999823e-02,1.204838283000000086e-02,1.164534666929999823e-02,1.958762225970000267e-03,-1.022995872799999963e-02,-1.065332992850000042e-02,-5.081547300629999904e-04,-5.637093244349999357e-04,-2.877670921370000201e+02,-4.105555587890000524e+00,-9.742355346679999750e-02 +1.749316201210000088e+02,-1.258106847015517671e+00,-1.969951040458622771e+01,1.969951040458622771e+01,3.000000000000113687e-02,5.623559999999999803e+01,5.623559999999999803e+01,-9.417467237221724474e+01,-9.417467237221724474e+01,3.057912017880000022e+01,1.799295097590000170e-01,-1.793621865730000081e+03,9.132423611389999962e+01,4.497475455470000583e+01,5.946247211020000423e-01,3.508241648489999753e-01,8.510073342639999216e-04,6.790073413709999891e-05,-1.286648681229999864e-04,-3.791187577649999564e-04,0.000000000000000000e+00,-2.927435051750000225e-02,5.329287030889999777e-01,7.910665541830000022e-03,8.510367766300000469e-03,7.910665541830000022e-03,2.355538902739999843e-03,-6.488312833819999577e-03,-7.055905858359998867e-03,-8.679566170130000686e-04,-9.010769947939998919e-04,-2.863117261979999739e+02,-4.013077979680000240e+00,4.455471038819999730e-02 +1.759620459079999932e+02,-1.175616748083117002e+00,-1.964786626943072889e+01,1.964786626943072889e+01,2.000000000001023182e-02,4.498339999999999606e+01,4.498339999999999606e+01,-9.490177811873469693e+01,-9.490177811873469693e+01,3.081606725030000149e+01,1.859273463489999889e-01,-1.792994870080000055e+03,9.169393985120001389e+01,4.497660039210000349e+01,5.980494941480000159e-01,3.530856228750000048e-01,2.497235808980000169e-03,-4.222073296409999533e-04,6.822254432340000207e-04,3.811104662250000552e-04,0.000000000000000000e+00,-2.903106952090000331e-02,5.333626321079999455e-01,-1.268487534280000016e-03,-5.096737669880001135e-04,-1.268487534280000016e-03,-3.048498552380000021e-05,1.606618369710000223e-03,9.456780426699999470e-04,2.948399531280000013e-04,4.664892612059999165e-04,-2.876056822829999646e+02,-4.041209441469999497e+00,2.566394805910000021e-01 +1.770050489900000059e+02,-1.166896075349398210e+00,-1.957807714357950601e+01,1.957807714357950601e+01,0.000000000000000000e+00,5.600699999999999790e+01,5.600699999999999790e+01,-9.563471544029175675e+01,-9.563471544029175675e+01,3.071809415790000131e+01,1.782394200560000197e-01,-1.792363134720000062e+03,9.206702971500000388e+01,4.498047169140000534e+01,6.027744838090000057e-01,3.573876646029999771e-01,4.524498480550000028e-03,-1.121997698380000109e-03,1.847343011779999924e-03,1.540117025369999856e-03,0.000000000000000000e+00,-2.776113056359999845e-02,5.353309789069999880e-01,-1.438287245869999953e-02,-1.367850179870000113e-02,-1.438287245869999953e-02,-3.956591601420000361e-03,1.262289058629999933e-02,1.206423333249999862e-02,1.892970714410000021e-03,2.342323135210000202e-03,-2.902332061920000115e+02,-4.110770568989999596e+00,4.588842391969999435e-02 +1.780725691320000124e+02,-1.158411044569325421e+00,-1.950735572869199785e+01,1.950735572869199785e+01,9.999999999990905053e-03,4.815840000000000032e+01,4.815840000000000032e+01,-9.636322936896702629e+01,-9.636322936896702629e+01,3.090382579479999947e+01,1.819924116130000047e-01,-1.791736520140000039e+03,9.243985307690000752e+01,4.498424813720000515e+01,5.948543027910000447e-01,3.544897035869999935e-01,2.718635741219999503e-03,-1.088818637539999820e-03,1.829895325019999849e-03,9.049672811469998976e-04,0.000000000000000000e+00,-2.537880142290000265e-02,5.361446035300000412e-01,-1.106553787730000030e-02,-1.146313604199999947e-02,-1.106553787730000030e-02,2.780377786070000216e-04,9.295929730899999896e-03,9.705729138440000528e-03,-2.260129209289999871e-03,-2.035444682190000205e-03,-2.885990764420000119e+02,-4.109169474030000657e+00,1.850028038019999876e-01 +1.791224551200000121e+02,-1.152459707915157283e+00,-1.944486884372970792e+01,1.944486884372970792e+01,1.000000000001932676e-02,4.254500000000000171e+01,4.254500000000000171e+01,-9.709276600088985276e+01,-9.709276600088985276e+01,3.112314369230000111e+01,1.843833178279999929e-01,-1.791109380009999995e+03,9.281372585510000306e+01,4.498681606159999546e+01,5.979672681400000078e-01,3.574470781790000107e-01,1.968931023700000015e-03,-1.028667688570000099e-03,1.728728876990000057e-03,1.241598116859999766e-03,0.000000000000000000e+00,-2.342869667179999990e-02,5.380261099240000178e-01,-1.108666775249999951e-02,-1.175995328229999942e-02,-1.108666775249999951e-02,-2.349363375020000009e-03,8.557833068630000053e-03,9.232234619870001435e-03,-4.082092255360000128e-04,-1.783552874390000335e-04,-2.885686277739999923e+02,-4.070676359360000163e+00,2.965183258060000160e-01 +1.801577939990000061e+02,-1.105437391750762277e+00,-1.938944207493869243e+01,1.938944207493869243e+01,9.999999999990905053e-03,6.037579999999999814e+01,6.037579999999999814e+01,-9.782541146703887591e+01,-9.782541146703887591e+01,3.092230104840000138e+01,1.730735450979999923e-01,-1.790480149440000105e+03,9.319006914080000570e+01,4.498844679089999943e+01,5.995010186990000767e-01,3.596916366040000534e-01,9.989416141719998678e-04,-8.254873995670000035e-04,1.390124937729999947e-03,1.503667029640000071e-03,0.000000000000000000e+00,-2.182606253729999987e-02,5.403391855699999358e-01,-9.468630769750000301e-03,-1.036262419539999910e-02,-9.468630769750000301e-03,-5.392059015720000216e-03,6.319606092600000766e-03,7.188899590189999633e-03,1.953135882069999881e-03,2.218334410500000069e-03,-2.894774488770000289e+02,-4.102054936390000073e+00,-3.685379028319999556e-02 +1.811995000839999932e+02,-1.137257170979769860e+00,-1.931901154852606339e+01,1.931901154852606339e+01,0.000000000000000000e+00,5.468619999999999948e+01,5.468619999999999948e+01,-9.854939991202806482e+01,-9.854939991202806482e+01,3.100816602369999941e+01,1.753421127800000034e-01,-1.789859326660000079e+03,9.356344512980000161e+01,4.498727289699999687e+01,5.890949556979999668e-01,3.538849864079999796e-01,-2.891583685020000013e-03,7.886230991440000180e-05,-8.671391260910000609e-05,-6.449542839240000251e-05,0.000000000000000000e+00,-2.080786820269999934e-02,5.401607862730000154e-01,8.430234228960000256e-03,6.681701421000000446e-03,8.430234228960000256e-03,8.100748910859999468e-05,-1.005691548829999900e-02,-8.438801783430000675e-03,-1.664824313229999958e-03,-1.838107851539999820e-03,-2.853669328370000358e+02,-4.034296286370000040e+00,5.923271179200000069e-02 +1.822361409670000114e+02,-1.232830062331963239e+00,-1.924276963703996302e+01,1.924276963703996302e+01,4.000000000002046363e-02,6.527799999999999159e+01,6.527799999999999159e+01,-9.923809629997207082e+01,-9.923809629997207082e+01,3.082715802239999903e+01,1.685441285370000153e-01,-1.789268242719999989e+03,9.391780307360001245e+01,4.498362249550000058e+01,5.918325018660000048e-01,3.544566296700000230e-01,-4.255966655230000381e-03,7.880420745689998207e-04,-1.275110698610000017e-03,-2.986659843670000087e-04,0.000000000000000000e+00,-2.175385357140000031e-02,5.403004333529999315e-01,1.768954257300000069e-02,1.648671241110000185e-02,1.768954257300000069e-02,-2.617113360569999977e-03,-1.865157675469999998e-02,-1.755860551270000194e-02,1.759858821730000012e-03,1.545220258909999920e-03,-2.846393856490000189e+02,-3.963141807009999962e+00,-1.297764778140000075e-01 +1.832785999779999884e+02,-1.297877016330417854e+00,-1.917649265129526270e+01,1.917649265129526270e+01,3.000000000000113687e-02,6.535419999999999163e+01,8.089900000000000091e+01,-9.995651518816811176e+01,-9.995651518816811176e+01,3.046800004409999829e+01,1.636102944610000054e-01,-1.788651355819999935e+03,9.428699078100000008e+01,4.497810187029999440e+01,5.862524951690000208e-01,3.496409560289999718e-01,-5.885037507930000224e-03,1.538433984900000173e-03,-2.525363575739999599e-03,-1.339649223380000092e-03,0.000000000000000000e+00,-2.400308358399999911e-02,5.386879070189999341e-01,3.121796637789999926e-02,3.027889987099999930e-02,3.121796637789999926e-02,-1.441113001410000050e-05,-3.046408183050000260e-02,-2.967264565540000260e-02,1.059396883190000076e-03,6.206653455329999526e-04,-2.830654270750000023e+02,-3.948200655249999969e+00,-3.965435028079999924e-01 +1.843172600270000032e+02,-1.369106656734598193e+00,-1.910969374088640649e+01,1.910969374088640649e+01,1.999999999998181011e-02,4.097019999999999840e+01,4.097019999999999840e+01,-1.006689288524807750e+02,-1.006689288524807750e+02,3.096866745939999888e+01,1.802698373790000141e-01,-1.788038803760000064e+03,9.465181511490000332e+01,4.497117569270000104e+01,5.831043240109999859e-01,3.451777797160000549e-01,-6.843008629710000540e-03,2.167654134699999614e-03,-3.593968360869999584e-03,-2.587691329199999762e-03,0.000000000000000000e+00,-2.746027279109999886e-02,5.351923305830000865e-01,4.452887422250000060e-02,4.408868147469999221e-02,4.452887422250000060e-02,5.337838991029999515e-03,-4.100373339490000213e-02,-4.075764477950000186e-02,-1.291211876950000038e-03,-2.006802295799999750e-03,-2.808203025079999975e+02,-3.877970017490000032e+00,3.044056892399999992e-01 +1.853550319670000022e+02,-1.366691162166918661e+00,-1.905560981313799829e+01,1.905560981313799829e+01,4.999999999998294697e-02,5.364479999999999649e+01,5.364479999999999649e+01,-1.013577990041008405e+02,-1.013577990041008405e+02,3.075176511209999930e+01,1.722988188269999887e-01,-1.787444179659999918e+03,9.500100442400000134e+01,4.496737081180000217e+01,5.998384684740000194e-01,3.525739187169999456e-01,-6.984307804530000708e-04,1.330416575069999930e-03,-2.294661269109999832e-03,1.457208514270000104e-04,0.000000000000000000e+00,-3.145150686949999691e-02,5.356510251970000303e-01,2.096232414329999780e-02,2.279236280970000153e-02,2.096232414329999780e-02,-8.826719180370000417e-03,-1.934309926029999932e-02,-2.101995909529999831e-02,1.039755226659999990e-02,1.059912289480000047e-02,-2.844561125939999897e+02,-3.934393054319999639e+00,6.122207641599999861e-02 +1.863942549230000054e+02,-1.356970220356556567e+00,-1.897781334098824146e+01,1.897781334098824146e+01,3.999999999999204192e-02,4.587239999999999895e+01,4.587239999999999895e+01,-1.020807423944976478e+02,-1.020807423944976478e+02,3.084051824149999987e+01,1.756958365439999781e-01,-1.786820855169999959e+03,9.536854261290001489e+01,4.496787841310000289e+01,5.913694241570000010e-01,3.487585232199999496e-01,1.806066467779999900e-03,4.911998753219998844e-04,-8.717103991889998222e-04,-4.369802447969999931e-05,0.000000000000000000e+00,-3.332018397889999900e-02,5.347678277929999169e-01,1.042775423129999914e-02,1.232043631839999966e-02,1.042775423129999914e-02,-3.268144177710000098e-03,-8.651010918379999429e-03,-1.044361473130000009e-02,4.938651114249999717e-03,5.144965764810000529e-03,-2.864279154399999925e+02,-4.045628714619999400e+00,2.005786895749999965e-01 +1.874467089180000130e+02,-1.294283022238848391e+00,-1.891263084534594441e+01,1.891263084534594441e+01,3.999999999999204192e-02,6.629399999999999693e+01,6.629399999999999693e+01,-1.028037207680812770e+02,-1.028037207680812770e+02,3.053644750699999832e+01,1.638688445089999945e-01,-1.786197750459999952e+03,9.573646659439999951e+01,4.497188059399999815e+01,5.938971852400000140e-01,3.517720971639999861e-01,5.483883611589999291e-03,-7.151803746739998809e-04,1.130225972150000150e-03,1.111888105509999938e-03,0.000000000000000000e+00,-3.320449639849999690e-02,5.357176978840000325e-01,-9.126805258090000747e-03,-7.117921814919999680e-03,-9.126805258090000747e-03,-3.859009396159999820e-03,8.965679213309998841e-03,7.172328280159999750e-03,3.435169983930000046e-03,3.913415861399999890e-03,-2.868083723039999882e+02,-4.018809663449999903e+00,-1.579155921940000040e-01 +1.886550428250000095e+02,-1.255867897369735697e+00,-1.884095440204437821e+01,1.884095440204437821e+01,4.000000000002046363e-02,5.725159999999999627e+01,5.725159999999999627e+01,-1.035184387695413335e+02,-1.035184387695413335e+02,3.065410391090000175e+01,1.679117828610000029e-01,-1.785583078890000024e+03,9.610219761459998722e+01,4.497710959390000340e+01,5.823231282890000138e-01,3.465821298780000226e-01,4.530437624959999555e-03,-1.131750255910000166e-03,1.878491064190000248e-03,2.940401593029999604e-04,0.000000000000000000e+00,-3.107885379029999909e-02,5.351308650330000027e-01,-1.031262499610000050e-02,-9.678926739559999201e-03,-1.031262499610000050e-02,4.875162819100000225e-03,1.076799398750000018e-02,1.020543236370000106e-02,-4.576417491000000365e-03,-4.348657194970000778e-03,-2.844576371399999744e+02,-4.005249766480000417e+00,-6.636142730709999708e-03 +1.899187076050000087e+02,-1.189935031598504889e+00,-1.878990135986830978e+01,1.878990135986830978e+01,3.999999999999204192e-02,6.289039999999999964e+01,6.289039999999999964e+01,-1.042329337665102429e+02,-1.042329337665102429e+02,3.062386741760000319e+01,1.640530377630000092e-01,-1.784968767029999981e+03,9.646806033809998837e+01,4.498214584930000370e+01,5.858964349220000534e-01,3.497644190540000197e-01,4.728177852339999869e-03,-1.530935341079999942e-03,2.545074761760000165e-03,8.895995656200000878e-04,0.000000000000000000e+00,-2.843521085849999921e-02,5.362689209669999624e-01,-1.678943002710000035e-02,-1.662323525220000056e-02,-1.678943002710000035e-02,3.257974487280000490e-03,1.586326375759999907e-02,1.579795839169999966e-02,-4.336665477610000125e-03,-4.083251347769999845e-03,-2.838961755889999949e+02,-3.937398795180000022e+00,-1.020784378050000052e-01 +1.913376972650000027e+02,-1.124352566199757097e+00,-1.872050813917669032e+01,1.872050813917669032e+01,3.000000000000113687e-02,4.673599999999999710e+01,4.673599999999999710e+01,-1.049458760825276187e+02,-1.049458760825276187e+02,3.093922581380000025e+01,1.719076335430000102e-01,-1.784356502350000028e+03,9.683421518760000879e+01,4.498596818060000402e+01,5.819734375749999744e-01,3.483528132410000366e-01,2.457414107469999692e-03,-1.307713690809999977e-03,2.198333946749999809e-03,4.887644791940000573e-04,0.000000000000000000e+00,-2.544277429300000060e-02,5.368619610960000399e-01,-1.174691910670000103e-02,-1.257056238049999997e-02,-1.174691910670000103e-02,4.906455818369999909e-03,1.064151722479999944e-02,1.146912887659999949e-02,-6.096187277390000166e-03,-6.007889322270000380e-03,-2.830586341299999731e+02,-3.940986173240000223e+00,1.793012619020000198e-01 +1.916258149150000065e+02,-1.107499805728840103e+00,-1.866394265863758051e+01,1.866394265863758051e+01,2.000000000001023182e-02,5.491479999999999961e+01,5.491479999999999961e+01,-1.056637971528098205e+02,-1.056637971528098205e+02,3.091473930080000088e+01,1.667979806660000175e-01,-1.783739886670000033e+03,9.720279920350000680e+01,4.498838171250000073e+01,5.891313966760000076e-01,3.531790293150000037e-01,1.904234441969999969e-03,-1.191608678869999962e-03,1.991090274210000240e-03,1.268347943569999876e-03,0.000000000000000000e+00,-2.330557969559999762e-02,5.390157182270000069e-01,-1.282067422410000136e-02,-1.372082670050000022e-02,-1.282067422410000136e-02,-1.454842105020000102e-03,1.041422279360000071e-02,1.133933506100000092e-02,-1.150254269710000070e-03,-9.266495344399999431e-04,-2.837917804159999946e+02,-3.926197755280000479e+00,3.141355514529999698e-02 +1.926726090909999982e+02,-1.102903564942191661e+00,-1.859485709217940297e+01,1.859485709217940297e+01,1.999999999998181011e-02,4.861560000000000059e+01,4.861560000000000059e+01,-1.063803860216048207e+02,-1.063803860216048207e+02,3.106445464579999793e+01,1.692501604559999984e-01,-1.783125190609999891e+03,9.757188668559999201e+01,4.498871753369999738e+01,5.839605446259999999e-01,3.507892413300000012e-01,-1.215382164309999945e-03,-4.728326500030000080e-04,8.186353657049999857e-04,4.291165418450000233e-04,0.000000000000000000e+00,-2.152964700999999981e-02,5.397806765899999526e-01,-3.051550026310000064e-04,-1.892893432570000095e-03,-3.051550026310000064e-04,7.436313931629999821e-05,-1.637231699579999892e-03,-1.271757863880000074e-04,-2.064811666130000282e-03,-2.094432358269999843e-03,-2.829865707540000130e+02,-3.944528361419999740e+00,1.373000144959999891e-01 +1.937328729630000055e+02,-1.152577556407417214e+00,-1.852847403412203775e+01,1.852847403412203775e+01,1.000000000001932676e-02,6.167119999999999891e+01,6.167119999999999891e+01,-1.070972587739386057e+02,-1.070972587739386057e+02,3.089352334229999997e+01,1.615384221079999849e-01,-1.782510091769999917e+03,9.794086412299999722e+01,4.498652073199999535e+01,5.864842637079999976e-01,3.519135910540000522e-01,-2.881114051160000005e-03,2.123467263179999959e-04,-3.234065809770000021e-04,3.077501705159999467e-04,0.000000000000000000e+00,-2.145306646109999479e-02,5.407307432879999709e-01,8.617798771819999704e-03,7.252788103359998975e-03,8.617798771819999704e-03,-3.331097762300000344e-03,-1.035888046039999850e-02,-9.073747129049999915e-03,1.577077045489999867e-03,1.510138736599999807e-03,-2.823577380319999861e+02,-3.900644152609999971e+00,-8.806610107419998723e-02 +1.947767829899999867e+02,-1.253216504670605413e+00,-1.845513529414074938e+01,1.845513529414074938e+01,2.000000000001023182e-02,5.046979999999999933e+01,5.046979999999999933e+01,-1.078088342608737946e+02,-1.078088342608737946e+02,3.101807015440000015e+01,1.665210127829999942e-01,-1.781899617479999961e+03,9.830722792490000472e+01,4.498197261189999807e+01,5.797674277450000080e-01,3.470060489299999773e-01,-5.472962220609999505e-03,1.121024708900000095e-03,-1.822713613899999956e-03,-9.269356528860000794e-04,0.000000000000000000e+00,-2.265809740490000099e-02,5.396971837520000426e-01,2.522355421890000449e-02,2.376948901820000182e-02,2.522355421890000449e-02,-2.223925179870000211e-04,-2.540276217710000020e-02,-2.409250444339999797e-02,2.720491579809999829e-04,-1.006229072509999935e-04,-2.803270686070000011e+02,-3.877394472990000285e+00,9.569931030269998584e-02 +1.958173520569999937e+02,-1.288155533428414934e+00,-1.839557641847584790e+01,1.839557641847584790e+01,9.999999999990905053e-03,6.141719999999999402e+01,6.141719999999999402e+01,-1.085218620775092973e+02,-1.085218620775092973e+02,3.080885186800000142e+01,1.599751859900000184e-01,-1.781286826949999977e+03,9.867267284519999748e+01,4.497644585239999770e+01,5.852842989399998919e-01,3.484849139089999936e-01,-4.809173174299999701e-03,1.525398879800000072e-03,-2.522059407079999590e-03,-6.383506298119998468e-04,0.000000000000000000e+00,-2.552551102570000188e-02,5.393001185199999270e-01,2.794892765299999970e-02,2.769899998070000230e-02,2.794892765299999970e-02,-4.837166331990000109e-03,-2.765188670619999831e-02,-2.748002049449999734e-02,5.277778446020000777e-03,5.056145818139999928e-03,-2.808265532059999714e+02,-3.847984355769999532e+00,-9.076881408690000430e-02 +1.968570649629999991e+02,-1.303179611901723156e+00,-1.833157288530808771e+01,1.833157288530808771e+01,4.999999999998294697e-02,6.134099999999999397e+01,6.134099999999999397e+01,-1.091976211799307350e+02,-1.091976211799307350e+02,3.070467579479999998e+01,1.592978537080000090e-01,-1.780705788570000095e+03,9.901857678489999159e+01,4.497161050049999886e+01,5.795934494700000217e-01,3.440128119340000179e-01,-4.577404959800000089e-03,1.728917235220000116e-03,-2.866404384659999513e-03,-1.341567737959999855e-03,0.000000000000000000e+00,-2.859168950420000119e-02,5.374913489410000356e-01,3.327866493549999638e-02,3.346769782319999886e-02,3.327866493549999638e-02,-1.292784871480000090e-03,-3.139279393740000007e-02,-3.169441058979999976e-02,3.417743171630000139e-03,3.066072104829999697e-03,-2.805195749740000224e+02,-3.872144436990000216e+00,-9.131002426149999185e-02 +1.978941040040000132e+02,-1.340179318961884913e+00,-1.826168637120073868e+01,1.826168637120073868e+01,3.999999999999204192e-02,6.492239999999999611e+01,6.492239999999999611e+01,-1.099044915730214740e+02,-1.099044915730214740e+02,3.054220735570000045e+01,1.568471491339999968e-01,-1.780097208630000068e+03,9.937916879309999274e+01,4.496771163439999697e+01,5.798383456769999889e-01,3.426710665850000170e-01,-2.634080909380000137e-03,1.525507719159999945e-03,-2.558997862769999895e-03,-1.236890730329999856e-03,0.000000000000000000e+00,-3.186091954939999915e-02,5.357276704079999563e-01,3.006577476329999957e-02,3.108319210119999884e-02,3.006577476329999957e-02,-5.390520358440000111e-04,-2.713086180940000453e-02,-2.819576136939999991e-02,3.675427072670000000e-03,3.426482767579999787e-03,-2.793594925240000180e+02,-3.823130501230000089e+00,-1.527271270749999965e-01 +1.989354059700000050e+02,-1.340827393130464618e+00,-1.818405264680234268e+01,1.818405264680234268e+01,3.000000000000113687e-02,5.908039999999999736e+01,5.908039999999999736e+01,-1.106092421013398308e+02,-1.106092421013398308e+02,3.052840779250000125e+01,1.589003205299999999e-01,-1.779489937340000097e+03,9.973786636959998475e+01,4.496607994499999705e+01,5.780477618240000837e-01,3.407013557319999997e-01,-3.231805965360000192e-04,1.000076088870000034e-03,-1.704348497309999882e-03,-1.111034587930000150e-03,0.000000000000000000e+00,-3.436383286190000663e-02,5.338590735699999534e-01,2.281155620699999720e-02,2.433698593220000317e-02,2.281155620699999720e-02,1.988315512569999947e-03,-1.900793558249999973e-02,-2.052052114300000063e-02,1.971836831750000286e-03,1.828149276650000050e-03,-2.790637981990000185e+02,-3.821021836899999968e+00,-5.946397781369999747e-02 +1.999755940439999904e+02,-1.330163583756505119e+00,-1.813102513973767316e+01,1.813102513973767316e+01,2.000000000001023182e-02,5.773419999999999419e+01,5.773419999999999419e+01,-1.113148778190893751e+02,-1.113148778190893751e+02,3.050580475599999986e+01,1.588621288540000009e-01,-1.778881457769999997e+03,1.000963104079999937e+02,4.496752896369999775e+01,5.800777446339999699e-01,3.417346073870000112e-01,2.972494483739999884e-03,7.657265192159999406e-05,-1.856011622979999911e-04,-2.681903580429999983e-04,0.000000000000000000e+00,-3.546374161869999403e-02,5.330992237489999841e-01,7.189233858959999217e-03,9.179801948750000024e-03,7.189233858959999217e-03,1.696531923090000091e-03,-4.127256532030000070e-03,-5.971878352800000060e-03,1.385461543170000021e-03,1.511391672869999902e-03,-2.797989535510000110e+02,-3.827496438230000297e+00,-3.853082656859999761e-02 +2.010218780040000013e+02,-1.258224686364217471e+00,-1.805833902872570462e+01,1.805833902872570462e+01,9.999999999990905053e-03,6.537959999999999638e+01,6.537959999999999638e+01,-1.120211547239106125e+02,-1.120211547239106125e+02,3.038155741159999934e+01,1.545508056880000036e-01,-1.778272667850000062e+03,1.004554434049999969e+02,4.497200421770000389e+01,5.795525958820000323e-01,3.424000607320000222e-01,5.335064164090000741e-03,-8.909949378239999775e-04,1.438031111940000009e-03,4.128256632930000255e-04,0.000000000000000000e+00,-3.462743359639999796e-02,5.331099299329999930e-01,-8.072382210270000538e-03,-6.324364345039999898e-03,-8.072382210270000538e-03,2.702150696919999959e-03,9.734524196000000559e-03,8.186119000970000503e-03,-1.152889434579999848e-03,-8.403960409969999388e-04,-2.807313355670000306e+02,-3.859292256700000312e+00,-1.633915901180000019e-01 +2.020719699859999992e+02,-1.175381054939892866e+00,-1.801239988173519180e+01,1.801239988173519180e+01,0.000000000000000000e+00,5.420359999999999445e+01,5.420359999999999445e+01,-1.127240538226948416e+02,-1.127240538226948416e+02,3.056011624519999970e+01,1.593523025509999969e-01,-1.777667497900000171e+03,1.008139465910000041e+02,4.497766933270000322e+01,5.750726273359999530e-01,3.410248610450000162e-01,5.300237029869999880e-03,-1.423320029329999854e-03,2.363057278159999813e-03,3.769802454700000248e-04,0.000000000000000000e+00,-3.212152586039999924e-02,5.330392148089999615e-01,-1.427159542989999905e-02,-1.349785131770000167e-02,-1.427159542989999905e-02,6.550196072430000682e-03,1.522585109520000098e-02,1.458875058160000009e-02,-5.701836107390000595e-03,-5.459296808500000223e-03,-2.800711075440000286e+02,-3.856350239350000209e+00,1.921892166140000066e-02 +2.031225230699999997e+02,-1.145683403232363506e+00,-1.793728424473962590e+01,1.793728424473962590e+01,1.000000000001932676e-02,5.539739999999999753e+01,5.539739999999999753e+01,-1.134294718201129371e+02,-1.134294718201129371e+02,3.062867826920000169e+01,1.580148637290000047e-01,-1.777060429740000018e+03,1.011741435550000006e+02,4.498361926470000327e+01,5.791050446190000311e-01,3.446735963930000479e-01,5.639633887829999422e-03,-1.896911547650000042e-03,3.158439032650000190e-03,1.188350526750000082e-03,0.000000000000000000e+00,-2.888784885240000197e-02,5.346037885409999912e-01,-2.290645831230000290e-02,-2.272365441449999968e-02,-2.290645831230000290e-02,3.503906025339999838e-03,2.175518570069999783e-02,2.172212400470000318e-02,-4.849794514670000348e-03,-4.505436435170000545e-03,-2.807007407579999949e+02,-3.847274581819999817e+00,-1.862525939940000040e-03 +2.041740961079999863e+02,-1.063422456556706086e+00,-1.788317481093669414e+01,1.788317481093669414e+01,0.000000000000000000e+00,7.284720000000000084e+01,7.284720000000000084e+01,-1.141355423847285806e+02,-1.141355423847285806e+02,3.043323881510000106e+01,1.495567262170000022e-01,-1.776453648969999904e+03,1.015359830649999964e+02,4.498857193799999976e+01,5.771918905569999314e-01,3.449975544489999879e-01,3.575911138219999875e-03,-1.765340795229999914e-03,2.964246403000000366e-03,1.086519251039999969e-03,0.000000000000000000e+00,-2.515594673680000143e-02,5.360744589820000128e-01,-2.020214019719999976e-02,-2.108717077859999928e-02,-2.020214019719999976e-02,3.445586134309999802e-03,1.812096130909999700e-02,1.904368743850000031e-02,-5.719032150479999750e-03,-5.489069474339999637e-03,-2.806450817490000418e+02,-3.866515022310000216e+00,-2.815651893619999790e-01 +2.052210590839999895e+02,-1.026474294761021033e+00,-1.783209987794554863e+01,1.783209987794554863e+01,1.000000000001932676e-02,6.395720000000000027e+01,6.395720000000000027e+01,-1.148341818319060934e+02,-1.148341818319060934e+02,3.054813274860000050e+01,1.526075899599999841e-01,-1.775853956749999952e+03,1.018950978400000054e+02,4.498972643760000523e+01,5.696541465969999773e-01,3.406028386069999692e-01,-1.181442701269999965e-03,-7.947166960569999059e-04,1.375236541999999952e-03,-3.352690385109999630e-04,0.000000000000000000e+00,-2.222630082369999802e-02,5.356065585760000358e-01,-6.230956380499999298e-04,-2.826849263390000117e-03,-6.230956380499999298e-04,8.221634327599999445e-03,-2.270777205500000182e-04,1.875473140799999812e-03,-8.938686493379999556e-03,-9.173010450190000400e-03,-2.766459881330000030e+02,-3.784177192430000503e+00,-1.398625373839999797e-01 +2.062715570930000126e+02,-1.047747585073806942e+00,-1.776772541837338792e+01,1.776772541837338792e+01,0.000000000000000000e+00,5.494019999999999726e+01,5.494019999999999726e+01,-1.155332926910533189e+02,-1.155332926910533189e+02,3.068532403659999730e+01,1.561713814740000039e-01,-1.775253113609999900e+03,1.022532856529999918e+02,4.498691334979999823e+01,5.734089793899999066e-01,3.412258323960000173e-01,-4.031927783499999508e-03,2.431167084270000132e-04,-3.711497254860000308e-04,-6.518327910930000026e-04,0.000000000000000000e+00,-2.177093440090000290e-02,5.355093364190000038e-01,1.431649806719999946e-02,1.230165877480000024e-02,1.431649806719999946e-02,3.847965586270000061e-03,-1.467264537980000026e-02,-1.276191111010000108e-02,-3.974618595509999894e-03,-4.308217921590000096e-03,-2.753879162549999933e+02,-3.709821373240000053e+00,2.899169921879999907e-03 +2.073011651040000061e+02,-1.138376743142392788e+00,-1.769820728282700273e+01,1.769820728282700273e+01,3.999999999999204192e-02,6.405879999999999086e+01,6.405879999999999086e+01,-1.162028052873019845e+02,-1.162028052873019845e+02,3.052596354670000167e+01,1.511655449869999945e-01,-1.774676886800000148e+03,1.025950215189999994e+02,4.498224647669999854e+01,5.773506269329999885e-01,3.418667599219999964e-01,-5.141948258890000067e-03,1.018442829269999936e-03,-1.684317868749999952e-03,-6.621565894919999263e-04,0.000000000000000000e+00,-2.317838459009999991e-02,5.353466824399999435e-01,2.356982969539999848e-02,2.227215503190000181e-02,2.356982969539999848e-02,-1.208092830979999891e-03,-2.358698700230000070e-02,-2.237821548060000068e-02,1.391618147929999912e-03,1.102032382339999906e-03,-2.763688999620000004e+02,-3.731898992320000108e+00,-1.471419334410000168e-01 +2.083588340279999898e+02,-1.224757887320887528e+00,-1.762670123962734436e+01,1.762670123962734436e+01,3.000000000000113687e-02,5.636260000000000048e+01,5.636260000000000048e+01,-1.169027309329925828e+02,-1.169027309329925828e+02,3.054233087090000254e+01,1.539133340119999971e-01,-1.774074005360000001e+03,1.029515249270000083e+02,4.497603332569999424e+01,5.733405524119999930e-01,3.377764644659999593e-01,-6.335653070020000333e-03,1.741254377730000079e-03,-2.901035223099999571e-03,-1.529105413630000264e-03,0.000000000000000000e+00,-2.592777787550000143e-02,5.335563454880000167e-01,3.636950353400000141e-02,3.549255487479999888e-02,3.636950353400000141e-02,3.938142754340000239e-04,-3.483525324700000037e-02,-3.409690505529999749e-02,1.477482813359999808e-03,1.001835544090000016e-03,-2.757798261780000075e+02,-3.741803677580000098e+00,-2.819585800170000198e-02 +2.094270861150000087e+02,-1.317260840414659073e+00,-1.756558645760092574e+01,1.756558645760092574e+01,3.999999999999204192e-02,4.632959999999999923e+01,4.632959999999999923e+01,-1.176031185808910777e+02,-1.176031185808910777e+02,3.061934560570000130e+01,1.580006778240000131e-01,-1.773469524580000098e+03,1.033063808989999899e+02,4.497004254619999841e+01,5.768673393790000326e-01,3.376887373229999767e-01,-4.802807945149999147e-03,1.907166628039999850e-03,-3.215486387199999966e-03,-1.289131048450000089e-03,0.000000000000000000e+00,-2.973098337880000080e-02,5.320980201549999622e-01,3.640647281659999818e-02,3.681514802490000460e-02,3.640647281659999818e-02,-2.462855715969999772e-03,-3.406762199229999843e-02,-3.455197662430000566e-02,5.053209818600000632e-03,4.726025867399999067e-03,-2.762910437990000219e+02,-3.729477276040000344e+00,1.323747634889999858e-01 +2.104653220179999948e+02,-1.344126674483186568e+00,-1.750136197638428115e+01,1.750136197638428115e+01,4.999999999998294697e-02,5.811519999999999442e+01,5.811519999999999442e+01,-1.183072023831762323e+02,-1.183072023831762323e+02,3.038703273369999991e+01,1.515931040050000067e-01,-1.772860991569999896e+03,1.036617528700000008e+02,4.496685432550000172e+01,5.809965382410000601e-01,3.390983904450000086e-01,-1.127637433509999943e-03,1.320511069520000124e-03,-2.269512743780000268e-03,-3.967766337039999708e-04,0.000000000000000000e+00,-3.318760742750000159e-02,5.314404407080000059e-01,2.388099028209999738e-02,2.550721081889999881e-02,2.388099028209999738e-02,-5.546690193520001193e-03,-2.182406681950000218e-02,-2.339451241709999615e-02,7.637697524560001054e-03,7.659388595310000561e-03,-2.782189624950000280e+02,-3.782065421890000056e+00,-6.226158142089999875e-02 +2.116201574750000134e+02,-1.279258838600167980e+00,-1.743720183277345015e+01,1.743720183277345015e+01,4.000000000002046363e-02,6.443979999999999109e+01,6.443979999999999109e+01,-1.190077188666044350e+02,-1.190077188666044350e+02,3.020503598929999711e+01,1.482678651810000192e-01,-1.772255749859999924e+03,1.040156355760000082e+02,4.496671478209999862e+01,5.748396884900000003e-01,3.357476625379999802e-01,1.008940701090000128e-03,6.445459983589999116e-04,-1.125983142970000093e-03,-5.649259171310000265e-04,0.000000000000000000e+00,-3.515091921830000576e-02,5.300114397609999584e-01,1.578573191819999944e-02,1.749179367149999997e-02,1.578573191819999944e-02,-1.443765310279999893e-04,-1.296905924570000007e-02,-1.462656966299999937e-02,2.976897305129999876e-03,3.009600539489999844e-03,-2.777589663999999630e+02,-3.799485674350000064e+00,-1.623826026919999999e-01 +2.129818861450000043e+02,-1.190818871407262058e+00,-1.737602175927214176e+01,1.737602175927214176e+01,3.000000000000113687e-02,5.443219999999999459e+01,5.443219999999999459e+01,-1.197036470802610921e+02,-1.197036470802610921e+02,3.029320830769999873e+01,1.521167308090000114e-01,-1.771654521429999932e+03,1.043672642700000068e+02,4.496872692149999295e+01,5.718442093020000838e-01,3.342077848700000242e-01,2.821114529869999873e-03,-6.290395931810000528e-05,6.854810874209999556e-05,-4.677678033259999681e-04,0.000000000000000000e+00,-3.562732671570000009e-02,5.287839534780000017e-01,6.504007516159999308e-03,8.117984179169999981e-03,6.504007516159999308e-03,4.109795291209999979e-03,-3.401959514510000115e-03,-4.926555505499999495e-03,-9.772240940350001171e-04,-9.183666175430000222e-04,-2.763935891020000213e+02,-3.751455035109999780e+00,-3.880500793459999796e-03 +2.136031939990000126e+02,-1.162948185428800629e+00,-1.731188555028340303e+01,1.731188555028340303e+01,3.000000000000113687e-02,4.932679999999999865e+01,4.932679999999999865e+01,-1.204016113185358279e+02,-1.204016113185358279e+02,3.039742182909999713e+01,1.539098322389999829e-01,-1.771051447360000111e+03,1.047197739229999911e+02,4.497322282989999565e+01,5.751712706429999988e-01,3.368699980039999708e-01,5.444495268749999402e-03,-1.013607944379999902e-03,1.660059486559999943e-03,5.771723896209999963e-04,0.000000000000000000e+00,-3.459257920169999528e-02,5.292175127310000393e-01,-1.032784546489999913e-02,-8.694938460420000015e-03,-1.032784546489999913e-02,2.371144360190000164e-03,1.155099792780000037e-02,1.012708573710000004e-02,-1.259010008720000059e-03,-9.389970835359999577e-04,-2.774718816230000016e+02,-3.759001141110000166e+00,7.549190521239999840e-02 +2.146446950440000023e+02,-1.066250987906587566e+00,-1.726700836509878556e+01,1.726700836509878556e+01,3.000000000000113687e-02,6.172199999999999420e+01,6.172199999999999420e+01,-1.211022416775386290e+02,-1.211022416775386290e+02,3.028609820619999837e+01,1.476082056759999983e-01,-1.770446719499999972e+03,1.050746331439999892e+02,4.497977656189999607e+01,5.759162524240000192e-01,3.391366581889999621e-01,6.678758188050000835e-03,-1.807016963279999867e-03,3.012730635829999684e-03,1.350196177359999855e-03,0.000000000000000000e+00,-3.179353123160000294e-02,5.306636628109999698e-01,-2.376951444550000000e-02,-2.278400327479999932e-02,-2.376951444550000000e-02,1.483408114880000123e-03,2.272368704590000191e-02,2.194242954419999697e-02,-2.798765917900000299e-03,-2.324981845489999897e-03,-2.790943716720000225e+02,-3.810438616809999957e+00,-1.186900138850000008e-01 +2.156861860749999948e+02,-1.029302892741284614e+00,-1.721165182137518102e+01,1.721165182137518102e+01,1.999999999998181011e-02,5.953759999999999764e+01,5.953759999999999764e+01,-1.217985615544459250e+02,-1.217985615544459250e+02,3.035817465270000071e+01,1.479367464780000085e-01,-1.769846874889999981e+03,1.054291157539999944e+02,4.498569034049999971e+01,5.694063101560000728e-01,3.370232752149999733e-01,4.440403938060000222e-03,-1.816762952710000061e-03,3.076030515390000206e-03,8.075267266559999456e-04,0.000000000000000000e+00,-2.786756052929999922e-02,5.313325012709999573e-01,-2.097022882629999765e-02,-2.144583476799999736e-02,-2.097022882629999765e-02,5.884364685149999670e-03,1.959317461329999899e-02,2.011839045300000198e-02,-7.440261569550000141e-03,-7.211809000149999385e-03,-2.776273063090000051e+02,-3.799318383969999768e+00,-8.493518829349999688e-02 +2.167566459180000038e+02,-1.047688656688095854e+00,-1.713386631693318662e+01,1.713386631693318662e+01,1.000000000001932676e-02,5.605780000000000030e+01,5.605780000000000030e+01,-1.224934082466773901e+02,-1.224934082466773901e+02,3.046935169059999993e+01,1.488330811259999942e-01,-1.769248676409999916e+03,1.057834288810000061e+02,4.498909413699999504e+01,5.697038610239999468e-01,3.378361471029999730e-01,1.876998492219999950e-03,-1.430588008499999965e-03,2.438772001440000104e-03,6.015817250720000660e-04,0.000000000000000000e+00,-2.452226928720000268e-02,5.323690380839999348e-01,-1.388053700740000083e-02,-1.523431968910000066e-02,-1.388053700740000083e-02,5.065596392869999888e-03,1.212757406239999870e-02,1.346506120559999922e-02,-6.890736631719999832e-03,-6.834854876359998908e-03,-2.759481535580000013e+02,-3.733530605789999957e+00,-3.314733505249999740e-02 +2.177925529480000080e+02,-9.717871001162526889e-01,-1.709375298325818804e+01,1.709375298325818804e+01,3.000000000000113687e-02,6.840219999999999345e+01,6.840219999999999345e+01,-1.231892351338824056e+02,-1.231892351338824056e+02,3.033078587729999853e+01,1.432928889990000010e-01,-1.768649734979999948e+03,1.061383911270000056e+02,4.498957873680000574e+01,5.706756891570000656e-01,3.383316677470000200e-01,-9.813245294590000785e-04,-7.007145308730000329e-04,1.214042070630000142e-03,3.048047403849999900e-04,0.000000000000000000e+00,-2.241046774090000096e-02,5.332687323600000529e-01,-2.410685233909999961e-03,-4.229124381120000047e-03,-2.410685233909999961e-03,2.611403028300000352e-03,6.780469642649999528e-04,2.430882863579999706e-03,-4.337049222819999370e-03,-4.409644545839999825e-03,-2.750806616109999823e+02,-3.708897657509999668e+00,-2.232618331909999865e-01 +2.188379631040000106e+02,-1.013215175249874589e+00,-1.703416609882586386e+01,1.703416609882586386e+01,1.999999999998181011e-02,4.851399999999999579e+01,4.851399999999999579e+01,-1.238810544736985548e+02,-1.238810544736985548e+02,3.058508326079999762e+01,1.510597467420000117e-01,-1.768054268670000056e+03,1.064913408020000105e+02,4.498636657939999850e+01,5.660678543229999971e-01,3.346016974920000275e-01,-4.924064563660000317e-03,4.648802143980000396e-04,-7.371354256939998892e-04,-9.643287676280000919e-04,0.000000000000000000e+00,-2.197274596359999679e-02,5.323657315519999544e-01,1.890763469030000074e-02,1.661942904009999777e-02,1.890763469030000074e-02,4.766207952700000222e-03,-1.920282802170000108e-02,-1.706183566940000160e-02,-4.782448406199999759e-03,-5.208614581970000268e-03,-2.728425378759999944e+02,-3.669387863090000312e+00,8.277368545530000565e-02 +2.198826489449999997e+02,-1.105614170204150870e+00,-1.696795674597138159e+01,1.696795674597138159e+01,1.000000000001932676e-02,4.759959999999999525e+01,4.759959999999999525e+01,-1.245771605456167066e+02,-1.245771605456167066e+02,3.060036298940000066e+01,1.507278382779999870e-01,-1.767453820709999945e+03,1.068444462829999964e+02,4.498086809569999645e+01,5.743310548519999781e-01,3.372517016870000273e-01,-5.317726029189999426e-03,1.205974403829999887e-03,-2.016208070830000088e-03,-5.291270477230000354e-04,0.000000000000000000e+00,-2.401823191539999985e-02,5.324525914940000382e-01,2.571072649230000257e-02,2.460707817190000216e-02,2.571072649230000257e-02,-3.425461948629999944e-03,-2.586358521999999882e-02,-2.484120824489999962e-02,3.438220373570000099e-03,3.191331875659999748e-03,-2.737020113840000022e+02,-3.647649351259999673e+00,9.307670593260002068e-02 +2.209310290820000091e+02,-1.141794379098766132e+00,-1.690738931747424090e+01,1.690738931747424090e+01,9.999999999990905053e-03,5.516879999999999740e+01,5.516879999999999740e+01,-1.252754260921373231e+02,-1.252754260921373231e+02,3.044425476670000208e+01,1.466111391780000051e-01,-1.766850970920000009e+03,1.071977927710000102e+02,4.497531120250000214e+01,5.742268346390000389e-01,3.360007860189999640e-01,-5.003517125720000243e-03,1.597169127779999968e-03,-2.687249744880000190e-03,-6.878290873089999181e-04,0.000000000000000000e+00,-2.699820276549999912e-02,5.318296974949999756e-01,3.047601856650000024e-02,3.020794026250000000e-02,3.047601856650000024e-02,-5.180457660759999958e-03,-2.997968265729999970e-02,-2.979108233720000054e-02,5.822191910079999207e-03,5.597315586029999977e-03,-2.753662297129999956e+02,-3.715519289090000399e+00,-2.734231948849999774e-02 +2.219722371100000089e+02,-1.262113378891399629e+00,-1.684138287561111014e+01,1.684138287561111014e+01,9.999999999990905053e-03,5.420359999999999445e+01,5.420359999999999445e+01,-1.259701837675770690e+02,-1.259701837675770690e+02,3.036497399670000163e+01,1.463008373980000110e-01,-1.766250776489999907e+03,1.075487688939999913e+02,4.497030845510000319e+01,5.708476640690000048e-01,3.329356709609999632e-01,-4.236360776389999812e-03,1.718717408739999994e-03,-2.903138443990000133e-03,-1.129320512589999806e-03,0.000000000000000000e+00,-3.037075753690000185e-02,5.302653997359999538e-01,3.371188135670000197e-02,3.404965020120000185e-02,3.371188135670000197e-02,-2.781410788980000041e-03,-3.185530890020000366e-02,-3.228610128790000006e-02,4.829702247999999830e-03,4.544959702350000533e-03,-2.746020948709999630e+02,-3.706012867320000126e+00,-1.699542999270000146e-02 +2.230178849700000114e+02,-1.243555857630170181e+00,-1.679434549397489462e+01,1.679434549397489462e+01,5.000000000001136868e-02,5.984239999999999782e+01,5.984239999999999782e+01,-1.266303393267012041e+02,-1.266303393267012041e+02,3.019998195530000373e+01,1.433377265929999811e-01,-1.765679876229999991e+03,1.078813167210000046e+02,4.496704105239999905e+01,5.710991769759999892e-01,3.320330219520000181e-01,-2.120668630980000052e-03,1.431968706829999955e-03,-2.445456833579999663e-03,-9.542104215969999734e-04,0.000000000000000000e+00,-3.344287106899999917e-02,5.289090901619999396e-01,2.874283245179999960e-02,2.991358739259999608e-02,2.874283245179999960e-02,-2.123865500199999864e-03,-2.610046606970000196e-02,-2.730011641650000043e-02,4.907511569880000646e-03,4.737336476350000221e-03,-2.742943915729999844e+02,-3.684883061019999850e+00,-1.042766571039999979e-01 +2.240714569090000055e+02,-1.111513250597987224e+00,-1.673896756005982311e+01,1.673896756005982311e+01,4.000000000002046363e-02,5.161280000000000001e+01,5.161280000000000001e+01,-1.273210726522963085e+02,-1.273210726522963085e+02,3.023720814409999846e+01,1.463861614470000072e-01,-1.765082247909999978e+03,1.082288103779999915e+02,4.496594111739999988e+01,5.686210235380000366e-01,3.300858901220000141e-01,1.562024875920000125e-04,8.678289737809999132e-04,-1.505905375779999873e-03,-8.651770504369998057e-04,0.000000000000000000e+00,-3.575582052009999845e-02,5.273235104300000309e-01,2.082510809249999914e-02,2.241919076049999834e-02,2.082510809249999914e-02,9.789193350930001924e-04,-1.738647623009999602e-02,-1.895923127249999826e-02,2.561658190510000214e-03,2.481040152889999600e-03,-2.738573644659999786e+02,-3.681744873080000424e+00,2.379655838009999899e-02 +2.251165781020000054e+02,-1.156725171215372328e+00,-1.666959775600379245e+01,1.666959775600379245e+01,5.000000000001136868e-02,7.434579999999999700e+01,7.434579999999999700e+01,-1.280132838572755531e+02,-1.280132838572755531e+02,2.987622334750000164e+01,1.371117979289999955e-01,-1.764483019519999971e+03,1.085765313760000055e+02,4.496802072689999363e+01,5.714284235459999861e-01,3.318997487279999881e-01,3.646773923300000112e-03,-1.209357492049999936e-04,1.433568774090000027e-04,1.220816645780000115e-04,0.000000000000000000e+00,-3.657499377900000348e-02,5.270907169609999610e-01,3.027276634290000049e-03,5.124643835399999084e-03,3.027276634290000049e-03,-5.884101272389999886e-05,-7.551243866319999913e-04,-2.680021642480000070e-03,2.279448209229999970e-03,2.503463205639999863e-03,-2.747572626649999847e+02,-3.687742650059999683e+00,-3.238501548770000293e-01 +2.261565830710000000e+02,-1.123274063324196881e+00,-1.661154393640467575e+01,1.661154393640467575e+01,3.999999999996362021e-02,5.605780000000000030e+01,5.605780000000000030e+01,-1.286991254521491612e+02,-1.286991254521491612e+02,3.005651968139999752e+01,1.432452052829999989e-01,-1.763890025670000114e+03,1.089221724520000123e+02,4.497180617659999768e+01,5.625463514679999166e-01,3.274997263450000196e-01,3.651010775350000022e-03,-6.392349735090000016e-04,1.066232642169999975e-03,-5.479689340310000276e-04,0.000000000000000000e+00,-3.555965255819999726e-02,5.254255406779999582e-01,-3.903006881429999940e-04,7.167721067020000605e-04,-3.903006881429999940e-04,8.924052751090000984e-03,3.738654303359999990e-03,2.705946145610000058e-03,-5.548112492530000300e-03,-5.501334498779999159e-03,-2.733518609209999681e+02,-3.691421829959999901e+00,-4.814624786380000687e-02 +2.271954250340000101e+02,-1.033382977037859751e+00,-1.655381441797250730e+01,1.655381441797250730e+01,3.000000000002955858e-02,6.395720000000000027e+01,6.395720000000000027e+01,-1.293870711990572886e+02,-1.293870711990572886e+02,2.998206612939999971e+01,1.396939009429999934e-01,-1.763294888030000038e+03,1.092683535639999945e+02,4.497685418580000061e+01,5.682812876100000743e-01,3.312905364090000249e-01,5.608398491430000542e-03,-1.401663772410000151e-03,2.341643329460000103e-03,6.492807621889999745e-04,0.000000000000000000e+00,-3.360198170360000069e-02,5.262049196360000236e-01,-1.541667416779999786e-02,-1.430028598789999904e-02,-1.541667416779999786e-02,4.676481792510000027e-03,1.642396097039999781e-02,1.552048796050000019e-02,-3.749550087199999757e-03,-3.456279819869999617e-03,-2.738521836059999828e+02,-3.655774961580000593e+00,-1.672549247740000022e-01 +2.282332439420000014e+02,-1.017659013880916730e+00,-1.649646402321552330e+01,1.649646402321552330e+01,2.000000000003865352e-02,6.093459999999999610e+01,6.093459999999999610e+01,-1.300743219708157028e+02,-1.300743219708157028e+02,3.004419520940000154e+01,1.402117908000000135e-01,-1.762701103970000077e+03,1.096153566839999911e+02,4.498223537550000373e+01,5.643930637990000054e-01,3.302233101479999933e-01,4.485991306409999740e-03,-1.599421163140000166e-03,2.715561587690000413e-03,4.869853994770000365e-04,0.000000000000000000e+00,-3.038258680410000148e-02,5.265122411389999701e-01,-1.713169780300000111e-02,-1.710495018390000010e-02,-1.713169780300000111e-02,7.249223607270000730e-03,1.730294247759999945e-02,1.738309850869999840e-02,-7.170605136939999305e-03,-6.971075282489999463e-03,-2.739750756839999895e+02,-3.690311195159999613e+00,-1.227340698239999944e-01 +2.292783651350000014e+02,-9.433231226348326448e-01,-1.644788935238512551e+01,1.644788935238512551e+01,9.999999999990905053e-03,4.483099999999999596e+01,4.483099999999999596e+01,-1.307610009255059254e+02,-1.307610009255059254e+02,3.033989055170000171e+01,1.464469730849999873e-01,-1.762108112650000066e+03,1.099625311599999975e+02,4.498615797979999797e+01,5.647727372119999423e-01,3.310425534109999735e-01,2.794671376889999986e-03,-1.463616475169999967e-03,2.500678011590000329e-03,5.022066784409999355e-04,0.000000000000000000e+00,-2.721368755470000150e-02,5.272916158860000424e-01,-1.454768519389999966e-02,-1.533397195809999870e-02,-1.454768519389999966e-02,6.267372630460000399e-03,1.383457221220000220e-02,1.467020210139999802e-02,-7.032462326199999912e-03,-6.931142487149999538e-03,-2.730792361590000041e+02,-3.654702458230000062e+00,1.283063888550000087e-01 +2.303194320199999936e+02,-9.567595932508637935e-01,-1.639173466632373888e+01,1.639173466632373888e+01,0.000000000000000000e+00,6.555740000000000123e+01,6.555740000000000123e+01,-1.314527589406532968e+02,-1.314527589406532968e+02,3.013254400010000111e+01,1.375338286159999979e-01,-1.761510719390000077e+03,1.103122394100000037e+02,4.498870829319999842e+01,5.704218551560000794e-01,3.347823843859999982e-01,1.855525036949999930e-03,-1.278447786810000012e-03,2.177662233230000331e-03,1.147229327689999962e-03,0.000000000000000000e+00,-2.473621762690000198e-02,5.292706838339999997e-01,-1.422740462210000077e-02,-1.525258166229999900e-02,-1.422740462210000077e-02,-5.821730472459999973e-05,1.201428475579999905e-02,1.308473401019999947e-02,-2.319587982610000002e-03,-2.109630347319999943e-03,-2.738803677380000181e+02,-3.660233915450000097e+00,-1.924324035640000152e-01 +2.313586969380000085e+02,-1.018695624554520007e+00,-1.632575611799269666e+01,1.632575611799269666e+01,3.999999999996362021e-02,5.676899999999999835e+01,5.676899999999999835e+01,-1.321065162462718661e+02,-1.321065162462718661e+02,3.023574441099999888e+01,1.401759237050000106e-01,-1.760946877899999890e+03,1.106438850879999904e+02,4.498839551470000231e+01,5.620033816680000127e-01,3.300965135550000262e-01,-2.283646118420000221e-03,-3.590203920169999586e-04,6.519735028040000687e-04,-2.900033338569999830e-04,0.000000000000000000e+00,-2.284888176879999733e-02,5.288244790839999876e-01,4.815145735209999493e-03,2.687854390940000362e-03,4.815145735209999493e-03,5.087060171340000367e-03,-5.816439073749999668e-03,-3.793136060169999962e-03,-5.973620927669999643e-03,-6.192341840580000215e-03,-2.717764289959999928e+02,-3.654529155000000085e+00,-6.366634368899999619e-02 +2.324210491180000133e+02,-9.659529073336944327e-01,-1.628537462510326250e+01,1.628537462510326250e+01,2.999999999997271516e-02,5.359400000000000119e+01,5.359400000000000119e+01,-1.327927314336751863e+02,-1.327927314336751863e+02,3.027794560619999942e+01,1.409452855589999887e-01,-1.760354365650000091e+03,1.109909227779999981e+02,4.498469211119999756e+01,5.653222448510000220e-01,3.305403880639999903e-01,-4.604802495510000072e-03,5.901989867419999607e-04,-9.702366500020000043e-04,-5.972146234450000438e-04,0.000000000000000000e+00,-2.318762114329999888e-02,5.287218501839999751e-01,1.898786382640000117e-02,1.715604248290000106e-02,1.898786382640000117e-02,1.148837350239999971e-03,-1.943505343920000003e-02,-1.771062230240000313e-02,-1.394900481990000128e-03,-1.703417169800000054e-03,-2.701447512180000103e+02,-3.569579084890000420e+00,-1.558494567870000180e-02 +2.334663550859999930e+02,-1.059179649816383018e+00,-1.622724244723609743e+01,1.622724244723609743e+01,4.000000000002046363e-02,4.937760000000000105e+01,4.937760000000000105e+01,-1.334803257886968595e+02,-1.334803257886968595e+02,3.029921220320000330e+01,1.420299112799999763e-01,-1.759759944400000222e+03,1.113375181560000016e+02,4.497911925600000416e+01,5.666348108669999606e-01,3.296151733900000158e-01,-5.745785954150000110e-03,1.367456819689999870e-03,-2.303698065800000288e-03,-9.115711371050001137e-04,0.000000000000000000e+00,-2.529428384699999866e-02,5.280515765339999223e-01,3.016777215820000066e-02,2.899952798950000341e-02,3.016777215820000066e-02,-1.743769413960000007e-03,-2.981138245690000133e-02,-2.875618882820000013e-02,2.333124532850000023e-03,1.987108575270000056e-03,-2.708137471800000071e+02,-3.590703271389999784e+00,4.408550262450000590e-02 +2.346166861050000136e+02,-1.130304019187929887e+00,-1.616008699098250290e+01,1.616008699098250290e+01,4.000000000002046363e-02,5.001259999999999906e+01,5.001259999999999906e+01,-1.341688501671086158e+02,-1.341688501671086158e+02,3.023244039510000292e+01,1.411263495680000202e-01,-1.759163909280000098e+03,1.116832966460000023e+02,4.497323939029999451e+01,5.682424258620000224e-01,3.289082082979999933e-01,-5.185321232909999994e-03,1.737564715170000079e-03,-2.954495605879999941e-03,-9.481059512400000482e-04,0.000000000000000000e+00,-2.859242939199999750e-02,5.271143383149999861e-01,3.435194522220000324e-02,3.418445225220000105e-02,3.435194522220000324e-02,-4.104554640599999971e-03,-3.321708434940000287e-02,-3.313967780309999556e-02,5.436079642849999706e-03,5.149329089669999956e-03,-2.716763199029999782e+02,-3.611522023600000075e+00,3.101348876950000069e-02 +2.359767863749999890e+02,-1.163007109240212333e+00,-1.609991657314871460e+01,1.609991657314871460e+01,2.999999999997271516e-02,5.656579999999999586e+01,5.656579999999999586e+01,-1.348568845286152680e+02,-1.348568845286152680e+02,3.005974222580000088e+01,1.379153877500000069e-01,-1.758567704049999975e+03,1.120278816670000026e+02,4.496855332989999710e+01,5.678201226579999705e-01,3.275028785049999835e-01,-3.507032436089999820e-03,1.672151654829999879e-03,-2.864688338699999687e-03,-9.407718402649999090e-04,0.000000000000000000e+00,-3.214968621079999922e-02,5.258478777920000402e-01,3.272774178869999884e-02,3.346920143399999964e-02,3.272774178869999884e-02,-3.911916468519999364e-03,-3.070099638999999880e-02,-3.150068337740000168e-02,6.089497198169999646e-03,5.880434525119999922e-03,-2.721414412329999664e+02,-3.629634978680000401e+00,-6.912183761599999254e-02 +2.373882276950000119e+02,-1.217215957231998935e+00,-1.604025337738201884e+01,1.604025337738201884e+01,1.999999999998181011e-02,7.543800000000000239e+01,7.543800000000000239e+01,-1.355420335014794375e+02,-1.355420335014794375e+02,2.968456787010000397e+01,1.310846954580000001e-01,-1.757973650059999954e+03,1.123704599750000028e+02,4.496583237270000666e+01,5.651928889670000400e-01,3.252520492400000074e-01,-1.479913334460000078e-03,1.296485323469999916e-03,-2.240416067590000285e-03,-1.015579747919999982e-03,0.000000000000000000e+00,-3.517777530920000034e-02,5.241655535189999604e-01,2.785003112059999605e-02,2.916899699450000230e-02,2.785003112059999605e-02,-7.848927136260000145e-04,-2.468283966469999799e-02,-2.602917066649999833e-02,4.086883924780000329e-03,3.924719041590000665e-03,-2.714992116370000304e+02,-3.619695299550000023e+00,-3.479061126709999674e-01 +2.376320171360000018e+02,-1.104789203908444595e+00,-1.599206502234246585e+01,1.599206502234246585e+01,9.999999999990905053e-03,4.805679999999999552e+01,4.805679999999999552e+01,-1.362207681209925738e+02,-1.362207681209925738e+02,2.992792338369999783e+01,1.402301788330000132e-01,-1.757385027920000084e+03,1.127096152139999958e+02,4.496475902920000323e+01,5.593316795160000465e-01,3.211742976709999753e-01,-3.330744300350000579e-04,8.992484875830000779e-04,-1.561025615500000099e-03,-1.609856652849999976e-03,0.000000000000000000e+00,-3.726236247970000220e-02,5.213705867769999891e-01,2.589206278509999584e-02,2.718245486849999934e-02,2.589206278509999584e-02,7.134132936979999291e-03,-2.048543093379999805e-02,-2.182357658770000056e-02,-1.492970459069999827e-03,-1.775254656210000165e-03,-2.696219638480000071e+02,-3.582535050369999308e+00,5.558919906619999574e-02 +2.386715359689999900e+02,-1.082043525363401093e+00,-1.593636794786555910e+01,1.593636794786555910e+01,0.000000000000000000e+00,5.654039999999999822e+01,5.654039999999999822e+01,-1.369045722787658121e+02,-1.369045722787658121e+02,2.981213246360000113e+01,1.363674849269999878e-01,-1.756790972629999942e+03,1.130496555590000014e+02,4.496706300989999505e+01,5.682498857580000617e-01,3.257816244849999765e-01,4.445574206590000195e-03,-2.655370209490000104e-04,3.694001784669999474e-04,2.614756864709999983e-04,0.000000000000000000e+00,-3.813380884780000202e-02,5.215573978780000397e-01,1.001605158560000012e-03,3.413638093960000026e-03,1.001605158560000012e-03,2.681879342010000042e-04,1.958291435059999770e-03,-1.945143933140000092e-04,2.674624051559999771e-03,2.950935766449999838e-03,-2.714043393890000289e+02,-3.581697369110000029e+00,-7.090520858760000766e-02 +2.397078769210000075e+02,-1.002843521596558318e+00,-1.589386525991335120e+01,1.589386525991335120e+01,4.000000000002046363e-02,5.539739999999999753e+01,5.539739999999999753e+01,-1.375556626894596945e+02,-1.375556626894596945e+02,2.982512388699999661e+01,1.363843083379999988e-01,-1.756226018549999935e+03,1.133744921189999957e+02,4.497229416939999425e+01,5.637822918520000171e-01,3.246296633579999757e-01,5.963390183510000435e-03,-1.125081718900000074e-03,1.876397772450000149e-03,4.967646554269999079e-04,0.000000000000000000e+00,-3.672858919630000302e-02,5.214691722559999798e-01,-1.229583680099999993e-02,-1.047640910629999908e-02,-1.229583680099999993e-02,3.799539720679999833e-03,1.409528792020000101e-02,1.249510275149999863e-02,-2.147614899990000006e-03,-1.780846075480000063e-03,-2.726452448759999925e+02,-3.652505115649999912e+00,-5.285882949830000149e-02 +2.407612900739999873e+02,-9.875805710277066884e-01,-1.583761629331575804e+01,1.583761629331575804e+01,3.000000000002955858e-02,5.763259999999999650e+01,5.763259999999999650e+01,-1.382382701049031368e+02,-1.382382701049031368e+02,2.984082643650000222e+01,1.350211799140000057e-01,-1.755634322540000085e+03,1.137159985120000130e+02,4.497910588399999909e+01,5.631501608730000719e-01,3.258926801390000239e-01,6.694235892989999423e-03,-1.843909301470000135e-03,3.133160668210000204e-03,9.835487330309999367e-04,0.000000000000000000e+00,-3.361554795090000020e-02,5.223354206040000669e-01,-2.385137865319999703e-02,-2.284096679570000316e-02,-2.385137865319999703e-02,4.844875048999999594e-03,2.376678822740000210e-02,2.296003339259999887e-02,-5.125988466420000438e-03,-4.725808452089999730e-03,-2.726602599089999899e+02,-3.641518215040000062e+00,-8.678865432739998886e-02 +2.417983989720000011e+02,-9.520450540669709305e-01,-1.577512729059190022e+01,1.577512729059190022e+01,2.999999999997271516e-02,5.293359999999999843e+01,5.293359999999999843e+01,-1.389199183555387549e+02,-1.389199183555387549e+02,2.997410339530000201e+01,1.362948864699999874e-01,-1.755044272919999912e+03,1.140583030020000024e+02,4.498561603999999647e+01,5.612701335040000128e-01,3.263927270989999685e-01,5.432922164460000057e-03,-2.058945266669999843e-03,3.533558623169999989e-03,1.028187516600000042e-03,0.000000000000000000e+00,-2.949261328279999955e-02,5.234722079000000416e-01,-2.627557352700000265e-02,-2.646743088069999916e-02,-2.627557352700000265e-02,6.022903201529999744e-03,2.489507063859999758e-02,2.519529823790000317e-02,-7.596975087270000856e-03,-7.295035844380000009e-03,-2.722614902949999873e+02,-3.637796938030000149e+00,-1.864480972290000205e-02 +2.428396401409999896e+02,-8.081278440127840357e-01,-1.573679034050689651e+01,1.573679034050689651e+01,1.999999999998181011e-02,5.636260000000000048e+01,5.636260000000000048e+01,-1.396022934029791145e+02,-1.396022934029791145e+02,3.001974767169999936e+01,1.345956623550000064e-01,-1.754454138349999994e+03,1.144018239129999870e+02,4.499030746289999882e+01,5.621245501029999980e-01,3.279837767050000075e-01,3.256794359599999873e-03,-1.846733082189999956e-03,3.184497397920000444e-03,1.081285844109999969e-03,0.000000000000000000e+00,-2.550262327750000071e-02,5.251040098020000046e-01,-2.250383424289999906e-02,-2.369822159670000039e-02,-2.250383424289999906e-02,4.211868624229999844e-03,2.007853492140000348e-02,2.130150630709999604e-02,-6.807942018249999588e-03,-6.608583913800000417e-03,-2.716091576580000151e+02,-3.614220357390000249e+00,-6.649589538569999903e-02 +2.438774390220000043e+02,-8.901655560396304345e-01,-1.568102996502614133e+01,1.568102996502614133e+01,9.999999999990905053e-03,4.709159999999999968e+01,4.709159999999999968e+01,-1.402839278183396061e+02,-1.402839278183396061e+02,3.020914818660000023e+01,1.375289559359999803e-01,-1.753865135510000073e+03,1.147457407689999940e+02,4.499183422310000680e+01,5.604439477489999710e-01,3.274340615459999659e-01,-4.130748677920000251e-04,-1.058755664299999974e-03,1.853610526540000079e-03,4.633549503780000074e-04,0.000000000000000000e+00,-2.243535131709999825e-02,5.260834011810000543e-01,-8.120714940999999507e-03,-1.026133765400000057e-02,-8.120714940999999507e-03,3.882952203870000153e-03,5.852174252010000459e-03,7.920172502299999834e-03,-6.180289189520000656e-03,-6.224117355539999716e-03,-2.701681166100000269e+02,-3.586695589959999708e+00,6.678962707520000319e-02 +2.449229409700000133e+02,-9.465643860637708018e-01,-1.562874998856378284e+01,1.562874998856378284e+01,4.999999999995452526e-02,4.836159999999999570e+01,4.836159999999999570e+01,-1.409349450013074829e+02,-1.409349450013074829e+02,3.024889747389999783e+01,1.364999860530000109e-01,-1.753302386090000027e+03,1.150738812370000090e+02,4.499010120620000208e+01,5.635013062349999435e-01,3.286622692770000409e-01,-3.057091030250000049e-03,-1.699278455990000021e-04,3.292121128500000746e-04,2.942514464219999921e-04,0.000000000000000000e+00,-2.141823805259999991e-02,5.271630574829999638e-01,5.132703474779999782e-03,2.934512189259999831e-03,5.132703474779999782e-03,-7.691438494849999396e-04,-7.299810933539999970e-03,-5.194858390399998901e-03,-1.377847556610000031e-03,-1.491202351650000200e-03,-2.694387552069999856e+02,-3.551593553180000029e+00,4.467916488649999879e-02 +2.459649231440000108e+02,-9.376066978844389554e-01,-1.558382790690110653e+01,1.558382790690110653e+01,4.000000000002046363e-02,4.582159999999999656e+01,4.582159999999999656e+01,-1.416185317902378813e+02,-1.416185317902378813e+02,3.029211459110000249e+01,1.369653493169999958e-01,-1.752711299119999921e+03,1.154181393870000107e+02,4.498537684739999776e+01,5.628312418290000174e-01,3.273151110020000032e-01,-5.729209276350000907e-03,8.879311494730000648e-04,-1.475981898020000066e-03,-4.020989414680000611e-04,0.000000000000000000e+00,-2.220673956720000189e-02,5.272288613950000258e-01,2.239436108040000414e-02,2.035110401150000067e-02,2.239436108040000414e-02,-2.516585011869999777e-03,-2.368097380599999691e-02,-2.177100520670000039e-02,1.382774271419999999e-03,1.096683816660000248e-03,-2.691809576990000323e+02,-3.554852747049999984e+00,8.412599563599999775e-02 +2.470025310519999948e+02,-1.075207969491391857e+00,-1.551408536538640348e+01,1.551408536538640348e+01,3.000000000002955858e-02,5.059679999999999467e+01,5.059679999999999467e+01,-1.423020044812585638e+02,-1.423020044812585638e+02,3.018491165639999707e+01,1.345013082029999918e-01,-1.752119655319999993e+03,1.157612938079999907e+02,4.497864512859999309e+01,5.638892217509999805e-01,3.263111771760000002e-01,-6.789008270099999680e-03,1.723952870760000079e-03,-2.915311786300000228e-03,-8.035612850469999466e-04,0.000000000000000000e+00,-2.500881888600000116e-02,5.267162790449999576e-01,3.481620606609999585e-02,3.357156447529999893e-02,3.481620606609999585e-02,-5.133866697069999763e-03,-3.509310951109999993e-02,-3.398586620309999862e-02,5.059568194750000379e-03,4.719564969279999890e-03,-2.693328547820000267e+02,-3.552030732590000017e+00,6.291866302489999320e-03 +2.480455660819999935e+02,-1.066133132537306683e+00,-1.547059323220266513e+01,1.547059323220266513e+01,1.999999999998181011e-02,5.976619999999999777e+01,5.976619999999999777e+01,-1.429835569714098540e+02,-1.429835569714098540e+02,2.996318569650000185e+01,1.307655721900000123e-01,-1.751529024519999894e+03,1.161024467539999989e+02,4.497138165020000145e+01,5.622523190079999900e-01,3.236895585440000001e-01,-6.688303653449999449e-03,2.223853644269999791e-03,-3.785513727210000016e-03,-1.347851910820000105e-03,0.000000000000000000e+00,-2.909526214530000141e-02,5.251643299070000159e-01,4.347849519659999912e-02,4.312491634639999821e-02,4.347849519659999912e-02,-4.444182813159999919e-03,-4.213343480179999878e-02,-4.193415566500000025e-02,6.054198716629999484e-03,5.634943494649999676e-03,-2.692343697050000060e+02,-3.557281584049999612e+00,-1.265139579770000189e-01 +2.490881609920000130e+02,-1.134075224304918361e+00,-1.541037473463011942e+01,1.541037473463011942e+01,9.999999999990905053e-03,6.037579999999999814e+01,6.037579999999999814e+01,-1.436612921406757550e+02,-1.436612921406757550e+02,2.980850381880000199e+01,1.300510615110000157e-01,-1.750940959000000021e+03,1.164405021210000086e+02,4.496480777149999852e+01,5.596396520390000129e-01,3.203824829499999916e-01,-5.463802689979999593e-03,2.331964960039999927e-03,-3.997703629810000180e-03,-1.834095338049999881e-03,0.000000000000000000e+00,-3.375577012570000340e-02,5.226629690919999405e-01,4.707065765130000190e-02,4.763506377920000145e-02,4.707065765130000190e-02,-1.248175025309999995e-03,-4.348617907729999954e-02,-4.420987589949999796e-02,5.144718144500000021e-03,4.673362904930000207e-03,-2.683214312829999812e+02,-3.536840161830000273e+00,-1.378784179689999945e-01 +2.501231980329999942e+02,-1.129950468205533687e+00,-1.535357163789265655e+01,1.535357163789265655e+01,5.000000000001136868e-02,4.864099999999999824e+01,4.864099999999999824e+01,-1.443051193608932010e+02,-1.443051193608932010e+02,2.984303986520000151e+01,1.336895525459999845e-01,-1.750381435849999889e+03,1.167602402320000010e+02,4.496063063109999547e+01,5.597949487940000468e-01,3.188698472800000072e-01,-2.686351473579999885e-03,1.930753088280000177e-03,-3.352409122780000347e-03,-1.671028496180000048e-03,0.000000000000000000e+00,-3.791081185119999503e-02,5.203487931160000191e-01,4.045403464479999794e-02,4.213703044549999693e-02,4.045403464479999794e-02,5.136099155129999864e-04,-3.527909513250000045e-02,-3.703667439319999893e-02,4.920196499050000054e-03,4.586746136850000134e-03,-2.680370955590000221e+02,-3.518867381959999818e+00,2.925014495850000035e-02 +2.511639909749999902e+02,-1.112154958148174666e+00,-1.530123311322556390e+01,1.530123311322556390e+01,3.999999999996362021e-02,4.277359999999999474e+01,4.277359999999999474e+01,-1.449837413051035639e+02,-1.449837413051035639e+02,2.987745767300000210e+01,1.354040205479999925e-01,-1.749790887269999985e+03,1.170959987029999922e+02,4.496044172090000046e+01,5.634932562209999940e-01,3.203104756329999692e-01,2.285076296349999696e-03,7.853793953130001112e-04,-1.439111002469999978e-03,-4.446995028060000206e-04,0.000000000000000000e+00,-4.080984795509999541e-02,5.193505269420000126e-01,1.815884891780000093e-02,2.105490313890000242e-02,1.815884891780000093e-02,-1.467175292349999927e-03,-1.369898272779999926e-02,-1.643475250809999996e-02,5.967348770660000148e-03,6.087325923140000407e-03,-2.694988116420000210e+02,-3.544786890440000171e+00,1.208643913269999981e-01 +2.522035419940000054e+02,-1.089939732580617493e+00,-1.525108244182511541e+01,1.525108244182511541e+01,3.000000000002955858e-02,5.057139999999999702e+01,5.057139999999999702e+01,-1.456648230213393447e+02,-1.456648230213393447e+02,2.977568786639999843e+01,1.320133805270000127e-01,-1.749198387879999927e+03,1.174332630149999943e+02,4.496545309289999892e+01,5.643491490230000407e-01,3.221215217760000082e-01,7.001818926169999999e-03,-7.443564735060000884e-04,1.179441337130000171e-03,8.190203791310000881e-04,0.000000000000000000e+00,-4.095461039400000169e-02,5.196881678860000298e-01,-9.427925754509999812e-03,-6.229667863029999392e-03,-9.427925754509999812e-03,-1.554121259240000014e-03,1.149683495300000101e-02,8.626100561639999525e-03,3.419910499300000181e-03,3.950553957849999714e-03,-2.714557961730000102e+02,-3.602660048830000239e+00,-2.508163452149999835e-04 +2.532425711159999935e+02,-1.049161865665192872e+00,-1.518572394704649753e+01,1.518572394704649753e+01,2.000000000003865352e-02,5.107939999999999969e+01,5.107939999999999969e+01,-1.463437544930437184e+02,-1.463437544930437184e+02,2.980875937199999726e+01,1.313600093129999868e-01,-1.748608890369999926e+03,1.177712474140000012e+02,4.497396610779999548e+01,5.600041457009999890e-01,3.221450543700000169e-01,8.929313599149999933e-03,-1.964412857900000187e-03,3.321157654369999521e-03,1.264040530720000194e-03,0.000000000000000000e+00,-3.805973415240000018e-02,5.204091186670000146e-01,-2.848013016569999820e-02,-2.624843105349999872e-02,-2.848013016569999820e-02,3.063749732139999828e-03,2.857219102630000063e-02,2.663263603599999932e-02,-3.285709655749999812e-03,-2.679544749559999856e-03,-2.719574985479999896e+02,-3.630953301530000399e+00,-8.486747741699999376e-03 +2.542815649510000071e+02,-9.274113786127146097e-01,-1.514257084996647862e+01,1.514257084996647862e+01,9.999999999990905053e-03,5.849619999999999465e+01,5.849619999999999465e+01,-1.470211884088801071e+02,-1.470211884088801071e+02,2.980472423020000150e+01,1.284217983479999936e-01,-1.748021819710000045e+03,1.181102661029999865e+02,4.498362870319999729e+01,5.583611846179999949e-01,3.238080129370000115e-01,9.044409863240000097e-03,-2.766950185010000167e-03,4.735830838199999761e-03,1.729521658019999956e-03,0.000000000000000000e+00,-3.308642940400000065e-02,5.221471449849999225e-01,-4.092047443519999939e-02,-4.004795876069999760e-02,-4.092047443519999939e-02,4.917861550069999900e-03,3.868869132499999641e-02,3.803704791899999854e-02,-7.512047512359999908e-03,-6.928772391829999579e-03,-2.719959285169999816e+02,-3.626074784590000100e+00,-1.121034622189999996e-01 +2.553266599179999901e+02,-7.919792152630019677e-01,-1.509896937364780101e+01,1.509896937364780101e+01,0.000000000000000000e+00,5.219699999999999562e+01,5.219699999999999562e+01,-1.476961645887593875e+02,-1.476961645887593875e+02,2.999033700409999881e+01,1.301877200599999840e-01,-1.747438120040000058e+03,1.184500189489999968e+02,4.499180072210000247e+01,5.549069234239999426e-01,3.239855901240000224e-01,6.227562722699999526e-03,-2.759903380719999546e-03,4.765967222600000358e-03,1.432432709760000098e-03,0.000000000000000000e+00,-2.717704848690000521e-02,5.237966337280000051e-01,-3.821866158709999461e-02,-3.917258504229999966e-02,-3.821866158709999461e-02,7.580386496760000044e-03,3.504608240369999628e-02,3.605406054230000240e-02,-1.103480713730000014e-02,-1.069891099679999916e-02,-2.705404854710000109e+02,-3.599497958869999792e+00,-2.099943161010000073e-02 +2.563638410570000019e+02,-8.023520717034864358e-01,-1.505101899618374617e+01,1.505101899618374617e+01,3.999999999996362021e-02,5.755639999999999645e+01,5.755639999999999645e+01,-1.483399288557527882e+02,-1.483399288557527882e+02,3.003423551780000267e+01,1.279209703209999993e-01,-1.746881977450000022e+03,1.187749544479999884e+02,4.499646966199999554e+01,5.563193443500000779e-01,3.258975534490000103e-01,2.821963224529999877e-03,-2.233872563170000245e-03,3.871866379679999529e-03,1.330225270339999936e-03,0.000000000000000000e+00,-2.234243036849999781e-02,5.259006629460000193e-01,-2.868696930110000223e-02,-3.085641499159999523e-02,-2.868696930110000223e-02,4.896635014239999681e-03,2.486755966180000110e-02,2.699561555219999812e-02,-8.926088827600001108e-03,-8.757434453639998534e-03,-2.693016456870000184e+02,-3.553846216590000218e+00,-9.765291213989998886e-02 +2.574293789870000069e+02,-8.003482285145853137e-01,-1.500644170353246665e+01,1.500644170353246665e+01,2.999999999997271516e-02,7.213599999999999568e+01,7.213599999999999568e+01,-1.490148653316918228e+02,-1.490148653316918228e+02,2.988968103260000220e+01,1.233015507459999938e-01,-1.746299389940000083e+03,1.191163883950000013e+02,4.499667488140000415e+01,5.542828835970000645e-01,3.248377582459999746e-01,-2.449558262089999994e-03,-9.550000379819999349e-04,1.697235666500000002e-03,3.148513721259999887e-04,0.000000000000000000e+00,-1.893251288509999880e-02,5.269171605100000377e-01,-5.143393278830000331e-03,-8.421542202960000112e-03,-5.143393278830000331e-03,4.535606036489999576e-03,2.126840550150000276e-03,5.259350429359999253e-03,-7.518563621170000662e-03,-7.697797810090000435e-03,-2.670937412129999871e+02,-3.509766774310000059e+00,-3.004484176639999893e-01 +2.584663720130000115e+02,-8.967072036567026450e-01,-1.493616051925216581e+01,1.493616051925216581e+01,4.000000000002046363e-02,5.648959999999999582e+01,5.648959999999999582e+01,-1.496855323732216618e+02,-1.496855323732216618e+02,3.003848843639999799e+01,1.272967159750000021e-01,-1.745720306519999895e+03,1.194553687620000062e+02,4.499092365600000676e+01,5.508709026550000498e-01,3.211664182560000080e-01,-8.249318458339999910e-03,8.487536322169999398e-04,-1.383506634640000116e-03,-1.409036830150000186e-03,0.000000000000000000e+00,-1.856357994629999689e-02,5.257890683139999632e-01,2.868979548659999698e-02,2.484232527260000004e-02,2.868979548659999698e-02,6.174346395969999672e-03,-2.972629211809999644e-02,-2.609879311550000053e-02,-6.774143584029999540e-03,-7.430814238909999418e-03,-2.639197328270000185e+02,-3.432838080410000270e+00,-8.700609207149999358e-02 +2.604812347249999789e+02,-1.019284919070355677e+00,-1.488666444658650434e+01,1.488666444658650434e+01,3.000000000002955858e-02,5.458459999999999468e+01,5.458459999999999468e+01,-1.503578234074712725e+02,-1.503578234074712725e+02,2.999069246139999834e+01,1.273924261330000030e-01,-1.745138168929999892e+03,1.197925354129999960e+02,4.498067450140000290e+01,5.561904138869999681e-01,3.206035096570000187e-01,-1.079232762039999960e-02,2.426965866099999990e-03,-4.117124068079999755e-03,-1.814466382350000007e-03,0.000000000000000000e+00,-2.216580226150000055e-02,5.245502121760000636e-01,5.153978611469999666e-02,4.895491544840000625e-02,5.153978611469999666e-02,-1.455975177550000070e-03,-5.116518532769999406e-02,-4.879130252609999857e-02,2.301232424800000141e-03,1.602412707880000167e-03,-2.639579195359999630e+02,-3.398493283579999691e+00,-6.382083892819999382e-02 +2.609162375849999762e+02,-1.100487586524612205e+00,-1.483722822363192861e+01,1.483722822363192861e+01,9.999999999990905053e-03,5.689600000000000080e+01,5.689600000000000080e+01,-1.510311357037121809e+02,-1.510311357037121809e+02,2.981749844369999991e+01,1.261197477580000004e-01,-1.744553638769999907e+03,1.201278056920000097e+02,4.496899703399999737e+01,5.573643809650000724e-01,3.179135003999999931e-01,-1.091791729279999873e-02,3.391106404380000473e-03,-5.808408745700000160e-03,-2.330682102190000105e-03,0.000000000000000000e+00,-2.828301922249999711e-02,5.221390345559999702e-01,6.611935501950000349e-02,6.514839543229999919e-02,6.611935501950000349e-02,-4.385587774790000205e-03,-6.367882726159999895e-02,-6.294654976980000594e-02,7.321608431080000104e-03,6.587432964390000853e-03,-2.670090225569999802e+02,-3.487665160789999774e+00,-9.886455535889999979e-02 +2.622908766250000099e+02,-1.154168510099396139e+00,-1.477813576699961473e+01,1.477813576699961473e+01,5.000000000001136868e-02,4.546600000000000108e+01,4.546600000000000108e+01,-1.516711884932834664e+02,-1.516711884932834664e+02,2.979891125600000024e+01,1.295010745530000007e-01,-1.743996631539999953e+03,1.204443544879999877e+02,4.495893883080000109e+01,5.573957488050000908e-01,3.150324628900000312e-01,-8.755408500629998508e-03,3.589775431199999662e-03,-6.202788951640000187e-03,-2.600958459499999684e-03,0.000000000000000000e+00,-3.518952016530000476e-02,5.190273375670000355e-01,6.926938550869998767e-02,7.003335220360000501e-02,6.926938550869998767e-02,-3.714699431409999864e-03,-6.419545600579999733e-02,-6.520216741510000136e-02,9.245649191649999571e-03,8.545884219879999744e-03,-2.678106245800000238e+02,-3.518172540519999725e+00,6.083536148069999816e-02 +2.626185619830000064e+02,-1.178268293200382733e+00,-1.472344605279244334e+01,1.472344605279244334e+01,3.999999999996362021e-02,5.240019999999999811e+01,5.240019999999999811e+01,-1.523454987457310210e+02,-1.523454987457310210e+02,2.956498535090000246e+01,1.266746521000000070e-01,-1.743408338969999932e+03,1.207754886179999971e+02,4.495261418479999804e+01,5.616798474240000116e-01,3.152221061870000285e-01,-3.032965840270000161e-03,2.744600644760000416e-03,-4.832841197989999442e-03,-1.571137683869999919e-03,0.000000000000000000e+00,-4.186904049649999709e-02,5.167071235510000138e-01,5.111393122920000059e-02,5.406483366330000484e-02,5.111393122920000059e-02,-5.893468224870000022e-03,-4.488494587820000131e-02,-4.786086367950000142e-02,1.233198044249999951e-02,1.209743820860000041e-02,-2.678169715249999854e+02,-3.502532485730000200e+00,-4.015207290649999705e-02 +2.636601059440000085e+02,-1.146979742265609392e+00,-1.467515919388025480e+01,1.467515919388025480e+01,2.999999999997271516e-02,6.106159999999999854e+01,6.106159999999999854e+01,-1.530186465458814951e+02,-1.530186465458814951e+02,2.932034323170000079e+01,1.236276850099999880e-01,-1.742820748999999751e+03,1.211055424049999942e+02,4.495236554109999361e+01,5.589694157460000090e-01,3.135872169589999925e-01,2.685417265110000198e-03,1.249175636890000095e-03,-2.279018352559999700e-03,-9.285070607450000325e-04,0.000000000000000000e+00,-4.606475961400000041e-02,5.145273868720000587e-01,2.666294641199999996e-02,3.062105134059999942e-02,2.666294641199999996e-02,-8.565754766950001414e-04,-1.960956780059999738e-02,-2.342802116770000345e-02,7.954394888970000091e-03,8.049605649600000135e-03,-2.682128974479999783e+02,-3.530026638959999463e+00,-1.599044799799999861e-01 +2.647056009770000173e+02,-1.031777911858256402e+00,-1.462499576156316294e+01,1.462499576156316294e+01,2.000000000003865352e-02,4.983480000000000132e+01,4.983480000000000132e+01,-1.536884481063395924e+02,-1.536884481063395924e+02,2.939214900560000032e+01,1.267141401770000009e-01,-1.742236330949999910e+03,1.214343427970000135e+02,4.495780979250000087e+01,5.556792866979999301e-01,3.127945718149999776e-01,7.583878545290000280e-03,-4.789104902450000119e-04,7.204682887929999722e-04,-2.000755648849999937e-04,0.000000000000000000e+00,-4.679671462140000404e-02,5.130592995330000017e-01,-1.303046568099999964e-03,2.782698368260000301e-03,-1.303046568099999964e-03,5.555497903340000411e-03,7.869893530859999389e-03,4.092562720369999872e-03,9.503341108960000096e-04,1.319763185299999792e-03,-2.679740850740000155e+02,-3.523673309880000382e+00,-3.983497619629999993e-03 +2.657541599279999787e+02,-9.785052365291689869e-01,-1.457389463215699266e+01,1.457389463215699266e+01,2.000000000003865352e-02,5.369559999999999889e+01,5.369559999999999889e+01,-1.543596900563622114e+02,-1.543596900563622114e+02,2.939694873320000212e+01,1.250513792040000016e-01,-1.741651142619999973e+03,1.217646140729999900e+02,4.496859589090000497e+01,5.575141484979999618e-01,3.161183212020000077e-01,1.240753245220000203e-02,-2.440886865929999764e-03,4.128660840660000088e-03,1.482732976790000073e-03,0.000000000000000000e+00,-4.379763507280000356e-02,5.140737621600000029e-01,-3.709606831290000045e-02,-3.332994429009999982e-02,-3.709606831290000045e-02,5.214460935509999950e-03,3.929452676730000454e-02,3.606260248119999567e-02,-3.289573221250000155e-03,-2.481802744429999815e-03,-2.699213883840000108e+02,-3.554807561940000138e+00,-5.730819702150000139e-02 +2.667911460400000010e+02,-8.207401875139704872e-01,-1.453657827380984635e+01,1.453657827380984635e+01,1.999999999998181011e-02,5.387339999999999662e+01,5.387339999999999662e+01,-1.550306142211624945e+02,-1.550306142211624945e+02,2.951249858789999791e+01,1.246680170299999946e-01,-1.741067801169999939e+03,1.220972233860000102e+02,4.498243990579999974e+01,5.542897920809999324e-01,3.178619563689999983e-01,1.341281755770000125e-02,-3.780425253019999935e-03,6.519037095630000542e-03,2.251712622729999842e-03,0.000000000000000000e+00,-3.720733550969999859e-02,5.160877411909999823e-01,-5.969397930590000095e-02,-5.770436584919999556e-02,-5.969397930590000095e-02,8.107283651549999567e-03,5.793424057939999816e-02,5.636457256580000574e-02,-1.033089935979999985e-02,-9.447076934999999731e-03,-2.716118672950000246e+02,-3.616299211319999873e+00,-5.715084075930000618e-02 +2.678342621329999815e+02,-7.440630277135851234e-01,-1.448886235225396391e+01,1.448886235225396391e+01,0.000000000000000000e+00,4.823460000000000036e+01,4.823460000000000036e+01,-1.557008835217276044e+02,-1.557008835217276044e+02,2.976319092570000180e+01,1.260922104119999998e-01,-1.740486681599999883e+03,1.224321375570000043e+02,4.499573185300000233e+01,5.525876194809999919e-01,3.203897544229999950e-01,1.129898876500000024e-02,-4.290966308849999619e-03,7.454691618150000205e-03,2.584505109369999998e-03,0.000000000000000000e+00,-2.869340387309999782e-02,5.191066002149999914e-01,-6.685425025500001117e-02,-6.721731370380000514e-02,-6.685425025500001117e-02,9.117631895519999474e-03,6.211042654469999674e-02,6.266917442609999667e-02,-1.437261019129999935e-02,-1.366577117329999952e-02,-2.715146249449999800e+02,-3.615440227009999674e+00,2.057361602779999785e-02 +2.688677179819999878e+02,-7.325700579119702738e-01,-1.443771237474680902e+01,1.443771237474680902e+01,3.999999999996362021e-02,4.640579999999999927e+01,4.640579999999999927e+01,-1.563405564196922057e+02,-1.563405564196922057e+02,2.999378224260000181e+01,1.262978762389999898e-01,-1.739933383090000007e+03,1.227538240500000057e+02,4.500512576829999745e+01,5.530602410489999787e-01,3.232622127389999656e-01,6.969178453800000533e-03,-3.912803225910000196e-03,6.815490055390000315e-03,2.572279146539999985e-03,0.000000000000000000e+00,-2.065177813829999903e-02,5.226667226269999800e-01,-5.872617807069999835e-02,-6.125733074169999876e-02,-5.872617807069999835e-02,6.793402334760000570e-03,5.256024042870000024e-02,5.506852354330000338e-02,-1.343925777939999899e-02,-1.298220953309999967e-02,-2.703044603650000113e+02,-3.583462672759999634e+00,4.718494415280000132e-02 +2.699182460310000238e+02,-6.190518593993815655e-01,-1.440639932144365787e+01,1.440639932144365787e+01,2.999999999997271516e-02,4.828539999999999566e+01,4.828539999999999566e+01,-1.570131873949212888e+02,-1.570131873949212888e+02,3.014577648800000276e+01,1.253162771459999936e-01,-1.739352613819999988e+03,1.230937361879999941e+02,4.500897227390000666e+01,5.529064052880000579e-01,3.245511182220000013e-01,1.225060770200000061e-04,-2.494245710489999702e-03,4.373571990659999922e-03,1.725011266290000069e-03,0.000000000000000000e+00,-1.403824503400000027e-02,5.257804825480000277e-01,-3.222270820499999883e-02,-3.661758428600000309e-02,-3.222270820499999883e-02,4.191284933389999821e-03,2.658838175659999567e-02,3.079526252859999744e-02,-1.007963215049999944e-02,-1.001360669079999835e-02,-2.675006407740000327e+02,-3.517020592109999733e+00,2.077388763429999924e-02 +2.709654719829999863e+02,-7.656932231275678236e-01,-1.434988043108528721e+01,1.434988043108528721e+01,3.000000000002955858e-02,5.895339999999999492e+01,5.895339999999999492e+01,-1.576853837308068194e+02,-1.576853837308068194e+02,3.008676978179999750e+01,1.215260103339999981e-01,-1.738772484750000103e+03,1.234338473320000134e+02,4.500504038340000079e+01,5.523836574489999762e-01,3.236020355870000142e-01,-7.490475859010001063e-03,-2.797250463399999620e-04,5.654391933090000379e-04,2.554900490550000066e-04,0.000000000000000000e+00,-1.116850737639999910e-02,5.273539610780000331e-01,6.994367608720000219e-03,1.694452821030000000e-03,6.994367608720000219e-03,9.998904611279999573e-04,-1.102684279249999989e-02,-5.961171102050000746e-03,-4.903539528450000066e-03,-5.266608742149999321e-03,-2.641384487400000012e+02,-3.430681271179999658e+00,-1.283864974979999907e-01 +2.720026190280000264e+02,-8.642344739311568214e-01,-1.429753143640681756e+01,1.429753143640681756e+01,2.000000000003865352e-02,5.539739999999999753e+01,5.539739999999999753e+01,-1.583542169475279024e+02,-1.583542169475279024e+02,3.007206556519999907e+01,1.220695078370000047e-01,-1.738194636180000089e+03,1.237712579850000054e+02,4.499332320949999797e+01,5.499063849080000344e-01,3.193917042699999653e-01,-1.436378990229999868e-02,2.302511955000000228e-03,-3.870924464139999851e-03,-1.781219625390000104e-03,0.000000000000000000e+00,-1.314790766289999913e-02,5.263105763650000046e-01,5.271165087740000560e-02,4.749611672040000843e-02,5.271165087740000560e-02,-5.461076967710000495e-04,-5.462886766580000303e-02,-4.966845794040000012e-02,-7.664705085469998656e-04,-1.626233523230000057e-03,-2.621165089830000170e+02,-3.373690623120000343e+00,-8.330917358400000139e-02 +2.730456900600000267e+02,-1.042090449955968001e+00,-1.423743336776984592e+01,1.423743336776984592e+01,9.999999999990905053e-03,5.427979999999999450e+01,5.427979999999999450e+01,-1.590216426663830305e+02,-1.590216426663830305e+02,2.992854797969999936e+01,1.218807101249999858e-01,-1.737616057709999950e+03,1.241048417140000026e+02,4.497611050489999940e+01,5.520129198920000757e-01,3.157309747120000121e-01,-1.766293843480000111e-02,4.497672272119999579e-03,-7.669376663020000331e-03,-3.080846751559999930e-03,0.000000000000000000e+00,-2.030971341629999802e-02,5.236265411559999361e-01,8.831582961480001492e-02,8.485087626420000084e-02,8.831582961480001492e-02,-6.024457007559999924e-03,-8.779555871980000703e-02,-8.465500743660001048e-02,7.322144000399999526e-03,6.220325835199999945e-03,-2.665668494320000264e+02,-3.465023715280000527e+00,-7.304286956789998730e-02 +2.741094169620000116e+02,-1.219101443719456723e+00,-1.418085667625769197e+01,1.418085667625769197e+01,9.999999999990905053e-03,5.826759999999999451e+01,5.826759999999999451e+01,-1.596884512790190342e+02,-1.596884512790190342e+02,2.962729398550000326e+01,1.202404573560000023e-01,-1.737035642990000042e+03,1.244343166940000032e+02,4.495761192260000172e+01,5.539040332879999751e-01,3.115518814139999759e-01,-1.673999538929999906e-02,5.673970388649999738e-03,-9.764684331209999568e-03,-3.859297259889999960e-03,0.000000000000000000e+00,-3.095858048779999774e-02,5.193835977649999824e-01,1.069750575319999980e-01,1.061849873460000010e-01,1.069750575319999980e-01,-8.898803677010000412e-03,-1.027363278150000003e-01,-1.023850537200000077e-01,1.389453882399999986e-02,1.269873730329999957e-02,-2.703552661150000063e+02,-3.574319585319999604e+00,-1.311941146850000017e-01 +2.751496200560000034e+02,-1.231357041336539559e+00,-1.413455730314554870e+01,1.413455730314554870e+01,1.999999999998181011e-02,5.379719999999999658e+01,5.379719999999999658e+01,-1.603537510402296107e+02,-1.603537510402296107e+02,2.938484580649999955e+01,1.210977435110000000e-01,-1.736454278590000058e+03,1.247594146179999939e+02,4.494219220880000165e+01,5.545632517430000297e-01,3.073938186910000203e-01,-1.186818366600000084e-02,5.554823985529999154e-03,-9.678964367399999283e-03,-4.008733536559999991e-03,0.000000000000000000e+00,-4.270321861940000463e-02,5.141222260589999316e-01,1.052836313000000135e-01,1.074423959960000008e-01,1.052836313000000135e-01,-6.704771278730000013e-03,-9.579963677969999258e-02,-9.842316524920000087e-02,1.678576647199999869e-02,1.572400202560000210e-02,-2.707401952850000271e+02,-3.601948934549999759e+00,-7.218790054319999816e-02 +2.761925420759999952e+02,-1.196475432743209888e+00,-1.408043125721212618e+01,1.408043125721212618e+01,1.000000000004774847e-02,5.146039999999999992e+01,5.146039999999999992e+01,-1.610195760369212792e+02,-1.610195760369212792e+02,2.915759751829999757e+01,1.214115098119999958e-01,-1.735870528299999933e+03,1.250816711970000057e+02,4.493413448359999762e+01,5.571474323569999276e-01,3.059407601920000053e-01,-3.044075139210000117e-03,3.999897541780000725e-03,-7.135924793780000150e-03,-2.833590049010000032e-03,0.000000000000000000e+00,-5.272580011599999755e-02,5.096170296630000429e-01,7.643036461720000008e-02,8.158828278080000607e-02,7.643036461720000008e-02,-3.846662868520000101e-03,-6.303104763130000510e-02,-6.832738912309999080e-02,1.755937141349999883e-02,1.710755652629999957e-02,-2.677092443690000323e+02,-3.520397692280000435e+00,-4.130744934080000236e-02 +2.772379441260000021e+02,-1.184208654913190495e+00,-1.402759896815782525e+01,1.402759896815782525e+01,0.000000000000000000e+00,5.410199999999999676e+01,5.410199999999999676e+01,-1.616862435552518491e+02,-1.616862435552518491e+02,2.895709869270000070e+01,1.202185377480000095e-01,-1.735285314190000008e+03,1.254031586020000049e+02,4.493635791890000064e+01,5.574523581090000679e-01,3.060313511350000182e-01,7.310861030899999669e-03,1.275216248180000012e-03,-2.480736079260000351e-03,-1.008764143390000062e-03,0.000000000000000000e+00,-5.831823863559999765e-02,5.067517220530000088e-01,2.780939748990000210e-02,3.490607047600000068e-02,2.780939748990000210e-02,9.468733585039999096e-04,-1.418504107729999866e-02,-2.087839260299999972e-02,1.272315403370000153e-02,1.308080451450000133e-02,-2.671684438139999997e+02,-3.491637810930000363e+00,-7.763624191279999698e-02 +2.782744691369999828e+02,-1.134365903039260548e+00,-1.396912597223580121e+01,1.396912597223580121e+01,4.000000000002046363e-02,4.965699999999999648e+01,4.472939999999999827e+01,-1.623201199704259068e+02,-1.623201199704259068e+02,2.903366884869999964e+01,1.219378560779999926e-01,-1.734729479159999983e+03,1.257097709810000055e+02,4.494807489170000281e+01,5.549329361150000528e-01,3.071915826250000148e-01,1.580241585120000306e-02,-1.747105099700000091e-03,2.822352052999999548e-03,8.076490320439998509e-04,0.000000000000000000e+00,-5.786474370230000608e-02,5.059502708180000363e-01,-2.568597634099999832e-02,-1.833480393720000184e-02,-2.568597634099999832e-02,7.020596776449999389e-03,3.560525448400000265e-02,2.907988131220000036e-02,2.692840906769999963e-03,3.724480598510000306e-03,-2.685989681190000056e+02,-3.530240906840000026e+00,4.485368728640000413e-02 +2.793147919180000258e+02,-1.210389600276242428e+00,-1.388640746891939237e+01,1.388640746891939237e+01,2.999999999997271516e-02,5.013960000000000150e+01,5.013960000000000150e+01,-1.629863823599137618e+02,-1.629863823599137618e+02,2.910522332860000105e+01,1.205891519779999921e-01,-1.734146823560000030e+03,1.260345651129999993e+02,4.496868974289999699e+01,5.539247647600000768e-01,3.116678754730000112e-01,2.253385134570000392e-02,-4.913250822249999941e-03,8.427868944810000887e-03,3.257527671519999841e-03,0.000000000000000000e+00,-5.093816010550000078e-02,5.084797963220000216e-01,-8.437897517750000964e-02,-7.824387570809999970e-02,-8.437897517750000964e-02,8.199936473060000577e-03,8.517460077130001306e-02,8.011349425069999586e-02,-7.969969692849999954e-03,-6.330317930489999523e-03,-2.728454622080000149e+02,-3.628123323259999644e+00,-2.852296829220000302e-02 +2.803559460640000225e+02,-3.059394009905589670e-06,-1.407302994811040087e+01,1.407302994811040087e+01,1.999999999998181011e-02,5.158739999999999526e+01,5.158739999999999526e+01,-1.636519371511487861e+02,-1.636519371511487861e+02,2.937033675260000365e+01,1.205891221759999854e-01,-1.733567741939999905e+03,1.263637430400000028e+02,4.499325896779999567e+01,5.495399538040000031e-01,3.158963018540000278e-01,2.325951156189999883e-02,-6.975721315910000248e-03,1.215709270179999961e-02,4.538152304350000221e-03,0.000000000000000000e+00,-3.828374876340000232e-02,5.129083847689999143e-01,-1.205037974029999903e-01,-1.177379945369999986e-01,-1.205037974029999903e-01,1.233991188510000052e-02,1.135584276099999984e-01,1.114966523770000023e-01,-2.020750044020000122e-02,-1.858125404570000125e-02,-2.766177560130000188e+02,-3.744266825259999543e+00,-1.714897155759999986e-02 +2.814011270999999965e+02,-3.059394009905589670e-06,-1.407302994811040087e+01,1.407302994811040087e+01,1.060000000000002274e+00,4.000499999999999545e+01,4.000499999999999545e+01,-1.643173509570397073e+02,-1.643173509570397073e+02,2.989690952599999818e+01,1.242230758070000107e-01,-1.732991836039999953e+03,1.266977424039999960e+02,4.501579511600000671e+01,5.471304628159999739e-01,3.208908762000000081e-01,1.861764328979999966e-02,-7.565213847789999980e-03,1.323936524329999941e-02,4.981893167189999083e-03,0.000000000000000000e+00,-2.293500163670000175e-02,5.189633407060000314e-01,-1.273145716029999985e-01,-1.289103244929999947e-01,-1.273145716029999985e-01,1.369318739720000108e-02,1.161719389709999911e-01,1.178820580660000089e-01,-2.590111854089999915e-02,-2.472145382490000334e-02,-2.770009472269999833e+02,-3.764786067569999783e+00,1.625003814700000104e-01 +2.824514820580000105e+02,-6.115506625678621688e+00,-1.377250799451983276e+01,1.377250799451983276e+01,4.999999999995452526e-02,5.102859999999999729e+01,5.102859999999999729e+01,-1.649544270244725510e+02,-1.649544270244725510e+02,2.999225566959999867e+01,1.165188327429999976e-01,-1.732442736559999958e+03,1.270211736020000046e+02,4.503067207910000036e+01,5.492301857450000435e-01,3.265594960489999754e-01,1.045543776749999904e-02,-6.665755219609999227e-03,1.163281567880000006e-02,4.869386195100000245e-03,0.000000000000000000e+00,-9.227525702980000910e-03,5.258284070359999784e-01,-1.065738617780000036e-01,-1.120115244040000013e-01,-1.065738617780000036e-01,8.948613716420000808e-03,9.550941559869999264e-02,1.006079191850000054e-01,-2.103103824129999924e-02,-2.035221893509999921e-02,-2.740784743759999742e+02,-3.689478341050000054e+00,-1.354928016660000012e-01 +2.839078380249999896e+02,-2.402799738082543601e-01,-1.376753031235166880e+01,1.376753031235166880e+01,9.999999999990905053e-03,4.668519999999999470e+01,4.668519999999999470e+01,-1.656514394161936821e+02,-1.656514394161936821e+02,3.039073262679999843e+01,1.206350475549999995e-01,-1.731844123849999960e+03,1.273784756060000092e+02,4.503410346479999760e+01,5.419223124270000636e-01,3.241116377320000241e-01,-4.611841978939999580e-03,-3.355392121690000101e-03,5.892503224520000138e-03,1.820586141220000009e-03,0.000000000000000000e+00,2.470379329929999965e-03,5.297611781419999666e-01,-4.033823905969999984e-02,-4.944393721339999936e-02,-4.033823905969999984e-02,1.190378759200000011e-02,3.329303643519999911e-02,4.192808653950000353e-02,-1.908863227100000143e-02,-1.941963826590000289e-02,-2.649389384770000220e+02,-3.495910929790000399e+00,3.765296936040000292e-02 +2.849709880350000049e+02,-6.662309939750648002e-01,-1.372457916633038622e+01,1.372457916633038622e+01,9.999999999990905053e-03,3.441700000000000159e+01,5.344160000000000110e+01,-1.663178127944724736e+02,-1.663178127944724736e+02,3.045554166530000373e+01,1.209869980809999968e-01,-1.731271129980000069e+03,1.277189540549999975e+02,4.502212414189999379e+01,5.473969340829999419e-01,3.240679248099999632e-01,-1.765056199369999940e-02,8.969753564530000885e-04,-1.441721434160000027e-03,-4.820464251459999740e-04,0.000000000000000000e+00,4.558452693270000598e-03,5.317748641899999740e-01,3.288807457469999918e-02,2.328145291029999966e-02,3.288807457469999918e-02,6.667981829689999989e-04,-3.679654996870000000e-02,-2.745508984940000369e-02,-4.078017820439999545e-03,-4.840435122130000260e-03,-2.583001957249999805e+02,-3.267904664440000051e+00,-1.291370391850000035e-02 +2.863859078849999946e+02,-9.733399480787922053e-01,-1.366921544748900530e+01,1.366921544748900530e+01,0.000000000000000000e+00,4.472939999999999827e+01,5.570219999999999771e+01,-1.669849177227114865e+02,-1.669849177227114865e+02,3.028048554579999774e+01,1.184355989099999951e-01,-1.730695603339999934e+03,1.280567466649999915e+02,4.499793862510000508e+01,5.488431497579999707e-01,3.190386948350000251e-01,-2.742655842070000280e-02,5.279029937019999973e-03,-8.947505725549999983e-03,-3.306369846979999999e-03,0.000000000000000000e+00,-2.002453385070000150e-03,5.299321207399999567e-01,1.059103426109999913e-01,9.766702220610000429e-02,1.059103426109999913e-01,-8.124589957069999410e-03,-1.082734335879999982e-01,-1.002026516990000005e-01,6.951052361419999930e-03,5.588960464019999963e-03,-2.661439291720000142e+02,-3.437690425190000010e+00,-8.238840103149999705e-02 +2.866304409510000255e+02,-1.173455921290869952e+00,-1.361846371164455860e+01,1.361846371164455860e+01,3.999999999996362021e-02,5.504179999999999495e+01,5.796279999999999433e+01,-1.676166480134980930e+02,-1.676166480134980930e+02,2.992980324800000247e+01,1.161493435500000060e-01,-1.730147636279999915e+03,1.283718705189999980e+02,4.496788072600000419e+01,5.487621541830000060e-01,3.111660741810000075e-01,-3.154624306920000149e-02,8.526392681229998452e-03,-1.454788836630000089e-02,-5.809330516019999870e-03,0.000000000000000000e+00,-1.573220463539999961e-02,5.247024456559999939e-01,1.619565018299999881e-01,1.564833324640000078e-01,1.619565018299999881e-01,-1.468617880779999989e-02,-1.617790954520000046e-01,-1.567601581480000117e-01,1.639659526150000213e-02,1.440935312349999990e-02,-2.759239878409999847e+02,-3.705835788030000355e+00,-1.334323883060000160e-01 +2.876677961350000032e+02,-1.375057000618867153e+00,-1.355156168429477503e+01,1.355156168429477503e+01,2.999999999997271516e-02,5.808979999999999677e+01,5.808979999999999677e+01,-1.682763248182966151e+02,-1.682763248182966151e+02,2.945160919360000307e+01,1.153035014870000124e-01,-1.729571359790000088e+03,1.286943905880000045e+02,4.493524570050000477e+01,5.504467068999999713e-01,3.027691131960000281e-01,-2.922250735079999842e-02,1.023364042899999916e-02,-1.763629571180000064e-02,-7.344642083779999615e-03,0.000000000000000000e+00,-3.538352706280000620e-02,5.164889604310000104e-01,1.930557018329999985e-01,1.920526134490000147e-01,1.930557018329999985e-01,-1.777195864509999862e-02,-1.854976819190000126e-01,-1.855032652540000160e-01,2.667832648809999666e-02,2.432130683999999751e-02,-2.831758102680000206e+02,-3.921111908269999446e+00,-1.410284042359999934e-01 +2.887144010069999922e+02,-1.474323114380847510e+00,-1.349249502003193335e+01,1.349249502003193335e+01,2.000000000003865352e-02,5.666740000000000066e+01,5.666740000000000066e+01,-1.689346523105959079e+02,-1.689346523105959079e+02,2.892985926409999919e+01,1.152286902070000091e-01,-1.728992021539999996e+03,1.290094221420000054e+02,4.490892686290000313e+01,5.540035266849999696e-01,2.965669991279999973e-01,-1.960304739070000205e-02,9.684220798299999350e-03,-1.700282400829999929e-02,-7.129456938719999463e-03,0.000000000000000000e+00,-5.624916886969999474e-02,5.071152333709999516e-01,1.844138799089999892e-01,1.889453589469999861e-01,1.844138799089999892e-01,-1.393007901270000050e-02,-1.644864591149999833e-01,-1.702406530420000064e-01,3.469051484509999561e-02,3.263478491820000216e-02,-2.832518333790000042e+02,-3.947852425719999836e+00,-1.257033348080000001e-01 +2.897699429990000226e+02,-1.409285626406515446e+00,-1.344265293126244032e+01,1.344265293126244032e+01,2.000000000003865352e-02,5.046979999999999933e+01,2.407920000000000016e+01,-1.695937751594107681e+02,-1.695937751594107681e+02,2.887212192469999650e+01,1.192005947230000001e-01,-1.728408850320000056e+03,1.293197770449999950e+02,4.489628811539999731e+01,5.572380271660000162e-01,2.938093529990000174e-01,-3.657335608020000073e-03,6.713480548199999252e-03,-1.221234541589999965e-02,-5.012692722149999537e-03,0.000000000000000000e+00,-7.355779282910000771e-02,4.988527180250000304e-01,1.313660786339999886e-01,1.411890047499999856e-01,1.313660786339999886e-01,-3.890748439219999643e-03,-1.000835504109999913e-01,-1.104124214250000041e-01,3.553633114959999645e-02,3.466733176419999757e-02,-2.748480804100000228e+02,-3.739404781800000244e+00,2.899665832519999764e-01 +2.908102219109999851e+02,-1.212678994573610058e+00,-1.341962756715290261e+01,1.341962756715290261e+01,1.999999999998181011e-02,5.313680000000000092e+01,2.407920000000000016e+01,-1.702570807921233040e+02,-1.702570807921233040e+02,2.870738553309999830e+01,1.183850616220000068e-01,-1.727820554310000034e+03,1.296297868569999991e+02,4.490373564459999756e+01,5.609163117629999418e-01,2.965701836040000039e-01,1.742816387730000000e-02,1.328727552220000012e-03,-3.047538809550000196e-03,-2.035321149140000029e-04,0.000000000000000000e+00,-8.244845115370000310e-02,4.959324599140000345e-01,2.676304743710000017e-02,4.068978153159999445e-02,2.676304743710000017e-02,-3.054010179419999922e-03,1.542200012849999900e-04,-1.240449255570000124e-02,2.999724775989999828e-02,3.133929915529999610e-02,-2.687761045859999740e+02,-3.527306906449999779e+00,2.925486564640000231e-01 +2.918467259409999883e+02,-1.007970426830280042e+00,-1.338032632445459491e+01,1.338032632445459491e+01,9.999999999990905053e-03,5.046979999999999933e+01,3.441700000000000159e+01,-1.709204074938806173e+02,-1.709204074938806173e+02,2.865802217469999746e+01,1.180052831770000005e-01,-1.727234456480000063e+03,1.299433529579999913e+02,4.493143034390000423e+01,5.556443727140000233e-01,3.010217373060000146e-01,3.432193671810000041e-02,-4.823866778340000529e-03,7.923368730500000845e-03,3.888605695779999861e-03,0.000000000000000000e+00,-7.914836110060001484e-02,4.973528446830000060e-01,-8.983919057099999661e-02,-7.537414629919998721e-02,-8.983919057099999661e-02,3.556737121639999642e-03,1.014111232480000013e-01,8.940007738880001442e-02,7.517574668239999751e-03,1.046919396789999963e-02,-2.737064742640000077e+02,-3.648781523409999394e+00,1.618032455439999961e-01 +2.928899340629999983e+02,-7.052813874448663478e-01,-1.336158412125638684e+01,1.336158412125638684e+01,5.000000000001136868e-02,5.372099999999999653e+01,4.472939999999999827e+01,-1.715502667621479702e+02,-1.715502667621479702e+02,2.885270676050000205e+01,1.161992549900000143e-01,-1.726682192309999891e+03,1.302479494860000102e+02,4.497115373689999274e+01,5.489519184929999573e-01,3.084932444619999936e-01,4.366831236370000147e-02,-1.006938740109999952e-02,1.742788303119999910e-02,7.332954193949999325e-03,0.000000000000000000e+00,-6.413207667749999674e-02,5.029273499109999657e-01,-1.902054677629999857e-01,-1.787869975840000181e-01,-1.902054677629999857e-01,1.122365954179999938e-02,1.821413138320000236e-01,1.731610381430000178e-01,-2.048369028990000215e-02,-1.675822439710000084e-02,-2.850345674920000079e+02,-3.934964956140000414e+00,3.709220886230000375e-02 +2.939306619170000090e+02,-3.830420716306334183e-01,-1.332681556838837444e+01,1.332681556838837444e+01,3.999999999996362021e-02,4.175759999999999650e+01,4.175759999999999650e+01,-1.722090604062160821e+02,-1.722090604062160821e+02,2.947694766449999904e+01,1.181767284870000045e-01,-1.726110474670000031e+03,1.305760639039999944e+02,4.501813030229999413e+01,5.405304907329999686e-01,3.175957157440000289e-01,4.401466483790000134e-02,-1.359448815320000135e-02,2.381496379709999861e-02,9.874948338989998978e-03,0.000000000000000000e+00,-3.886661162360000032e-02,5.127753123279999992e-01,-2.569319678329999856e-01,-2.522340245859999719e-01,-2.569319678329999856e-01,1.915192542349999916e-02,2.328739256760000154e-01,2.293322315519999988e-01,-4.536813840149999527e-02,-4.205371594119999834e-02,-2.966816999140000348e+02,-4.285481668860000148e+00,9.708642959589999788e-02 +2.949727120399999762e+02,-1.278612643556411299e-01,-1.329140547781017112e+01,1.329140547781017112e+01,3.000000000002955858e-02,4.368799999999999528e+01,4.368799999999999528e+01,-1.728692200061969970e+02,-1.728692200061969970e+02,3.021852120739999847e+01,1.173864305020000109e-01,-1.725543900859999894e+03,1.309150578870000174e+02,4.506084771640000497e+01,5.372610090550000717e-01,3.292401310759999755e-01,3.533241739919999735e-02,-1.465662503429999812e-02,2.557959859340000128e-02,1.094003529199999956e-02,0.000000000000000000e+00,-9.403226018389998497e-03,5.261261253519999848e-01,-2.654637233009999875e-01,-2.697596790619999907e-01,-2.654637233009999875e-01,2.360723019830000130e-02,2.383176316369999825e-01,2.419309444179999768e-01,-5.356127649359999909e-02,-5.143596484209999459e-02,-3.006490674909999825e+02,-4.429921664410000126e+00,7.371473312380000253e-02 +2.960063350199999945e+02,-3.059394213461090813e-06,-1.323881263782328155e+01,1.323881263782328155e+01,2.000000000003865352e-02,1.376679999999999993e+01,4.373879999999999768e+01,-1.735315796331539389e+02,-1.735315796331539389e+02,3.108373058780000164e+01,1.225707009430000022e-01,-1.724980987760000062e+03,1.312641269149999914e+02,4.508858899430000378e+01,5.345997060100000642e-01,3.370674061379999586e-01,1.587116916729999772e-02,-1.225875799050000006e-02,2.113190375549999986e-02,8.828269060680000654e-03,0.000000000000000000e+00,1.856398860310000051e-02,5.392174811050000072e-01,-1.996087046339999893e-01,-2.125798313800000006e-01,-1.996087046339999893e-01,2.743937133470000095e-02,1.846103884369999781e-01,1.957820179470000088e-01,-4.474502773210000534e-02,-4.423718476769999269e-02,-2.893405575720000229e+02,-4.165919087059999804e+00,1.888446807860000021e-01 +2.970499479769999880e+02,-4.150251073900478038e-02,-1.320359219402569551e+01,1.320359219402569551e+01,9.999999999990905053e-03,1.376679999999999993e+01,4.203699999999999903e+01,-1.742006015432604045e+02,-1.742006015432604045e+02,3.167757882369999933e+01,1.223440021279999929e-01,-1.724415057070000103e+03,1.316209702259999972e+02,4.509181763560000178e+01,5.403661426250000455e-01,3.425306614150000484e-01,-1.006765686239999985e-02,-6.568456795229999333e-03,1.106314950440000049e-02,4.591517624579999519e-03,0.000000000000000000e+00,3.686215529969999460e-02,5.492996848119999775e-01,-7.800022905960000974e-02,-9.598562204610001924e-02,-7.800022905960000974e-02,2.044362386749999996e-02,7.870141451860000747e-02,9.552344591590000711e-02,-2.044302647940000189e-02,-2.090579999779999809e-02,-2.687901401149999856e+02,-3.587874455450000166e+00,2.050251960750000269e-01 +2.980964560510000183e+02,-3.729623862078221830e-01,-1.315673183913111721e+01,1.315673183913111721e+01,0.000000000000000000e+00,1.376679999999999993e+01,5.966460000000000008e+01,-1.748719368913341441e+02,-1.748719368913341441e+02,3.170808777780000298e+01,1.191983371969999872e-01,-1.723846564149999949e+03,1.319780715199999861e+02,4.506718163850000280e+01,5.417366512419999891e-01,3.381320881600000106e-01,-3.593041442590000356e-02,1.907931530689999837e-03,-3.266524233499999968e-03,-5.954401114210000623e-04,0.000000000000000000e+00,4.102554913719999585e-02,5.534226652620000131e-01,6.594853613039999840e-02,4.794367178449999295e-02,6.594853613039999840e-02,4.866239163850000909e-03,-5.974225463240000200e-02,-4.143029332280000199e-02,2.706935851139999783e-03,1.647139297839999780e-03,-2.564333477209999614e+02,-3.213172732879999938e+00,-6.952285766600000165e-04 +2.991484229569999798e+02,-9.549327108511079798e-01,-1.309126063557410902e+01,1.309126063557410902e+01,1.000000000004774847e-02,2.407920000000000016e+01,4.848859999999999815e+01,-1.755373345619192094e+02,-1.755373345619192094e+02,3.155754327280000382e+01,1.178029626610000019e-01,-1.723279724490000035e+03,1.323265739679999911e+02,4.501860112420000348e+01,5.398091122399999442e-01,3.257565144890000042e-01,-5.505361195849999695e-02,1.062838374339999947e-02,-1.771683358550000045e-02,-6.646172284189999328e-03,0.000000000000000000e+00,2.804729890589999913e-02,5.497614287120000665e-01,2.093422254630000201e-01,1.928004925290000005e-01,2.093422254630000201e-01,-1.436368955570000057e-02,-2.102450548420000120e-01,-1.926288882690000148e-01,1.669684608560000061e-02,1.453529381589999808e-02,-2.770350004409999656e+02,-3.679358598189999885e+00,5.853366851809999744e-02 +3.001944129469999893e+02,-1.701982196774761924e+00,-1.300619813006357717e+01,1.300619813006357717e+01,0.000000000000000000e+00,3.441700000000000159e+01,4.358639999999999759e+01,-1.761957124849257355e+02,-1.761957124849257355e+02,3.095762432130000263e+01,1.159903630609999958e-01,-1.722712075679999998e+03,1.326604537940000057e+02,4.495496326370000162e+01,5.428553603519999937e-01,3.096455541370000120e-01,-6.401903732309999207e-02,1.747932359290000140e-02,-2.909395083589999889e-02,-1.214343520529999852e-02,0.000000000000000000e+00,-1.053730546710000089e-03,5.392488563980000205e-01,3.267662960589999832e-01,3.150609605209999664e-01,3.267662960589999832e-01,-4.060583807030000020e-02,-3.328473037770000031e-01,-3.212019841300000067e-01,3.831247066199999773e-02,3.446481446180000435e-02,-3.078276563140000235e+02,-4.534765459990000025e+00,6.094074249269999799e-02 +3.012369930749999867e+02,-2.215170207010051850e+00,-1.289483793784856402e+01,1.289483793784856402e+01,4.000000000002046363e-02,4.130039999999999623e+01,4.130039999999999623e+01,-1.768175572426811470e+02,-1.768175572426811470e+02,3.000921923920000012e+01,1.146268472079999962e-01,-1.722167584360000092e+03,1.329623512649999952e+02,4.489069438430000503e+01,5.484065949609999713e-01,2.928576602380000282e-01,-6.222906761680000592e-02,2.077904297580000087e-02,-3.493673596690000105e-02,-1.619688778510000246e-02,0.000000000000000000e+00,-3.834982255529999912e-02,5.228801810500000036e-01,3.982460467939999971e-01,3.939567644690000203e-01,3.982460467939999971e-01,-5.294276620169999920e-02,-3.911767149449999481e-01,-3.896105964919999720e-01,6.301276863009999674e-02,5.728893417869999893e-02,-3.327566579219999880e+02,-5.356912591069999507e+00,5.039167404170000197e-02 +3.022753391269999952e+02,-2.280384216354401250e+00,-1.280333612375027741e+01,1.280333612375027741e+01,3.000000000002955858e-02,4.114799999999999613e+01,4.114799999999999613e+01,-1.774685735395571839e+02,-1.774685735395571839e+02,2.882445070780000052e+01,1.142563000320000050e-01,-1.721588048959999924e+03,1.332630669220000073e+02,4.483186111959999920e+01,5.574226231229999495e-01,2.783284092020000267e-01,-4.709857589089999630e-02,2.027478360300000171e-02,-3.503421363590000087e-02,-1.674816446460000025e-02,0.000000000000000000e+00,-8.055489210519999055e-02,5.022386378329999346e-01,4.060656962030000372e-01,4.127319310249999984e-01,4.060656962030000372e-01,-4.366488194220000119e-02,-3.582163459859999954e-01,-3.699001815749999866e-01,9.273066290439999082e-02,8.649663139249999522e-02,-3.396982352150000111e+02,-5.680734502910000039e+00,4.829645156859999761e-02 +3.033165879250000216e+02,-1.784138691550161138e+00,-1.277856952855665718e+01,1.277856952855665718e+01,1.999999999998181011e-02,4.488179999999999836e+01,3.454399999999999693e+00,-1.781224843326962173e+02,-1.781224843326962173e+02,2.817708209510000117e+01,1.165962740779999951e-01,-1.720998297910000019e+03,1.335527547089999985e+02,4.479702909479999562e+01,5.668141361799999833e-01,2.714772043789999700e-01,-1.692412663639999981e-02,1.544045523569999995e-02,-2.832320158120000403e-02,-1.260559146779999772e-02,0.000000000000000000e+00,-1.178210025359999885e-01,4.828093515160000182e-01,3.271113760889999833e-01,3.455834461249999712e-01,3.271113760889999833e-01,-1.111112894429999894e-02,-2.291269084039999904e-01,-2.511794064419999861e-01,1.092057223990000048e-01,1.055151686270000000e-01,-3.197638904730000036e+02,-5.124583695590000154e+00,5.141439437870000129e-01 +3.043579161170000020e+02,-1.297228919789256363e+00,-1.279026938324350837e+01,1.279026938324350837e+01,9.999999999990905053e-03,4.503419999999999845e+01,3.454399999999999693e+00,-1.787828918155135227e+02,-1.787828918155135227e+02,2.758750475010000258e+01,1.164187788959999970e-01,-1.720399114560000044e+03,1.338394994559999986e+02,4.480194146939999911e+01,5.720076325360000657e-01,2.738426129229999950e-01,2.630688330200000105e-02,5.973835508180000073e-03,-1.314702862919999923e-02,-3.495008173750000034e-03,0.000000000000000000e+00,-1.416668044299999873e-01,4.723633575680000196e-01,1.422440618649999933e-01,1.708961882020000045e-01,1.422440618649999933e-01,9.674454614730000276e-03,-3.492445266359999606e-02,-6.077660831450000523e-02,9.832757302039998870e-02,1.004451252730000077e-01,-2.881202095319999898e+02,-4.138629480330000554e+00,5.230779647829999490e-01 +3.053982279300000187e+02,-9.034256282228880774e-01,-1.281568405050066417e+01,1.281568405050066417e+01,0.000000000000000000e+00,4.411979999999999791e+01,1.376679999999999993e+01,-1.794441020334178347e+02,-1.794441020334178347e+02,2.741876809139999693e+01,1.158170998099999904e-01,-1.719802380079999921e+03,1.341316797279999946e+02,4.485121795220000251e+01,5.635991241519999750e-01,2.818789995939999793e-01,6.547488942380000343e-02,-6.271517926089999716e-03,8.928129315760001405e-03,5.042218013459999829e-03,0.000000000000000000e+00,-1.429638498009999925e-01,4.714888718299999892e-01,-1.012203636060000078e-01,-6.814626495190000133e-02,-1.012203636060000078e-01,2.216808428720000099e-02,1.687324489130000160e-01,1.436603250959999911e-01,4.644118518339999946e-02,5.334597585680000281e-02,-2.810573137970000062e+02,-3.826202505480000404e+00,4.044456481930000513e-01 +3.064503030779999904e+02,-8.173808327140632546e-01,-1.277798613857761367e+01,1.277798613857761367e+01,3.999999999996362021e-02,5.041899999999999693e+01,2.407920000000000016e+01,-1.800681243096204298e+02,-1.800681243096204298e+02,2.781148287170000089e+01,1.137840151789999976e-01,-1.719246708840000110e+03,1.344195322939999926e+02,4.493078541569999373e+01,5.472000118009999747e-01,2.944378157370000082e-01,9.128240617709999782e-02,-1.790787516190000053e-02,3.054756454459999632e-02,1.386359011040000019e-02,0.000000000000000000e+00,-1.193424896400000212e-01,4.805811250579999916e-01,-3.601781007689999758e-01,-3.270658887880000254e-01,-3.601781007689999758e-01,2.269297198590000328e-02,3.564353341080000459e-01,3.331667265100000108e-01,-2.669826693890000116e-02,-1.659213426429999999e-02,-3.127610865130000093e+02,-4.612928568940000140e+00,2.762126922610000368e-01 +3.074983260629999791e+02,-7.262046953635419300e-01,-1.270263396928547550e+01,1.270263396928547550e+01,0.000000000000000000e+00,4.056380000000000052e+01,4.056380000000000052e+01,-1.807437739757998827e+02,-1.807437739757998827e+02,2.894033912269999931e+01,1.135551333430000059e-01,-1.718658704059999991e+03,1.347532659610000110e+02,4.504079997060000551e+01,5.209393648830000778e-01,3.152841591710000002e-01,1.062610351280000032e-01,-2.783372774929999960e-02,4.832374598479999978e-02,2.523969551309999948e-02,0.000000000000000000e+00,-6.865170689209999788e-02,5.035338963650000110e-01,-6.289147211440000440e-01,-6.020009931009999704e-01,-6.289147211440000440e-01,2.800771748500000338e-02,5.457691381929999919e-01,5.256370015929999751e-01,-1.157826205739999892e-01,-1.043717089929999953e-01,-3.779975018290000435e+02,-6.676823530380000093e+00,8.997201919560000871e-02 +3.088602473650000206e+02,-2.407456610033465172e-01,-1.264116743050390212e+01,1.264116743050390212e+01,4.000000000002046363e-02,3.096259999999999835e+01,3.096259999999999835e+01,-1.813472700686377550e+02,-1.813472700686377550e+02,3.103941683329999890e+01,1.161603927610000003e-01,-1.718150666129999991e+03,1.350791687920000186e+02,4.515116089189999826e+01,4.934139969579999785e-01,3.412038991729999804e-01,1.122975795790000092e-01,-3.213038955219999632e-02,5.494805058289999738e-02,3.577590746659999738e-02,0.000000000000000000e+00,-9.341417043159999309e-03,5.376567382219999969e-01,-7.853979999999999295e-01,-7.841458495170000598e-01,-7.853979999999999295e-01,5.319714980890000167e-02,6.802601177370000141e-01,6.765563222639999763e-01,-1.686456019200000267e-01,-1.607866770609999996e-01,-4.510964332680000553e+02,-9.700595978189998192e+00,2.339549064639999953e-01 +3.102613174850000064e+02,6.254733844671251930e-01,-1.253749947899410522e+01,1.253749947899410522e+01,2.999999999997271516e-02,0.000000000000000000e+00,2.976879999999999882e+01,-1.819823816475911542e+02,-1.819823816475911542e+02,3.366926145610000276e+01,1.224485710260000138e-01,-1.717635924689999911e+03,1.354543748270000094e+02,4.526302588529999582e+01,4.815087100750000126e-01,3.743131039929999959e-01,9.813222929209999834e-02,-3.336461314259999561e-02,5.524404051480000244e-02,3.762532110089999993e-02,0.000000000000000000e+00,5.403096268880000497e-02,5.805671785320000167e-01,-7.853979999999999295e-01,-7.853879456589999419e-01,-7.853979999999999295e-01,9.601041491620000701e-02,7.454657722809999720e-01,7.345691644410000665e-01,-1.527153751080000121e-01,-1.468291961340000007e-01,-4.635075963669999624e+02,-1.038724389899999956e+01,4.052124023439999667e-01 +3.106126611230000094e+02,1.897081401174425919e+00,-1.249308987721644293e+01,1.249308987721644293e+01,1.999999999998181011e-02,0.000000000000000000e+00,2.397759999999999891e+01,-1.826322970013726774e+02,-1.826322970013726774e+02,3.620366754919999863e+01,1.229219511150000110e-01,-1.717125761889999922e+03,1.358651067989999888e+02,4.534665331699999768e+01,4.795596704050000270e-01,4.054649194340000373e-01,6.090781063140000146e-02,-3.422431607149999805e-02,5.337810023169999724e-02,3.630825240430000239e-02,0.000000000000000000e+00,1.167504842170000029e-01,6.231793272969999853e-01,-5.753822993780000061e-01,-6.343444986020000398e-01,-5.753822993780000061e-01,1.593485320570000030e-01,6.779402945219999976e-01,7.187794979180001098e-01,-7.553152749470000427e-02,-7.491353274150000519e-02,-4.500691662240000142e+02,-9.875494008449999583e+00,4.981222152709999795e-01 +3.116534969809999893e+02,2.830798770694385347e+00,-1.256831050130342575e+01,1.256831050130342575e+01,9.999999999990905053e-03,0.000000000000000000e+00,2.920999999999999730e+01,-1.832977848193527279e+02,-1.832977848193527279e+02,3.817946927630000431e+01,1.225906610490000020e-01,-1.716614674440000044e+03,1.363038569809999956e+02,4.537412138170000020e+01,4.858402121300000043e-01,4.254936658879999722e-01,-7.886733121080000131e-03,-2.715704093299999705e-02,3.756090139259999489e-02,2.318579941449999682e-02,0.000000000000000000e+00,1.695281449519999983e-01,6.581935335360000749e-01,-2.429666192519999990e-01,-3.013346392550000363e-01,-2.429666192519999990e-01,1.991015711719999748e-01,4.816124249859999873e-01,5.300696006050000797e-01,3.051752922710000010e-02,2.963339017840000214e-02,-3.636434746240000209e+02,-6.768106204160000416e+00,4.677577018740000092e-01 +3.127011659149999900e+02,2.326816059334074538e+00,-1.268219931314723325e+01,1.268219931314723325e+01,0.000000000000000000e+00,0.000000000000000000e+00,4.015739999999999554e+01,-1.839701870096579910e+02,-1.839701870096579910e+02,3.916740664940000016e+01,1.212865933780000044e-01,-1.716099499370000103e+03,1.367490237229999934e+02,4.532327276890000434e+01,4.901440832760000088e-01,4.203184547800000170e-01,-8.609987120699999497e-02,-9.482611747270001251e-03,8.928724563440000248e-03,6.346409944409998893e-03,0.000000000000000000e+00,1.985724400340000140e-01,6.776656339709999921e-01,9.681318328860000211e-02,5.221803430719999806e-02,9.681318328860000211e-02,1.707458062849999958e-01,1.689754331349999916e-01,2.211706418849999911e-01,1.004594570050000024e-01,1.026428699070000145e-01,-2.806303170639999962e+02,-4.055297240099999811e+00,3.400259017939999961e-01 +3.137537601000000222e+02,-2.904967804733976089e-01,-1.262979939746108826e+01,1.262979939746108826e+01,4.000000000002046363e-02,3.454399999999999693e+00,5.859779999999999944e+01,-1.846017116792179991e+02,-1.846017116792179991e+02,3.899598792469999609e+01,1.159957349299999829e-01,-1.715608995249999907e+03,1.371563113889999954e+02,4.520598818210000047e+01,4.883093529370000074e-01,3.939677289390000059e-01,-1.444705495259999972e-01,1.679824396479999774e-02,-2.657895276459999734e-02,-7.979260933269999648e-03,0.000000000000000000e+00,1.886487453350000065e-01,6.796773682040000431e-01,4.230439895059999733e-01,3.803788700550000401e-01,4.230439895059999733e-01,8.008907126460000636e-02,-2.516273240770000030e-01,-1.897327041409999915e-01,1.060723311260000079e-01,1.105570946499999929e-01,-2.797632559310000033e+02,-3.632796528819999704e+00,5.334329605100000121e-02 +3.148016040329999896e+02,-4.118729942826822921e+00,-1.238229406235810615e+01,1.238229406235810615e+01,5.000000000001136868e-02,2.407920000000000016e+01,4.312919999999999732e+01,-1.852360710790370604e+02,-1.852360710790370604e+02,3.779003752330000054e+01,1.114928051830000044e-01,-1.715102670980000084e+03,1.375434302239999909e+02,4.503117715159999790e+01,4.764287795929999514e-01,3.374005384170000177e-01,-1.873460318840000083e-01,4.022067316939999942e-02,-5.919428750409999607e-02,-3.207657914459999954e-02,0.000000000000000000e+00,1.328434229400000111e-01,6.589939251340000137e-01,7.667971006010000368e-01,7.639735800210000205e-01,7.667971006010000368e-01,-7.377467600999999819e-02,-7.853979999999999295e-01,-7.597192409569999416e-01,7.299293070349999191e-02,7.802901507310000540e-02,-4.304639345759999856e+02,-7.954675249139999238e+00,3.246688842769999972e-02 +3.158382849700000179e+02,-7.530984665746041529e+00,-1.202251782845149641e+01,1.202251782845149641e+01,4.000000000002046363e-02,2.804159999999999897e+01,2.804159999999999897e+01,-1.858428484343445177e+02,-1.858428484343445177e+02,3.534601939579999907e+01,1.104810759429999956e-01,-1.714593708209999932e+03,1.378740127279999967e+02,4.482311569939999885e+01,4.988552126670000031e-01,2.990176036540000415e-01,-1.993898855279999938e-01,3.348356079030000154e-02,-5.045868148080000920e-02,-3.868665487680000153e-02,0.000000000000000000e+00,6.707917400030000143e-02,6.151934680870000394e-01,6.781876688189999447e-01,6.830327238490000452e-01,6.781876688189999447e-01,-1.297202058139999836e-01,-7.853979999999999295e-01,-7.853972928979999768e-01,2.848803788920000260e-02,2.735563676559999921e-02,-4.383637357259999590e+02,-9.424366449410001678e+00,9.803009033199999722e-02 +3.168814759260000073e+02,-8.945253868626243943e+00,-1.160039129356039922e+01,1.160039129356039922e+01,2.999999999997271516e-02,2.890519999999999712e+01,2.890519999999999712e+01,-1.864584206452022386e+02,-1.864584206452022386e+02,3.277876081570000366e+01,1.090842410920000033e-01,-1.714059393649999947e+03,1.381804539860000034e+02,4.462424562729999877e+01,5.207188032819999313e-01,2.820242877220000000e-01,-1.765026382380000258e-01,3.259589166099999963e-02,-4.929224465899999935e-02,-3.784949240100000251e-02,0.000000000000000000e+00,6.792550106709999841e-03,5.713561598709999689e-01,6.645608958529999333e-01,6.640267355360000012e-01,6.645608958529999333e-01,-1.345669878439999800e-01,-7.853979999999999295e-01,-7.853979999810000168e-01,1.884349074070000227e-02,1.319572339979999988e-02,-4.399717786780000210e+02,-9.434301077680000702e+00,4.246425628659999951e-02 +3.179217159749999837e+02,-7.922731755459847314e+00,-1.133590626998621431e+01,1.133590626998621431e+01,1.999999999998181011e-02,2.504439999999999955e+01,2.504439999999999955e+01,-1.870828657052415167e+02,-1.870828657052415167e+02,3.034433872460000003e+01,1.101678758860000079e-01,-1.713503494090000004e+03,1.384689474029999872e+02,4.445478529680000435e+01,5.397106756920000414e-01,2.635922024049999757e-01,-1.468632624429999922e-01,2.913804658479999740e-02,-4.469795876939999801e-02,-3.692504791179999912e-02,0.000000000000000000e+00,-5.236141042740000140e-02,5.277305255940000217e-01,7.028509512980000151e-01,6.957220752480000048e-01,7.028509512980000151e-01,-1.216495942999999968e-01,-7.853979999999999295e-01,-7.853979999999999295e-01,4.067901295630000497e-02,3.197366954809999912e-02,-4.452517509589999918e+02,-9.660605508599999780e+00,1.076068878170000076e-01 +3.189609119890000102e+02,-5.247168206149863678e+00,-1.128700550779695000e+01,1.128700550779695000e+01,1.000000000004774847e-02,2.725419999999999732e+01,2.725419999999999732e+01,-1.877129031850213323e+02,-1.877129031850213323e+02,2.797065328560000097e+01,1.106556057929999892e-01,-1.712929290609999953e+03,1.387385204260000080e+02,4.431324556350000421e+01,5.548490334360000054e-01,2.443712586630000239e-01,-1.222198839360000011e-01,3.170952789470000283e-02,-5.146869856200000232e-02,-3.687874478150000163e-02,0.000000000000000000e+00,-1.091572127830000016e-01,4.858627273689999915e-01,7.853979999999999295e-01,7.797359383609999695e-01,7.853979999999999295e-01,-8.453788404239999388e-02,-7.765616397859999021e-01,-7.840283734330000254e-01,9.336986314459999603e-02,8.024544897020000067e-02,-4.625638661340000226e+02,-1.030556546470000079e+01,1.327695846560000004e-01 +3.200019719599999917e+02,-1.897496644927416209e+00,-1.136692104227331868e+01,1.136692104227331868e+01,5.000000000001136868e-02,2.631439999999999912e+01,0.000000000000000000e+00,-1.883167928378980491e+02,-1.883167928378980491e+02,2.585374647289999928e+01,1.145387887949999989e-01,-1.712364851549999912e+03,1.389741537909999920e+02,4.420852757220000484e+01,5.757948746900000137e-01,2.231040758910000088e-01,-8.441251647959999160e-02,2.944915789879999982e-02,-5.051769201559999645e-02,-3.755796781100000092e-02,0.000000000000000000e+00,-1.664846754519999916e-01,4.423077484300000362e-01,7.853979999999999295e-01,7.853977429430000212e-01,7.853979999999999295e-01,-2.070662338149999865e-02,-6.340185217249999505e-01,-6.517951194250000135e-01,1.688047131940000056e-01,1.543092468989999966e-01,-4.531118952780000200e+02,-1.010834484409999945e+01,5.113792419429999958e-01 +3.210392439369999806e+02,8.819706709734814742e-01,-1.153854044411411905e+01,1.153854044411411905e+01,4.000000000002046363e-02,2.783840000000000003e+01,0.000000000000000000e+00,-1.889597927956201886e+02,-1.889597927956201886e+02,2.353613256439999901e+01,1.150297746060000015e-01,-1.711749240059999920e+03,1.392013174279999816e+02,4.414665913630000205e+01,5.950021237720000133e-01,2.056839598110000167e-01,-3.293305748809999961e-02,2.564072423400000356e-02,-4.900444548480000634e-02,-3.265292630890000158e-02,0.000000000000000000e+00,-2.232995375230000246e-01,4.007478825520000010e-01,7.853979999999999295e-01,7.853979999930000844e-01,7.853979999999999295e-01,5.633480755319999339e-02,-4.751956834120000250e-01,-4.932547858940000141e-01,2.499988426080000103e-01,2.358084065459999934e-01,-4.399289971369999535e+02,-9.508928614880000296e+00,5.749702453610000541e-01 +3.221095380790000036e+02,2.815038999601702674e+00,-1.174586805764210595e+01,1.174586805764210595e+01,2.999999999997271516e-02,3.030219999999999914e+01,0.000000000000000000e+00,-1.896052061538513556e+02,-1.896052061538513556e+02,2.146968651639999948e+01,1.150495707990000088e-01,-1.711119891379999899e+03,1.394106576590000088e+02,4.414049658089999895e+01,6.030601961199999472e-01,1.891945438039999705e-01,2.000887972079999980e-02,2.098222686070000398e-02,-4.570446984199999507e-02,-2.810773936540000156e-02,0.000000000000000000e+00,-2.760040010090000218e-01,3.639306253840000061e-01,7.853979999999999295e-01,7.853941928370000713e-01,7.853979999999999295e-01,1.415984253729999920e-01,-3.151802012730000047e-01,-3.337537941550000054e-01,3.243219927129999958e-01,3.100419733079999851e-01,-4.268818072560000019e+02,-8.967259611939999431e+00,6.179976463319999391e-01 +3.231549930570000129e+02,3.804860835402184449e+00,-1.200567803133509415e+01,1.200567803133509415e+01,0.000000000000000000e+00,3.007359999999999900e+01,0.000000000000000000e+00,-1.902757355941636774e+02,-1.902757355941636774e+02,1.962751252349999831e+01,1.151836439970000125e-01,-1.710455929169999990e+03,1.396114707079999846e+02,4.419200317029999781e+01,6.033115807919999796e-01,1.724006226700000033e-01,7.195328597760000666e-02,1.543658323860000112e-02,-4.086859921369999371e-02,-2.316525598729999788e-02,0.000000000000000000e+00,-3.254212660349999897e-01,3.312544388090000180e-01,7.853979999999999295e-01,7.853950634219999394e-01,7.853979999999999295e-01,2.276444409639999944e-01,-1.449690243550000035e-01,-1.645769641660000115e-01,4.080218674659999989e-01,3.931736582920000167e-01,-4.226662374809999960e+02,-8.721730841010000290e+00,6.480312347409999951e-01 +3.241937580109999999e+02,3.674435428977788742e+00,-1.225172622378761922e+01,1.225172622378761922e+01,3.999999999996362021e-02,3.708399999999999608e+01,0.000000000000000000e+00,5.744565075532002130e-01,4.388512266789250305e+01,1.865554843960000042e+01,1.087780237200000055e+00,-1.709854904170000054e+03,1.397792941659999997e+02,4.428638013550000352e+01,5.979700558780000064e-01,1.596863722210000169e-01,1.152972807750000106e-01,8.808703532769999317e-03,-3.319543542449999995e-02,-1.813516689670000015e-02,0.000000000000000000e+00,-3.626644366699999789e-01,3.070625795570000038e-01,7.853979999999999295e-01,7.853906608560000668e-01,7.853979999999999295e-01,3.246991416649999684e-01,5.685498921090000046e-02,2.574726924609999773e-02,5.079895721089999761e-01,4.864387884370000026e-01,-4.290536787649999724e+02,-8.943946540019998892e+00,1.062158584589999899e+00 +3.252335960870000235e+02,1.911625501551974970e+00,-1.312151573455675901e+01,1.312151573455675901e+01,3.000000000002955858e-02,2.707639999999999958e+01,1.376679999999999993e+01,1.179920233804483631e+00,4.273160262275229115e+01,2.117100719549999965e+01,1.045004129410000093e+00,-1.708760472259999915e+03,1.401437524989999872e+02,4.472961800310000768e+01,1.187797751920000033e+00,5.481483116929999344e-01,6.156530023590000011e-01,-9.574474622230000342e-02,1.534224846099999928e-01,1.061924793559999997e-01,0.000000000000000000e+00,-2.686259293580000040e-01,3.477330887579999641e-01,-7.853979999999999295e-01,-6.576286014709999961e-01,-7.853979999999999295e-01,2.140689644929999746e-01,7.286219956399999642e-01,7.853085999109999937e-01,-2.286649982800000036e-01,-8.638896605360001091e-02,-9.938610633419999658e+02,-4.426717375430000345e+01,1.247368812559999984e+00 +3.262738449579999838e+02,-3.301152404236646021e+00,-1.211126007099753288e+01,1.211126007099753288e+01,2.000000000003865352e-02,0.000000000000000000e+00,0.000000000000000000e+00,7.107642535721049981e+00,4.136162382347952615e+01,2.905244281909999771e+01,1.036143422130000102e+00,-1.707559484249999969e+03,1.408786103889999879e+02,4.528343886229999526e+01,1.139728870570000163e+00,8.212942437050000377e-01,4.113817498129999639e-01,-6.218757318080000290e-02,1.418515916970000124e-01,9.732914348829999063e-02,0.000000000000000000e+00,-1.081019275990000028e-01,4.850882891430000066e-01,-7.853979999999999295e-01,-7.853844497990000173e-01,-7.853979999999999295e-01,9.484671170110000812e-03,3.445585512500000114e-01,3.506822440659999596e-01,-4.721554501670000015e-01,-4.441868769039999942e-01,-9.965132433049999463e+02,-4.829340694779999410e+01,1.258931159970000158e+00 +3.273130600449999861e+02,-2.485521806145716717e+00,-1.087905994541797128e+01,1.087905994541797128e+01,9.999999999990905053e-03,0.000000000000000000e+00,0.000000000000000000e+00,1.149710867097535427e+01,3.992569796267108728e+01,3.503224736880000023e+01,1.028909444810000018e+00,-1.706353949650000004e+03,1.418297809789999917e+02,4.557766655680000412e+01,1.151934439320000170e+00,1.011900816729999875e+00,1.358144043349999996e-01,-5.201084700069999456e-02,9.481743940629999701e-02,6.606720839619999175e-02,0.000000000000000000e+00,4.316556490839999760e-02,5.910966403149999771e-01,-2.981742904390000115e-01,-3.854727364030000047e-01,-2.981742904390000115e-01,2.136120068930000004e-01,2.497723012570000067e-01,2.703387699579999914e-01,-2.973581710509999865e-01,-3.287459733379999860e-01,-8.801383231269999214e+02,-4.271386155239999738e+01,1.164904594420000050e+00 +3.283459539419999942e+02,1.060237293197889619e+00,-1.138437061354611401e+01,1.138437061354611401e+01,0.000000000000000000e+00,0.000000000000000000e+00,3.022599999999999909e+01,1.319640795486450635e+01,3.839487269234827949e+01,3.730869050190000280e+01,1.016778707500000101e+00,-1.705075222879999956e+03,1.428965330770000151e+02,4.552231168920000215e+01,1.250862438139999977e+00,9.751829486899999955e-01,-1.685285245650000041e-01,-1.257256277740000094e-02,1.295187330019999944e-02,-2.512482831800000316e-03,0.000000000000000000e+00,1.093259180179999984e-01,6.331125111590000243e-01,4.102043087119999765e-02,2.141785447149999883e-02,4.102043087119999765e-02,6.582719850980001119e-02,-2.120945741510000052e-02,1.119744605280000027e-02,-3.086226813039999808e-02,-3.321189798540000182e-02,-6.457159786810000242e+02,-2.086321174540000101e+01,1.034015655519999966e+00 +3.293822629449999795e+02,2.432268919225665904e+00,-1.166107355336403906e+01,1.166107355336403906e+01,3.999999999996362021e-02,0.000000000000000000e+00,5.290820000000000078e+01,1.359246070873563106e+01,3.693492203329838475e+01,3.791311162080000230e+01,9.992038011550000709e-01,-1.703823765800000047e+03,1.438379414220000001e+02,4.534909583580000003e+01,1.247224060529999790e+00,9.296599481710000612e-01,-1.717247092130000097e-01,1.235431242240000137e-02,-1.788884658670000100e-02,-3.277830614160000006e-03,0.000000000000000000e+00,9.936690494619998537e-02,6.440812391060000142e-01,6.751519884560000517e-02,5.954623835559999523e-02,6.751519884560000517e-02,-1.055492203750000094e-02,-6.463044283459999650e-02,-5.155717985709999673e-02,2.026106667639999970e-02,1.854398053590000303e-02,-6.320984097219999285e+02,-1.951065573230000183e+01,1.009974956510000021e+00 +3.304400041110000075e+02,1.031951639396359699e+00,-1.151236580424246903e+01,1.151236580424246903e+01,1.999999999998181011e-02,3.454399999999999693e+00,5.504179999999999495e+01,1.360578029360332231e+01,3.543376768260564802e+01,3.792329100519999940e+01,9.912090301510000367e-01,-1.702523722350000071e+03,1.447921755670000152e+02,4.519149232199999489e+01,1.232787399030000008e+00,9.006330200679999454e-01,-1.276734197419999994e-01,1.918927444389999931e-02,-2.577904348670000123e-02,-3.648266495909999966e-03,0.000000000000000000e+00,6.754660045999999474e-02,6.450245367260000195e-01,6.687237005240000143e-02,6.606169022080000952e-02,6.687237005240000143e-02,-3.800273797860000136e-02,-6.970194864989999461e-02,-6.777310968050000162e-02,3.770013307369999428e-02,3.629131851899999872e-02,-6.335160706740000478e+02,-1.961925369469999936e+01,9.661073684690000274e-01 +3.314681460859999902e+02,-6.120714226548134462e+00,-1.066018597838547777e+01,1.066018597838547777e+01,3.000000000002955858e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.350197118807517604e+01,3.395575072036483988e+01,3.763162668609999884e+01,9.848673343660000468e-01,-1.701232761889999892e+03,1.457288133090000031e+02,4.508510512040000151e+01,1.227018749960000044e+00,8.896562333120000554e-01,-7.430815478390000173e-02,1.570901959090000022e-02,-2.081295148820000093e-02,-6.713546131209999711e-05,0.000000000000000000e+00,3.557716984430000368e-02,6.425794268590000469e-01,4.034764037659999830e-02,4.386363115050000150e-02,4.034764037659999830e-02,-4.098596531840000001e-02,-4.166505233419999510e-02,-4.576310263809999640e-02,3.865306346939999943e-02,3.908649383080000511e-02,-6.272024351520000209e+02,-1.934701798140000051e+01,8.145375251770000657e-01 +3.324941089160000161e+02,-8.130402511726908088e+00,-1.015692702834533634e+01,1.015692702834533634e+01,9.999999999990905053e-03,1.376679999999999993e+01,4.033520000000000039e+01,1.344473553740472660e+01,3.249848444161444405e+01,3.748968690719999586e+01,9.747458696369999398e-01,-1.699951020649999919e+03,1.466622552359999929e+02,4.502790482129999816e+01,1.217019312529999953e+00,8.888498604189999375e-01,-3.601263291799999822e-02,9.617217333099999793e-03,-1.282093043409999848e-02,2.047775491919999902e-03,0.000000000000000000e+00,1.443234233810000190e-02,6.413477457199999732e-01,1.920163916179999999e-02,2.304195669979999805e-02,1.920163916179999999e-02,-2.977186090309999825e-02,-1.909059595729999809e-02,-2.318310714850000190e-02,2.841263808960000151e-02,2.963071045450000121e-02,-6.193089573920000248e+02,-1.887249709820000021e+01,7.431678771969999486e-01 +3.336669065950000004e+02,-7.154197761963169810e+00,-9.895738939426408365e+00,9.895738939426408365e+00,3.000000000002955858e-02,2.407920000000000016e+01,4.472939999999999827e+01,1.348902073014104275e+01,3.113591638154989027e+01,3.769183190489999902e+01,9.593141674999999813e-01,-1.698744115429999965e+03,1.475507470839999939e+02,4.500434522380000146e+01,1.200845994720000087e+00,8.897911203470000308e-01,-1.386527446679999831e-02,4.624902920350000383e-03,-6.180712801360000591e-03,3.358593228880000017e-03,0.000000000000000000e+00,3.531912467380000052e-03,6.432847858380000838e-01,6.262385146480000525e-03,8.158528724239999530e-03,6.262385146480000525e-03,-1.832858281919999902e-02,-5.971340409569999771e-03,-7.850178425939999607e-03,1.751849852040000127e-02,1.863693311750000067e-02,-6.124939462269999240e+02,-1.841544477599999752e+01,8.343286514280000565e-01 +3.348457777450000208e+02,-6.426611820560152566e+00,-9.629398486562459780e+00,9.629398486562459780e+00,0.000000000000000000e+00,2.407920000000000016e+01,2.407920000000000016e+01,1.365903343733782727e+01,2.974031581546850589e+01,3.814292969010000434e+01,9.490883946420000106e-01,-1.697498132030000079e+03,1.484834411950000117e+02,4.499872834739999661e+01,1.177631481389999957e+00,8.919103801970000855e-01,-1.522864600360000070e-03,9.344999747179999830e-04,-1.238268629650000159e-03,4.688109334050000535e-03,0.000000000000000000e+00,-1.223996627140000069e-03,6.497500639720000803e-01,-2.348878608070000158e-03,-3.058548888439999863e-03,-2.348878608070000158e-03,-1.003479326170000213e-02,2.286873577769999843e-03,3.034979224729999949e-03,9.299489729419999420e-03,1.001122359799999986e-02,-6.056634815099999969e+02,-1.804870152570000030e+01,9.149932861329999056e-01 +3.360952780250000274e+02,-5.979761279422887377e+00,-9.369336057860031985e+00,9.369336057860031985e+00,1.999999999998181011e-02,1.376679999999999993e+01,3.441700000000000159e+01,1.389512464833288696e+01,2.844639653898635956e+01,3.846492985620000127e+01,9.593828916550000141e-01,-1.696331987889999937e+03,1.493756681469999990e+02,4.500195358100000220e+01,1.158391014940000074e+00,8.987083253229999347e-01,2.915598677600000129e-03,-1.033334589419999906e-03,1.349406558130000159e-03,5.579564268600000279e-03,0.000000000000000000e+00,-1.992471283310000025e-03,6.590382817930000581e-01,-6.569035048979998855e-03,-9.213256124159999519e-03,-6.569035048979998855e-03,-5.628828526639999622e-03,6.223997528539999304e-03,8.835006539979999365e-03,4.882296031399999299e-03,5.250578942459999468e-03,-6.008759885399999803e+02,-1.777252697970000028e+01,7.048177719120000129e-01 +3.373675067350000063e+02,-5.770763603870253888e+00,-9.074661287370190621e+00,9.074661287370190621e+00,0.000000000000000000e+00,3.454399999999999693e+00,4.472939999999999827e+01,1.407948936732302059e+01,2.711066067574325800e+01,3.879718435950000099e+01,9.500532150270000198e-01,-1.695113193149999915e+03,1.503280065550000018e+02,4.500459700930000650e+01,1.158940511650000005e+00,9.138555032969999381e-01,-6.054892304739999950e-05,-7.130859452420000360e-04,9.185741622549999270e-04,4.011393896619999851e-03,0.000000000000000000e+00,-1.395578257729999851e-03,6.666938229390000359e-01,-3.515565994920000128e-03,-5.576999055090000289e-03,-3.515565994920000128e-03,-3.564240578880000562e-03,3.318770308329999520e-03,5.340323696540000276e-03,3.188676931070000276e-03,3.327565220330000115e-03,-6.036370664900000520e+02,-1.785442631069999919e+01,5.984420776369999695e-01 +3.376074929239999847e+02,-5.802447035683694132e+00,-8.747497693343447622e+00,8.747497693343447622e+00,1.999999999998181011e-02,3.454399999999999693e+00,4.472939999999999827e+01,1.422466546654350239e+01,2.587025756310735503e+01,3.913509088840000061e+01,9.422304034230000180e-01,-1.693962762829999974e+03,1.512397539840000036e+02,4.500497426079999741e+01,1.145386690140000052e+00,9.148558795460001170e-01,-1.263659687289999962e-03,-5.432989192949999342e-04,6.899054852399999710e-04,3.345797374580000011e-03,0.000000000000000000e+00,-1.290132157799999887e-03,6.731613874850000956e-01,-2.007829322869999870e-03,-4.126059106119999570e-03,-2.007829322869999870e-03,-3.068466588189999907e-03,1.860068014450000102e-03,3.952516967359999932e-03,2.875208824769999883e-03,2.894924449429999835e-03,-6.003685310430000754e+02,-1.772564405349999817e+01,5.657844543459999986e-01 +3.386240930559999924e+02,-5.944190884468227409e+00,-8.439452605976443422e+00,8.439452605976443422e+00,3.999999999996362021e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.435194953417229868e+01,2.466698138239675231e+01,3.951367617880000438e+01,9.304724931720000924e-01,-1.692824569139999994e+03,1.521531060920000016e+02,4.500471230449999638e+01,1.133547179270000038e+00,9.166156870020000236e-01,-1.477346671470000086e-03,-5.009265005990000321e-04,6.281849937719999680e-04,3.144294228719999706e-03,0.000000000000000000e+00,-1.400400343430000145e-03,6.792675905820000359e-01,-1.681388155029999928e-03,-3.747485897670000017e-03,-1.681388155029999928e-03,-2.932185814869999949e-03,1.534677764859999904e-03,3.578597300629999828e-03,2.757527066159999856e-03,2.763297217829999760e-03,-5.970603429409999308e+02,-1.752558818940000052e+01,5.945100784300000329e-01 +3.396455800539999927e+02,-6.075719878111146777e+00,-8.062530957294910650e+00,8.062530957294910650e+00,9.999999999990905053e-03,1.376679999999999993e+01,3.876039999999999708e+01,1.447752603423998607e+01,2.344945379636432392e+01,3.985720486400000340e+01,9.228293299670000671e-01,-1.691644052079999938e+03,1.531123541949999947e+02,4.500452223090000103e+01,1.118189292549999880e+00,9.164611593889999686e-01,-1.081175983650000186e-03,-6.196455508259999861e-04,7.662054478880000715e-04,3.257037005610000265e-03,0.000000000000000000e+00,-1.559268514109999736e-03,6.858022710840000480e-01,-2.057100511349999744e-03,-4.244899804260000506e-03,-2.057100511349999744e-03,-2.904885920210000059e-03,1.883148969869999920e-03,4.046177599639999740e-03,2.717895633139999750e-03,2.706163715589999727e-03,-5.924920888789999935e+02,-1.727543813680000184e+01,5.636291503910000333e-01 +3.406695849899999757e+02,-6.169080525860570319e+00,-7.701089522540387478e+00,7.701089522540387478e+00,2.999999999997271516e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.458499812926935668e+01,2.233761790779542977e+01,4.017016620999999788e+01,9.153655767439999869e-01,-1.690532788170000003e+03,1.540273529659999951e+02,4.500441007580000274e+01,1.106708984209999969e+00,9.182372809309999884e-01,-1.322390002380000170e-03,-5.493139841930000508e-04,6.716931135900000441e-04,3.118380311099999951e-03,0.000000000000000000e+00,-1.605578019670000087e-03,6.918787267859999313e-01,-1.860834299180000014e-03,-3.934491786119999855e-03,-1.860834299180000014e-03,-2.958774766600000012e-03,1.689515582189999926e-03,3.737777171570000247e-03,2.768468773870000257e-03,2.762060152040000157e-03,-5.891664988469999571e+02,-1.706547126679999948e+01,5.284352302549999436e-01 +3.416864519119999954e+02,-6.270096746969030299e+00,-7.367709146132908060e+00,7.367709146132908060e+00,4.999999999995452526e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.467366889646041095e+01,2.127584959713178847e+01,4.046354432849999938e+01,9.088980555529999616e-01,-1.689432166320000078e+03,1.549439203770000120e+02,4.500369226279999424e+01,1.095949723279999954e+00,9.191762783379999746e-01,-1.245701706349999858e-03,-5.055766374119999036e-04,6.108353375580001087e-04,3.012660661280000280e-03,0.000000000000000000e+00,-1.841977911029999988e-03,6.973831604140000584e-01,-1.928009565059999935e-03,-4.027724808070000558e-03,-1.928009565059999935e-03,-3.005670260280000027e-03,1.752478313140000063e-03,3.832751893469999935e-03,2.841546378429999926e-03,2.810697345690000085e-03,-5.864024323930000264e+02,-1.690626982350000063e+01,5.064325332639999511e-01 +3.427113370899999722e+02,-6.697779955431793830e+00,-7.042578155562030595e+00,7.042578155562030595e+00,2.000000000003865352e-02,1.376679999999999993e+01,3.888739999999999952e+01,1.475192329685557802e+01,2.022123565505255627e+01,4.076736678949999515e+01,9.014129638670000944e-01,-1.688287365460000046e+03,1.559079801839999959e+02,4.500291211670000280e+01,1.086103094599999874e+00,9.208176038920000694e-01,-1.590561833700000196e-03,-3.632174236789999667e-04,4.363604253500000165e-04,2.711148969379999912e-03,0.000000000000000000e+00,-2.042479518730000183e-03,7.027514430429999681e-01,-1.252366837619999819e-03,-2.997234189159999826e-03,-1.252366837619999819e-03,-3.007541102270000054e-03,1.075917294930000146e-03,2.798534114799999892e-03,2.802957409099999988e-03,2.808841027909999687e-03,-5.834063389990000132e+02,-1.672510245830000031e+01,5.026750564580000358e-01 +3.437420110699999896e+02,-7.182922681143107724e+00,-6.617204847161461956e+00,6.617204847161461956e+00,0.000000000000000000e+00,1.376679999999999993e+01,4.325619999999999976e+01,1.482261080058117209e+01,1.923678101828218701e+01,4.103955687999999924e+01,8.951652646059999885e-01,-1.687153962619999902e+03,1.568730847870000105e+02,4.500241492449999470e+01,1.075364685639999873e+00,9.218588776320000289e-01,-1.619072031190000064e-03,-3.197856043700000113e-04,3.817366288590000626e-04,2.587112927699999638e-03,0.000000000000000000e+00,-2.221650513130000223e-03,7.081784326510000005e-01,-1.113455297930000072e-03,-2.609194968840000423e-03,-1.113455297930000072e-03,-2.962728880180000041e-03,9.245321941419999386e-04,2.393884160219999797e-03,2.730535407149999993e-03,2.747418071559999848e-03,-5.801815198289999671e+02,-1.653902243219999946e+01,4.639215469359999622e-01 +3.447726290229999790e+02,-7.423603665954775721e+00,-6.209691207404044455e+00,6.209691207404044455e+00,3.000000000002955858e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.487784789102525096e+01,1.837201783615498130e+01,4.128520106130000045e+01,8.873376250269999765e-01,-1.686084084249999933e+03,1.577934290860000033e+02,4.500173919659999910e+01,1.066213271340000102e+00,9.227532882690000493e-01,-1.423280166049999780e-03,-3.359643418250000111e-04,3.962643282200000198e-04,2.519457265739999570e-03,0.000000000000000000e+00,-2.474726225389999642e-03,7.129931215220000063e-01,-1.160137953039999887e-03,-2.758244299440000113e-03,-1.160137953039999887e-03,-2.935380602860000222e-03,9.630648093200000351e-04,2.537640462690000324e-03,2.705084413880000545e-03,2.714776766110000433e-03,-5.778054568480000626e+02,-1.640338033389999950e+01,4.337043762210000541e-01 +3.458012149339999723e+02,-7.504796228217837317e+00,-5.815646883509348442e+00,5.815646883509348442e+00,9.999999999990905053e-03,1.376679999999999993e+01,4.472939999999999827e+01,1.492246578636797061e+01,1.755025040533132952e+01,4.152267973880000085e+01,8.791984915730000072e-01,-1.684970837390000042e+03,1.587600305349999985e+02,4.500077865189999926e+01,1.056196271829999977e+00,9.222152710259999830e-01,-1.517977611770000108e-03,-2.391678518320000202e-04,2.814121010990000300e-04,2.280257847359999819e-03,0.000000000000000000e+00,-2.770491766970000023e-03,7.174824694580000939e-01,-7.905055927629999748e-04,-2.206039753920000131e-03,-7.905055927629999748e-04,-2.891589631689999752e-03,5.931477280980001088e-04,1.986072781510000128e-03,2.662030721150000084e-03,2.671622659269999502e-03,-5.746863279560000137e+02,-1.622949894710000152e+01,4.139623641969999435e-01 +3.468194649220000088e+02,-7.370154346749203000e+00,-5.434070526800292456e+00,5.434070526800292456e+00,2.999999999997271516e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.495814681236180377e+01,1.685979411214216483e+01,4.175074402229999748e+01,8.736704587939999600e-01,-1.683920939170000111e+03,1.596796853379999845e+02,4.500009393350000408e+01,1.046150597410000049e+00,9.212490461090000471e-01,-1.310759013189999973e-03,-2.535779194680000035e-04,2.958586610670000490e-04,2.214302150710000059e-03,0.000000000000000000e+00,-3.045040442420000534e-03,7.217109323440000779e-01,-8.531311500680001554e-04,-2.210070588600000080e-03,-8.531311500680001554e-04,-2.835825758570000368e-03,6.402476013840000370e-04,1.973048497250000106e-03,2.586213901139999827e-03,2.598803667219999960e-03,-5.714041141950000338e+02,-1.604493915759999823e+01,3.997535705569999487e-01 +3.478407371050000165e+02,-7.430791088577783476e+00,-5.045491739958345434e+00,5.045491739958345434e+00,5.000000000001136868e-02,1.376679999999999993e+01,4.150359999999999872e+01,1.498586557532553876e+01,1.626749957163144700e+01,4.198293723590000326e+01,8.711193799969999541e-01,-1.682879144819999965e+03,1.605995937339999955e+02,4.499944538999999821e+01,1.038323831400000063e+00,9.216652218219999471e-01,-8.559288383349999930e-04,-3.327898077609999622e-04,3.826815693119999993e-04,2.254146427840000248e-03,0.000000000000000000e+00,-3.344627034860000060e-03,7.257085074349999276e-01,-1.314793156510000137e-03,-2.739917728999999823e-03,-1.314793156510000137e-03,-2.732286161260000148e-03,1.082528931719999900e-03,2.485746761460000138e-03,2.476859919990000072e-03,2.478115193719999595e-03,-5.692478555569999799e+02,-1.591768286779999997e+01,4.029026031490000603e-01 +3.488571600920000151e+02,-7.548132901882639523e+00,-4.637270693050316694e+00,4.637270693050316694e+00,1.999999999998181011e-02,1.376679999999999993e+01,4.472939999999999827e+01,1.500881702978004384e+01,1.576089586497432116e+01,4.220585490659999550e+01,8.636521101000000922e-01,-1.681792060750000019e+03,1.615676260129999946e+02,4.499919581260000001e+01,1.032530981200000086e+00,9.244599081409999863e-01,-7.612139991229999961e-04,-3.702441737319999652e-04,4.222454379360000387e-04,2.192447494010000587e-03,0.000000000000000000e+00,-3.477281122070000410e-03,7.298940499050000641e-01,-1.241136326840000048e-03,-2.592959077789999851e-03,-1.241136326840000048e-03,-2.593404299940000029e-03,9.989813768900000258e-04,2.324372090360000195e-03,2.300643013770000116e-03,2.324817312520000186e-03,-5.678265748239999766e+02,-1.582693143109999845e+01,3.860063552860000247e-01 +3.498819451329999879e+02,-7.653425576203623848e+00,-4.221973800087029716e+00,4.221973800087029716e+00,3.999999999996362021e-02,1.376679999999999993e+01,4.734559999999999746e+01,1.502493747700155602e+01,1.539840794847149752e+01,4.243824440199999515e+01,8.557651042939999897e-01,-1.680765358749999905e+03,1.624896696799999916e+02,4.499902894560000277e+01,1.023230660770000133e+00,9.234971496220000242e-01,-8.920705132070000246e-04,-3.320806910379999941e-04,3.769038770299999947e-04,2.085404051339999863e-03,0.000000000000000000e+00,-3.554411729129999808e-03,7.338754265929999798e-01,-1.036569456419999874e-03,-2.328228001730000152e-03,-1.036569456419999874e-03,-2.558533013019999997e-03,7.938856503089999342e-04,2.057182543310000136e-03,2.279951363550000113e-03,2.287487554590000166e-03,-5.650410250539999879e+02,-1.568702595140000078e+01,3.902797698969999729e-01 +3.509059400560000199e+02,-7.733605445871806872e+00,-3.806561589276513669e+00,3.806561589276513669e+00,9.999999999990905053e-03,1.376679999999999993e+01,5.504179999999999495e+01,1.503524355542233337e+01,1.515093038517120938e+01,4.267971522519999894e+01,8.434173464780000407e-01,-1.679696971350000013e+03,1.634567297119999978e+02,4.499874077199999789e+01,1.013640386679999894e+00,9.222924956319999978e-01,-7.894931483600000103e-04,-3.468353950110000198e-04,3.901159655990000239e-04,2.077345758169999845e-03,0.000000000000000000e+00,-3.697386460529999974e-03,7.379339344560000846e-01,-1.096925680559999962e-03,-2.385308011409999727e-03,-1.096925680559999962e-03,-2.569897873919999975e-03,8.446290985510001041e-04,2.105197877740000098e-03,2.282235492430000068e-03,2.289787740249999912e-03,-5.618603143300000511e+02,-1.551302461799999932e+01,3.992152214050000425e-01 +3.519398930070000233e+02,-7.822491308388237030e+00,-3.386749542489823739e+00,3.386749542489823739e+00,3.999999999996362021e-02,1.376679999999999993e+01,5.026659999999999684e+01,1.503978827115113859e+01,1.504639442189764864e+01,4.290444788709999813e+01,8.470894098280000728e-01,-1.678691844590000073e+03,1.643741446509999946e+02,4.499872998109999855e+01,1.000637288739999908e+00,9.180868899359999613e-01,-7.031577093630000247e-04,-3.757091380750000051e-04,4.193748289780000957e-04,2.128117167669999962e-03,0.000000000000000000e+00,-3.778449892020000096e-03,7.420604072840000232e-01,-1.271141352259999970e-03,-2.577587988469999536e-03,-1.271141352259999970e-03,-2.680334089709999774e-03,9.961054412180000203e-04,2.271194526389999982e-03,2.372482603030000043e-03,2.373940627630000220e-03,-5.571149106280000751e+02,-1.526742181559999878e+01,3.875184059139999970e-01 +3.529660060410000142e+02,-7.441904450312896380e+00,-3.028976869119380133e+00,3.028976869119380133e+00,2.000000000003865352e-02,1.376679999999999993e+01,5.438139999999999930e+01,-1.507433057432827717e+01,-1.507433057432827717e+01,4.222857703580000077e+01,4.149423837659999559e-01,-1.677640588669999943e+03,1.653413371120000193e+02,4.499862276899999358e+01,9.998748952850000649e-01,9.247213074950000333e-01,-5.485272468280000301e-04,-4.195997598949999436e-04,4.626256815709999253e-04,2.141693280139999808e-03,0.000000000000000000e+00,-3.851754429249999896e-03,7.460466941529999563e-01,-1.439320308109999762e-03,-2.756587247279999875e-03,-1.439320308109999762e-03,-2.552201830599999839e-03,1.170456381339999999e-03,2.460243624690000228e-03,2.224283479290000125e-03,2.255858208010000192e-03,-5.577114283769999474e+02,-1.524832679210000030e+01,-5.167498588559999995e-01 +3.540006349089999844e+02,-6.517314057874490807e+00,-2.783459595088719318e+00,2.783459595088719318e+00,0.000000000000000000e+00,2.407920000000000016e+01,4.472939999999999827e+01,-1.521874305205283484e+01,-1.521874305205283484e+01,4.182174850580000225e+01,4.063783288000000216e-01,-1.676665730070000109e+03,1.662361579459999916e+02,4.499201931670000221e+01,8.701873366299999191e-01,7.920625886679999450e-01,-7.455210602060000254e-03,2.227232764909999919e-03,-2.448743786880000148e-03,-2.110895014030000037e-03,0.000000000000000000e+00,-5.246224196010000618e-03,7.391185199809999773e-01,1.463896254620000031e-02,1.415972506950000098e-02,1.463896254620000031e-02,1.727459831490000099e-03,-1.425497912220000107e-02,-1.375021333749999915e-02,-8.856376518849999645e-04,-1.317948099469999938e-03,-3.385082128059999604e+02,-5.681173874470000662e+00,-5.266232490540000422e-01 +3.550320589539999787e+02,-5.843035672793927660e+00,-2.548726087190168688e+00,2.548726087190168688e+00,3.000000000002955858e-02,3.441700000000000159e+01,3.441700000000000159e+01,-1.542029144376499161e+01,-1.542029144376499161e+01,4.143861180350000240e+01,4.126003682609999945e-01,-1.675838492020000103e+03,1.669848895339999899e+02,4.498304214289999692e+01,7.955235431880000041e-01,7.140559922020000005e-01,-8.140959454560000447e-03,3.342214163489999352e-03,-3.710936536310000065e-03,-3.293601639950000277e-03,0.000000000000000000e+00,-9.164565425729999382e-03,7.330283624070000892e-01,2.328249207800000067e-02,2.359747193950000391e-02,2.328249207800000067e-02,2.240626516539999911e-03,-2.227188064569999779e-02,-2.259380605450000273e-02,-8.040814713470000605e-04,-1.236960631489999888e-03,-3.478516988780000361e+02,-5.911717029630001008e+00,-5.608196258540000256e-01 +3.560540680889999976e+02,-4.692963099431698204e+00,-2.432383407195953140e+00,2.432383407195953140e+00,9.999999999990905053e-03,4.472939999999999827e+01,2.407920000000000016e+01,-1.568486915110344526e+01,-1.568486915110344526e+01,4.120206173300000074e+01,4.405796229839999967e-01,-1.675024654220000002e+03,1.677117538679999882e+02,4.497474865579999914e+01,7.588217247660000719e-01,6.719957594230000497e-01,-6.241639892020000614e-03,3.386268508820000026e-03,-3.812707802340000243e-03,-3.667447810249999801e-03,0.000000000000000000e+00,-1.378525499349999954e-02,7.266991565670000153e-01,2.588749553409999682e-02,2.715258068820000301e-02,2.588749553409999682e-02,2.877122833979999829e-03,-2.388024971130000076e-02,-2.514824394699999993e-02,-4.495061567859999973e-04,-8.727860928570000450e-04,-3.613825979740000207e+02,-6.353436355880000441e+00,-4.347329139710000012e-01 +3.570769250390000025e+02,-3.805910920582524337e+00,-2.380611157478708773e+00,2.380611157478708773e+00,2.999999999997271516e-02,4.472939999999999827e+01,1.376679999999999993e+01,-1.598854453508567808e+01,-1.598854453508567808e+01,4.111407946650000156e+01,4.751319885249999930e-01,-1.674263275539999995e+03,1.683837627560000101e+02,4.497053952890000517e+01,7.573486240500000299e-01,6.649623524290000365e-01,-1.879328482599999881e-03,2.252911167839999947e-03,-2.579850663659999637e-03,-2.886571956730000013e-03,0.000000000000000000e+00,-1.704233337789999927e-02,7.220421434749999534e-01,1.870404989570000065e-02,2.056794206229999727e-02,1.870404989570000065e-02,3.104556804489999860e-03,-1.633833671719999922e-02,-1.813706720980000006e-02,-3.760926049169999717e-04,-6.736819520459999544e-04,-3.787344287700000223e+02,-6.918833256289999234e+00,-2.558879852290000256e-01 +3.581366901399999847e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,9.999999999990905053e-03,5.265419999999999590e+01,2.407920000000000016e+01,-1.636792641398867332e+01,-1.636792641398867332e+01,4.082293934789999668e+01,4.380491971970000287e-01,-1.673457883820000006e+03,1.690899782390000041e+02,4.497191228209999991e+01,7.683438227040000346e-01,6.730471718830000061e-01,3.488279707149999961e-03,2.396566728380000071e-04,-3.095258905620000144e-04,-1.226940145200000176e-03,0.000000000000000000e+00,-1.811843533550000149e-02,7.196394721469999700e-01,5.443022077800000434e-03,6.876996106050000182e-03,5.443022077800000434e-03,3.337669038409999712e-03,-3.875335248239999454e-03,-5.169755272869999869e-03,-1.535041229400000090e-03,-1.630428205230000050e-03,-3.979547364300000254e+02,-7.643396214239999154e+00,-4.093651771549999818e-01 +3.591722280980000050e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,1.069999999999993179e+00,5.290820000000000078e+01,2.407920000000000016e+01,-1.678987326800493562e+01,-1.678987326800493562e+01,4.062390452809999886e+01,4.369978606700000157e-01,-1.672678928009999936e+03,1.697710125910000158e+02,4.497473587119999650e+01,7.312118161480000156e-01,6.367359155919999347e-01,2.833642013570000524e-03,-2.193357352790000121e-04,2.120583207540000154e-04,-1.432776815509999779e-03,0.000000000000000000e+00,-1.838479057250000034e-02,7.160520837180001097e-01,5.070929534839999607e-03,5.676156479500000379e-03,5.070929534839999607e-03,6.087396293189999315e-03,-3.027851715429999771e-03,-3.508023631819999835e-03,-3.995188303219999668e-03,-3.919263445510000506e-03,-3.914315498119999575e+02,-7.649950038260000973e+00,-4.028577804569999921e-01 +3.601998839380000277e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,2.099999999999965894e+00,5.514339999999999975e+01,2.407920000000000016e+01,-1.725124689275822831e+01,-1.725124689275822831e+01,4.046257375729999950e+01,4.349574744699999940e-01,-1.671914295820000007e+03,1.704362490560000083e+02,4.497704936249999719e+01,7.265594381999999074e-01,6.299792800819999927e-01,1.880764936790000003e-03,-2.168740417700000132e-04,2.233707110240000103e-04,-1.668182456440000204e-03,0.000000000000000000e+00,-1.765353946400000096e-02,7.132691041079999295e-01,5.994820940259999731e-03,6.506558624329999985e-03,5.994820940259999731e-03,7.299624042899999742e-03,-4.102231897159999523e-03,-4.521328323129999993e-03,-5.133391493380000219e-03,-5.314393741689999937e-03,-3.896161050449999834e+02,-7.430582188860000770e+00,-4.047355651860000125e-01 +3.612340481279999835e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,3.129999999999995453e+00,5.704840000000000089e+01,3.441700000000000159e+01,-1.772737503491968880e+01,-1.772737503491968880e+01,4.018933611940000361e+01,4.049969613549999625e-01,-1.671190082800000027e+03,1.710630149250000045e+02,4.497827576659999949e+01,7.235399638899999708e-01,6.239660956260000280e-01,1.011251913080000184e-03,-1.009416673520000039e-04,9.494664677130000498e-05,-1.775856126750000171e-03,0.000000000000000000e+00,-1.713989433879999774e-02,7.105875683810000121e-01,7.123157479169999438e-03,7.529719061340000609e-03,7.123157479169999438e-03,7.428527022500000000e-03,-5.281742537279999865e-03,-5.613633251180000228e-03,-5.274735340859999094e-03,-5.512441212339999619e-03,-3.896170205750000264e+02,-7.438010126689999169e+00,-5.243325233460000012e-01 +3.622612190250000026e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,4.159999999999968168e+00,4.607560000000000144e+01,3.441700000000000159e+01,-1.825001302658518298e+01,-1.825001302658518298e+01,3.994466585039999984e+01,4.072630703450000333e-01,-1.670448425230000112e+03,1.717006331030000013e+02,4.497791485699999470e+01,7.007038661719999784e-01,5.990879730939999703e-01,-7.316421706300000509e-04,3.502132509009999979e-04,-4.334332041949999883e-04,-2.312290924589999880e-03,0.000000000000000000e+00,-1.746829986370000004e-02,7.065749607310000124e-01,1.204337735329999784e-02,1.225635279679999912e-02,1.204337735329999784e-02,8.499933656819998878e-03,-9.574672093899999972e-03,-9.722318477500000236e-03,-5.681883447029999375e-03,-5.965899337539999625e-03,-3.804399419800000146e+02,-7.204586807339999233e+00,-5.390973091130000228e-01 +3.632942850590000035e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,5.189999999999997726e+00,6.967220000000000368e+01,3.441700000000000159e+01,-1.877392426415561744e+01,-1.877392426415561744e+01,3.971634573149999881e+01,3.973415791989999835e-01,-1.669745805139999902e+03,1.722998535990000164e+02,4.497652813590000420e+01,7.043570277020000381e-01,5.974835551420000224e-01,-1.382355420390000197e-03,7.086375380750000548e-04,-8.577134895329999306e-04,-2.727739598350000048e-03,0.000000000000000000e+00,-1.784339698239999911e-02,7.026835581199999403e-01,1.488308307589999817e-02,1.550152184329999829e-02,1.488308307589999817e-02,8.962936017610001471e-03,-1.211210559019999973e-02,-1.266671368970000155e-02,-5.677549588350000280e-03,-6.128127864060000339e-03,-3.784070126699999719e+02,-7.001935208959999990e+00,-5.444564819339999806e-01 +3.643248081209999896e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,6.219999999999970441e+00,4.521199999999999619e+01,3.441700000000000159e+01,-1.934788087667195100e+01,-1.934788087667195100e+01,3.948246806779999929e+01,4.023272395130000345e-01,-1.669011465549999912e+03,1.729205554700000107e+02,4.497491639060000068e+01,6.984670289740000371e-01,5.871011424030000425e-01,-1.070761997090000127e-03,7.538352632110000961e-04,-9.235294425060000230e-04,-2.685550139659999801e-03,0.000000000000000000e+00,-1.886008960600000020e-02,6.984995904809999656e-01,1.518085506899999847e-02,1.597611133439999845e-02,1.518085506899999847e-02,8.695433027129998577e-03,-1.211934782840000044e-02,-1.283842830679999929e-02,-5.187952867560000417e-03,-5.557749999509999789e-03,-3.759247506440000279e+02,-6.952978457810000457e+00,-5.386104583740000118e-01 +3.653580050470000060e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,7.250000000000000000e+00,5.979159999999999542e+01,3.441700000000000159e+01,-1.991964565100979101e+01,-1.991964565100979101e+01,3.924808525150000094e+01,3.950321972370000045e-01,-1.668309631330000002e+03,1.735090626509999936e+02,4.497410280279999739e+01,7.045306403269999684e-01,5.879048459290000528e-01,-3.453372241690000170e-04,5.982421410959999240e-04,-7.474186957500000578e-04,-2.687549679079999712e-03,0.000000000000000000e+00,-1.937685425890000104e-02,6.946364473540000972e-01,1.403539699560000034e-02,1.496996395289999955e-02,1.403539699560000034e-02,9.254515316410000247e-03,-1.085843342800000069e-02,-1.170052052450000143e-02,-5.569607732739999609e-03,-5.985071888050000517e-03,-3.762897258819999706e+02,-6.920467474680000564e+00,-5.516514778140000352e-01 +3.663879549509999833e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,8.279999999999972715e+00,6.352539999999999765e+01,2.407920000000000016e+01,-2.054116641116544884e+01,-2.054116641116544884e+01,3.913364429829999835e+01,4.202184081079999856e-01,-1.667573602440000059e+03,1.741213515700000016e+02,4.497380007390000145e+01,7.007056559150000030e-01,5.798900088109999462e-01,2.288850699309999978e-04,4.107573957530000165e-04,-5.313162249340000216e-04,-2.542221323380000186e-03,0.000000000000000000e+00,-1.994565623679999886e-02,6.905609863560000505e-01,1.275637927270000145e-02,1.367243925119999981e-02,1.275637927270000145e-02,9.471980833799999167e-03,-9.460331011659999997e-03,-1.027135142510000008e-02,-5.757366830600000977e-03,-6.070893007620000066e-03,-3.751467370580000420e+02,-6.915179041710000085e+00,-4.325857162479999629e-01 +3.674103939540000283e+02,-3.378329875435695406e+00,-2.273495063887784440e+00,2.273495063887784440e+00,9.310000000000002274e+00,6.830060000000000286e+01,3.441700000000000159e+01,-2.119692327927071318e+01,-2.119692327927071318e+01,3.883929649130000428e+01,3.861736357209999970e-01,-1.666822436409999909e+03,1.747418699250000031e+02,4.497537111779999464e+01,7.224094398209999213e-01,5.952674307099999895e-01,2.264771589200000046e-03,-2.872885940159999808e-04,3.126198663120000379e-04,-1.831738243289999981e-03,0.000000000000000000e+00,-1.937113541779999712e-02,6.878955691329998734e-01,6.330683625189999740e-03,7.175415088820000058e-03,6.330683625189999740e-03,8.837363360040000407e-03,-3.860377388519999932e-03,-4.567407690819999186e-03,-5.903092704319999433e-03,-6.229355962029999721e-03,-3.822683534740000368e+02,-7.085108884969999465e+00,-5.742163658140000404e-01 diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/LEC1_NormFcnRelu.mat b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/LEC1_NormFcnRelu.mat new file mode 100644 index 0000000000..ef7f472383 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/LEC1_NormFcnRelu.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/README.txt b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/README.txt new file mode 100644 index 0000000000..d12c218623 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/README.txt @@ -0,0 +1,13 @@ +This file provides a brief explanation of how to run the safety monitoring experiment of a UUV. + +To reproduce results, follow the following steps: + +1) Download all the files and add them to the same folder. + +2) Make sure you have nnv downloaded (git clone --recursive https://github.com/verivital/nnv.git). + +3) Run the install.m file (in the nnv/code subfolder). + +4) Run reach_run.n (inside the folder created with this code). The RUNTIME IS ABOUT 20 MINUTES. + +5) The result obtained should be the same as in the picture "safety_monitoring.png". \ No newline at end of file diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/blackbox_sys_6s_3.mat b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/blackbox_sys_6s_3.mat new file mode 100644 index 0000000000..f830df8dd3 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/blackbox_sys_6s_3.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/model.ckpt-558138.mat b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/model.ckpt-558138.mat new file mode 100644 index 0000000000..6c8aba2fd7 Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/model.ckpt-558138.mat differ diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/reach_run.m b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/reach_run.m new file mode 100644 index 0000000000..328b2436c4 --- /dev/null +++ b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/reach_run.m @@ -0,0 +1,136 @@ +% Create script to run the reachability anlysis for the LEC1 for entire +% experiment +clc;clear;close all; + +% Load the first part of the NN controller (LEC) +Cont = load_nn(' ',' ',' ',' ',' ','model.ckpt-558138.mat'); +% Load the second part of the NN controller (LEc) +Norm = load_nn(' ',' ',' ',' ',' ','LEC1_NormFcnRelu.mat'); +% Load the SysID model of the UUV +load('blackbox_sys_6s_3'); % sys is loaded + +% Load data from one of the systemId experiments +data = load('Exp10a_all.csv'); +inputs = [data(:,34) data(:,11)]; +outputs = [data(:,12:13) data(:,23)]; +% Load the pipe segments info +pipe = load('Exp10_pipe.csv'); +% Obstacle info +obstacle2 = [-1869.3 38.1835 -46.458]; +% Create data object +Ts = 1; % time step +ida = iddata(outputs,inputs,Ts); + +% Check if the SysID is continuous or discrete (time) +if sys.Ts == 0 + Plant = LinearODE(sys.A,sys.B,sys.C,sys.D); +else + Plant = DLinearODE(sys.A,sys.B,sys.C,sys.D,sys.Ts); +end +ReachSystem = []; % Initialize trajectory reach set to plot +%% Compute the reachable set of the LEC1 combined +% Inputs to LEC1 are: +% 1. Pipeline Orientation (rad?) +% 2. Pipe Range (Port Side) (m?) +% 3. Pipe Range (Starboard Range) (m?) +% 4. Time Since Last Detection (s?) +% 5. 1" SAS Range (Port Side) (?) +% 6. 1" SAS Range (Starboard Side) (?) +% 7. Closest Point of Approach (CPA)(?) +% 8. Nearest Obstacle Range (m?) + +% Run the loop to generate the reach sets at each time step +for k=1:length(data) + % Use current and future data to create reach sets + iL = data(k,2:9); + b = 0.02; + lb = [iL(1)-b; iL(2)-b; iL(3)-b ; max(0,iL(4)-b); max(0,iL(5)-b); max(0,iL(6)-b) ;-60;-60]; + up = [iL(1)+b; iL(2)+b; iL(3)+b; iL(4); iL(5) ;iL(6); -60; -60]; + % Create start set for input to LEC1 + InitSetC = Star(lb,up); % input set to LEC1 + + % Generate random numbers within the input set to simulate + np = 100; % number of points to simulate + rsim = (up-lb).*rand(8,np) + lb; + % compute reach set of controller + OutC = Cont.reach(InitSetC,'exact-star',4); %Approximate or exact method using stars + OutC_e = zeros(4,np); % memory allocation + % Simulate Controller + for i=1:np + OutC_e(:,i) = Cont.evaluate(rsim(:,i)); + end + + % Compute reach set for the second part of the LEC + OutLEC = Norm.reach(OutC,'exact-star',4); + + % System dynamics + + %estimate initial states for current data point + x0 = findstates(sys,ida(k)); + % Create a set around the initial states of the system + ab = 0.001; + lb = zeros(length(x0),1); + ub = zeros(length(x0),1); + for i = 1:1:length(x0) + lb(i) = x0(i) - ab; + ub(i) = x0(i) + ab; + end + % Create initial state set based on collected data + init_set = Star(lb,ub); + % Compute reach set of the states of the sysID + n = length(OutLEC); + OutPlant = []; + if sys.Ts == 0 % continuous-time + for i=1:n + OutPlant = [OutPlant Plant.simReach('direct', init_set, OutLEC(i), 1, 1)]; + end + else % discrete-time + for i=1:n + OutPlant = [OutPlant Plant.stepReachStar(init_set,OutLEC(i))]; + end + end + % Compute reach set of the outputs of the sysID + n = length(OutLEC); + OutSys = []; + for i=1:n + OutSys = [OutSys OutPlant(i).affineMap(sys.C,[])]; + OutSys(i) = OutSys(i).affineMap([1 0 0; 0 1 0],[]); + end + % Concatenate all output sets of the SysID to plot later + ReachSystem = [ReachSystem OutSys]; + +% clear OutSys OutC OutLEC OutPlant init_set initSetC; +end + +% Begin the simulation of the system +time = length(data)-1; % simulation time +x = zeros(time,4); % memory allocation +x2 = zeros(time,2); +% Simulate the LEC +for i=1:time + x(i,:) = Cont.evaluate(data(i,2:9)'); + x2(i,:) = Norm.evaluate(x(i,:)'); +end +% Simulate the SysID +[y00,fit00,x_0] = compare(ida,sys); +x4 = lsim(sys,x2,linspace(0,time-1,time)',x_0); +%% Plot everything in same figure +aa = figure('WindowState','maximized'); +aa1 = plot(x4(:,1),x4(:,2),'LineWidth',4); +hold on; +aa2 = plot(data(:,12),data(:,13),'LineWidth',4); +aa3 = plot(pipe(1:11,2),pipe(1:11,1),'LineWidth',4); +scatter(obstacle2(1), obstacle2(2),'s','LineWidth',3); +%Star.plotBoxes_2D_noFill(ReachSystem, 1, 2, 'red') +Star.plots(ReachSystem); % exact method, slower and problems with mpt +xlabel('x-pos (m)'); +ylabel('y-pos (m)'); +legend('SysID','UUVSim','pipe','obstacle','Reach Sets','FontSize',24,'Location','southeast'); +title('ReachSet LEC1+SysID'); +uistack(aa1,'top'); +uistack(aa2,'top'); +uistack(aa3,'top'); +set(gca,'FontSize',18); +axis([-2000 -1625 30 200]) +saveas(aa,'safety_monitoring','png'); +% save('Exp10a_reachset_b001','ReachSystem'); diff --git a/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/safety_monitoring.png b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/safety_monitoring.png new file mode 100644 index 0000000000..fc2c21ee2f Binary files /dev/null and b/code/nnv/examples/Submission/HSCC2020/UUV Safety Mornitoring/safety_monitoring.png differ diff --git a/code/nnv/tests/nn/fnn/ffnns/ACASXU_run2a_1_1_batch_2000.mat b/code/nnv/tests/nn/fnn/ffnns/ACASXU_run2a_1_1_batch_2000.mat new file mode 100644 index 0000000000..d9e6b982de Binary files /dev/null and b/code/nnv/tests/nn/fnn/ffnns/ACASXU_run2a_1_1_batch_2000.mat differ diff --git a/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_falsify.m b/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_falsify.m index c5e24aa5d6..aaa1be7f58 100644 --- a/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_falsify.m +++ b/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_falsify.m @@ -19,7 +19,7 @@ U = HalfSpace(G, g); -n_samples = 500; +n_samples = 1000; counter_inputs = F.falsify(I, U, n_samples); counter_outputs = F.sample(counter_inputs); diff --git a/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_verify_MSG.m b/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_verify_MSG.m new file mode 100644 index 0000000000..7b5b87826a --- /dev/null +++ b/code/nnv/tests/nn/fnn/ffnns/test_FFNNS_verify_MSG.m @@ -0,0 +1,42 @@ +load ACASXU_run2a_1_1_batch_2000.mat; +Layers = []; +n = length(b); +for i=1:n - 1 + bi = cell2mat(b(i)); + Wi = cell2mat(W(i)); + Li = LayerS(Wi, bi, 'poslin'); + Layers = [Layers Li]; +end +bn = cell2mat(b(n)); +Wn = cell2mat(W(n)); +Ln = LayerS(Wn, bn, 'purelin'); + +Layers = [Layers Ln]; +F = FFNNS(Layers); + +% Input Constraints +% 55947.69 <= i1(\rho) <= 60760, +% -3.14 <= i2 (\theta) <= 3.14, +%-3.14 <= i3 (\shi) <= -3.14 +% 1145 <= i4 (\v_own) <= 1200, +% 0 <= i5 (\v_in) <= 60 + +lb = [55947.69; -3.14; -3.14; 1145; 0]; +ub = [60760; 3.14; 3.14; 1200; 60]; + +% normalize input +for i=1:5 + lb(i) = (lb(i) - means_for_scaling(i))/range_for_scaling(i); + ub(i) = (ub(i) - means_for_scaling(i))/range_for_scaling(i); +end + +% unsafe region before scaling +unsafe_mat = [-1 0 0 0 0]; +unsafe_vec = [-3.9911]; + +B = Box(lb, ub); + +U = HalfSpace(unsafe_mat, unsafe_vec); %unsafe region +k = 5; % depth of search tree +sens_lb = 0.2; % 20% +[safe, VT, counterExamples] = F.verify_MSG(B, 'approx-zono', 5, 0.2, U) \ No newline at end of file diff --git a/code/nnv/tests/nncs/DLinearNNCS/controller_3_20.mat b/code/nnv/tests/nncs/DLinearNNCS/controller_3_20.mat new file mode 100644 index 0000000000..9cd922b06a Binary files /dev/null and b/code/nnv/tests/nncs/DLinearNNCS/controller_3_20.mat differ diff --git a/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_constructor.m b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_constructor.m new file mode 100644 index 0000000000..d77cf4e0dd --- /dev/null +++ b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_constructor.m @@ -0,0 +1,61 @@ +% Reachability analysis for Linear ACC model +% Dung Tran: 9/30/2019 + + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + diff --git a/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_falsify.m b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_falsify.m new file mode 100644 index 0000000000..9c008d3f2c --- /dev/null +++ b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_falsify.m @@ -0,0 +1,107 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; + +init_set = Star(lb, ub); + +%% Falsification using simulations + +numSteps = 20; +N = 10; % number of random simulations used for falsification + +% unsafe region: x1 >= 110, position of the lead car >= 110 +unsafe_mat = [-1 0 0 0 0 0 0]; +unsafe_vec = [-110]; + +[safe, counterExamples, falsifyTime] = ncs.falsify(init_set, ref_input, numSteps, N, unsafe_mat, unsafe_vec); + +%% Plot falsification traces + +ncs.plotFalsifyTraces(1, 'red', '-'); +title('Falsification Traces') \ No newline at end of file diff --git a/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_generateTraces.m b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_generateTraces.m new file mode 100644 index 0000000000..9e6ef2cbbe --- /dev/null +++ b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_generateTraces.m @@ -0,0 +1,103 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; + +init_set = Star(lb, ub); + +%% Generate Traces + +numSteps = 20; +numTraces = 10; +[simTraces, controlTraces, genTime] = ncs.generateTraces(init_set, ref_input, numSteps, numTraces); + + + +%% Plot Simulation Traces + +ncs.plotSimTraces(1, 'red', '-'); \ No newline at end of file diff --git a/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_reachLive.m b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_reachLive.m new file mode 100644 index 0000000000..3d492679f3 --- /dev/null +++ b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_reachLive.m @@ -0,0 +1,114 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; +init_set = Star(lb, ub); + + +%% Live Reachability Analysis 1 + +numSteps = 15; +method = 'exact-star'; +numCores = 1; + +% plot on-the-fly the distance between two cars x1-x4 and the safe distance d_safe = D_default + t_gap * v_ego = 10 + 1.4 * x(5) +output_mat = [1 0 0 -1 0 0 0]; % plot on-the-fly the distance between two cars x1 - x4 +output_vec = []; +boundary_mat = [0 0 0 0 1.4 0 0]; % plot on-the-fly the safe distance +boundary_vec = [10]; +figure; +ncs.reachLive(init_set, ref_input, numSteps, method, numCores, output_mat, output_vec, 'blue', boundary_mat, boundary_vec); + +%% Live Reachability Analysis 2 + +% plot on-the-fly the position and velocity of the lead car +output_mat = [1 0 0 0 0 0 0; 0 1 0 0 0 0 0]; +output_vec = []; +figure; +ncs.reachLive(init_set, ref_input, numSteps, method, numCores, output_mat, output_vec, 'blue'); + diff --git a/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_reach_exact.m b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_reach_exact.m new file mode 100644 index 0000000000..5751d648aa --- /dev/null +++ b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_reach_exact.m @@ -0,0 +1,149 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; +init_set = Star(lb, ub); + + +%% Reachability Analysis + +numSteps = 10; +method = 'exact-star'; +numCores = 1; +[R, reachTime] = ncs.reach(init_set, ref_input, numSteps, method, numCores); + + + +%% Verification + +% safety property: actual distance > alpha * safe distance <=> d = x1 - x4 > alpha * d_safe = alpha * (1.4 * v_ego + 10) + +% usafe region: x1 - x4 <= alpha * (1.4 * v_ego + 10) +alpha = 1; +unsafe_mat = [1 0 0 -1 alpha*1.4 0 0]; +unsafe_vec = alpha*10; +[safe, counterExamples, verifyTime] = ncs.verify(unsafe_mat, unsafe_vec); + +%% Plot reach sets + +figure; +ncs.plotPlantReachSets('blue', 1); % plot position of lead car +hold on; +ncs.plotPlantReachSets('red',4); % plot position of ego car +title('Position reach sets of lead car (blue) and ego car (red)'); + +figure; +ncs.plotPlantReachSets('blue', 2); % plot velocity of lead car +hold on; +ncs.plotPlantReachSets('red', 5); % plot velocity of ego car +title('Velocity reach sets of lead car (blue) and ego car (red)'); + +figure; +ncs.plotControllerReachSets('green', 1); % plot control sets +title('Controller reach sets'); + +%% Plot output reach sets: actual distance vs. safe distance + +% plot reachable set of the distance between two cars d = x1 - x4 +figure; +map_mat = [1 0 0 -1 0 0 0]; +map_vec = []; +ncs.plotOutputReachSets('blue', map_mat, map_vec); + +hold on; + +% plot safe distance between two cars: d_safe = D_default + t_gap * v_ego; +% D_default = 10; t_gap = 1.4 +% d_safe = 10 + 1.4 * x5; + +map_mat = [0 0 0 0 1.4 0 0]; +map_vec = [10]; + +ncs.plotOutputReachSets('red', map_mat, map_vec); +title('Actual Distance versus. Safe Distance'); + diff --git a/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_simulate.m b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_simulate.m new file mode 100644 index 0000000000..6f5f0b4b46 --- /dev/null +++ b/code/nnv/tests/nncs/DLinearNNCS/test_DLinearNNCS_simulate.m @@ -0,0 +1,102 @@ +% Reachability analysis for Discrete Linear ACC model +% Dung Tran: 9/30/2019 + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +plantd = plant.c2d(0.1); % discrete plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = DLinearNNCS(Controller, plantd); % a discrete linear neural network control system + + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; + +init_state = lb; + +%% Simulation + +numSteps = 20; +[simTrace, controlTrace, simTime] = ncs.simulate(init_state, ref_input, numSteps); + + + +%% Plot Simulation Trace + +ncs.plotSimTraces(1, 'red', '-*'); \ No newline at end of file diff --git a/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_constructor.m b/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_constructor.m new file mode 100644 index 0000000000..9ae142b0f7 --- /dev/null +++ b/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_constructor.m @@ -0,0 +1,59 @@ +% Reachability analysis for Linear ACC model +% Dung Tran: 10/4/2019 + + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = LinearNNCS(Controller, plant); % a discrete linear neural network control system + diff --git a/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_reachLive.m b/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_reachLive.m new file mode 100644 index 0000000000..3cdb4943f4 --- /dev/null +++ b/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_reachLive.m @@ -0,0 +1,120 @@ +% Reachability analysis for Linear ACC model +% Dung Tran: 10/4/2019 + + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = LinearNNCS(Controller, plant); % a discrete linear neural network control system + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; +init_set = Star(lb, ub); + + +%% Live Reachability Analysis 1 + +numSteps = 4; +method = 'approx-star'; +%method = 'exact-star'; +numCores = 1; +plantNumOfSimSteps = 10; +% plot on-the-fly the distance between two cars x1-x4 and the safe distance d_safe = D_default + t_gap * v_ego = 10 + 1.4 * x(5) +output_mat = [1 0 0 -1 0 0 0]; % plot on-the-fly the distance between two cars x1 - x4 +output_vec = []; +boundary_mat = [0 0 0 0 1.4 0 0]; % plot on-the-fly the safe distance +boundary_vec = [10]; +figure; +ncs.reachLive(init_set, ref_input, numSteps, method, numCores, output_mat, output_vec, 'blue', boundary_mat, boundary_vec, plantNumOfSimSteps); + +%% Live Reachability Analysis 2 + +numSteps = 10; +method = 'approx-star'; +%method = 'exact-star'; +numCores = 1; +% plot on-the-fly the distance between two cars x1-x4 and the safe distance d_safe = D_default + t_gap * v_ego = 10 + 1.4 * x(5) +output_mat = [1 0 0 -1 0 0 0; 0 0 0 0 1 0 0]; % plot on-the-fly the distance between two cars x1 - x4 versus ego car speed +output_vec = []; +boundary_mat = [0 0 0 0 1.4 0 0; 0 0 0 0 1 0 0]; % plot on-the-fly the safe distance vs. ego car speed +boundary_vec = [10;0]; +figure; +ncs.reachLive(init_set, ref_input, numSteps, method, numCores, output_mat, output_vec, 'blue', boundary_mat, boundary_vec); + +%% END \ No newline at end of file diff --git a/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_reach_exact.m b/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_reach_exact.m new file mode 100644 index 0000000000..99124d834d --- /dev/null +++ b/code/nnv/tests/nncs/LinearNNCS/test_LinearNNCS_reach_exact.m @@ -0,0 +1,125 @@ +% Reachability analysis for Linear ACC model +% Dung Tran: 10/4/2019 + + + + +%% System model +% x1 = lead_car position +% x2 = lead_car velocity +% x3 = lead_car internal state + +% x4 = ego_car position +% x5 = ego_car velocity +% x6 = ego_car internal state + +% lead_car dynamics +%dx(1,1)=x(2); +%dx(2,1) = x(3); +%dx(3,1) = -2 * x(3) + 2 * a_lead - mu*x(2)^2; + +% ego car dynamics +%dx(4,1)= x(5); +%dx(5,1) = x(6); +%dx(6,1) = -2 * x(6) + 2 * a_ego - mu*x(5)^2; + + +% let x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead +% -> dx7 = -2dx3 + + +A = [0 1 0 0 0 0 0; 0 0 1 0 0 0 0; 0 0 0 0 0 0 1; 0 0 0 0 1 0 0; 0 0 0 0 0 1 0; 0 0 0 0 0 -2 0; 0 0 -2 0 0 0 0]; +B = [0; 0; 0; 0; 0; 2; 0]; +C = [1 0 0 -1 0 0 0; 0 1 0 0 -1 0 0; 0 0 0 0 1 0 0]; % feedback relative distance, relative velocity, longitudinal velocity +D = [0; 0; 0]; + +plant = LinearODE(A, B, C, D); % continuous plant model + +% the neural network provides a_ego control input to the plant +% a_lead = -2 + + +%% Controller +load controller_3_20.mat; + +n = length(weights); +Layers = []; +for i=1:n - 1 + L = LayerS(weights{1, i}, bias{i, 1}, 'poslin'); + Layers = [Layers L]; +end +L = LayerS(weights{1, n}, bias{n, 1}, 'purelin'); +Layers = [Layers L]; +Controller = FFNNS(Layers); % feedforward neural network controller + + +%% NNCS + +ncs = LinearNNCS(Controller, plant); % a discrete linear neural network control system + +%% Initial Set of states and reference inputs + +% reference input for neural network controller +% t_gap = 1.4; v_set = 30; + +ref_input = [30; 1.4]; + +% initial condition of the plant + +% initial position of lead car x_lead +x_lead = [90 100]; +% initial condition of v_lead +v_lead = [32 35]; +% initial condition of x_internal_lead +internal_acc_lead = [0 0]; +% initial condition of x_ego +x_ego = [10 11]; +% initial condition of v_ego +v_ego = [30 30.2]; +% initial condition of x_internal_ego +internal_acc_ego = [0 0]; +% initial condition for new introduced variable +x7_0 = [-4 -4]; % x7 = -2*x(3) + 2 * a_lead -> x7(0) = -2*x(3)(0) + 2*alead = -2*0 + 2*-2 = -4 + + +x1 = x_lead; +lb = [x1(1); v_lead(1); internal_acc_lead(1); x_ego(1); v_ego(1); internal_acc_ego(1); x7_0(1)]; +ub = [x1(2); v_lead(2); internal_acc_lead(2); x_ego(2); v_ego(2); internal_acc_ego(2); x7_0(2)]; +init_set = Star(lb, ub); + + +%% Reachability Analysis + +numSteps = 4; +method = 'approx-star'; +%method = 'exact-star'; +numCores = 1; +plantNumOfSimSteps = 10; +[R, reachTime] = ncs.reach(init_set, ref_input, numSteps, method, numCores, plantNumOfSimSteps); + +%% Plot output reach sets: actual distance vs. safe distance + +% plot reachable set of the distance between two cars d = x1 - x4 +figure; +map_mat = [1 0 0 -1 0 0 0]; +map_vec = []; +ncs.plotOutputReachSets('blue', map_mat, map_vec); + +hold on; + +% plot safe distance between two cars: d_safe = D_default + t_gap * v_ego; +% D_default = 10; t_gap = 1.4 +% d_safe = 10 + 1.4 * x5; + +map_mat = [0 0 0 0 1.4 0 0]; +map_vec = [10]; + +ncs.plotOutputReachSets('red', map_mat, map_vec); +title('Actual Distance versus. Safe Distance'); + +%% plot 2d output sets +figure; +map_mat = [1 0 0 -1 0 0 0; 0 0 0 0 1 0 0]; +map_vec = []; +ncs.plotOutputReachSets('blue', map_mat, map_vec); +title('Actual Distance versus. Ego car speed'); \ No newline at end of file diff --git a/code/nnv/tests/set/star/test_star_plotBoxes_2D.m b/code/nnv/tests/set/star/test_star_plotBoxes_2D.m index 1988a1a3b7..8ae126b468 100644 --- a/code/nnv/tests/set/star/test_star_plotBoxes_2D.m +++ b/code/nnv/tests/set/star/test_star_plotBoxes_2D.m @@ -17,6 +17,10 @@ S = [S1 S2]; +figure; + +Star.plots(S); + figure; Star.plotBoxes_2D(S, 1, 2, 'red');