diff --git a/experiments/.gitignore b/experiments/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..880c60a3594e7af73fbfe489587c75bbb93cf8cf --- /dev/null +++ b/experiments/.gitignore @@ -0,0 +1,4 @@ +*.npz +*.csv + +xp_old* \ No newline at end of file diff --git a/experiments/SIAM/fonts/cmunrm.ttf b/experiments/SIAM/fonts/cmunrm.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5e182b38c0b84d0b4d1869efca3265c31f95c94a Binary files /dev/null and b/experiments/SIAM/fonts/cmunrm.ttf differ diff --git a/experiments/SIAM/fonts/cmuntt.ttf b/experiments/SIAM/fonts/cmuntt.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d975a18fdfdf42ae57aa04ace652b39d599492ba Binary files /dev/null and b/experiments/SIAM/fonts/cmuntt.ttf differ diff --git a/experiments/SIAM/fonts/ectt1000.ttf b/experiments/SIAM/fonts/ectt1000.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f1a8efda01e384fda6ba0929dc8301b556a65e24 Binary files /dev/null and b/experiments/SIAM/fonts/ectt1000.ttf differ diff --git a/experiments/SIAM/increasingball.py b/experiments/SIAM/increasingball.py new file mode 100644 index 0000000000000000000000000000000000000000..fdbc7d02ed552daf38b4a5cc1ab10844f2947b31 --- /dev/null +++ b/experiments/SIAM/increasingball.py @@ -0,0 +1,37 @@ +import time + +import numpy as np + +from src.utils import get_lambda_max + + +def test_increasing_ball(list_tests, vec_offsets, slopepb, vecx): + + nb_test = len(list_tests) + mat_out = np.zeros((nb_test, vec_offsets.size)) + + vecu, Atu, gap = slopepb.make_screening_quanties( + vecx + ) + + list_time = [0 for i in range(nb_test)] + + # Boucle + for i_offset, offset in enumerate(vec_offsets): + for i_test, test in enumerate(list_tests): + # Test + t_start = time.time() + out = test.apply_test( + np.abs(Atu), + gap, + slopepb.lbd, + slopepb.vec_gammas, + offset_radius=offset + ) + list_time[i_test] += time.time() - t_start + + # save + mat_out[i_test, i_offset] = np.sum(out) + + # out + return mat_out, list_time \ No newline at end of file diff --git a/experiments/SIAM/setup.py b/experiments/SIAM/setup.py new file mode 100755 index 0000000000000000000000000000000000000000..f853db30f9b0f5e7deb3d839e9d375a71d5fa7d2 --- /dev/null +++ b/experiments/SIAM/setup.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +import json + +import numpy as np + + +class Setup(object): + """docstring for Setup""" + def __init__(self, setup_id): + super(Setup, self).__init__() + self.setup_id = setup_id + + with open('../setups.json') as json_file: + data = json.load(json_file)[f"setup{setup_id}"] + + # + self.m = data["m"] + self.n = data["n"] + + self.list_dic = data["dictionaries"] + + self.normalize = data["normalize"] + + self.n_rep = data["n_rep"] + + self.list_sequence = data["sequences"] + self.list_ratio_lbd = data["list_ratio_lbd"] + + self.nb_dic = len( self.list_dic ) + self.nb_sequence = len( self.list_sequence ) + self.nb_ratio_lbd = len( self.list_ratio_lbd ) \ No newline at end of file diff --git a/experiments/SIAM/setups.json b/experiments/SIAM/setups.json new file mode 100755 index 0000000000000000000000000000000000000000..6d86f2fae26bcea84b38d6a0a83b82f7b6866025 --- /dev/null +++ b/experiments/SIAM/setups.json @@ -0,0 +1,57 @@ +{ + "setup1a": { + "remark": "OSCAR 1, 2, 3", + + "m": 10, + "n": 30, + + "dictionaries": [ + "gaussian 0.", + "uniform", + "toeplitz" + ], + "normalize": true, + + "n_rep": 50, + + "sequences": [ + ["oscar-lim", 1, 0.9], + ["oscar-lim", 1.0, 0.1], + ["oscar-lim", 1, 1e-3] + ], + + "list_ratio_lbd": [ + 0.3, + 0.5, + 0.8 + ] + }, + + "setup1b": { + "remark": "EXP 1, 2, 3", + + "m": 100, + "n": 300, + + "dictionaries": [ + "gaussian 0.", + "uniform", + "toeplitz" + ], + "normalize": true, + + "n_rep": 50, + + "sequences": [ + ["exp-lim", 0.99999, 0.9], + ["exp-lim", 0.99999, 0.5], + ["exp-lim", 0.99999, 1e-2] + ], + + "list_ratio_lbd": [ + 0.3, + 0.5, + 0.8 + ] + } +} \ No newline at end of file diff --git a/experiments/SIAM/slopepb.py b/experiments/SIAM/slopepb.py new file mode 100644 index 0000000000000000000000000000000000000000..f43760f9812824773a0dfbfea16f3514a003a2e0 --- /dev/null +++ b/experiments/SIAM/slopepb.py @@ -0,0 +1,75 @@ +import numpy as np + +from src.solver.slope import primal_func, dual_func +from src.utils import get_lambda_max + + +class SlopePb(object): + """docstring for SlopePb""" + def __init__(self, matA, vecy, vec_gammas, ratio_lbd, lbdmax=None): + super(SlopePb, self).__init__() + self.matA = matA + self.vecy = vecy + self.vec_gammas = vec_gammas + self.ratio_lbd = ratio_lbd + + if lbdmax is None: + self.lbdmax = get_lambda_max(vecy, matA, vec_gammas) + else: + self.lbdmax = lbdmax + + self.lbd = ratio_lbd * self.lbdmax + + + def make_dual_scaling(self, vecr): + + beta_dual = np.sort(np.abs(self.matA.T @ vecr))[::-1] + beta_dual = np.cumsum(beta_dual) / \ + np.cumsum(self.lbd * self.vec_gammas) + + return vecr / np.max(beta_dual) + + + def make_screening_quanties(self, vecx): + """ + """ + + # residual error + vecu = self.vecy - self.matA @ vecx + + # dual scaling + vecu = self.make_dual_scaling(vecu) + + pval = primal_func(self.vecy, self.matA @ vecx, vecx, + self.lbd, self.vec_gammas + ) + dval = dual_func(self.vecy, + np.linalg.norm(self.vecy, 2)**2, vecu + ) + + gap = np.abs(pval - dval) + + Atu = self.matA.T @ vecu + + return vecu, Atu, gap + + + def eval_gap(self, vecx, vecu=None): + """ + """ + + if vecu is None: + # residual error + vecu = self.vecy - self.matA @ vecx + + # dual scaling + vecu = self.make_dual_scaling(vecu) + + pval = primal_func(self.vecy, self.matA @ vecx, vecx, + self.lbd, self.vec_gammas + ) + dval = dual_func(self.vecy, + np.linalg.norm(self.vecy, 2)**2, vecu + ) + + return np.abs(pval - dval) \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/make_fig_paper.sh b/experiments/SIAM/xp_0_balls/make_fig_paper.sh new file mode 100755 index 0000000000000000000000000000000000000000..36f8245cdc32c7ea2a508833bdd323d55c3d35a7 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/make_fig_paper.sh @@ -0,0 +1 @@ +python viz_final.py --noshow --save \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/poc.py b/experiments/SIAM/xp_0_balls/poc.py new file mode 100644 index 0000000000000000000000000000000000000000..ec464e1f27dc3b8b59e4ca3e1d5aead11a7754ba --- /dev/null +++ b/experiments/SIAM/xp_0_balls/poc.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +import argparse + +import numpy as np +import matplotlib.pyplot as plt + +# Algorithm import +from src import __version__ +from src.dictionaries import generate_dic +from src.utils import get_lambda_max, gamma_sequence_generator + +# Screening +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest +from src.screening.gap_rqtest import GAP_RQtest +from src.screening.kappa_test import Kappa_test + +# XP import +from xps.SIAM.slopepb import SlopePb +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default="1a") +args=parser.parse_args() + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +solutions_filename = f"results/xp_setup{args.id}.npz" + +try: + # Try to load existing results + load_results = np.load(solutions_filename, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_pvopt = load_results["mat_pvopt"] + mat_dvopt = load_results["mat_dvopt"] + +except FileNotFoundError: + print("No result found") + sys.exit(1) + + +# ------------------------- +# Screening Xp +# ------------------------- + +# percentage of detected zero +n_rep = 5 +mat_nb_zero_detected = np.full( + (3, xpparams.nb_point, setup.nb_sequence, n_rep), + np.nan, + dtype=int +) +poc_filename = f"results/poc{args.id}_screening.npz" + +i_xp = 0 + +i_dic = 2 +i_ratio = 1 +ratio = .5 +i_seq = 1 +seq = "OSCAR-1" + +# seq_r = 1+np.arange(setup.n, dtype=int) +seq_r = 1 + np.arange(setup.n, dtype=int) // 5 + +#1 + (1 + np.arange(setup.n, dtype=int)) // 2 + +# for rep in range(setup.n_rep): +for rep in range(n_rep): + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + # ---- 3. XP ---- + i_xp += 1 + print(f"xp {i_xp}") + + slopePb = SlopePb(matA, vecy, vec_gammas, ratio, lbdmax=lbd_max) + vecx_hat = mat_pvopt[i_dic, i_seq, i_ratio, rep, :] + vecu_hat = mat_dvopt[i_dic, i_seq, i_ratio, rep, :] + gap = slopePb.eval_gap(vecx_hat, vecu_hat) + Atu = matA.T @ vecu_hat + + # ---- 3b. Build thin safe ball ---- + rgap = np.sqrt(2 * gap) + + # ---- 3c. Testing sphere ---- + list_tests = [ + GapSphereSingleTest(), + Kappa_test(vec_gammas, np.arange(setup.n, dtype=np.double)), + GAP_RQtest(vec_gammas, seq_r), + # GAP_Ptest(vec_gammas), + ] + + + for i_offset, offset in enumerate(xpparams.vec_offsets): + for i_test, test in enumerate(list_tests): + out = test.apply_test(np.abs(Atu), gap, ratio * lbd_max, vec_gammas, offset_radius=offset) + mat_nb_zero_detected[i_test, i_offset, i_seq, rep] = np.sum(out) + +f, ax = plt.subplots(1, 1) +for i_test in range(3): + ax.plot(np.mean(mat_nb_zero_detected[i_test, :, i_seq, :n_rep], axis=1)) + +plt.show() + + # # Save + # np.savez( + # poc_filename, + # mat_nb_zero_detected=mat_nb_zero_detected, + # list_test = [test.get_name() for test in list_tests], + # version = __version__, + # allow_pickle=True + # ) \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/poc_debug.py b/experiments/SIAM/xp_0_balls/poc_debug.py new file mode 100644 index 0000000000000000000000000000000000000000..d5c4da9416ba6b42c3097d83179c6d72fd0fd651 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/poc_debug.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- +import argparse + +import numpy as np +import matplotlib.pyplot as plt + +# Algorithm import +from src import __version__ +from src.dictionaries import generate_dic +from src.utils import get_lambda_max, gamma_sequence_generator + +# Screening +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest +from src.screening.gap_rqtest import GAP_RQtest +from src.screening.kappa_test import Kappa_test + +# XP import +from xps.SIAM.slopepb import SlopePb +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default="1a") +args=parser.parse_args() + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +solutions_filename = f"results/xp_setup{args.id}.npz" + +try: + # Try to load existing results + load_results = np.load(solutions_filename, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_pvopt = load_results["mat_pvopt"] + mat_dvopt = load_results["mat_dvopt"] + +except FileNotFoundError: + print("No result found") + sys.exit(1) + + +# ------------------------- +# Screening Xp +# ------------------------- + +# percentage of detected zero +mat_nb_zero_detected = np.full( + (4, xpparams.nb_point, setup.nb_sequence, setup.n_rep), + np.nan, + dtype=int +) +poc_filename = f"results/poc{args.id}_screening.npz" + +i_xp = 0 +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd + +i_dic = 2 +i_ratio = 1 +ratio = .5 +rep = 0 + +f, ax = plt.subplots(1, 3) +for i_seq, seq in enumerate(setup.list_sequence): + # for rep in range(setup.n_rep): + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + # ---- 3. XP ---- + i_xp += 1 + print(f"xp {i_xp} / {nb_xp}") + + slopePb = SlopePb(matA, vecy, vec_gammas, ratio, lbdmax=lbd_max) + vecx_hat = mat_pvopt[i_dic, i_seq, i_ratio, rep, :] + vecu_hat = mat_dvopt[i_dic, i_seq, i_ratio, rep, :] + gap = slopePb.eval_gap(vecx_hat, vecu_hat) + Atu = matA.T @ vecu_hat + + # ---- 3b. Build thin safe ball ---- + rgap = np.sqrt(2 * gap) + + # ---- 3c. Testing sphere ---- + list_tests = [ + # --- Lasso like test -- + GapSphereSingleTest(), + GAP_RQtest(vec_gammas, 1+np.arange(setup.n, dtype=int)), + # # --- ideal like test --- + Kappa_test(vec_gammas, np.arange(setup.n, dtype=np.double)), + GAP_RQtest(vec_gammas, np.ones(setup.n, dtype=int)), + # --- doing all tets --- + # GAP_Ptest(vec_gammas), + ] + + for i_offset, offset in enumerate(xpparams.vec_offsets): + for i_test, test in enumerate(list_tests): + out = test.apply_test(np.abs(Atu), gap, ratio * lbd_max, vec_gammas, offset_radius=offset) + mat_nb_zero_detected[i_test, i_offset, i_seq, rep] = np.sum(out) + + + ax[i_seq].plot(mat_nb_zero_detected[0, :, i_seq, rep], linewidth=4) + ax[i_seq].plot(mat_nb_zero_detected[1, :, i_seq, rep]) + + ax[i_seq].plot(mat_nb_zero_detected[2, :, i_seq, rep], linewidth=4) + ax[i_seq].plot(mat_nb_zero_detected[3, :, i_seq, rep]) + +plt.show() \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/process_data.py b/experiments/SIAM/xp_0_balls/process_data.py new file mode 100644 index 0000000000000000000000000000000000000000..d8a4f63bcd5db7e8f43f704e9275d0e1713c2dd9 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/process_data.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +import numpy as np + +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams + + +def process(setup, log=True): + + # ---- load ---- + solutions_filename = f"results/xp_setup{setup.setup_id}.npz" + solutions = np.load(solutions_filename, allow_pickle=True) + + screenings_filename = f"results/xp_setup{setup.setup_id}_screening.npz" + screenings = np.load(screenings_filename, allow_pickle=True) + + # mat_results_gap[1, i_dic, i_seq, rep, i_ratio] + mat_pvopt = solutions["mat_pvopt"] + + mat_nb_zero_detected = screenings['mat_nb_zero_detected'] + nb_test = mat_nb_zero_detected.shape[0] + list_tests = screenings["list_test"] + + # ---- log ---- + if log: + print("Experiment info") + # print(f"- run with version {solutions["version"]}") + print(f"- setup{setup.setup_id}") + print("") + + # ---- processing ---- + mat_pc_detected =np.zeros( + (nb_test, xpparams.nb_point, setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep) + ) + + for i_dic in range(setup.nb_dic): + for i_seq in range(setup.nb_sequence): + for i_ratio in range(setup.nb_ratio_lbd): + for rep in range(setup.n_rep): + + nb_0 = np.sum(mat_pvopt[i_dic, i_seq, i_ratio, rep, :] == 0) + if nb_0 > 0: + mat_detected = mat_nb_zero_detected[:, :, i_dic, i_seq, i_ratio, rep] + mat_pc_detected[:, :, i_dic, i_seq, i_ratio, rep] = mat_detected / float(nb_0) + + + # ---- return ---- + return { + "mat_pc_detected": np.mean(mat_pc_detected, axis=5), + "list_tests": list_tests, + } + + # { + # "results_mat_nb": results_mat_nb, + # "results_mat_nbz": results_mat_nbz, + # } \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/viz.py b/experiments/SIAM/xp_0_balls/viz.py new file mode 100755 index 0000000000000000000000000000000000000000..05d0832c2788d55cacc8d8e96a33f730a1b16502 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/viz.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +from decimal import Decimal +import argparse + +import numpy as np +import matplotlib.pyplot as plt + +# Slope import +from src.utils import gamma_sequence_generator + +# XP import +from xps.SIAM.slopepb import SlopePb +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams +from xps.SIAM.xp_1_balls.process_data import process + + +parser=argparse.ArgumentParser() +parser.add_argument('--noshow', help='do not display figures', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +parser.add_argument('--id', help='setup id', type=str, default=1) +args=parser.parse_args() + + +# ------------------------- +# Load Results +# ------------------------- + +setup = Setup(args.id) +dic_process = process(setup) + +mat_pc_detected = dic_process["mat_pc_detected"] +list_tests = dic_process["list_tests"] +list_legends = ["$r_q=1 \\forall q$", "Testing all $q$", "$r_q=q \\forall q$"] + +# ------------------------- +# Plot Results +# ------------------------- + +for i_dic in range(setup.nb_dic): + + if not np.any(mat_pc_detected[:, :, i_dic, :, :] > 0): + continue + + f, ax = plt.subplots(setup.nb_sequence, setup.nb_ratio_lbd+1) + f.suptitle(f"{setup.list_dic[i_dic]}") + + for i_seq, str_seq in enumerate(setup.list_sequence): + + for i_lbd in range(len(setup.list_ratio_lbd)): + + if i_seq ==0: + ax[i_seq, i_lbd].set_title(f"$\\lambda={setup.list_ratio_lbd[i_lbd]}$") + + for i_test in [0, 2, 1]: + ax[i_seq, i_lbd].plot( + xpparams.vec_offsets, + 100 * mat_pc_detected[i_test, :, i_dic, i_seq, i_lbd], + # '-', + # color="blue", + label= list_legends[i_test], + # , + # linestyle=style + ) + + # if j == 0: + # ax[j, i_seq].set_title(f"{setup.list_sequence[i_seq]} -- lbd={setup.list_ratio_lbd[j]}") + # else: + # ax[j, i_seq].set_title(f"lbd={setup.list_ratio_lbd[j]}") + + if i_lbd == 0 and i_seq == 0: + ax[i_seq, i_lbd].legend() + + ax[i_seq, i_lbd].set_xscale('log') + + # if i_seq >= 2: + # ax[i_seq, i_lbd].set_xlim([0, .5]) + # if i_seq >= 3: + # ax[i_seq, i_lbd].set_xlim([0, .05]) + + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:], + log=True + ) + + ax[i_seq, len(setup.list_ratio_lbd)].plot(vec_gammas) + + if args.save: + filename = f"figs/setup{args.id}_{setup.list_dic[i_dic]}.pdf" + plt.savefig(filename, bbox_inches='tight') + +if not args.noshow: + plt.show() \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/viz_final.py b/experiments/SIAM/xp_0_balls/viz_final.py new file mode 100644 index 0000000000000000000000000000000000000000..49b42e0af0329ff1d2cd601d40ff6456763b8911 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/viz_final.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +from decimal import Decimal +import json, argparse +from prettytable import PrettyTable + +import numpy as np + +# XP import +from xps.SIAM.slopepb import SlopePb +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams +from xps.SIAM.xp_1_balls.process_data import process + + +parser=argparse.ArgumentParser() +parser.add_argument('--noshow', help='do not display figures', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +# parser.add_argument('--id', help='setup id', type=str, default=1) +args=parser.parse_args() + +import matplotlib +if args.noshow: + matplotlib.use('PS') +else: + matplotlib.use("TkAgg") + +import matplotlib.pyplot as plt +from matplotlib.legend_handler import HandlerBase +import matplotlib.font_manager as font_manager + +# ------------------------- +# Font stuff +# ------------------------- + +fs = 20 + +font_math = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_text = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_ttt = font_manager.FontProperties( + # fname='../fonts/ectt1000.ttf', + fname='../fonts/computer-modern/cmuntt.ttf', + weight='bold', + style='normal', + size=fs +) + + +# ------------------------- +# Load Results +# ------------------------- + +# OSCAR +setup_oscar = Setup("1a") +dic_process_oscar = process(setup_oscar) + +mat_pc_detected_oscar = dic_process_oscar["mat_pc_detected"] +list_tests_oscar = dic_process_oscar["list_tests"] + +# EXP +setup_exp = Setup("1b") +dic_process_exp = process(setup_exp) + +mat_pc_detected_exp = dic_process_exp["mat_pc_detected"] +list_tests_exp = dic_process_exp["list_tests"] + + +# ------------------------- +# Plot Results +# ------------------------- + +i_dic = 2 +i_lbd = 1 + +fs=22 +fs_ylabels = 20 +list_colors = ["tab:blue", "tab:orange", "tab:green"] +list_legends = ["$r_q=q\\;\\forall q$", "best performance", "$r_q=1\\;\\forall q$"] +# "best $r_q \\;\\forall q$ " + +print("printing xp_0_ball parameters with") +print(" - OSCAR sequence") +print(f"- {setup_oscar.list_dic[i_dic]} dictionary") +print(f"- lbd / lbd_max = {setup_oscar.list_ratio_lbd[i_lbd]}") + +for i_seq in range(2): + + f, ax = plt.subplots(1, 1, figsize=(.7*16, .6*9), sharex=True, sharey=True) + + # ax.set_title(f"OSCAR-{i_seq+1}", fontsize=fs+2) + ax.set_xlabel( + r"$R$", + fontsize=fs+2, + fontproperties=font_math, + ) + ax.set_ylabel( + "% of zero entries detected", + fontsize=fs+2, + fontproperties=font_text + ) + + for tick in ax.xaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(20) + + for tick in ax.yaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(20) + + for i_test in [2, 0, 1]: + ax.plot( + xpparams.vec_offsets, + 100 * mat_pc_detected_exp[i_test, :, i_dic, i_seq, i_lbd], + label = list_legends[i_test], + linewidth=4., + alpha=.9, + color=list_colors[i_test] + ) + + if i_seq == 0: + ax.legend( + fontsize=fs-2, + prop=font_math + ) + + ax.set_xscale("log") + ax.set_xlim([1e-6, 1e0]) + ax.set_ylim([-2, 102]) + + if args.save: + filename = f"figs/xp_illustration_screening{i_seq}.eps" + plt.savefig(filename, bbox_inches='tight') + +if not args.noshow: + plt.show() \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/xp_a_accuracy_sol.py b/experiments/SIAM/xp_0_balls/xp_a_accuracy_sol.py new file mode 100755 index 0000000000000000000000000000000000000000..ddb328dc42d27bf9847aaacf702ab9985e61bd4e --- /dev/null +++ b/experiments/SIAM/xp_0_balls/xp_a_accuracy_sol.py @@ -0,0 +1,152 @@ +# -*- coding: utf-8 -*- +import time, argparse, sys + +import numpy as np + +# Algorithm import +from src import __version__ +from src.parameters import SlopeParameters, EnumLipchitzOptions +from src.slope import primal_func, dual_func, slope_gp + +# Generative models +from src.utils import get_lambda_max, gamma_sequence_generator +from src.dictionaries import generate_dic + +# Screening +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest + +# XP import +from xps.SIAM.slopepb import SlopePb +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams + +parser=argparse.ArgumentParser() +parser.add_argument('--erase', help='erase existing results', action="store_true") +parser.add_argument('--id', help='setup id', type=str) +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +out_file_name = f"results/xp_setup{args.id}.npz" + +mat_seed = np.random.randint( + 0, 2**32-1, + size=(setup.nb_dic, setup.nb_sequence, setup.n_rep), +) + +mat_pvopt = np.zeros( + (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep, setup.n) +) + +mat_dvopt = np.zeros( + (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep, setup.m) +) + + +try: + if args.erase: + raise FileNotFoundError + + # Try to load existing results + load_results = np.load(out_file_name, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_pvopt = load_results["mat_pvopt"] + mat_dvopt = load_results["mat_dvopt"] + +except FileNotFoundError: + pass + + +# ------------------------- +# Xp +# ------------------------- + +# For each trial +# 1. Compute high accuracy solution +# 2. Create ideal safe ball +# 3. increase radius + +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd +i_xp = 0 +for i_dic in range(setup.nb_dic): + for i_seq, seq in enumerate(setup.list_sequence): + for rep in range(setup.n_rep): + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + lip = np.linalg.norm(matA, ord=2)**2 + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy, 2) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + + # ---- 3. XP ---- + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + i_xp += 1 + + slopePb = SlopePb(matA, vecy, vec_gammas, ratio, lbdmax=lbd_max) + vecx_hat = mat_pvopt[i_dic, i_seq, i_ratio, rep, :] + vecu_hat = mat_dvopt[i_dic, i_seq, i_ratio, rep, :] + + gap = slopePb.eval_gap(vecx_hat, vecu_hat) + print(f"xp {i_xp} / {nb_xp} --- (gap={gap})") + + if (gap > xpparams.stopping_gap): + gap_old = gap + + # ---- 3a. Find solution ---- + params = SlopeParameters() + params.vecx_init = np.copy(vecx_hat) + params.lipchitz_constant = lip + params.lipchitz_update = EnumLipchitzOptions.EXACT + params.max_it = 1e7 + params.gap_stopping = xpparams.stopping_gap + params.time_stopping = np.inf + params.screening1 = GapSphereSingleTest() + params.screening2 = GAP_Ptest(vec_gammas) + params.screening_it_div = 2. + params.accelerated = False + params.verbose = False + + out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) + + gap = slopePb.eval_gap(out_slope["sol"], out_slope["dualsol"]) + + if gap <= gap_old: + mat_pvopt[i_dic, i_seq, i_ratio, rep, :] = out_slope["sol"] + mat_dvopt[i_dic, i_seq, i_ratio, rep, :] = out_slope["dualsol"] + + # Save + np.savez(out_file_name, + mat_seed=mat_seed, + mat_pvopt=mat_pvopt, + mat_dvopt=mat_dvopt, + version = __version__, + allow_pickle=True + ) + + # if i_xp ==3: + # exit() \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/xp_b_screening.py b/experiments/SIAM/xp_0_balls/xp_b_screening.py new file mode 100644 index 0000000000000000000000000000000000000000..d100e8bf8777cdc90d3aa9e226a7f42c0d8f6ed1 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/xp_b_screening.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +import argparse + +import numpy as np + +# Algorithm import +from src import __version__ +from src.dictionaries import generate_dic +from src.utils import get_lambda_max, gamma_sequence_generator + +# Screening +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest +from src.screening.kappa_test import Kappa_test + +# XP import +from xps.SIAM.slopepb import SlopePb +from xps.SIAM.setup import Setup +from xps.SIAM.xp_1_balls import xpparams + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default=1) +args=parser.parse_args() + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +solutions_filename = f"results/xp_setup{args.id}.npz" + +try: + # Try to load existing results + load_results = np.load(solutions_filename, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_pvopt = load_results["mat_pvopt"] + mat_dvopt = load_results["mat_dvopt"] + +except FileNotFoundError: + print("No result found") + sys.exit(1) + + +# ------------------------- +# Screening Xp +# ------------------------- + +# percentage of detected zero +mat_nb_zero_detected = np.full( + (3, xpparams.nb_point, setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep), + np.nan, + dtype=int +) +screening_filename = f"results/xp_setup{args.id}_screening.npz" + +i_xp = 0 +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd +for i_dic in range(setup.nb_dic): + for i_seq, seq in enumerate(setup.list_sequence): + for rep in range(setup.n_rep): + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + # ---- 3. XP ---- + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + i_xp += 1 + print(f"xp {i_xp} / {nb_xp}") + + slopePb = SlopePb(matA, vecy, vec_gammas, ratio, lbdmax=lbd_max) + vecx_hat = mat_pvopt[i_dic, i_seq, i_ratio, rep, :] + vecu_hat = mat_dvopt[i_dic, i_seq, i_ratio, rep, :] + gap = slopePb.eval_gap(vecx_hat, vecu_hat) + Atu = matA.T @ vecu_hat + + # ---- 3b. Build thin safe ball ---- + rgap = np.sqrt(2 * gap) + + # ---- 3c. Testing sphere ---- + list_tests = [ + GapSphereSingleTest(), + GAP_Ptest(vec_gammas), + Kappa_test(vec_gammas, np.arange(setup.n, dtype=np.double)), + ] + + + for i_offset, offset in enumerate(xpparams.vec_offsets): + for i_test, test in enumerate(list_tests): + out = test.apply_test(np.abs(Atu), gap, ratio * lbd_max, vec_gammas, offset_radius=offset) + mat_nb_zero_detected[i_test, i_offset, i_dic, i_seq, i_ratio, rep] = np.sum(out) + + + # Save + np.savez( + screening_filename, + mat_nb_zero_detected=mat_nb_zero_detected, + list_test = [test.get_name() for test in list_tests], + version = __version__, + allow_pickle=True + ) \ No newline at end of file diff --git a/experiments/SIAM/xp_0_balls/xp_verif_screening.py b/experiments/SIAM/xp_0_balls/xp_verif_screening.py new file mode 100644 index 0000000000000000000000000000000000000000..0428919b8ecb42ea7b2a1037f4264d340543fac8 --- /dev/null +++ b/experiments/SIAM/xp_0_balls/xp_verif_screening.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +import time, argparse, sys +from datetime import datetime + +import numpy as np +import matplotlib.pyplot as plt + +from src import __version__ +from src.parameters import SlopeParameters, EnumLipchitzOptions +from src.slope import primal_func, dual_func, slope_gp +from src.screening import SafeGapSphere, SafeGapSphereSingleTest, GeneralizedGapSphere, GeneralizedGapSphereV2, GeneralizedGapSphereV3 +from src.utils import get_lambda_max, gamma_sequence_generator, compute_coherence, compute_coherence_function +from src.dictionaries import generate_dic + +from setup import Setup + + +parser=argparse.ArgumentParser() +parser.add_argument('--erase', help='save figure', action="store_true") +parser.add_argument('--continue', help='save figure', action="store_true", dest="cont") +parser.add_argument('--id', help='setup id', type=str, + default=1) +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +out_file_name = f"results/xp_setup{args.id}.npz" + +try: + if args.erase: + raise FileNotFoundError + + # Try to load existing results + load_results = np.load(out_file_name, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_sol = load_results["mat_sol"] + + date_start_xp = load_results['date_start_xp'] + +except FileNotFoundError: + + pass + +# ------------------------- +# Xp +# ------------------------- + +# For each trial +# 1. Compute high accuracy solution +# 2. Create ideal safe ball +# 3. increse radius + + # When does the xp have started? +print("#"*50) +if type(date_start_xp) == np.ndarray: + print("#\tdate and time =", date_start_xp) +else: + dt_string = date_start_xp.strftime("%d/%m/%Y %H:%M:%S") + print("#\tdate and time =", dt_string) +print(f"#\tXp setup{args.id}") +print("#"*50) +print("") + +def compute_quantities(vecy, matA, vecx, lbd, vec_gammas): + """ + """ + + # residual error + vecu = vecy - matA @ vecx + + # dual scaling + beta_dual = np.sort(np.abs(matA.T @ vecu))[::-1] + beta_dual = np.cumsum(beta_dual) / np.cumsum(lbd * vec_gammas) + vecu /= np.max(beta_dual) + + pval = primal_func(vecy, matA @ vecx, vecx, lbd, vec_gammas) + dval = dual_func(vecy, np.linalg.norm(vecy, 2)**2, vecu) + + gap = np.abs(pval - dval) + + return vecu, gap + + +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd +i_xp = 0 +for i_dic in range(setup.nb_dic): + for i_seq, seq in enumerate(setup.list_sequence): + for rep in range(setup.n_rep): + # if not np.any(np.isnan(mat_nb[1, :, i_dic, i_seq, :, rep])): + # continue + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + # Abs is to protect from complex numbers + max_eig = np.linalg.norm(matA, ord=2)**2 + + coherence = compute_coherence(matA) + coherence_function = compute_coherence_function(matA) + + vecy = np.random.randn(setup.m) + + + # ---- 2. Compute parameters ---- + vec_gammas =gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq], + setup.m / (10 * setup.n) + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + + # ---- 3. XP ---- + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + i_xp += 1 + print(f"xp {i_xp} / {nb_xp}") + + + vecu, gap = compute_quantities( + vecy, matA, mat_sol[i_dic, i_seq, i_ratio, rep, :], ratio * lbd_max, vec_gammas + ) + + # if (gap_old <= setup.stopping_gap) and not np.any(np.isnan(mat_nb[:, :, i_dic, i_seq, i_ratio, rep])): + # continue + # else: + if (gap > setup.stopping_gap): + gap_old = gap + + # ---- 3a. Find solution ---- + params = SlopeParameters() + params.vecx_init = mat_sol[i_dic, i_seq, i_ratio, rep, :] + params.lipchitz_constant = max_eig + params.lipchitz_update = EnumLipchitzOptions.GERSHGORIN + params.max_it = 1e10 + params.gap_stopping = setup.stopping_gap + params.time_stopping = np.inf + params.screening1 = SafeGapSphereSingleTest() + params.screening2 = SafeGapSphere(np.cumsum(vec_gammas), coherence_function) + params.screening_it_div = 1. + params.accelerated = True + params.verbose = False + + out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) + + vecu, gap = compute_quantities( + vecy, matA, out_slope["sol"], ratio * lbd_max, vec_gammas + ) + + if gap <= gap_old: + mat_sol[i_dic, i_seq, i_ratio, rep, :] = out_slope["sol"] + + + # ---- 3c. Testing sphere ---- + test1 = GeneralizedGapSphere(np.cumsum(vec_gammas)) + test2 = GeneralizedGapSphereV2(np.cumsum(vec_gammas)) + test3 = GeneralizedGapSphereV3(np.cumsum(vec_gammas)) + # test2 = GeneralizedCoherenceGapSphere(np.cumsum(vec_gammas), coherence_function) + + Atu = matA.T @ vecu + rgap = np.sqrt(2 * gap) + + # 4. Computing duality when taking into account the output of screening rules + print(f" old gap {gap}") + delta = [0, 0, 0] + sumzero = [0, 0, 0] + for i_test, test in enumerate([test1, test2, test3]): + t_1 = time.time() + out = test.apply_test(Atu, gap, ratio * lbd_max, vec_gammas, 0.) + delta[i_test] = time.time() - t_1 + + sumzero[i_test] = np.sum(out) + + _, new_gap = compute_quantities( + vecy, matA[:, np.invert(out)], + mat_sol[i_dic, i_seq, i_ratio, rep, np.invert(out)], + ratio * lbd_max, vec_gammas[:(setup.n - np.sum(out))] + ) + + print(f" new gap {i_test} {new_gap}") + print(f" delta time {delta[0] / delta[1]}") + print(f" delta time {delta[0] / delta[2]}") + print(f" nb zero {sumzero[0]} - {sumzero[1]} - {sumzero[2]}") diff --git a/experiments/SIAM/xp_0_balls/xp_viz_gen_sreening.py b/experiments/SIAM/xp_0_balls/xp_viz_gen_sreening.py new file mode 100644 index 0000000000000000000000000000000000000000..3e976ef53a58e773821ed98cf46bddc0c511669a --- /dev/null +++ b/experiments/SIAM/xp_0_balls/xp_viz_gen_sreening.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- +import time, argparse, sys +from datetime import datetime + +import numpy as np +import matplotlib.pyplot as plt + +from src import __version__ +from src.screening import AbstractGapScreening +from src.slope import primal_func, dual_func +from src.utils import get_lambda_max, gamma_sequence_generator, compute_coherence, compute_coherence_function +from src.dictionaries import generate_dic + +from setup import Setup + + +parser=argparse.ArgumentParser() +parser.add_argument('--noshow', help='save figure', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +parser.add_argument('--id', help='setup id', type=str, + default=1) +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +out_file_name = f"results/xp_setup{args.id}.npz" + +try: + load_results = np.load(out_file_name, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_sol = load_results["mat_sol"] + + +except FileNotFoundError: + print("No experiment results found") + exit() + + +# ------------------------- +# Screening class +# ------------------------- + +class DebugTest_p(AbstractGapScreening): + """ Generalized test + """ + def __init__(self, vec_cumsum_gammas): + super(AbstractGapScreening, self).__init__() + + # Adding zero at the beginning + self.vec_cumsum_gammas = np.zeros(vec_cumsum_gammas.size+1) + self.vec_cumsum_gammas[1:] = vec_cumsum_gammas + + + def apply_test(self, Atc, gap, lbd, vec_gammas, offset_radius=0, index=None) -> np.ndarray: + n = Atc.size + + radius = np.sqrt(2 * gap) + offset_radius + + # 1. Sort in descenting order + if index is None: + index = np.argsort(np.abs(Atc))[::-1] + + for l in range(n): + # setdiff1d with "assume_unique" option keeps the ordering + cumsum_Atc = np.zeros(n) + cumsum_Atc[1:] = np.cumsum(np.abs(Atc[np.setdiff1d(index, [l], assume_unique=True)])) + + # row: q + # column: p + map_accept = np.zeros((n, n)) + for q in range(1, n+1): + range_p = np.arange(q) + vec_bounds_p = np.abs(Atc[l]) \ + + (cumsum_Atc[q-1] - cumsum_Atc[q - 1 - range_p]) \ + + (1. + range_p) * radius \ + + lbd * self.vec_cumsum_gammas[:q][::-1] + + # screening test + map_accept[q-1, :q] += (vec_bounds_p < lbd * self.vec_cumsum_gammas[q]) + + return map_accept / float(setup.n) + + +# ------------------------- +# Hepers +# ------------------------- + +def compute_quantities(vecy, matA, vecx, lbd, vec_gammas): + """ + """ + + # residual error + vecu = vecy - matA @ vecx + + # dual scaling + beta_dual = np.sort(np.abs(matA.T @ vecu))[::-1] + beta_dual = np.cumsum(beta_dual) / np.cumsum(lbd * vec_gammas) + vecu /= np.max(beta_dual) + + pval = primal_func(vecy, matA @ vecx, vecx, lbd, vec_gammas) + dval = dual_func(vecy, np.linalg.norm(vecy, 2)**2, vecu) + + gap = np.abs(pval - dval) + + return vecu, gap + + +# ------------------------- +# Xps +# ------------------------- + +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd +i_xp = 0 +for i_dic in range(setup.nb_dic): + for i_seq, seq in enumerate(setup.list_sequence): + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + + f, ax = plt.subplots(1, 1) + mat_results = np.zeros((setup.n, setup.n)) + + for rep in range(setup.n_rep): + i_xp += 1 + print(f"xp {i_xp} / {nb_xp}") + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq], + setup.m / (10 * setup.n) + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + + # ---- 3. XP ---- + + vecu, gap = compute_quantities( + vecy, matA, mat_sol[i_dic, i_seq, i_ratio, rep, :], ratio * lbd_max, vec_gammas + ) + + # ---- 3c. Testing sphere ---- + test = DebugTest_p(np.cumsum(vec_gammas)) + + Atu = matA.T @ vecu + rgap = np.sqrt(2 * gap) + + # 4. Computing duality when taking into account the output of screening rules + mat_results += test.apply_test(Atu, gap, ratio * lbd_max, vec_gammas, 0.) / setup.n_rep + + # [i_ratio, i_seq] + heatmap = ax.pcolor(mat_results, cmap='viridis') + # ax.imshow(mat_results, cmap='viridis') + plt.colorbar(heatmap) + ax.set_title(f"{setup.list_dic[i_dic]} -- {setup.list_sequence[i_seq]} -- lbd/lbd_max={ratio}") + + if not args.noshow: + plt.draw() + plt.pause(0.001) + + if args.save: + filename = f"figs/viztestp/setup{args.id}_{setup.list_dic[i_dic]}_seq{i_seq}_lbd{i_ratio}.pdf" + plt.savefig(filename, bbox_inches='tight') + +if not args.noshow: + plt.show() diff --git a/experiments/SIAM/xp_0_balls/xpparams.py b/experiments/SIAM/xp_0_balls/xpparams.py new file mode 100644 index 0000000000000000000000000000000000000000..0402fc413f9ee508fbb570ae8845fe0448cfdd9f --- /dev/null +++ b/experiments/SIAM/xp_0_balls/xpparams.py @@ -0,0 +1,10 @@ +import numpy as np + +# Algorithmic parameters +stopping_gap = 1e-14 + +# -- Screening parameter -- +# vec_offsets = np.linspace(0, setup.max_offset, setup.nb_point) +nb_point = 2000 +max_offset = 2 +vec_offsets = max_offset * np.logspace(-7., .0, num=nb_point) \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/figs/xp0_gaussian 0..eps b/experiments/SIAM/xp_1_balls/figs/xp0_gaussian 0..eps new file mode 100644 index 0000000000000000000000000000000000000000..f6dc3de1fcf9dc961a2982e9970265f1abef7242 --- /dev/null +++ b/experiments/SIAM/xp_1_balls/figs/xp0_gaussian 0..eps @@ -0,0 +1,11905 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: xp0_gaussian 0..eps +%%Creator: Matplotlib v3.4.3, https://matplotlib.org/ +%%CreationDate: Mon Sep 6 16:59:19 2021 +%%Orientation: portrait +%%BoundingBox: -337 165 950 627 +%%HiResBoundingBox: -337.720313 165.787500 949.720313 626.212500 +%%EndComments +%%BeginProlog +/mpldict 14 dict def +mpldict begin +/_d { bind def } bind def +/m { moveto } _d +/l { lineto } _d +/r { rlineto } _d +/c { curveto } _d +/cl { closepath } _d +/ce { closepath eofill } _d +/box { + m + 1 index 0 r + 0 exch r + neg 0 r + cl + } _d +/clipbox { + box + clip + newpath + } _d +/sc { setcachedevice } _d +%!PS-Adobe-3.0 Resource-Font +%%Creator: Converted from TrueType to Type 3 by Matplotlib. +10 dict begin +/FontName /CMUSerif-Roman def +/PaintType 0 def +/FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def +/FontBBox [-2324 -723 2982 1915] def +/FontType 3 def +/Encoding [/space /percent /hyphen /zero /one /two /three /four /six /eight /c /d /e /f /i /n /o /r /s /t /z] def +/CharStrings 22 dict dup begin +/.notdef 0 def +/space{681 0 0 0 0 0 sc +ce} _d +/percent{1705 0 115 -115 1589 1536 sc +115 1124 m +115 1241 145 1339 205 1418 c +265 1497 335 1536 416 1536 c +465 1536 514 1514 563 1470 c +674 1365 801 1312 946 1313 c +1110 1313 1240 1378 1335 1507 c +1352 1526 1366 1536 1378 1536 c +1389 1536 1398 1532 1406 1523 c +1415 1515 1419 1506 1419 1495 c +1419 1487 1414 1475 1403 1458 c +367 -84 l +352 -105 338 -115 326 -115 c +315 -115 306 -111 297 -102 c +289 -94 285 -85 285 -74 c +285 -65 291 -51 303 -33 c +1223 1337 l +1221 1339 l +1150 1291 1059 1267 948 1268 c +843 1268 740 1297 639 1354 c +668 1283 682 1206 682 1122 c +682 1007 656 910 605 830 c +554 751 491 711 416 711 c +335 711 265 750 205 827 c +145 905 115 1004 115 1124 c + +256 1291 m +247 1243 242 1187 242 1122 c +242 1058 247 1002 256 954 c +265 907 277 871 290 846 c +304 821 320 802 339 787 c +358 773 373 764 384 761 c +395 758 407 756 418 756 c +474 756 523 791 566 860 c +609 930 631 1018 631 1124 c +631 1228 609 1315 566 1385 c +523 1456 474 1491 418 1491 c +406 1491 394 1489 382 1486 c +371 1483 356 1474 338 1459 c +320 1445 304 1426 290 1401 c +277 1376 265 1340 256 1291 c + +1022 299 m +1022 416 1052 514 1112 593 c +1172 672 1242 711 1323 711 c +1397 711 1460 671 1511 591 c +1563 511 1589 413 1589 297 c +1589 182 1563 85 1512 5 c +1461 -75 1398 -115 1323 -115 c +1242 -115 1172 -76 1112 2 c +1052 80 1022 179 1022 299 c + +1163 466 m +1154 417 1149 361 1149 297 c +1149 233 1154 177 1163 129 c +1173 81 1185 45 1198 20 c +1212 -4 1228 -23 1246 -37 c +1265 -52 1280 -61 1291 -64 c +1303 -68 1314 -70 1325 -70 c +1381 -70 1430 -35 1473 34 c +1516 104 1538 192 1538 299 c +1538 403 1516 490 1473 560 c +1430 631 1381 666 1325 666 c +1313 666 1301 664 1289 660 c +1278 657 1263 648 1245 633 c +1228 619 1212 600 1198 575 c +1185 551 1173 515 1163 466 c + +ce} _d +/hyphen{681 0 20 381 565 502 sc +20 381 m +20 502 l +565 502 l +565 381 l +20 381 l + +ce} _d +/zero{1024 0 80 -45 942 1364 sc +80 655 m +80 856 105 1011 156 1120 c +227 1283 345 1364 512 1364 c +547 1364 583 1359 620 1349 c +657 1340 699 1317 746 1280 c +793 1243 831 1195 860 1135 c +915 1019 942 859 942 655 c +942 456 917 302 866 193 c +792 34 673 -45 510 -45 c +449 -45 387 -29 324 2 c +262 33 211 87 172 162 c +111 275 80 439 80 655 c + +250 680 m +250 474 257 330 272 248 c +289 159 320 96 365 57 c +411 19 459 0 510 0 c +565 0 615 20 660 61 c +706 102 736 167 750 256 c +765 343 773 485 772 680 c +772 870 765 1003 752 1079 c +734 1168 701 1230 653 1265 c +606 1301 558 1319 510 1319 c +492 1319 473 1316 454 1311 c +435 1306 412 1295 385 1280 c +358 1265 333 1238 312 1200 c +291 1162 276 1114 266 1057 c +255 983 250 857 250 680 c + +ce} _d +/one{1024 0 182 0 858 1364 sc +182 1169 m +182 1233 l +346 1233 470 1277 555 1364 c +578 1364 592 1361 596 1356 c +600 1351 602 1336 602 1311 c +602 162 l +602 121 612 95 632 82 c +652 69 706 63 793 63 c +858 63 l +858 0 l +810 4 699 6 526 6 c +353 6 242 4 195 0 c +195 63 l +260 63 l +346 63 399 69 420 81 c +441 94 451 121 451 162 c +451 1223 l +380 1187 290 1169 182 1169 c + +ce} _d +/two{1024 0 102 0 920 1364 sc +102 0 m +102 25 103 41 105 48 c +108 55 114 65 125 76 c +518 514 l +661 675 733 826 733 967 c +733 1058 709 1137 661 1202 c +614 1267 546 1300 459 1300 c +399 1300 344 1282 293 1245 c +242 1208 205 1157 182 1092 c +186 1093 195 1094 209 1094 c +243 1094 269 1083 288 1062 c +307 1041 317 1016 317 987 c +317 950 305 923 281 905 c +258 888 234 879 211 879 c +202 879 191 880 178 882 c +166 884 150 894 131 913 c +112 932 102 959 102 993 c +102 1088 138 1174 210 1250 c +283 1326 374 1364 485 1364 c +610 1364 714 1327 796 1252 c +879 1178 920 1083 920 967 c +920 926 914 887 901 850 c +889 813 875 781 858 752 c +842 723 812 686 768 640 c +724 594 684 555 649 522 c +614 489 556 438 477 369 c +260 158 l +629 158 l +749 158 814 163 823 174 c +836 193 851 254 868 356 c +920 356 l +862 0 l +102 0 l + +ce} _d +/three{1024 0 86 -45 936 1364 sc +86 276 m +86 317 98 347 121 366 c +144 385 171 395 201 395 c +232 395 259 385 281 364 c +304 344 315 316 315 281 c +315 243 302 213 275 192 c +249 171 217 163 180 168 c +213 113 259 74 319 49 c +380 24 438 12 494 12 c +553 12 606 37 653 88 c +701 139 725 226 725 350 c +725 455 704 538 663 599 c +622 660 562 690 481 690 c +391 690 l +370 690 357 691 351 693 c +345 695 342 702 342 713 c +342 726 352 734 373 737 c +394 737 420 739 453 743 c +532 746 593 781 635 850 c +673 914 692 992 692 1083 c +692 1166 672 1225 632 1260 c +593 1295 547 1313 496 1313 c +448 1313 398 1303 345 1283 c +292 1263 252 1231 223 1186 c +308 1186 350 1152 350 1083 c +350 1053 340 1028 321 1008 c +302 989 277 979 246 979 c +216 979 191 988 171 1007 c +151 1026 141 1052 141 1085 c +141 1163 176 1229 245 1283 c +315 1337 401 1364 504 1364 c +605 1364 693 1337 768 1284 c +843 1231 881 1163 881 1081 c +881 1000 854 927 801 861 c +748 795 679 748 594 721 c +698 700 781 655 843 584 c +905 514 936 436 936 350 c +936 243 894 151 810 72 c +726 -6 623 -45 500 -45 c +387 -45 289 -14 208 47 c +127 108 86 185 86 276 c + +ce} _d +/four{1024 0 57 0 965 1387 sc +57 338 m +57 401 l +686 1362 l +697 1379 710 1387 727 1386 c +742 1386 752 1383 755 1377 c +758 1371 760 1356 760 1333 c +760 401 l +965 401 l +965 338 l +760 338 l +760 160 l +760 121 768 95 784 82 c +801 69 844 63 915 63 c +958 63 l +958 0 l +902 4 809 6 680 6 c +551 6 459 4 403 0 c +403 63 l +446 63 l +517 63 560 69 577 81 c +594 94 602 120 602 160 c +602 338 l +57 338 l + +115 401 m +614 401 l +614 1165 l +115 401 l + +ce} _d +/six{1024 0 86 -45 936 1364 sc +86 647 m +86 862 141 1035 250 1166 c +359 1298 484 1364 625 1364 c +707 1364 771 1343 816 1301 c +862 1260 885 1207 885 1143 c +885 1108 875 1082 854 1067 c +833 1052 812 1044 791 1044 c +766 1044 744 1052 725 1069 c +706 1086 696 1109 696 1139 c +696 1200 734 1231 809 1231 c +774 1286 714 1313 629 1313 c +603 1313 577 1309 550 1301 c +523 1294 493 1277 458 1252 c +423 1227 393 1194 366 1154 c +339 1114 317 1056 298 981 c +279 906 270 819 270 721 c +270 672 l +326 807 411 875 526 874 c +641 874 738 830 817 743 c +896 656 936 547 936 418 c +936 285 895 175 812 87 c +729 -1 630 -45 514 -45 c +462 -45 412 -34 365 -12 c +318 9 273 45 229 94 c +186 143 151 215 125 310 c +99 405 86 517 86 647 c + +274 463 m +274 329 286 230 311 166 c +315 155 321 143 330 128 c +339 113 352 96 367 77 c +383 58 404 43 430 30 c +456 18 484 12 514 12 c +605 12 673 56 717 145 c +740 194 752 286 752 420 c +752 557 740 650 715 700 c +673 785 609 827 524 827 c +467 827 418 807 378 768 c +339 729 311 683 296 630 c +281 577 274 522 274 463 c + +ce} _d +/eight{1024 0 86 -45 936 1364 sc +86 309 m +86 462 184 587 381 686 c +296 743 246 780 231 797 c +171 864 141 939 141 1022 c +141 1117 177 1198 249 1264 c +322 1331 409 1364 512 1364 c +610 1364 696 1336 770 1279 c +844 1222 881 1149 881 1059 c +881 932 798 826 633 741 c +742 673 810 625 836 596 c +903 522 936 438 936 344 c +936 235 894 142 810 67 c +726 -8 626 -45 510 -45 c +397 -45 298 -12 213 54 c +128 120 86 205 86 309 c + +188 309 m +188 224 220 154 283 97 c +347 40 423 12 512 12 c +598 12 673 37 737 86 c +802 135 834 197 834 270 c +834 299 829 325 819 350 c +810 375 795 397 776 416 c +757 436 742 450 730 459 c +719 468 702 481 680 496 c +428 655 l +268 566 188 451 188 309 c + +231 1102 m +231 1037 265 981 334 936 c +588 772 l +723 851 791 947 791 1059 c +791 1132 763 1192 708 1240 c +653 1289 587 1313 510 1313 c +435 1313 369 1293 314 1253 c +259 1214 231 1163 231 1102 c + +ce} _d +/c{909 0 70 -23 850 918 sc +200 112 m +113 203 70 313 70 442 c +70 572 113 684 198 777 c +283 871 389 918 514 918 c +597 918 670 898 733 858 c +796 819 827 765 827 698 c +827 668 818 644 800 627 c +783 610 760 602 733 602 c +704 602 681 611 664 628 c +647 646 639 669 639 696 c +639 708 641 720 645 732 c +649 744 658 756 673 769 c +688 782 709 789 735 791 c +686 841 615 866 520 866 c +519 866 517 866 516 866 c +447 866 383 833 326 768 c +269 703 240 595 240 446 c +240 368 249 300 268 243 c +287 186 313 143 344 114 c +375 85 406 63 437 49 c +468 36 498 29 528 29 c +662 29 752 101 797 244 c +801 257 810 264 823 264 c +841 264 850 257 850 244 c +850 237 847 225 842 208 c +837 191 826 168 809 141 c +792 114 772 88 748 64 c +725 41 692 20 650 3 c +609 -14 562 -23 510 -23 c +390 -23 287 22 200 112 c + +ce} _d +/d{1136 0 70 -23 1079 1421 sc +70 440 m +70 570 115 680 206 770 c +297 860 403 905 526 905 c +630 905 716 863 784 778 c +784 1221 l +784 1272 775 1303 757 1316 c +740 1329 696 1335 625 1335 c +625 1399 l +920 1421 l +920 178 l +920 127 929 95 946 82 c +964 69 1008 63 1079 63 c +1079 0 l +778 -23 l +778 113 l +707 23 616 -22 504 -23 c +387 -23 285 22 199 112 c +113 202 70 311 70 440 c + +240 438 m +240 311 260 217 299 154 c +354 67 425 23 514 23 c +615 23 696 71 756 166 c +771 189 779 215 778 242 c +778 662 l +778 689 771 714 756 737 c +700 819 626 860 535 860 c +440 860 362 816 303 729 c +261 664 240 567 240 438 c + +ce} _d +/e{909 0 57 -23 850 918 sc +57 451 m +57 580 98 690 181 781 c +264 872 364 918 483 918 c +603 918 694 879 756 801 c +819 723 850 628 850 516 c +850 495 847 483 842 479 c +837 475 822 473 799 473 c +227 473 l +227 334 248 231 289 166 c +346 75 423 29 520 29 c +533 29 548 30 564 33 c +580 36 604 43 637 54 c +670 66 700 88 729 119 c +758 150 780 191 797 240 c +801 259 810 269 823 268 c +841 268 850 260 850 244 c +850 232 843 212 830 185 c +817 158 799 129 774 97 c +749 65 713 37 665 13 c +618 -11 565 -23 508 -23 c +388 -23 283 22 192 113 c +102 204 57 317 57 451 c + +229 516 m +715 516 l +715 545 712 575 707 607 c +702 639 693 677 678 721 c +664 766 640 802 607 830 c +574 858 532 872 483 872 c +461 872 438 867 414 858 c +391 849 365 833 336 810 c +307 787 283 750 263 699 c +243 648 232 587 229 516 c + +ce} _d +/f{624 0 68 0 731 1444 sc +68 819 m +68 883 l +229 883 l +229 1118 l +229 1219 262 1299 327 1357 c +393 1415 466 1444 547 1444 c +600 1444 644 1430 679 1401 c +714 1372 731 1339 731 1300 c +731 1274 723 1252 707 1235 c +692 1218 670 1210 641 1210 c +614 1210 592 1219 576 1236 c +561 1253 553 1274 553 1298 c +553 1342 573 1371 614 1384 c +593 1393 571 1398 547 1399 c +498 1399 454 1374 415 1323 c +377 1272 358 1205 358 1120 c +358 883 l +598 883 l +598 819 l +365 819 l +365 160 l +365 121 373 95 389 82 c +406 69 449 63 520 63 c +563 63 l +563 0 l +508 4 422 6 303 6 c +286 6 265 6 239 5 c +214 4 184 3 149 2 c +115 1 89 0 70 0 c +70 63 l +143 63 187 67 204 76 c +221 85 229 112 229 156 c +229 819 l +68 819 l + +ce} _d +/i{567 0 68 0 506 1370 sc +68 0 m +68 63 l +141 63 185 67 202 76 c +219 85 227 112 227 156 c +227 707 l +227 758 218 789 201 801 c +184 813 143 819 76 819 c +76 883 l +362 905 l +362 154 l +362 113 369 88 384 78 c +399 68 439 63 506 63 c +506 0 l +367 4 296 6 293 6 c +274 6 199 4 68 0 c + +154 1262 m +154 1289 164 1314 185 1336 c +206 1359 232 1370 262 1370 c +292 1370 318 1360 339 1339 c +360 1319 371 1293 371 1261 c +371 1230 360 1204 339 1183 c +318 1163 292 1153 262 1153 c +231 1153 205 1164 184 1186 c +164 1208 154 1233 154 1262 c + +ce} _d +/n{1136 0 66 0 1096 905 sc +66 0 m +66 63 l +139 63 183 67 200 76 c +217 85 225 112 225 156 c +225 705 l +225 756 216 787 198 800 c +181 813 137 819 66 819 c +66 883 l +354 905 l +354 690 l +418 833 519 905 657 905 c +760 905 831 880 872 829 c +902 795 920 759 926 721 c +933 683 936 615 936 516 c +936 125 l +937 96 949 79 971 72 c +993 66 1035 63 1096 63 c +1096 0 l +957 4 880 6 866 6 c +855 6 778 4 635 0 c +635 63 l +708 63 752 67 769 76 c +786 85 795 112 795 156 c +795 633 l +795 702 784 757 763 798 c +742 839 702 860 643 860 c +572 860 509 830 452 771 c +395 712 367 632 367 532 c +367 156 l +367 112 375 85 392 76 c +409 67 454 63 526 63 c +526 0 l +387 4 310 6 297 6 c +286 6 209 4 66 0 c + +ce} _d +/o{1024 0 57 -23 965 918 sc +192 110 m +102 199 57 309 57 438 c +57 568 101 680 189 775 c +278 870 385 918 512 918 c +636 918 742 871 831 776 c +920 682 965 569 965 438 c +965 309 920 200 830 111 c +741 22 634 -23 510 -23 c +389 -23 283 21 192 110 c + +227 455 m +227 322 244 226 279 166 c +332 75 410 29 512 29 c +563 29 609 43 651 70 c +694 97 727 134 750 180 c +780 240 795 332 795 455 c +795 586 777 681 741 739 c +688 828 611 872 510 872 c +466 872 422 860 379 837 c +336 814 302 780 276 735 c +243 675 227 582 227 455 c + +ce} _d +/r{800 0 57 0 745 905 sc +57 0 m +57 63 l +130 63 174 67 191 76 c +208 85 217 112 217 156 c +217 705 l +217 756 208 787 190 800 c +173 813 128 819 57 819 c +57 883 l +342 905 l +342 680 l +361 739 391 791 432 836 c +473 882 527 905 594 905 c +638 905 674 893 702 868 c +731 843 745 814 745 780 c +745 750 736 727 717 712 c +699 697 679 690 657 690 c +632 690 611 698 594 713 c +577 729 569 751 569 778 c +569 795 573 809 580 822 c +588 835 595 844 601 849 c +607 854 612 857 616 858 c +613 859 606 860 594 860 c +519 860 459 822 416 747 c +373 672 352 582 352 475 c +352 160 l +352 121 360 95 376 82 c +393 69 437 63 508 63 c +551 63 l +551 0 l +496 4 410 6 291 6 c +274 6 253 6 227 5 c +201 4 171 3 137 2 c +103 1 76 0 57 0 c + +ce} _d +/s{806 0 68 -23 737 918 sc +68 27 m +68 297 l +68 312 68 323 69 328 c +70 333 72 338 76 342 c +80 346 86 348 94 348 c +103 348 110 346 113 342 c +117 338 120 328 123 313 c +144 219 176 147 220 97 c +265 48 327 23 408 23 c +485 23 542 40 581 74 c +620 108 639 153 639 209 c +639 309 568 372 426 397 c +344 414 286 427 252 438 c +218 449 186 467 156 492 c +97 540 68 598 68 666 c +68 734 94 793 145 843 c +197 893 280 918 395 918 c +472 918 536 899 588 860 c +603 872 615 883 623 893 c +641 910 655 918 664 918 c +675 918 681 914 683 907 c +685 900 686 887 686 868 c +686 662 l +686 647 686 636 685 631 c +684 626 682 621 678 617 c +674 614 668 612 659 612 c +644 612 636 618 635 631 c +624 796 544 879 395 879 c +314 879 256 863 220 832 c +184 801 166 765 166 723 c +166 700 171 679 182 661 c +193 644 206 630 220 619 c +235 609 255 599 282 589 c +309 580 330 573 346 570 c +363 567 387 562 418 555 c +527 534 605 502 651 457 c +708 400 737 335 737 262 c +737 181 710 114 655 59 c +600 4 518 -23 408 -23 c +319 -23 244 7 182 66 c +174 58 167 50 161 43 c +155 36 151 32 148 29 c +146 26 145 24 144 22 c +143 21 142 19 141 18 c +114 -9 97 -23 90 -23 c +79 -23 73 -19 71 -12 c +69 -5 68 8 68 27 c + +ce} _d +/t{794 0 39 -23 680 1260 sc +39 819 m +39 864 l +102 867 154 890 195 934 c +237 979 265 1028 279 1083 c +294 1138 302 1197 303 1260 c +354 1260 l +354 883 l +647 883 l +647 819 l +354 819 l +354 250 l +354 103 400 29 492 29 c +531 29 564 49 590 89 c +616 130 629 186 629 258 c +629 371 l +680 371 l +680 254 l +680 180 663 115 629 60 c +595 5 544 -23 477 -23 c +452 -23 428 -20 403 -13 c +379 -7 351 4 319 20 c +288 37 262 65 242 105 c +223 146 213 195 213 254 c +213 819 l +39 819 l + +ce} _d +/z{909 0 57 0 821 883 sc +57 29 m +57 38 63 51 76 66 c +647 838 l +414 838 l +306 838 234 818 199 778 c +164 739 144 664 137 553 c +86 553 l +109 883 l +764 883 l +779 883 790 883 796 882 c +802 881 807 879 811 874 c +815 870 817 864 817 856 c +817 848 811 836 799 821 c +229 51 l +471 51 l +584 51 660 75 698 122 c +737 169 761 256 770 383 c +821 383 l +786 0 l +111 0 l +89 0 74 1 67 4 c +60 7 57 16 57 29 c + +ce} _d +end readonly def + +/BuildGlyph { + exch begin + CharStrings exch + 2 copy known not {pop /.notdef} if + true 3 1 roll get exec + end +} _d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} _d + +FontName currentdict end definefont pop +%!PS-Adobe-3.0 Resource-Font +%%Creator: Converted from TrueType to Type 3 by Matplotlib. +10 dict begin +/FontName /Cmmi10 def +/PaintType 0 def +/FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def +/FontBBox [-70 -512 2146 1536] def +/FontType 3 def +/Encoding [/lambda /R /period /slash] def +/CharStrings 5 dict dup begin +/.notdef 0 def +/lambda{1194 0 104 -27 1126 1421 sc +104 35 m +104 55 113 74 131 92 c +707 657 l +504 1227 l +488 1270 471 1305 453 1330 c +436 1355 410 1368 377 1368 c +362 1368 354 1377 354 1395 c +355 1403 359 1409 364 1414 c +369 1419 376 1421 385 1421 c +528 1421 615 1379 645 1294 c +1061 133 l +1079 75 1097 36 1116 16 c +1123 6 1126 -1 1126 -4 c +1126 -17 1121 -23 1110 -23 c +999 -23 l +965 -13 938 17 918 66 c +731 590 l +236 8 l +211 -15 189 -27 170 -27 c +153 -27 137 -21 124 -9 c +111 3 104 18 104 35 c + +ce} _d +/R{1554 0 80 -45 1546 1399 sc +100 0 m +87 0 80 9 80 27 c +81 30 82 36 84 44 c +86 53 89 59 92 64 c +96 69 101 72 106 72 c +189 72 248 77 281 86 c +298 92 311 110 319 141 c +600 1266 l +603 1279 604 1289 604 1294 c +604 1309 596 1317 580 1319 c +554 1324 505 1327 432 1327 c +419 1327 412 1336 412 1354 c +413 1357 414 1363 416 1371 c +418 1380 421 1386 424 1391 c +428 1396 433 1399 438 1399 c +1059 1399 l +1108 1399 1160 1393 1213 1382 c +1266 1371 1315 1353 1360 1328 c +1405 1304 1441 1272 1470 1231 c +1499 1191 1513 1144 1513 1090 c +1513 1021 1490 960 1445 906 c +1400 852 1342 807 1273 770 c +1204 734 1136 709 1071 694 c +1124 675 1168 644 1202 601 c +1236 559 1253 510 1253 455 c +1253 448 1253 442 1252 438 c +1252 435 1252 431 1251 426 c +1235 244 l +1234 217 1232 195 1231 176 c +1230 157 1229 142 1229 131 c +1229 94 1234 64 1245 41 c +1256 19 1278 8 1311 8 c +1354 8 1391 28 1423 67 c +1456 107 1477 150 1487 197 c +1493 209 1500 215 1507 215 c +1526 215 l +1539 215 1546 206 1546 188 c +1536 149 1520 111 1498 76 c +1477 41 1449 12 1416 -11 c +1383 -34 1348 -45 1309 -45 c +1229 -45 1161 -27 1104 8 c +1048 44 1020 100 1020 176 c +1020 205 1023 230 1028 252 c +1073 434 l +1078 451 1081 470 1081 492 c +1081 549 1062 593 1023 625 c +985 658 937 674 879 674 c +627 674 l +492 133 l +489 122 487 112 487 104 c +487 90 495 82 512 80 c +538 75 587 72 659 72 c +673 72 680 63 680 45 c +675 26 672 13 669 8 c +666 3 658 0 645 0 c +100 0 l + +639 727 m +866 727 l +1015 727 1127 765 1202 840 c +1237 875 1264 919 1284 972 c +1305 1026 1315 1080 1315 1133 c +1315 1184 1300 1223 1270 1252 c +1241 1281 1204 1300 1160 1311 c +1117 1322 1069 1327 1016 1327 c +879 1327 l +842 1327 817 1324 805 1317 c +793 1311 782 1291 772 1257 c +639 727 l + +ce} _d +/period{567 0 172 0 397 225 sc +172 113 m +172 144 183 170 206 192 c +229 214 255 225 285 225 c +304 225 322 220 340 210 c +358 200 372 186 382 168 c +392 150 397 132 397 113 c +397 83 386 57 364 34 c +342 11 316 0 285 0 c +255 0 229 11 206 34 c +183 57 172 83 172 113 c + +ce} _d +/slash{1024 0 115 -512 907 1536 sc +115 -471 m +115 -467 116 -464 117 -463 c +829 1511 l +832 1519 836 1525 843 1529 c +850 1534 857 1536 866 1536 c +878 1536 888 1532 895 1525 c +903 1518 907 1508 907 1495 c +907 1487 l +195 -487 l +187 -504 174 -512 156 -512 c +145 -512 135 -508 127 -500 c +119 -492 115 -482 115 -471 c + +ce} _d +end readonly def + +/BuildGlyph { + exch begin + CharStrings exch + 2 copy known not {pop /.notdef} if + true 3 1 roll get exec + end +} _d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} _d + +FontName currentdict end definefont pop +%!PS-Adobe-3.0 Resource-Font +%%Creator: Converted from TrueType to Type 3 by Matplotlib. +10 dict begin +/FontName /TeX-ectt1000 def +/PaintType 0 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox [-9 -244 575 837] def +/FontType 3 def +/Encoding [/A /C /hyphen /O /one /R /S /two /three] def +/CharStrings 10 dict dup begin +/.notdef 0 def +/A{525 0 26 1 498 624 sc +87 62 m +87 63 91 82 99 117 c +104 138 112 170 121 213 c +128 245 139 293 154 357 c +169 422 181 470 188 502 c +190 510 193 522 197 539 c +201 556 204 569 206 578 c +210 598 216 611 223 616 c +230 621 243 624 262 624 c +284 624 l +297 622 307 614 313 600 c +314 597 315 593 316 588 c +317 584 318 579 319 573 c +320 568 321 564 322 561 c +323 554 326 542 330 527 c +334 512 337 501 338 493 c +345 462 356 415 370 352 c +385 290 396 243 403 212 c +425 117 l +433 82 437 63 437 62 c +439 62 443 62 448 62 c +454 63 458 63 461 63 c +464 63 468 62 472 61 c +477 60 481 59 484 57 c +493 51 498 42 497 30 c +496 18 491 9 481 4 c +476 2 464 1 443 1 c +364 1 l +341 1 327 2 322 5 c +313 11 308 20 308 32 c +309 45 314 54 324 59 c +328 61 342 62 366 62 c +354 114 l +342 166 l +182 166 l +170 114 l +158 62 l +182 62 196 61 200 59 c +210 54 215 45 215 32 c +216 20 211 11 202 5 c +197 2 183 1 160 1 c +81 1 l +60 1 48 2 43 4 c +33 9 28 18 27 30 c +26 42 31 51 40 57 c +44 60 48 61 53 62 c +58 63 64 63 73 62 c +82 62 86 62 87 62 c + +196 227 m +328 227 l +312 295 l +286 416 l +271 490 l +263 542 l +261 542 l +253 490 l +238 416 l +212 295 l +196 227 l + +ce} _d +/C{525 0 32 -12 485 625 sc +411 574 m +412 575 415 582 420 593 c +424 604 429 611 434 616 c +441 622 449 624 459 622 c +470 621 477 616 481 607 c +483 602 484 595 484 586 c +484 558 l +484 451 l +484 450 484 447 484 442 c +484 438 484 435 484 433 c +484 432 484 429 483 425 c +483 422 482 419 481 417 c +480 415 479 413 477 410 c +475 408 473 406 470 405 c +466 402 459 401 450 401 c +434 401 423 406 418 415 c +415 420 413 427 412 438 c +411 445 409 454 405 466 c +396 490 383 511 365 528 c +348 545 327 556 304 560 c +275 565 247 559 220 542 c +193 525 171 502 154 474 c +121 419 107 356 111 285 c +114 234 127 188 148 149 c +183 86 227 54 280 51 c +289 50 300 51 315 54 c +328 57 339 62 349 67 c +365 78 376 87 382 94 c +397 112 407 130 411 149 c +412 152 412 156 412 163 c +413 170 414 175 415 180 c +416 185 418 190 421 193 c +426 200 435 203 448 203 c +455 203 460 203 463 202 c +474 199 481 191 483 180 c +484 175 484 167 483 157 c +482 144 479 129 473 113 c +458 74 431 44 393 21 c +356 -1 315 -11 272 -10 c +235 -9 200 3 168 26 c +136 49 110 77 90 112 c +51 179 35 253 41 334 c +46 400 63 457 92 504 c +113 538 138 566 169 587 c +200 608 233 620 270 623 c +283 624 296 623 311 621 c +326 618 342 614 360 607 c +379 598 396 587 411 574 c + +ce} _d +/hyphen{525 0 85 186 440 247 sc +109 246 m +112 247 125 247 149 247 c +227 247 l +351 247 l +391 247 l +413 247 l +426 245 434 237 436 222 c +439 207 434 197 423 190 c +419 187 410 186 395 186 c +343 186 l +178 186 l +131 186 l +117 186 108 187 105 188 c +92 193 85 203 86 218 c +87 234 95 243 109 246 c + +ce} _d +/O{525 0 56 -10 468 623 sc +219 623 m +224 623 230 623 235 623 c +241 623 248 623 255 623 c +262 623 268 623 272 623 c +315 623 348 620 369 615 c +392 609 410 600 423 588 c +440 571 452 541 459 497 c +463 473 466 436 467 387 c +468 362 468 324 468 274 c +468 202 464 146 457 106 c +452 69 441 43 424 26 c +406 9 376 -3 334 -8 c +317 -9 291 -10 256 -10 c +217 -10 187 -8 168 -5 c +137 1 113 13 96 30 c +88 39 81 53 75 72 c +68 95 63 125 60 160 c +57 206 56 258 56 315 c +56 376 57 421 60 451 c +63 489 67 518 74 539 c +80 558 87 571 94 580 c +99 586 104 591 111 596 c +118 601 124 604 129 607 c +134 610 142 612 152 614 c +162 616 169 617 173 618 c +177 619 185 620 197 621 c +209 622 216 623 219 623 c + +126 249 m +127 243 127 234 127 221 c +130 178 133 150 135 139 c +139 114 145 97 153 86 c +163 71 179 62 200 57 c +208 55 220 53 236 52 c +243 51 252 51 265 51 c +321 51 357 64 373 89 c +378 97 383 112 388 134 c +392 155 395 180 396 211 c +397 238 398 278 398 332 c +398 388 396 430 393 458 c +389 497 379 523 364 538 c +353 548 337 555 316 559 c +305 561 288 562 265 562 c +246 562 232 562 223 561 c +215 561 204 559 189 554 c +174 549 163 542 155 533 c +142 518 134 491 130 452 c +127 423 126 380 126 323 c +126 249 l + +ce} _d +/one{525 0 103 1 443 625 sc +242 483 m +241 482 238 480 231 475 c +225 470 220 467 217 464 c +196 451 173 443 147 440 c +126 439 113 444 108 456 c +105 465 l +104 482 109 493 122 498 c +126 500 132 501 139 502 c +147 503 152 503 155 504 c +175 509 193 519 209 535 c +222 548 234 564 244 583 c +245 585 247 589 249 594 c +252 599 254 604 256 607 c +259 611 261 614 264 617 c +271 622 278 624 287 623 c +296 622 303 617 308 610 c +311 605 312 598 312 588 c +312 564 l +312 459 l +312 62 l +388 62 l +409 62 421 61 426 59 c +437 54 443 45 443 31 c +443 18 437 8 426 3 c +422 2 412 1 397 1 c +340 1 l +205 1 l +137 1 l +122 2 114 11 111 26 c +108 42 114 53 127 59 c +132 61 144 62 165 62 c +242 62 l +242 483 l + +ce} _d +/R{525 0 20 -26 522 612 sc +86 551 m +57 551 l +46 551 39 552 34 555 c +25 561 20 570 21 583 c +22 596 27 605 38 610 c +41 611 50 612 65 612 c +114 612 l +210 612 l +253 612 285 609 306 603 c +343 592 374 570 399 539 c +424 508 435 474 433 436 c +432 422 429 406 423 389 c +416 373 408 358 397 345 c +380 325 363 312 348 305 c +363 291 373 282 376 278 c +395 255 405 231 406 204 c +406 197 406 180 405 153 c +405 127 406 110 407 103 c +408 82 412 67 419 59 c +422 54 427 52 432 52 c +438 52 442 55 445 60 c +448 66 451 76 452 91 c +452 100 453 107 455 111 c +460 121 471 126 487 126 c +502 126 512 122 517 114 c +520 109 522 102 522 94 c +522 83 520 71 517 59 c +512 42 504 28 493 15 c +468 -12 436 -18 397 -2 c +389 1 382 5 375 11 c +370 15 366 19 362 24 c +359 29 356 34 353 40 c +350 47 348 52 346 56 c +344 60 342 66 341 74 c +340 82 339 88 338 91 c +337 94 337 101 336 110 c +336 119 336 125 336 127 c +336 130 336 136 336 146 c +336 157 336 163 336 164 c +336 195 334 216 329 226 c +325 233 321 240 316 245 c +300 262 278 273 250 276 c +201 276 l +156 276 l +156 62 l +185 62 l +196 62 203 61 208 58 c +217 52 222 43 221 30 c +221 17 216 9 205 4 c +201 2 188 1 165 1 c +79 1 l +54 1 40 2 35 5 c +26 10 21 19 21 31 c +21 44 26 53 35 58 c +40 61 47 62 57 62 c +86 62 l +86 551 l + +156 337 m +213 337 l +244 337 269 340 287 347 c +309 356 327 369 342 387 c +357 405 364 425 363 447 c +363 453 362 461 359 470 c +356 479 352 488 345 497 c +337 508 327 518 316 526 c +307 532 298 537 288 541 c +278 545 267 548 254 549 c +241 550 231 551 223 551 c +216 552 204 552 188 551 c +172 551 161 551 156 551 c +156 337 l + +ce} _d +/S{525 0 47 -13 477 637 sc +119 36 m +118 33 117 28 114 19 c +111 10 108 3 105 -1 c +98 -8 89 -11 78 -10 c +67 -9 60 -4 55 5 c +53 10 52 17 52 26 c +52 52 l +52 157 l +52 181 57 196 67 201 c +71 203 77 204 86 204 c +103 204 114 199 119 189 c +121 185 122 179 122 170 c +122 166 123 159 124 150 c +128 129 137 111 152 96 c +172 76 199 63 233 56 c +291 45 336 53 368 81 c +374 86 380 93 387 102 c +394 112 398 122 401 132 c +409 157 407 181 396 205 c +385 229 368 247 345 259 c +334 265 311 272 277 279 c +270 280 259 283 244 286 c +230 289 219 292 212 294 c +181 302 162 308 155 311 c +132 320 112 335 93 355 c +84 364 76 375 70 387 c +60 409 54 429 52 446 c +49 485 60 521 86 553 c +112 585 144 606 183 616 c +233 630 282 627 330 606 c +334 604 350 594 378 577 c +379 580 380 585 383 594 c +386 603 389 610 392 614 c +399 621 407 624 418 623 c +429 622 437 617 442 608 c +444 603 445 596 445 587 c +445 561 l +445 457 l +445 433 440 418 431 413 c +427 410 420 409 411 409 c +395 409 384 414 379 423 c +377 426 375 430 374 434 c +373 439 373 444 372 449 c +371 455 371 459 370 462 c +363 488 352 509 336 525 c +317 544 293 555 264 560 c +235 565 209 563 185 552 c +169 546 155 537 143 524 c +132 512 124 498 121 483 c +115 458 119 436 134 415 c +149 394 168 380 193 372 c +199 370 211 367 230 362 c +237 360 249 357 265 353 c +281 350 293 347 300 346 c +330 339 347 334 352 333 c +377 324 400 310 420 290 c +428 283 436 272 445 259 c +466 226 475 189 470 149 c +466 109 450 75 423 46 c +405 27 382 12 353 1 c +329 -8 299 -12 262 -9 c +223 -7 191 -0 165 11 c +152 16 137 24 119 36 c + +ce} _d +/two{525 0 45 1 474 635 sc +402 62 m +402 79 403 90 406 95 c +411 104 422 109 438 109 c +449 109 457 107 462 102 c +469 97 472 86 472 70 c +472 37 l +472 25 470 17 466 12 c +461 5 450 1 433 1 c +383 1 l +145 1 l +90 1 l +73 1 61 6 55 16 c +48 29 50 41 59 53 c +62 56 67 61 74 66 c +81 72 86 76 87 77 c +137 119 l +148 128 163 141 184 158 c +205 176 221 189 232 198 c +271 230 299 255 317 272 c +361 315 388 354 397 391 c +407 434 401 470 379 501 c +353 538 314 558 261 561 c +225 564 194 557 168 538 c +155 529 144 517 136 503 c +131 497 129 492 129 487 c +129 485 130 482 133 477 c +136 473 137 470 138 469 c +145 448 141 431 124 418 c +112 408 98 405 83 410 c +68 415 58 425 54 440 c +50 454 51 472 58 495 c +66 524 81 549 104 570 c +127 591 154 606 184 614 c +235 628 286 626 338 608 c +391 590 429 559 452 514 c +459 501 464 485 469 466 c +472 448 473 428 471 406 c +468 381 461 356 448 332 c +429 295 398 257 354 219 c +342 208 316 187 276 154 c +227 113 190 82 165 62 c +402 62 l + +ce} _d +/three{525 0 42 -33 487 627 sc +153 530 m +160 522 163 512 161 499 c +160 487 155 477 147 470 c +130 456 112 455 94 466 c +75 478 68 498 75 526 c +84 567 115 595 169 611 c +190 617 213 621 239 622 c +302 625 353 613 394 585 c +407 576 418 566 427 553 c +444 527 452 500 450 471 c +449 442 440 415 423 389 c +410 369 391 351 367 335 c +404 319 433 294 454 260 c +476 227 484 191 479 153 c +476 136 471 120 464 105 c +457 89 447 74 434 60 c +421 47 410 37 402 32 c +342 -11 269 -22 182 -1 c +139 10 107 26 86 46 c +77 55 71 62 67 67 c +64 70 61 76 57 84 c +52 94 48 105 45 116 c +43 127 43 139 46 151 c +49 163 55 172 65 178 c +70 181 75 182 78 183 c +93 186 106 183 117 174 c +128 165 134 152 133 137 c +133 132 131 126 128 119 c +125 114 123 111 123 109 c +123 108 126 104 131 96 c +144 83 162 72 187 63 c +246 44 297 46 340 69 c +358 79 372 90 382 103 c +391 114 398 125 402 136 c +406 145 409 157 410 171 c +410 176 409 184 408 193 c +404 221 390 244 367 263 c +344 282 318 294 289 298 c +280 299 258 300 224 300 c +209 300 201 300 198 301 c +184 303 176 312 175 328 c +174 336 176 343 180 349 c +185 356 191 359 198 360 c +207 362 221 363 239 364 c +258 365 271 366 279 367 c +300 370 319 378 335 391 c +344 399 352 407 357 414 c +382 447 388 477 376 504 c +367 526 347 543 317 554 c +297 561 273 563 245 561 c +220 560 197 555 178 547 c +169 542 160 536 153 531 c +153 530 l + +ce} _d +end readonly def + +/BuildGlyph { + exch begin + CharStrings exch + 2 copy known not {pop /.notdef} if + true 3 1 roll get exec + end +} _d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} _d + +FontName currentdict end definefont pop +%!PS-Adobe-3.0 Resource-Font +%%Creator: Converted from TrueType to Type 3 by Matplotlib. +10 dict begin +/FontName /Cmr10 def +/PaintType 0 def +/FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def +/FontBBox [-90 -512 2066 1536] def +/FontType 3 def +/Encoding [/a /m /zero /three /five /x /eight /equal] def +/CharStrings 9 dict dup begin +/.notdef 0 def +/a{1024 0 82 -23 1010 918 sc +82 201 m +82 282 114 348 178 399 c +242 450 319 486 408 507 c +498 528 583 539 664 539 c +664 623 l +664 662 655 700 638 737 c +621 774 596 805 563 828 c +530 852 494 864 455 864 c +364 864 295 844 248 803 c +274 803 295 793 312 773 c +329 754 338 731 338 705 c +338 678 328 654 309 635 c +290 616 267 606 240 606 c +213 606 189 616 170 635 c +151 654 141 678 141 705 c +141 777 174 830 239 865 c +304 900 376 918 455 918 c +510 918 566 906 622 882 c +678 859 724 825 759 781 c +795 737 813 686 813 627 c +813 166 l +813 139 819 115 830 92 c +841 70 859 59 883 59 c +906 59 922 70 933 93 c +944 116 950 140 950 166 c +950 297 l +1010 297 l +1010 166 l +1010 135 1002 106 986 78 c +970 51 948 29 921 12 c +894 -4 865 -12 834 -12 c +794 -12 759 3 730 34 c +701 65 685 102 682 145 c +657 94 619 53 570 22 c +521 -8 468 -23 412 -23 c +360 -23 309 -15 258 0 c +208 15 166 39 132 72 c +99 105 82 148 82 201 c + +248 201 m +248 153 266 113 301 80 c +336 47 378 31 426 31 c +470 31 510 42 546 64 c +582 86 611 116 632 154 c +653 192 664 232 664 274 c +664 487 l +602 487 538 477 473 456 c +408 436 355 404 312 361 c +269 318 248 264 248 201 c + +ce} _d +/m{1706 0 61 0 1669 905 sc +61 0 m +61 72 l +108 72 146 76 176 83 c +206 90 221 108 221 137 c +221 696 l +221 733 215 759 204 775 c +193 792 178 802 157 805 c +136 809 104 811 61 811 c +61 883 l +358 905 l +358 705 l +385 764 426 812 479 849 c +533 886 592 905 655 905 c +812 905 905 841 932 713 c +959 770 999 817 1052 852 c +1105 887 1162 905 1225 905 c +1287 905 1339 895 1381 875 c +1424 855 1456 824 1477 783 c +1498 742 1509 691 1509 629 c +1509 137 l +1509 108 1524 90 1554 83 c +1585 76 1623 72 1669 72 c +1669 0 l +1200 0 l +1200 72 l +1247 72 1285 76 1315 83 c +1345 90 1360 108 1360 137 c +1360 623 l +1360 692 1350 747 1331 789 c +1312 831 1272 852 1212 852 c +1133 852 1068 820 1017 757 c +966 694 940 622 940 541 c +940 137 l +940 108 955 90 985 83 c +1015 76 1053 72 1100 72 c +1100 0 l +631 0 l +631 72 l +678 72 716 76 746 83 c +776 90 791 108 791 137 c +791 623 l +791 690 781 744 762 787 c +743 830 703 852 643 852 c +564 852 498 820 447 757 c +396 694 371 622 371 541 c +371 137 l +371 108 386 90 416 83 c +446 76 484 72 530 72 c +530 0 l +61 0 l + +ce} _d +/zero{1024 0 80 -45 942 1364 sc +512 -45 m +345 -45 231 24 170 161 c +110 299 80 463 80 653 c +80 772 91 883 112 988 c +134 1093 177 1181 241 1254 c +306 1327 396 1364 512 1364 c +602 1364 676 1342 733 1298 c +790 1254 834 1197 864 1127 c +894 1058 914 983 925 903 c +936 824 942 740 942 653 c +942 536 931 426 909 323 c +888 221 845 134 782 62 c +719 -9 629 -45 512 -45 c + +512 8 m +588 8 645 47 682 125 c +719 203 742 289 751 384 c +760 479 764 579 764 686 c +764 789 760 883 751 970 c +742 1057 719 1135 682 1205 c +645 1276 589 1311 512 1311 c +435 1311 377 1276 340 1205 c +303 1134 280 1056 271 969 c +262 883 258 789 258 686 c +258 610 260 538 263 471 c +267 404 277 334 293 262 c +309 191 335 130 370 81 c +406 32 453 8 512 8 c + +ce} _d +/three{1024 0 86 -45 936 1364 sc +195 158 m +227 111 270 77 324 54 c +378 31 436 20 498 20 c +577 20 634 54 667 121 c +700 189 717 266 717 352 c +717 391 713 429 706 468 c +699 507 688 543 671 576 c +654 609 631 636 602 656 c +573 676 538 686 496 686 c +360 686 l +348 686 342 692 342 705 c +342 723 l +342 734 348 739 360 739 c +473 748 l +521 748 561 766 592 802 c +624 838 647 882 662 933 c +677 985 684 1034 684 1081 c +684 1146 669 1200 638 1242 c +607 1284 561 1305 498 1305 c +446 1305 396 1295 349 1275 c +302 1256 264 1226 236 1186 c +239 1187 241 1187 243 1187 c +245 1188 247 1188 250 1188 c +281 1188 306 1177 327 1156 c +348 1135 358 1109 358 1079 c +358 1050 348 1024 327 1003 c +306 982 281 971 250 971 c +220 971 194 982 173 1003 c +152 1024 141 1050 141 1079 c +141 1138 159 1189 194 1232 c +229 1275 275 1308 330 1330 c +386 1353 442 1364 498 1364 c +539 1364 583 1358 629 1345 c +675 1333 717 1315 754 1292 c +791 1269 822 1240 845 1204 c +869 1168 881 1127 881 1081 c +881 1024 868 971 842 922 c +817 873 782 831 737 796 c +692 761 643 734 590 717 c +649 706 706 683 759 650 c +812 617 855 574 887 522 c +920 470 936 414 936 354 c +936 279 915 210 874 149 c +833 88 778 41 711 6 c +644 -28 573 -45 498 -45 c +434 -45 370 -33 305 -8 c +241 16 188 52 147 101 c +106 150 86 208 86 276 c +86 310 97 338 120 361 c +143 384 171 395 205 395 c +227 395 247 390 265 379 c +284 369 298 355 308 336 c +319 317 324 297 324 276 c +324 243 312 215 289 192 c +266 169 238 158 205 158 c +195 158 l + +ce} _d +/five{1024 0 102 -45 920 1364 sc +178 233 m +192 193 213 157 242 124 c +271 91 306 66 345 47 c +385 29 426 20 469 20 c +568 20 636 58 673 135 c +710 212 729 305 729 414 c +729 461 728 501 726 533 c +725 566 720 597 713 627 c +700 675 678 717 646 753 c +615 789 576 807 530 807 c +484 807 444 800 411 786 c +378 772 352 756 331 737 c +310 718 292 699 276 678 c +260 657 250 646 246 645 c +223 645 l +220 645 215 647 210 651 c +205 656 203 660 203 664 c +203 1348 l +203 1351 205 1355 209 1358 c +214 1362 218 1364 223 1364 c +229 1364 l +321 1320 419 1298 522 1298 c +623 1298 721 1320 815 1364 c +821 1364 l +826 1364 830 1362 834 1359 c +838 1356 840 1352 840 1348 c +840 1329 l +840 1322 839 1319 836 1319 c +789 1257 731 1209 660 1174 c +590 1139 517 1122 442 1122 c +387 1122 331 1130 274 1145 c +274 758 l +319 795 360 821 395 836 c +431 852 477 860 532 860 c +607 860 675 838 734 795 c +794 752 840 695 872 625 c +904 556 920 485 920 412 c +920 330 900 254 859 184 c +819 114 764 58 695 17 c +626 -24 550 -45 469 -45 c +402 -45 340 -28 283 7 c +227 42 183 88 150 147 c +118 206 102 268 102 334 c +102 365 112 390 132 409 c +152 428 177 438 207 438 c +237 438 262 428 282 408 c +303 389 313 364 313 334 c +313 305 303 280 282 259 c +262 239 237 229 207 229 c +202 229 197 229 191 230 c +185 231 181 232 178 233 c + +ce} _d +/x{1079 0 25 0 1057 883 sc +25 0 m +25 72 l +77 72 126 82 172 102 c +218 123 257 153 289 193 c +475 430 l +233 745 l +209 775 183 793 154 800 c +126 807 86 811 35 811 c +35 883 l +461 883 l +461 811 l +443 811 426 807 410 799 c +395 791 387 779 387 764 c +387 759 389 752 393 745 c +557 532 l +680 690 l +697 710 705 730 705 750 c +705 767 699 781 688 793 c +677 805 663 811 645 811 c +645 883 l +1022 883 l +1022 811 l +969 811 920 801 873 780 c +827 760 788 730 756 690 c +594 483 l +856 137 l +882 107 909 89 937 82 c +965 75 1005 72 1057 72 c +1057 0 l +631 0 l +631 72 l +648 72 664 76 679 84 c +694 92 702 104 702 119 c +702 125 700 131 696 137 c +512 381 l +365 193 l +350 176 342 156 342 133 c +342 116 348 102 359 90 c +370 78 384 72 399 72 c +399 0 l +25 0 l + +ce} _d +/eight{1024 0 86 -45 936 1364 sc +86 311 m +86 393 113 465 167 528 c +221 591 290 644 375 686 c +299 735 l +252 766 214 806 185 857 c +156 908 141 962 141 1018 c +141 1083 158 1142 192 1195 c +227 1248 272 1289 329 1319 c +386 1349 447 1364 512 1364 c +573 1364 631 1352 687 1327 c +744 1302 790 1267 826 1221 c +863 1175 881 1120 881 1057 c +881 1011 870 968 848 929 c +827 890 797 854 759 823 c +722 792 682 765 639 743 c +756 668 l +810 633 853 586 886 529 c +919 472 936 411 936 348 c +936 274 916 207 876 146 c +837 85 784 38 719 5 c +654 -28 585 -45 512 -45 c +441 -45 373 -31 307 -2 c +242 27 188 68 147 122 c +106 177 86 240 86 311 c + +197 311 m +197 257 212 208 241 163 c +271 118 310 83 359 58 c +408 33 459 20 512 20 c +591 20 663 43 728 89 c +793 136 825 197 825 274 c +825 300 820 326 809 351 c +799 377 785 400 766 421 c +748 442 728 460 705 473 c +430 651 l +387 628 348 600 312 565 c +277 530 249 491 228 448 c +207 405 197 359 197 311 c + +338 936 m +586 776 l +643 809 690 850 727 897 c +764 944 782 998 782 1057 c +782 1103 769 1145 743 1183 c +718 1222 684 1252 643 1273 c +602 1294 557 1305 510 1305 c +469 1305 427 1297 385 1281 c +343 1265 308 1241 281 1209 c +254 1178 240 1141 240 1098 c +240 1034 273 980 338 936 c + +ce} _d +/equal{1591 0 115 272 1477 752 sc +154 272 m +143 272 133 276 126 285 c +119 294 115 303 115 313 c +115 324 119 334 126 342 c +133 350 143 354 154 354 c +1440 354 l +1450 354 1459 350 1466 342 c +1473 334 1477 324 1477 313 c +1477 303 1473 294 1466 285 c +1459 276 1450 272 1440 272 c +154 272 l + +154 670 m +143 670 133 674 126 682 c +119 690 115 700 115 711 c +115 721 119 730 126 739 c +133 748 143 752 154 752 c +1440 752 l +1450 752 1459 748 1466 739 c +1473 730 1477 721 1477 711 c +1477 700 1473 690 1466 682 c +1459 674 1450 670 1440 670 c +154 670 l + +ce} _d +end readonly def + +/BuildGlyph { + exch begin + CharStrings exch + 2 copy known not {pop /.notdef} if + true 3 1 roll get exec + end +} _d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} _d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-337.72 165.788 translate +1287.441 460.425 0 0 clipbox +gsave +0 0 m +1287.440625 0 l +1287.440625 460.425 l +0 460.425 l +cl +1.000 setgray +fill +grestore +gsave +74.29375 60.825 m +466.742708 60.825 l +466.742708 429.865625 l +74.29375 429.865625 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +103.828 60.825 o +grestore +gsave +85.828477 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.926563 moveto +/one glyphshow +11.000000 0.926563 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 7.565625 moveto +/hyphen glyphshow +27.286777 7.565625 moveto +/four glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +201.941 60.825 o +grestore +gsave +183.940717 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/three glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +300.053 60.825 o +grestore +gsave +282.052956 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/two glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +398.165 60.825 o +grestore +gsave +380.165196 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/one glyphshow +grestore +0.600 setlinewidth +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +82.0624 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +88.6307 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +94.3204 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +99.3391 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +133.363 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +150.64 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +162.898 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +172.406 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +180.175 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +186.743 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +192.433 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +197.451 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +231.475 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +248.752 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +261.01 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +270.518 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +278.287 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +284.855 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +290.545 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +295.564 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +329.588 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +346.864 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +359.122 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +368.63 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +376.399 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +382.967 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +388.657 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +393.676 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +427.7 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +444.977 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +457.235 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +466.743 60.825 o +grestore +gsave +260.518229 12.246875 translate +0.000000 rotate +/Cmmi10 26.0 selectfont +0.000000 0.234375 moveto +/R glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 64.443 o +grestore +/CMUSerif-Roman 22.000 selectfont +gsave + +56.293750 56.810233 translate +0.000000 rotate +0.000000 0 m /zero glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 136.804 o +grestore +gsave + +45.293750 129.171140 translate +0.000000 rotate +0.000000 0 m /two glyphshow +11.000000 0 m /zero glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 209.165 o +grestore +gsave + +45.293750 201.532047 translate +0.000000 rotate +0.000000 0 m /four glyphshow +11.000000 0 m /zero glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 281.526 o +grestore +gsave + +45.293750 273.892953 translate +0.000000 rotate +0.000000 0 m /six glyphshow +11.000000 0 m /zero glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 353.887 o +grestore +gsave + +45.293750 346.253860 translate +0.000000 rotate +0.000000 0 m /eight glyphshow +11.000000 0 m /zero glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +74.2938 426.248 o +grestore +gsave + +34.293750 418.614767 translate +0.000000 rotate +0.000000 0 m /one glyphshow +11.000000 0 m /zero glyphshow +22.000000 0 m /zero glyphshow +grestore +/CMUSerif-Roman 26.000 selectfont +gsave + +25.246875 98.470313 translate +90.000000 rotate +0.000000 0 m /percent glyphshow +21.645508 0 m /space glyphshow +30.291016 0 m /o glyphshow +43.291016 0 m /f glyphshow +51.212891 0 m /space glyphshow +59.858398 0 m /z glyphshow +71.398438 0 m /e glyphshow +82.938477 0 m /r glyphshow +93.094727 0 m /o glyphshow +106.094727 0 m /space glyphshow +114.740234 0 m /e glyphshow +126.280273 0 m /n glyphshow +140.702148 0 m /t glyphshow +150.782227 0 m /r glyphshow +160.938477 0 m /i glyphshow +168.136719 0 m /e glyphshow +179.676758 0 m /s glyphshow +189.909180 0 m /space glyphshow +198.554688 0 m /d glyphshow +212.976562 0 m /e glyphshow +224.516602 0 m /t glyphshow +234.596680 0 m /e glyphshow +246.136719 0 m /c glyphshow +257.676758 0 m /t glyphshow +267.756836 0 m /e glyphshow +279.296875 0 m /d glyphshow +grestore +4.000 setlinewidth +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +392.449 369.041 74.294 60.825 clipbox +74.024686 425.379249 m +96.699951 425.379249 l +97.043516 425.077745 l +119.375216 425.077745 l +119.718781 424.733169 l +135.866318 424.733169 l +136.209882 424.431665 l +144.798998 424.431665 l +145.142563 424.117053 l +153.044549 424.117053 l +153.388113 423.827609 l +154.075243 423.827609 l +154.418807 423.538166 l +160.60297 423.538166 l +160.946535 423.270162 l +164.725746 423.270162 l +165.069311 422.968658 l +174.001991 422.968658 l +174.345555 422.679215 l +175.032685 422.679215 l +175.719814 421.983755 l +183.278235 421.983755 l +183.965365 421.35453 l +184.652494 421.35453 l +184.996059 421.065086 l +186.370317 421.065086 l +186.713882 420.763583 l +188.08814 420.763583 l +189.118834 419.832854 l +189.462399 419.832854 l +190.149528 419.241906 l +194.615868 419.241906 l +194.959433 418.927294 l +199.425773 418.927294 l +199.769337 418.63785 l +200.800031 418.63785 l +201.143596 418.348406 l +201.830725 418.348406 l +202.17429 418.046902 l +203.892113 418.046902 l +204.922807 417.177644 l +205.266371 417.177644 l +205.609936 416.518486 l +206.297065 416.518486 l +206.64063 415.911261 l +207.327759 415.911261 l +207.671324 415.596649 l +208.702017 415.596649 l +209.045582 415.318338 l +210.763405 415.318338 l +211.10697 414.72739 l +211.450534 414.72739 l +212.137664 414.111274 l +212.481228 414.111274 l +212.824793 413.766698 l +215.229745 413.766698 l +215.916874 413.150582 l +218.665391 413.150582 l +219.008956 412.567966 l +219.696085 412.567966 l +220.03965 412.253353 l +220.726779 412.253353 l +221.757473 411.359853 l +224.849555 411.359853 l +225.536684 410.768906 l +225.880248 410.768906 l +226.567378 410.152789 l +226.910942 410.152789 l +227.254507 409.851286 l +227.941636 409.851286 l +228.285201 408.946774 l +228.628765 408.946774 l +229.315895 408.303248 l +230.690153 408.303248 l +231.033718 408.013805 l +232.064412 408.013805 l +232.407976 407.724361 l +233.095105 407.724361 l +233.782235 407.133414 l +234.125799 407.133414 l +234.469364 406.84397 l +234.812929 406.84397 l +235.500058 406.261354 l +236.530752 406.261354 l +236.874316 405.932441 l +237.217881 405.932441 l +237.561446 405.617828 l +237.90501 405.617828 l +238.248575 405.048321 l +238.592139 405.048321 l +238.935704 404.746817 l +239.279269 404.746817 l +239.966398 404.100738 l +240.309963 404.100738 l +240.653527 403.208287 l +240.997092 403.208287 l +241.340656 402.549098 l +242.027786 401.905572 l +242.714915 401.905572 l +243.745609 399.962531 l +244.089173 399.962531 l +244.432738 399.661027 l +244.776303 399.081212 l +245.119867 399.081212 l +246.150561 398.200821 l +246.83769 398.200821 l +247.181255 397.899317 l +247.52482 397.899317 l +248.211949 396.569869 l +249.242643 396.569869 l +249.586207 395.939452 l +250.960466 395.939452 l +251.30403 395.637948 l +251.647595 394.69411 l +252.334724 393.968687 l +253.021853 392.786792 l +253.708983 392.786792 l +254.052547 392.457879 l +254.739677 392.457879 l +255.083241 392.143267 l +255.426806 392.143267 l +256.4575 391.28514 l +257.144629 391.28514 l +257.488194 390.970528 l +257.831758 390.970528 l +258.175323 389.743585 l +258.518887 389.743585 l +258.862452 389.160969 l +259.206017 389.160969 l +260.236711 388.136596 l +260.580275 387.239367 l +261.267404 386.64842 l +261.610969 386.069533 l +262.641663 386.069533 l +263.328792 384.86142 l +264.015921 384.86142 l +264.359486 384.546807 l +265.046615 383.350876 l +265.733744 383.350876 l +267.108003 382.116403 l +267.451568 381.457214 l +267.795132 381.457214 l +268.138697 381.155711 l +268.482261 379.243616 l +268.825826 378.627499 l +269.169391 378.338056 l +270.543649 375.88565 l +270.887214 375.541074 l +271.230778 375.541074 l +271.574343 374.938067 l +271.917908 373.993037 l +272.605037 372.6878 l +272.948601 372.6878 l +273.979295 371.852866 l +274.32286 371.852866 l +274.666425 371.285111 l +275.009989 371.285111 l +275.353554 371.0068 l +276.040683 369.773376 l +276.384248 369.773376 l +276.727812 368.799605 l +277.071377 366.710174 l +277.414942 366.40867 l +277.758506 365.49105 l +278.445635 364.874933 l +279.132765 364.874933 l +279.819894 363.363341 l +280.163459 363.061837 l +281.194152 361.253326 l +281.881282 360.674439 l +282.224846 360.030913 l +282.568411 357.87882 l +282.911976 357.564207 l +283.25554 356.619177 l +283.599105 356.619177 l +283.942669 356.317674 l +284.286234 355.345235 l +284.629799 355.000659 l +284.973363 352.911228 l +285.316928 352.596615 l +286.004057 350.652099 l +286.347622 350.061151 l +286.691186 348.87728 l +287.034751 348.562667 l +287.72188 347.000473 l +288.065445 346.370056 l +288.409009 346.370056 l +288.752574 345.174124 l +289.096139 344.544899 l +289.439703 344.266588 l +290.126833 341.608474 l +291.157526 339.115003 l +291.844656 335.794267 l +292.18822 335.479654 l +292.531785 334.888707 l +293.218914 331.576403 l +293.562479 330.917215 l +293.906043 330.649212 l +294.249608 330.019986 l +294.936737 328.21895 l +295.280302 327.023946 l +295.623866 326.722443 l +295.967431 326.104086 l +296.65456 322.994994 l +296.998125 320.263086 l +297.34169 319.646969 l +297.685254 317.847909 l +298.028819 316.91718 l +298.372383 316.313124 l +298.715948 315.998511 l +299.059513 315.382395 l +299.403077 314.397492 l +299.746642 312.854744 l +300.090207 312.236388 l +300.433771 310.736151 l +300.777336 310.123572 l +301.1209 309.834129 l +301.80803 308.625088 l +303.182288 301.651343 l +303.869417 298.725329 l +304.212982 297.84401 l +304.900111 295.079113 l +305.243676 294.488166 l +305.58724 293.326663 l +306.617934 288.638057 l +306.961499 287.707328 l +307.305064 286.221953 l +307.648628 285.605836 l +307.992193 285.316393 l +309.022887 280.269199 l +310.053581 274.341736 l +310.397145 273.169925 l +311.084274 267.463417 l +311.427839 266.519579 l +312.114968 263.710851 l +312.458533 260.495393 l +313.832791 253.846656 l +314.176356 250.809394 l +314.863485 246.980621 l +315.20705 244.041395 l +316.237744 239.025583 l +316.581308 238.418358 l +317.268438 235.201749 l +317.612002 234.608825 l +318.642696 227.954904 l +319.329825 224.266833 l +320.016955 220.9057 l +320.704084 216.508244 l +321.391213 213.45059 l +321.734778 211.978324 l +322.421907 207.158033 l +323.452601 198.575267 l +324.483295 192.9747 l +325.513988 188.656618 l +325.857553 185.975311 l +326.201118 184.814857 l +327.231812 178.302801 l +327.575376 177.095737 l +329.293199 167.311307 l +329.636764 163.74856 l +330.323893 161.381746 l +331.011022 157.912634 l +331.354587 156.124706 l +332.041716 154.387117 l +332.385281 153.224686 l +332.728846 150.798498 l +333.759539 146.651575 l +334.103104 146.08382 l +334.446669 144.948311 l +334.790233 142.062327 l +335.133798 140.320081 l +335.820927 135.307557 l +336.164492 134.459739 l +336.851621 131.303775 l +337.53875 128.160818 l +338.225879 122.17546 l +338.913009 119.902689 l +339.256573 119.323801 l +339.600138 118.497615 l +339.943703 117.094102 l +340.287267 116.258344 l +340.630832 114.843698 l +340.974396 114.018248 l +341.317961 112.860473 l +341.661526 112.292718 l +343.035784 107.846013 l +343.379349 107.288566 l +344.066478 105.917625 l +344.410043 105.628182 l +344.753607 103.709366 l +345.440736 101.759539 l +345.784301 100.934088 l +347.15856 96.187631 l +347.502124 96.187631 l +348.189253 95.074386 l +348.532818 94.806383 l +349.219947 92.289625 l +349.563512 90.660253 l +349.907077 90.113938 l +350.594206 89.557316 l +350.93777 88.464687 l +351.968464 86.836051 l +352.312029 86.568048 l +352.999158 85.485727 l +353.342723 85.485727 l +353.686287 84.393098 l +354.029852 84.114786 l +354.716981 82.754154 l +355.060546 82.227719 l +355.404111 82.227719 l +355.747675 81.413401 l +356.09124 81.413401 l +356.434804 80.609391 l +357.121934 80.073384 l +357.465498 80.073384 l +357.809063 79.001371 l +358.152627 79.001371 l +358.496192 78.733367 l +358.839757 78.197361 l +359.183321 78.197361 l +359.870451 77.661354 l +360.55758 77.661354 l +360.901144 76.58934 l +361.244709 76.58934 l +361.588274 76.321337 l +361.931838 75.794902 l +362.275403 75.794902 l +362.618968 75.526899 l +363.649661 75.526899 l +365.02392 74.464457 l +365.367485 73.402015 l +366.398178 72.598005 l +366.741743 72.598005 l +367.428872 72.061998 l +369.833825 72.061998 l +370.177389 71.535563 l +370.520954 71.535563 l +370.864518 71.267559 l +371.208083 71.267559 l +371.895212 70.731553 l +372.238777 70.205118 l +372.582342 69.410679 l +372.925906 69.142676 l +373.269471 68.616241 l +374.300165 67.81223 l +374.643729 67.036935 l +375.330859 67.036935 l +376.017988 66.5105 l +376.361552 66.5105 l +376.705117 66.252068 l +377.048682 66.252068 l +377.392246 65.993636 l +377.735811 65.993636 l +378.079375 65.218341 l +379.110069 65.218341 l +379.453634 64.959909 l +380.827892 64.959909 l +381.171457 64.701477 l +381.515022 64.701477 l +381.858586 64.443045 l +467.062612 64.443045 l +467.062612 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 74.294 60.825 clipbox +74.024686 426.24758 m +172.627732 426.24758 l +172.971297 425.979576 l +178.124766 425.979576 l +178.468331 425.711573 l +178.811895 425.711573 l +179.15546 425.39696 l +181.216848 425.39696 l +181.560412 425.082348 l +185.683188 425.082348 l +186.026752 424.804036 l +191.523786 424.804036 l +191.867351 424.545605 l +202.17429 424.545605 l +202.517854 424.230992 l +212.481228 424.230992 l +212.824793 423.952681 l +215.229745 423.952681 l +215.916874 423.424849 l +219.352521 423.424849 l +220.03965 422.888843 l +220.383215 422.888843 l +220.726779 422.610531 l +225.193119 422.610531 l +225.536684 422.3521 l +227.254507 422.3521 l +227.598072 422.084096 l +231.720847 422.084096 l +232.064412 421.769484 l +232.407976 421.769484 l +232.751541 421.491172 l +233.43867 421.491172 l +233.782235 421.189669 l +237.217881 421.189669 l +237.561446 420.370641 l +241.340656 420.370641 l +241.684221 420.121121 l +243.402044 420.121121 l +243.745609 419.862689 l +248.555513 419.862689 l +249.242643 419.326682 l +249.586207 418.769235 l +249.929772 418.769235 l +250.616901 418.20148 l +251.30403 418.20148 l +251.99116 417.664737 l +252.334724 417.664737 l +252.678289 417.386426 l +255.426806 417.386426 l +256.4575 416.560976 l +258.175323 416.560976 l +258.518887 416.004354 l +258.862452 416.004354 l +259.206017 415.726042 l +259.549581 415.726042 l +259.893146 415.458039 l +261.610969 415.458039 l +262.298098 414.890284 l +263.672357 414.890284 l +264.015921 414.600841 l +264.359486 414.600841 l +265.046615 414.044218 l +265.39018 413.474711 l +266.077309 413.474711 l +266.420874 413.185267 l +267.108003 413.185267 l +267.795132 412.658832 l +268.138697 412.658832 l +268.482261 412.380521 l +269.169391 412.380521 l +269.512955 412.091077 l +270.887214 412.091077 l +271.574343 411.543202 l +272.261472 411.543202 l +272.605037 410.973695 l +272.948601 410.973695 l +273.292166 410.436952 l +273.979295 410.436952 l +274.32286 410.168949 l +275.009989 410.168949 l +275.353554 409.642513 l +275.697118 408.794695 l +276.727812 408.794695 l +278.102071 407.730857 l +279.132765 407.730857 l +279.476329 407.11474 l +280.507023 407.11474 l +281.537717 406.298862 l +281.881282 406.298862 l +282.224846 406.030858 l +283.599105 406.030858 l +284.629799 405.23642 l +284.973363 405.23642 l +285.316928 404.958109 l +287.378316 404.958109 l +287.72188 404.679797 l +288.409009 404.679797 l +288.752574 404.411794 l +289.096139 404.411794 l +289.439703 403.554596 l +289.783268 403.276284 l +290.470397 403.276284 l +290.813962 402.430218 l +291.157526 402.430218 l +291.501091 401.883904 l +292.18822 401.883904 l +292.87535 401.336028 l +293.218914 400.788153 l +293.906043 400.788153 l +294.249608 400.208338 l +294.593173 399.940335 l +294.936737 399.940335 l +295.280302 399.347411 l +295.623866 399.057967 l +295.967431 399.057967 l +296.310996 398.50052 l +296.998125 398.50052 l +297.685254 397.972689 l +298.028819 397.416066 l +298.372383 397.137755 l +299.059513 397.137755 l +299.746642 396.581133 l +300.090207 396.581133 l +300.433771 396.313129 l +300.777336 395.709073 l +301.1209 395.709073 l +301.80803 395.151626 l +302.838724 393.475556 l +303.182288 392.593189 l +303.525853 392.057182 l +303.869417 390.953421 l +304.212982 390.685417 l +304.556547 389.899154 l +304.900111 389.620843 l +305.243676 389.620843 l +305.58724 388.481605 l +305.930805 388.481605 l +306.617934 386.830792 l +306.961499 386.830792 l +307.305064 386.270857 l +307.992193 385.714234 l +309.022887 383.694605 l +309.710016 380.855368 l +310.053581 380.587365 l +310.397145 379.692937 l +310.74071 379.692937 l +311.427839 378.320436 l +312.458533 376.699975 l +312.802098 376.699975 l +313.145662 376.431972 l +313.489227 375.874525 l +313.832791 375.874525 l +314.519921 373.064595 l +315.20705 371.979316 l +315.550614 371.711313 l +315.894179 370.563743 l +316.581308 369.983928 l +317.268438 368.857799 l +317.612002 368.589795 l +317.955567 367.163914 l +318.299131 366.559858 l +318.642696 364.828111 l +318.986261 364.003486 l +319.67339 364.003486 l +321.047648 362.867048 l +321.391213 362.867048 l +321.734778 362.276101 l +322.078342 360.855238 l +322.421907 360.298616 l +322.765472 359.503441 l +323.109036 359.201937 l +323.452601 357.796672 l +323.796165 355.824476 l +324.13973 355.824476 l +324.483295 353.896914 l +325.513988 351.303088 l +325.857553 350.735333 l +326.201118 350.735333 l +328.60607 342.66055 l +329.293199 340.739158 l +329.636764 339.641819 l +330.323893 338.536305 l +330.667458 336.56411 l +331.354587 335.182037 l +331.698152 333.552665 l +332.385281 332.427463 l +332.728846 331.053946 l +333.415975 329.693313 l +334.103104 329.146999 l +334.790233 327.504742 l +335.133798 326.109048 l +335.820927 322.012985 l +336.164492 320.898916 l +336.508056 318.96804 l +336.851621 318.141853 l +338.569444 310.886799 l +339.943703 303.398066 l +340.287267 302.292743 l +340.630832 300.619666 l +340.974396 299.79348 l +341.317961 298.174415 l +341.661526 297.616968 l +342.00509 297.358537 l +342.348655 296.510718 l +343.035784 294.044763 l +343.379349 293.220138 l +344.066478 288.837753 l +344.410043 288.013127 l +345.440736 281.954604 l +346.814995 274.329573 l +347.502124 272.410757 l +347.845689 270.157673 l +348.876383 266.305128 l +349.219947 266.026816 l +349.563512 265.211762 l +350.250641 261.889242 l +350.594206 259.173031 l +351.281335 256.105821 l +351.6249 255.536313 l +351.968464 254.422244 l +354.716981 237.535699 l +355.060546 235.895194 l +356.778369 224.420739 l +357.121934 221.975652 l +357.465498 220.335972 l +357.809063 217.860446 l +358.152627 216.797268 l +358.496192 215.157499 l +359.526886 207.066495 l +359.870451 205.674115 l +360.214015 203.775178 l +360.901144 201.340324 l +361.588274 195.38738 l +362.275403 189.354183 l +362.618968 186.384794 l +362.962532 184.514648 l +363.306097 183.690023 l +363.993226 180.16023 l +365.02392 172.246491 l +365.711049 169.016537 l +366.054614 165.748133 l +366.398178 164.404423 l +367.085308 158.997958 l +367.772437 154.733618 l +368.459566 152.339334 l +368.803131 149.646124 l +369.146695 148.570417 l +369.49026 145.877206 l +369.833825 144.515838 l +370.864518 139.204581 l +371.208083 138.668574 l +371.551648 136.75867 l +371.895212 135.934044 l +373.9566 126.926113 l +374.643729 125.094494 l +374.987294 124.308967 l +375.674423 121.157871 l +376.361552 118.750983 l +377.048682 114.27532 l +377.392246 112.972929 l +377.735811 110.895243 l +378.42294 109.832801 l +378.766505 109.574369 l +379.110069 107.198493 l +379.797199 105.120146 l +380.484328 102.524936 l +380.827892 101.998501 l +381.171457 100.696111 l +381.858586 99.403291 l +382.202151 96.780027 l +382.545716 96.263163 l +382.88928 95.247259 l +383.232845 93.667953 l +383.576409 92.633566 l +383.919974 90.823223 l +384.263539 90.056839 l +384.950668 87.452718 l +385.294233 87.452718 l +385.637797 86.131844 l +386.668491 84.100036 l +387.012056 83.5736 l +387.699185 80.987962 l +388.042749 80.72953 l +388.729879 79.446283 l +389.073443 78.93833 l +389.417008 78.68881 l +389.760573 77.654423 l +390.104137 77.155382 l +390.791266 76.628947 l +391.134831 75.566505 l +391.478396 75.04007 l +391.82196 74.772066 l +392.852654 72.454431 l +393.539783 71.937568 l +393.883348 71.937568 l +394.914042 71.162272 l +395.944736 71.162272 l +396.2883 70.645409 l +397.318994 70.645409 l +398.349688 69.094818 l +398.693253 68.836386 l +399.380382 68.836386 l +399.723947 68.319522 l +401.785334 68.319522 l +403.159593 67.285795 l +404.190287 67.285795 l +404.533851 66.5105 l +404.877416 66.5105 l +405.564545 65.993636 l +406.251674 65.993636 l +408.313062 64.443045 l +467.062612 64.443045 l +467.062612 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 74.294 60.825 clipbox +74.024686 426.24758 m +152.700984 426.24758 l +153.044549 425.989148 l +197.70795 425.989148 l +198.051514 425.721144 l +212.481228 425.721144 l +212.824793 425.462713 l +219.696085 425.462713 l +220.03965 425.204281 l +221.757473 425.204281 l +222.101038 424.92597 l +232.407976 424.92597 l +232.751541 424.667538 l +235.500058 424.667538 l +235.843622 424.399535 l +236.187187 424.399535 l +236.530752 424.150014 l +236.874316 424.150014 l +237.217881 423.900494 l +243.058479 423.900494 l +243.402044 423.622183 l +245.463432 423.622183 l +245.806996 423.343871 l +249.586207 423.343871 l +249.929772 423.094351 l +255.426806 423.094351 l +255.77037 422.844831 l +269.512955 422.844831 l +269.85652 422.586399 l +270.200085 422.586399 l +270.543649 422.336879 l +271.230778 422.336879 l +271.574343 422.068875 l +278.445635 422.068875 l +278.7892 421.810443 l +282.911976 421.810443 l +283.25554 421.54244 l +284.629799 421.54244 l +284.973363 421.274437 l +285.660492 421.274437 l +286.004057 421.024916 l +287.378316 421.024916 l +287.72188 420.775396 l +288.065445 420.238653 l +289.783268 420.238653 l +290.126833 419.97065 l +291.157526 419.97065 l +291.501091 419.712218 l +292.87535 419.712218 l +293.562479 419.213177 l +294.249608 419.213177 l +294.593173 418.954745 l +299.746642 418.954745 l +300.090207 418.455704 l +302.838724 418.455704 l +303.182288 418.197273 l +305.58724 418.197273 l +305.930805 417.947752 l +310.74071 417.947752 l +311.084274 417.68932 l +312.114968 417.68932 l +312.458533 416.626142 l +312.802098 416.626142 l +313.145662 416.376622 l +313.489227 416.376622 l +313.832791 416.127102 l +314.176356 415.600666 l +314.519921 414.79592 l +315.20705 414.259177 l +315.550614 414.259177 l +315.894179 413.702555 l +316.924873 413.702555 l +317.612002 413.185691 l +318.642696 413.185691 l +319.329825 412.648948 l +319.67339 412.648948 l +320.016955 412.390516 l +320.360519 411.623472 l +321.391213 410.838605 l +322.765472 410.838605 l +323.452601 410.301862 l +323.796165 410.301862 l +324.826859 409.507424 l +325.170424 409.507424 l +325.857553 408.999471 l +326.201118 408.999471 l +326.888247 408.482608 l +327.231812 408.482608 l +327.575376 408.204297 l +328.949635 408.204297 l +329.293199 407.677862 l +329.636764 407.41943 l +329.980329 407.41943 l +330.667458 406.920389 l +331.011022 406.115643 l +331.354587 405.857211 l +332.728846 405.857211 l +333.07241 405.072344 l +333.415975 404.80434 l +333.759539 403.222242 l +334.103104 402.705379 l +334.446669 402.446947 l +335.820927 402.446947 l +336.164492 401.930083 l +336.508056 401.671651 l +336.851621 400.886124 l +337.195186 400.886124 l +337.53875 400.627692 l +338.569444 400.627692 l +338.913009 400.090949 l +339.256573 399.812638 l +339.943703 399.812638 l +340.287267 399.295115 l +340.630832 398.212057 l +341.317961 397.17767 l +341.661526 396.909666 l +342.348655 395.893762 l +342.69222 395.644242 l +343.035784 395.644242 l +343.379349 395.117806 l +343.722913 395.117806 l +344.066478 394.839495 l +344.410043 394.839495 l +344.753607 394.340455 l +345.097172 393.574071 l +345.440736 393.315639 l +345.784301 392.558166 l +346.127866 392.558166 l +346.814995 390.755998 l +347.15856 389.702392 l +347.502124 389.702392 l +347.845689 389.156077 l +348.189253 389.156077 l +348.876383 388.639214 l +349.219947 388.639214 l +349.907077 386.829531 l +350.594206 386.829531 l +350.93777 386.580011 l +351.281335 386.033696 l +352.312029 383.734544 l +352.655594 383.235503 l +354.029852 380.093243 l +355.060546 378.531684 l +355.747675 376.42381 l +356.434804 376.42381 l +357.121934 375.887067 l +357.809063 374.585337 l +358.496192 373.539982 l +358.839757 373.539982 l +359.526886 372.207404 l +359.870451 371.699452 l +360.55758 371.162709 l +361.244709 370.079651 l +361.588274 368.488641 l +361.931838 368.23021 l +362.275403 367.463826 l +362.618968 367.463826 l +363.649661 365.127047 l +364.336791 363.020571 l +364.680355 362.512618 l +365.02392 360.415789 l +365.367485 359.639834 l +365.711049 359.37183 l +366.054614 358.088583 l +366.398178 356.267932 l +366.741743 355.999929 l +367.085308 354.151223 l +368.459566 350.278224 l +368.803131 349.491961 l +369.146695 347.902348 l +369.49026 347.652827 l +369.833825 346.360008 l +370.177389 345.842484 l +370.864518 343.016897 l +371.208083 341.71377 l +371.551648 341.187335 l +371.895212 340.429863 l +372.582342 338.111568 l +373.269471 335.007009 l +373.613035 333.981533 l +373.9566 333.473581 l +374.300165 332.707197 l +375.330859 329.362766 l +375.674423 327.034163 l +376.017988 325.491824 l +376.705117 321.631849 l +377.048682 320.09017 l +377.392246 317.972065 l +377.735811 316.899315 l +378.079375 315.338492 l +378.42294 314.820969 l +378.766505 311.728038 l +379.110069 309.888905 l +379.453634 307.330001 l +380.140763 304.742382 l +380.484328 303.975998 l +380.827892 301.935278 l +381.858586 298.592827 l +382.202151 297.308919 l +382.88928 294.207078 l +383.232845 292.950564 l +383.576409 291.112167 l +383.919974 287.777967 l +384.607103 284.195568 l +384.950668 283.410701 l +385.294233 282.135705 l +385.637797 281.350838 l +386.668491 275.753132 l +387.35562 272.436755 l +387.699185 270.119121 l +388.042749 268.853696 l +388.729879 264.745521 l +389.073443 262.963233 l +389.760573 261.430465 l +390.104137 259.91552 l +390.447702 256.554586 l +392.165525 247.116049 l +392.50909 244.040281 l +393.196219 240.724565 l +393.539783 237.898978 l +394.570477 232.552113 l +395.601171 224.591555 l +395.944736 222.550835 l +396.97543 214.634834 l +397.318994 214.135793 l +397.662559 211.345852 l +398.006123 210.329948 l +400.75464 194.044123 l +401.098205 192.769787 l +401.44177 188.944798 l +401.785334 187.697196 l +402.128899 184.916826 l +403.159593 179.356086 l +403.503157 176.557894 l +403.846722 175.292469 l +404.190287 175.042949 l +404.533851 173.037874 l +404.877416 172.039793 l +406.595239 158.726099 l +406.938804 155.4556 l +407.969497 150.705801 l +408.656627 147.907609 l +409.687321 144.654932 l +410.37445 139.370447 l +410.718014 137.873325 l +411.405144 134.371129 l +411.748708 132.874006 l +413.122967 124.871532 l +413.466531 124.372491 l +413.810096 123.37441 l +414.497225 119.132563 l +414.84079 117.884961 l +415.184355 117.1364 l +415.527919 115.389758 l +416.215048 111.139 l +416.558613 109.142837 l +417.245742 103.377134 l +417.589307 101.37206 l +417.932871 98.627336 l +418.276436 97.379734 l +418.620001 95.383571 l +418.963565 94.38549 l +419.994259 89.644603 l +420.681388 87.64844 l +421.024953 87.149399 l +423.086341 82.658032 l +423.429905 80.91139 l +424.117035 79.164747 l +424.460599 78.166666 l +424.804164 78.166666 l +425.147729 77.667625 l +425.834858 74.67338 l +426.521987 73.425779 l +427.209116 72.926738 l +427.552681 72.926738 l +427.896246 72.427697 l +428.23981 72.427697 l +428.583375 71.429616 l +428.926939 71.180095 l +429.270504 71.180095 l +429.614069 70.681055 l +430.644762 70.681055 l +430.988327 70.431534 l +432.362586 67.43729 l +432.70615 67.43729 l +433.393279 66.189688 l +434.423973 65.441127 l +434.767538 65.441127 l +435.111103 65.191606 l +435.798232 65.191606 l +436.141796 64.942086 l +436.485361 64.942086 l +436.828926 64.692566 l +437.17249 64.692566 l +437.516055 64.443045 l +467.062612 64.443045 l +467.062612 64.443045 l +stroke +grestore +2 setlinecap +[] 0 setdash +0.173 0.627 0.173 setrgbcolor +gsave +392.449 369.041 74.294 60.825 clipbox +-1 406.414051 m +170.909909 406.414051 l +171.253474 406.124608 l +188.08814 406.124608 l +188.431705 405.809995 l +189.118834 405.809995 l +189.462399 405.495382 l +198.051514 405.495382 l +198.395079 405.217071 l +219.696085 405.217071 l +220.03965 404.915567 l +221.413908 404.915567 l +221.757473 404.626124 l +236.874316 404.626124 l +237.217881 404.35812 l +239.966398 404.35812 l +240.309963 404.056617 l +252.334724 404.056617 l +253.021853 403.4405 l +254.052547 403.4405 l +254.396112 403.138996 l +254.739677 403.138996 l +255.083241 402.837493 l +257.831758 402.837493 l +258.175323 402.456646 l +262.641663 402.456646 l +262.985227 402.167202 l +264.703051 402.167202 l +265.046615 401.85259 l +265.39018 401.85259 l +265.733744 401.508014 l +267.795132 401.508014 l +268.138697 401.21857 l +270.543649 401.21857 l +271.230778 400.638755 l +271.574343 400.638755 l +271.917908 400.349312 l +273.292166 400.349312 l +273.635731 400.047808 l +275.353554 400.047808 l +275.697118 399.718895 l +278.445635 399.718895 l +278.7892 399.404282 l +283.599105 399.404282 l +283.942669 398.824467 l +284.973363 398.824467 l +285.316928 398.509854 l +286.347622 398.509854 l +286.691186 398.195242 l +287.034751 398.195242 l +287.72188 397.579125 l +289.096139 397.579125 l +289.439703 397.300814 l +291.157526 397.300814 l +291.501091 396.99931 l +292.18822 396.99931 l +292.531785 396.368893 l +292.87535 396.054281 l +293.906043 396.054281 l +294.249608 395.171913 l +294.593173 395.171913 l +294.936737 394.88247 l +295.623866 394.88247 l +295.967431 394.278413 l +296.310996 394.278413 l +296.65456 393.97691 l +296.998125 393.397095 l +298.028819 393.397095 l +298.372383 393.107651 l +299.403077 393.107651 l +299.746642 392.82934 l +300.433771 392.82934 l +300.777336 392.551029 l +301.1209 392.551029 l +301.464465 392.261585 l +302.151594 392.261585 l +302.495159 391.972141 l +304.900111 391.972141 l +305.243676 391.69383 l +305.58724 391.69383 l +306.617934 390.760861 l +306.961499 390.760861 l +307.305064 390.431948 l +307.648628 389.827891 l +308.335757 389.258384 l +311.427839 389.258384 l +311.771404 388.980073 l +313.489227 388.980073 l +313.832791 388.701762 l +316.581308 388.701762 l +316.924873 388.412318 l +317.268438 388.412318 l +317.612002 387.832503 l +317.955567 387.832503 l +318.299131 387.54306 l +318.642696 387.54306 l +318.986261 387.214146 l +319.329825 387.214146 l +320.016955 386.584921 l +320.360519 386.584921 l +320.704084 386.295477 l +321.047648 386.295477 l +321.734778 385.666252 l +322.421907 385.666252 l +323.796165 384.404056 l +324.483295 384.404056 l +324.826859 383.15392 l +325.857553 383.15392 l +326.201118 382.839308 l +326.888247 382.839308 l +327.575376 382.271553 l +327.918941 382.271553 l +328.262505 381.326523 l +328.949635 380.780209 l +329.636764 380.780209 l +329.980329 380.200394 l +330.323893 380.200394 l +330.667458 379.571169 l +331.354587 379.571169 l +332.728846 378.384496 l +333.07241 378.384496 l +334.103104 377.434142 l +334.446669 376.588076 l +334.790233 376.320073 l +335.133798 375.727149 l +335.820927 375.727149 l +336.164492 375.448838 l +336.851621 375.448838 l +337.53875 374.805312 l +337.882315 374.805312 l +338.225879 374.503808 l +338.569444 374.503808 l +338.913009 373.338576 l +339.256573 372.72246 l +339.600138 372.72246 l +339.943703 372.131512 l +340.287267 371.170851 l +340.630832 370.567843 l +340.974396 369.527808 l +341.661526 368.9248 l +342.348655 367.11368 l +343.722913 367.11368 l +344.066478 366.497564 l +344.753607 366.497564 l +345.097172 366.168651 l +345.784301 364.974696 l +346.127866 363.71253 l +346.814995 363.121583 l +347.502124 363.121583 l +347.845689 362.595147 l +348.189253 362.280535 l +348.876383 361.0667 l +349.563512 360.520386 l +349.907077 359.300213 l +350.250641 359.300213 l +350.594206 358.429202 l +352.999158 356.338579 l +353.686287 356.338579 l +354.029852 355.709354 l +354.373417 355.431043 l +355.060546 353.90739 l +355.404111 353.303334 l +355.747675 352.419214 l +356.09124 352.419214 l +356.434804 352.038367 l +356.778369 351.470612 l +357.121934 351.169108 l +357.465498 350.642673 l +357.809063 350.328061 l +358.496192 350.328061 l +359.526886 347.63058 l +359.870451 345.8074 l +360.214015 345.216453 l +360.55758 344.304122 l +360.901144 342.843916 l +361.244709 342.843916 l +361.931838 341.021785 l +362.618968 339.826781 l +363.306097 339.259026 l +363.649661 339.259026 l +363.993226 338.691271 l +364.680355 336.905953 l +365.02392 336.905953 l +365.367485 336.61651 l +366.398178 334.267967 l +366.741743 332.654888 l +367.428872 330.844137 l +367.772437 330.24008 l +368.116001 328.703055 l +368.803131 327.215439 l +369.146695 326.585022 l +369.49026 326.585022 l +369.833825 326.317019 l +370.520954 325.120039 l +370.864518 324.818535 l +371.208083 323.384563 l +371.551648 320.786871 l +371.895212 319.801968 l +372.238777 319.487356 l +372.582342 318.930733 l +372.925906 318.010873 l +373.9566 314.323994 l +374.643729 313.193502 l +375.674423 310.92731 l +376.017988 310.334386 l +376.705117 308.406694 l +377.048682 307.794115 l +378.079375 305.100627 l +378.42294 304.842195 l +378.766505 304.238139 l +380.827892 297.457343 l +381.515022 293.839465 l +382.202151 292.702203 l +382.545716 291.494091 l +382.88928 289.146036 l +383.232845 288.214115 l +383.576409 287.621192 l +384.263539 284.609099 l +384.607103 282.576776 l +384.950668 281.382821 l +385.294233 281.382821 l +385.981362 278.494861 l +386.324926 278.180248 l +387.012056 276.139178 l +388.386314 268.847136 l +388.729879 268.26452 l +389.073443 266.767084 l +389.760573 264.715003 l +390.791266 260.800911 l +391.478396 257.204209 l +391.82196 255.713544 l +392.50909 253.644137 l +393.196219 250.101079 l +393.539783 250.101079 l +394.226913 245.720164 l +394.914042 243.340362 l +395.257607 242.770855 l +395.601171 241.209708 l +396.2883 235.679253 l +396.631865 234.205939 l +396.97543 233.627051 l +397.318994 232.165918 l +398.006123 228.374079 l +398.349688 227.770023 l +399.036817 225.007591 l +399.723947 221.465236 l +400.411076 218.31618 l +401.098205 212.869953 l +401.44177 212.055635 l +402.472464 204.314388 l +402.816028 203.45719 l +403.159593 202.275295 l +403.503157 199.225938 l +404.533851 193.587671 l +404.877416 190.66129 l +405.564545 187.693687 l +405.90811 183.869517 l +406.251674 182.710814 l +406.595239 180.642823 l +406.938804 179.448868 l +409.343756 164.736942 l +410.030885 157.093643 l +410.718014 154.370222 l +411.405144 148.559059 l +411.748708 146.184523 l +412.092273 142.895167 l +412.435838 141.131705 l +412.779402 140.035763 l +414.497225 128.843452 l +414.84079 127.359005 l +415.184355 125.270501 l +415.527919 124.087558 l +415.871484 122.065127 l +416.215048 121.47418 l +416.558613 117.206989 l +417.245742 113.66766 l +417.932871 110.456876 l +418.276436 106.243689 l +418.620001 104.269932 l +419.650695 96.564113 l +419.994259 95.718047 l +420.337824 94.542507 l +420.681388 92.229705 l +421.712082 88.592988 l +422.399212 85.273189 l +423.429905 82.696113 l +423.77347 82.696113 l +424.117035 81.826854 l +424.460599 81.270232 l +424.804164 79.582293 l +425.147729 79.012786 l +425.491293 78.16672 l +425.834858 77.620406 l +426.178422 76.170283 l +426.521987 75.88084 l +428.926939 70.136173 l +429.270504 68.453524 l +429.957633 66.855076 l +430.301198 66.855076 l +431.675456 65.783062 l +432.019021 64.979052 l +432.70615 64.979052 l +433.393279 64.443045 l +525.812162 64.443045 l +525.812162 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 74.294 60.825 clipbox +-1 409.077597 m +43.790999 409.077597 l +44.134564 408.809593 l +65.779135 408.809593 l +66.1227 408.54159 l +104.945502 408.54159 l +105.289067 408.226977 l +177.781202 408.226977 l +178.124766 407.958974 l +214.542616 407.958974 l +214.886181 407.680663 l +235.500058 407.680663 l +235.843622 407.402352 l +238.935704 407.402352 l +239.279269 407.14392 l +249.929772 407.14392 l +250.273337 406.885488 l +260.236711 406.885488 l +260.580275 406.617485 l +263.328792 406.617485 l +263.672357 406.359053 l +266.077309 406.359053 l +266.420874 406.080742 l +271.917908 406.080742 l +272.261472 405.812738 l +272.605037 405.812738 l +272.948601 405.534427 l +273.979295 405.534427 l +274.32286 405.275995 l +284.973363 405.275995 l +285.316928 405.007992 l +290.813962 405.007992 l +291.157526 404.718548 l +294.593173 404.718548 l +294.936737 404.460117 l +299.746642 404.460117 l +300.090207 404.192113 l +301.464465 404.192113 l +301.80803 403.942593 l +302.151594 403.942593 l +302.495159 403.684161 l +304.212982 403.684161 l +304.900111 403.166637 l +308.335757 403.166637 l +309.022887 402.620323 l +310.74071 402.620323 l +311.084274 402.342012 l +313.489227 402.342012 l +313.832791 402.0637 l +316.237744 402.0637 l +316.581308 401.494193 l +316.924873 401.494193 l +317.268438 400.966362 l +317.955567 400.966362 l +318.299131 400.68805 l +319.67339 400.68805 l +320.360519 400.118543 l +320.704084 400.118543 l +321.047648 399.840232 l +321.391213 399.840232 l +321.734778 399.572229 l +322.078342 399.035486 l +324.826859 399.035486 l +325.170424 398.767482 l +327.231812 398.767482 l +327.918941 398.221168 l +328.262505 398.221168 l +328.949635 397.685161 l +329.293199 397.685161 l +329.636764 397.40685 l +329.980329 397.40685 l +330.323893 397.117406 l +330.667458 397.117406 l +331.011022 396.322968 l +331.354587 396.322968 l +331.698152 396.033524 l +332.041716 395.507089 l +333.07241 394.671331 l +334.446669 394.671331 l +334.790233 394.381887 l +335.133798 394.381887 l +335.820927 393.802072 l +338.569444 393.802072 l +338.913009 392.997326 l +339.600138 392.997326 l +340.630832 392.15126 l +340.974396 392.15126 l +341.317961 391.355425 l +341.661526 391.355425 l +342.00509 391.053921 l +342.348655 391.053921 l +343.379349 390.249175 l +343.722913 390.249175 l +344.066478 389.990743 l +344.753607 389.990743 l +345.097172 389.165293 l +345.440736 389.165293 l +345.784301 388.629286 l +346.127866 388.361283 l +346.47143 388.361283 l +347.15856 387.814968 l +347.502124 387.814968 l +347.845689 387.525525 l +348.532818 387.525525 l +349.219947 386.421763 l +350.594206 386.421763 l +350.93777 385.854008 l +351.6249 385.296561 l +351.968464 385.296561 l +352.312029 384.460803 l +352.655594 384.1928 l +352.999158 383.357866 l +354.029852 382.551723 l +355.404111 382.551723 l +355.747675 382.293292 l +356.09124 382.293292 l +356.434804 381.736669 l +357.121934 380.071732 l +357.465498 380.071732 l +357.809063 379.803729 l +358.152627 379.803729 l +358.839757 378.721407 l +359.183321 378.721407 l +359.526886 377.883161 l +359.870451 377.604849 l +360.214015 377.068843 l +361.588274 377.068843 l +362.275403 376.501088 l +362.618968 376.501088 l +362.962532 376.233085 l +363.649661 376.233085 l +364.336791 375.119015 l +365.02392 374.582272 l +365.367485 374.582272 l +366.054614 373.488907 l +367.085308 372.653149 l +367.428872 372.653149 l +368.116001 371.527947 l +368.459566 370.681881 l +368.803131 370.681881 l +369.146695 370.145138 l +369.49026 369.299072 l +370.177389 369.299072 l +370.520954 368.206443 l +370.864518 367.928132 l +371.208083 367.928132 l +371.551648 367.360377 l +372.238777 366.814062 l +372.582342 366.814062 l +372.925906 365.999744 l +373.269471 365.721433 l +374.300165 364.117895 l +374.643729 364.117895 l +374.987294 363.570019 l +375.674423 363.570019 l +376.017988 363.291708 l +376.705117 362.208651 l +377.048682 361.362585 l +377.392246 361.094581 l +378.42294 359.465209 l +378.766505 358.114148 l +379.453634 356.719191 l +380.140763 355.605121 l +380.484328 355.34669 l +380.827892 353.434957 l +381.515022 351.492949 l +381.858586 350.633998 l +382.202151 348.958016 l +382.545716 348.410141 l +382.88928 348.410141 l +383.232845 347.874134 l +383.919974 347.874134 l +384.263539 346.512766 l +384.607103 345.956143 l +385.294233 344.108174 l +385.981362 343.572168 l +386.324926 343.572168 l +386.668491 343.045732 l +387.35562 342.517901 l +388.042749 340.630097 l +388.386314 340.073475 l +388.729879 338.728203 l +389.073443 338.19146 l +390.104137 336.028142 l +391.134831 334.107574 l +391.478396 333.003813 l +391.82196 331.09142 l +392.50909 329.928989 l +392.852654 327.992355 l +393.196219 327.992355 l +393.883348 326.928517 l +394.570477 324.975376 l +395.257607 323.074687 l +395.601171 321.97175 l +395.944736 321.703747 l +396.97543 318.93053 l +397.318994 318.061271 l +398.006123 315.541201 l +398.349688 313.331189 l +398.693253 311.946628 l +399.036817 311.400313 l +399.380382 310.552495 l +400.067511 309.442707 l +400.75464 308.088689 l +401.098205 308.088689 l +401.785334 304.985587 l +402.472464 303.601025 l +402.816028 303.286413 l +403.159593 302.750406 l +403.503157 301.92578 l +403.846722 301.647469 l +404.190287 300.842723 l +404.877416 298.405812 l +405.564545 294.576736 l +406.595239 291.560113 l +407.625933 289.873735 l +407.969497 288.434969 l +408.313062 288.133466 l +408.656627 286.792713 l +409.000191 284.582701 l +410.030885 280.505666 l +410.37445 280.237662 l +410.718014 279.431519 l +411.061579 277.534144 l +411.405144 276.728001 l +411.748708 275.066057 l +412.092273 272.628156 l +412.435838 271.535527 l +413.122967 267.343008 l +413.466531 265.70324 l +413.810096 263.224489 l +414.153661 261.900822 l +414.84079 257.212251 l +415.184355 256.377317 l +416.215048 251.504371 l +416.902178 246.942132 l +417.245742 246.126253 l +418.276436 241.514803 l +418.620001 239.626999 l +419.650695 231.481599 l +419.994259 228.961337 l +420.681388 225.402561 l +422.399212 214.942067 l +422.742776 213.321606 l +423.429905 208.729108 l +423.77347 208.182793 l +424.117035 207.118955 l +424.460599 205.504284 l +424.804164 203.047901 l +425.147729 201.426616 l +426.178422 194.802883 l +426.865552 191.342464 l +427.552681 185.892294 l +427.896246 184.03172 l +428.926939 180.553643 l +429.614069 173.23975 l +430.301198 168.315176 l +430.988327 164.578667 l +431.331892 163.227606 l +431.675456 160.761904 l +432.70615 150.929818 l +434.080409 141.957419 l +434.423973 138.985733 l +434.767538 137.614793 l +435.111103 133.339408 l +435.454667 132.212645 l +435.798232 129.201201 l +436.141796 128.127055 l +437.85962 115.715311 l +438.203184 114.372997 l +438.890313 110.384582 l +439.233878 109.590144 l +439.921007 106.60815 l +440.264572 104.183603 l +440.608136 100.744624 l +440.951701 99.372123 l +441.295266 98.576948 l +441.982395 94.850747 l +442.669524 92.950414 l +443.356653 90.81309 l +443.700218 88.406938 l +444.387347 86.87417 l +444.730912 86.615738 l +445.074477 85.839783 l +445.418041 84.227168 l +445.761606 83.700733 l +446.10517 81.115755 l +446.448735 80.56944 l +446.7923 79.24783 l +447.135864 78.99831 l +447.479429 77.416872 l +449.197252 73.398269 l +449.540817 72.881406 l +450.227946 72.354971 l +450.57151 71.847018 l +452.632898 67.056078 l +453.320027 66.520071 l +454.007157 66.520071 l +454.350721 65.744776 l +454.694286 65.744776 l +455.037851 65.476773 l +455.381415 64.701477 l +455.72498 64.443045 l +525.812162 64.443045 l +525.812162 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 74.294 60.825 clipbox +-1 415.453209 m +148.578209 415.453209 l +148.921773 415.185205 l +206.297065 415.185205 l +206.64063 414.926774 l +249.586207 414.926774 l +249.929772 414.677253 l +256.113935 414.677253 l +256.801064 414.16039 l +272.261472 414.16039 l +272.605037 413.910869 l +278.102071 413.910869 l +278.445635 413.661349 l +283.942669 413.661349 l +284.286234 413.411828 l +288.065445 413.411828 l +288.409009 413.153397 l +290.470397 413.153397 l +290.813962 412.903876 l +300.090207 412.903876 l +300.433771 412.654356 l +301.464465 412.654356 l +301.80803 412.404836 l +304.556547 412.404836 l +304.900111 412.136832 l +307.648628 412.136832 l +307.992193 411.887312 l +308.335757 411.887312 l +308.679322 411.637791 l +310.053581 411.637791 l +310.74071 411.129839 l +312.114968 411.129839 l +312.458533 410.871407 l +316.581308 410.871407 l +317.268438 410.354544 l +317.955567 410.354544 l +318.299131 409.83768 l +319.329825 409.83768 l +319.67339 409.579248 l +321.047648 409.579248 l +321.391213 409.311245 l +322.421907 409.311245 l +322.765472 409.052813 l +323.109036 409.052813 l +323.796165 408.544861 l +324.483295 408.544861 l +324.826859 408.286429 l +325.170424 407.778477 l +325.857553 407.261613 l +330.323893 407.261613 l +330.667458 407.003182 l +331.011022 407.003182 l +331.354587 406.74475 l +331.698152 406.74475 l +332.041716 406.486318 l +332.728846 406.486318 l +333.415975 405.968794 l +335.477362 405.968794 l +335.820927 405.719274 l +336.508056 405.719274 l +336.851621 405.469754 l +339.256573 405.469754 l +339.600138 405.20175 l +341.661526 405.20175 l +342.00509 404.943318 l +342.348655 404.943318 l +342.69222 404.675315 l +343.379349 404.675315 l +343.722913 404.167363 l +344.410043 403.659411 l +345.097172 403.659411 l +345.440736 403.151458 l +345.784301 402.893027 l +346.127866 402.893027 l +346.47143 402.135554 l +347.502124 402.135554 l +348.189253 401.61869 l +348.532818 401.61869 l +348.876383 401.110738 l +351.968464 401.110738 l +352.312029 400.861218 l +354.029852 400.861218 l +354.716981 400.324475 l +355.404111 400.324475 l +355.747675 400.074955 l +356.434804 400.074955 l +357.121934 399.567002 l +358.839757 399.567002 l +359.870451 398.780739 l +360.214015 398.780739 l +360.55758 398.512736 l +360.901144 398.512736 l +361.244709 398.263215 l +361.588274 398.263215 l +361.931838 398.013695 l +362.275403 397.477688 l +362.962532 397.477688 l +363.306097 397.219256 l +363.993226 397.219256 l +364.336791 396.174561 l +364.680355 396.174561 l +365.367485 395.637818 l +365.711049 395.129866 l +366.054614 394.861863 l +366.398178 394.861863 l +366.741743 394.612342 l +367.085308 393.826079 l +367.428872 393.826079 l +367.772437 393.547768 l +368.459566 393.547768 l +368.803131 393.279764 l +369.49026 393.279764 l +370.520954 392.504469 l +371.895212 392.504469 l +372.238777 391.978034 l +372.582342 391.728513 l +372.925906 391.728513 l +373.269471 391.450202 l +373.613035 391.450202 l +373.9566 390.683818 l +374.300165 390.434298 l +374.643729 390.434298 l +375.330859 389.917434 l +376.017988 389.917434 l +376.361552 389.390999 l +377.048682 388.883047 l +377.392246 388.883047 l +377.735811 388.624615 l +378.079375 388.107752 l +378.42294 388.107752 l +378.766505 387.608711 l +379.110069 387.608711 l +379.797199 387.082276 l +380.140763 386.574323 l +380.484328 386.574323 l +380.827892 385.796972 l +381.171457 385.796972 l +381.515022 385.53854 l +381.858586 385.53854 l +382.545716 385.039499 l +382.88928 384.023595 l +383.576409 383.524554 l +383.919974 382.998119 l +384.950668 382.231075 l +386.324926 382.231075 l +386.668491 381.444811 l +387.012056 381.444811 l +387.35562 381.186379 l +388.042749 381.186379 l +388.386314 380.936859 l +388.729879 380.936859 l +389.073443 380.678427 l +389.417008 380.678427 l +390.104137 379.652951 l +390.447702 379.39452 l +391.478396 377.094047 l +391.82196 376.844527 l +392.165525 376.844527 l +392.50909 376.336575 l +393.539783 374.055246 l +394.226913 374.055246 l +394.570477 373.796814 l +395.257607 372.503995 l +395.601171 372.503995 l +395.944736 371.986471 l +396.2883 371.220087 l +396.97543 370.712135 l +397.318994 369.437799 l +397.662559 368.920275 l +398.006123 368.661843 l +398.349688 368.661843 l +398.693253 368.134012 l +399.380382 366.811005 l +399.723947 366.552573 l +400.411076 366.552573 l +400.75464 366.044621 l +401.098205 364.980047 l +401.44177 364.721615 l +401.785334 364.721615 l +402.472464 363.705711 l +403.503157 361.405899 l +403.846722 361.405899 l +404.533851 360.371511 l +405.220981 359.863559 l +405.90811 358.856566 l +406.251674 358.607046 l +406.595239 357.303259 l +406.938804 357.053738 l +407.282368 356.268871 l +407.969497 353.978631 l +408.313062 353.202675 l +408.656627 352.944243 l +410.030885 349.638099 l +410.37445 348.372674 l +410.718014 347.596718 l +411.061579 346.331294 l +411.405144 346.052982 l +412.092273 343.771653 l +413.122967 342.238885 l +413.810096 340.168714 l +414.153661 339.660762 l +414.497225 337.896297 l +414.84079 337.637865 l +415.184355 337.138824 l +416.558613 333.239827 l +417.245742 331.965491 l +418.276436 330.430666 l +418.963565 328.638807 l +419.30713 326.579603 l +421.024953 322.967093 l +421.368518 322.20962 l +421.712082 321.9601 l +422.055647 320.906493 l +422.399212 320.407453 l +423.086341 318.096012 l +423.429905 315.804452 l +423.77347 315.287588 l +424.460599 312.988436 l +424.804164 310.955967 l +425.147729 310.189583 l +426.521987 304.534956 l +427.552681 299.111366 l +427.896246 298.067407 l +428.926939 293.161418 l +429.614069 291.904904 l +429.957633 289.56739 l +430.301198 288.801006 l +430.988327 285.926825 l +431.331892 284.91026 l +431.675456 284.651829 l +432.019021 283.356953 l +432.70615 279.034244 l +433.393279 276.743343 l +434.423973 269.793256 l +434.767538 267.752536 l +435.111103 266.736632 l +435.454667 264.665801 l +435.798232 263.667719 l +436.485361 260.034669 l +436.828926 257.217333 l +437.17249 255.693477 l +437.85962 250.592755 l +438.203184 249.825711 l +438.890313 244.707903 l +439.577443 241.899479 l +440.608136 235.507259 l +440.951701 234.731303 l +441.295266 233.216358 l +442.32596 225.307872 l +442.669524 224.541488 l +443.013089 222.730409 l +444.387347 212.280766 l +445.418041 207.411742 l +445.761606 206.126438 l +446.10517 202.846368 l +447.479429 194.984496 l +447.822994 193.719071 l +448.853687 186.337757 l +449.197252 184.526018 l +449.540817 180.489134 l +449.884381 178.189982 l +450.227946 175.114215 l +450.57151 174.088739 l +451.25864 168.211326 l +451.602204 166.658678 l +451.945769 162.815207 l +452.632898 158.519892 l +453.320027 156.218023 l +454.007157 150.085631 l +455.381415 141.717127 l +456.412109 135.870561 l +457.786368 123.767503 l +458.129932 122.261469 l +459.847755 111.111936 l +460.19132 109.845851 l +460.878449 105.041924 l +461.565578 101.466455 l +463.626966 90.601427 l +463.970531 90.102387 l +465.001225 85.297799 l +465.344789 84.050197 l +466.375483 81.509116 l +466.719048 80.261515 l +467.062612 79.504042 l +467.406177 79.504042 l +468.093306 77.249447 l +469.124 75.716019 l +469.467565 74.201074 l +469.811129 73.702033 l +470.154694 72.454431 l +470.498258 71.696959 l +471.185388 69.433453 l +472.216082 67.43729 l +472.559646 66.938249 l +472.903211 66.688729 l +473.246775 66.189688 l +474.964599 64.942086 l +475.308163 64.942086 l +475.651728 64.443045 l +525.812162 64.443045 l +525.812162 64.443045 l +stroke +grestore +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +392.449 369.041 74.294 60.825 clipbox +-1 426.24758 m +51.349421 426.24758 l +51.692986 425.958136 l +149.265338 425.958136 l +149.608903 425.668692 l +149.952467 425.668692 l +150.296032 425.379249 l +179.499025 425.379249 l +179.842589 425.077745 l +217.634698 425.077745 l +217.978262 424.733169 l +218.665391 424.733169 l +219.008956 424.431665 l +219.696085 424.431665 l +220.03965 424.163662 l +229.659459 424.163662 l +230.003024 423.874218 l +231.033718 423.874218 l +231.377282 423.584775 l +233.095105 423.584775 l +233.43867 423.270162 l +247.52482 423.270162 l +247.868384 422.968658 l +250.273337 422.968658 l +250.616901 422.679215 l +260.92384 422.679215 l +261.267404 422.389771 l +264.015921 422.389771 l +264.359486 422.075159 l +266.077309 422.075159 l +266.420874 421.785715 l +266.764438 421.785715 l +267.108003 421.484211 l +269.169391 421.484211 l +269.512955 421.182707 l +269.85652 421.182707 l +270.200085 420.553482 l +270.887214 420.553482 l +271.230778 419.924257 l +272.261472 419.924257 l +272.605037 419.622753 l +272.948601 419.622753 l +273.292166 419.344442 l +273.635731 419.344442 l +273.979295 419.066131 l +274.666425 419.066131 l +275.009989 418.787819 l +275.697118 418.787819 l +276.040683 418.498376 l +277.071377 418.498376 l +277.414942 418.208932 l +277.758506 417.373174 l +279.476329 417.373174 l +279.819894 417.07167 l +280.850588 417.07167 l +281.194152 416.690823 l +282.224846 416.690823 l +282.568411 416.40138 l +283.25554 416.40138 l +283.599105 416.086767 l +284.973363 416.086767 l +285.316928 415.785263 l +289.096139 415.785263 l +289.439703 415.48376 l +290.126833 415.48376 l +290.470397 415.182256 l +293.562479 415.182256 l +294.249608 414.612749 l +295.967431 414.612749 l +296.310996 414.298136 l +296.998125 414.298136 l +297.34169 414.030133 l +297.685254 414.030133 l +298.028819 413.740689 l +298.372383 413.740689 l +298.715948 413.426076 l +299.059513 413.426076 l +299.403077 413.136633 l +299.746642 413.136633 l +300.090207 412.80772 l +301.464465 412.80772 l +301.80803 412.506216 l +303.525853 412.506216 l +303.869417 411.927329 l +304.212982 411.612716 l +305.58724 411.612716 l +305.930805 411.323272 l +306.617934 411.323272 l +306.961499 410.694047 l +307.305064 410.379434 l +307.648628 410.379434 l +307.992193 410.077931 l +309.022887 410.077931 l +309.366451 409.486983 l +309.710016 409.486983 l +310.053581 408.503129 l +310.397145 408.503129 l +310.74071 408.158553 l +311.084274 407.567606 l +311.427839 407.567606 l +311.771404 407.278162 l +312.802098 407.278162 l +313.832791 406.383734 l +314.176356 406.383734 l +314.519921 406.105423 l +315.20705 406.105423 l +315.550614 405.83742 l +316.581308 405.83742 l +317.268438 405.267913 l +317.612002 405.267913 l +318.299131 404.663856 l +319.329825 404.663856 l +319.67339 404.349244 l +320.704084 404.349244 l +321.047648 403.718827 l +322.765472 403.718827 l +323.452601 403.139012 l +323.796165 402.280061 l +324.13973 401.965448 l +324.483295 401.08413 l +324.826859 400.782626 l +325.170424 400.782626 l +326.888247 399.309311 l +328.262505 399.309311 l +328.60607 399.007807 l +328.949635 398.391691 l +329.636764 398.391691 l +330.323893 397.748165 l +330.667458 397.748165 l +331.011022 397.433552 l +331.698152 397.433552 l +332.041716 397.155241 l +332.385281 397.155241 l +333.759539 395.920768 l +334.790233 395.920768 l +336.164492 394.699404 l +336.508056 394.120516 l +336.851621 394.120516 l +337.195186 393.5379 l +337.882315 392.933844 l +338.569444 392.933844 l +339.256573 392.287764 l +340.287267 390.492139 l +340.974396 390.492139 l +341.661526 388.713103 l +342.00509 388.42366 l +342.348655 387.855905 l +343.722913 387.855905 l +344.066478 387.541292 l +344.410043 387.541292 l +344.753607 386.973537 l +345.097172 386.973537 l +345.440736 386.064809 l +346.814995 384.867829 l +347.15856 383.64568 l +347.502124 382.97539 l +347.845689 382.673886 l +348.532818 382.673886 l +348.876383 382.372382 l +349.219947 381.454762 l +349.907077 381.454762 l +350.594206 380.26809 l +350.93777 379.305157 l +351.281335 379.305157 l +351.6249 378.543463 l +352.655594 377.612734 l +352.999158 377.612734 l +353.686287 375.849048 l +354.029852 375.849048 l +354.373417 375.219823 l +354.716981 375.219823 l +355.060546 373.076338 l +355.747675 371.879358 l +356.09124 371.564746 l +356.434804 371.564746 l +357.121934 369.384929 l +357.809063 368.828307 l +358.839757 367.035459 l +359.183321 366.746016 l +359.526886 366.155068 l +360.55758 365.308178 l +360.901144 365.308178 l +361.244709 365.018734 l +361.588274 364.170916 l +361.931838 363.869412 l +362.275403 362.335675 l +363.306097 360.775296 l +363.993226 360.172288 l +364.680355 358.986665 l +365.02392 358.685161 l +366.398178 356.292249 l +367.428872 353.463065 l +367.772437 353.463065 l +368.116001 353.161561 l +368.459566 352.254024 l +368.803131 351.952521 l +369.49026 350.748994 l +369.833825 349.528821 l +370.177389 348.924765 l +370.520954 347.195507 l +371.208083 345.145915 l +371.551648 343.571113 l +371.895212 343.312681 l +372.238777 342.118726 l +372.582342 341.489501 l +372.925906 341.221497 l +374.300165 335.822441 l +375.330859 333.742829 l +375.674423 332.150702 l +376.017988 331.836089 l +376.361552 331.243165 l +378.079375 327.204322 l +378.766505 323.549528 l +379.110069 322.128665 l +379.453634 319.355835 l +380.484328 316.095225 l +381.515022 314.246876 l +382.202151 312.784694 l +382.545716 312.180637 l +382.88928 311.323439 l +383.232845 308.915666 l +383.576409 308.281647 l +383.919974 306.188487 l +384.263539 305.886983 l +384.607103 304.968314 l +384.950668 302.655928 l +385.294233 301.446888 l +385.637797 300.85594 l +385.981362 299.971821 l +386.324926 298.521698 l +387.012056 295.012701 l +387.699185 292.360166 l +388.386314 288.74801 l +389.073443 286.984324 l +389.417008 283.945496 l +391.478396 276.558485 l +391.82196 274.570604 l +392.852654 267.352421 l +393.196219 266.446861 l +393.883348 263.514966 l +394.226913 260.820287 l +394.914042 259.369237 l +395.257607 257.117344 l +395.601171 255.944605 l +395.944736 253.150178 l +396.2883 251.963505 l +397.662559 244.326518 l +401.098205 226.961305 l +401.44177 225.439629 l +402.816028 216.71578 l +403.159593 214.91672 l +403.503157 211.642402 l +404.533851 207.721522 l +405.564545 200.36401 l +405.90811 197.976413 l +406.251674 194.440813 l +406.595239 192.387683 l +407.282368 189.725352 l +407.625933 188.238001 l +408.656627 180.507703 l +409.000191 177.818411 l +409.343756 176.67586 l +410.37445 165.616509 l +411.061579 162.008808 l +411.405144 158.781627 l +411.748708 154.256046 l +412.435838 149.519369 l +412.779402 146.522626 l +413.122967 145.07448 l +413.466531 140.820895 l +413.810096 140.519391 l +414.497225 137.110647 l +414.84079 135.346136 l +415.184355 131.561068 l +415.871484 128.575336 l +416.558613 124.535444 l +416.902178 122.781554 l +417.589307 116.677399 l +418.276436 113.180023 l +419.30713 103.306215 l +420.337824 99.264155 l +420.681388 96.382965 l +422.055647 91.024706 l +422.399212 90.152647 l +423.086341 87.14746 l +423.429905 84.939937 l +423.77347 84.357321 l +424.117035 82.952056 l +424.460599 82.116298 l +424.804164 81.801685 l +425.147729 80.116548 l +426.178422 77.573796 l +426.521987 77.284353 l +426.865552 75.859399 l +427.209116 75.581088 l +427.552681 75.024466 l +428.23981 73.10565 l +428.926939 72.012196 l +429.270504 70.597551 l +429.614069 69.803113 l +429.957633 68.195092 l +430.301198 67.123079 l +431.675456 66.051065 l +432.019021 64.979052 l +432.70615 64.979052 l +433.393279 64.443045 l +525.812162 64.443045 l +525.812162 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 74.294 60.825 clipbox +-1 426.24758 m +222.444602 426.24758 l +222.788167 425.711573 l +238.248575 425.711573 l +238.592139 425.453141 l +245.119867 425.453141 l +245.463432 425.203621 l +254.052547 425.203621 l +254.396112 424.92531 l +262.641663 424.92531 l +262.985227 424.426269 l +265.39018 424.426269 l +265.733744 423.797044 l +272.261472 423.797044 l +272.605037 423.538612 l +278.445635 423.538612 l +279.132765 423.002605 l +280.850588 423.002605 l +281.194152 422.45629 l +282.568411 422.45629 l +282.911976 422.141678 l +283.942669 422.141678 l +284.286234 421.863367 l +289.096139 421.863367 l +289.439703 421.585056 l +290.126833 421.585056 l +290.470397 421.326624 l +295.967431 421.326624 l +296.310996 421.05862 l +298.372383 421.05862 l +298.715948 420.800189 l +301.1209 420.800189 l +301.464465 420.521877 l +307.305064 420.521877 l +308.679322 419.468347 l +310.397145 419.468347 l +310.74071 419.209915 l +311.084274 419.209915 l +311.427839 418.941912 l +311.771404 418.941912 l +312.114968 418.673908 l +314.176356 418.673908 l +314.519921 418.100864 l +315.550614 418.100864 l +315.894179 417.822553 l +316.237744 417.822553 l +316.581308 417.521049 l +318.642696 417.521049 l +318.986261 417.253046 l +320.016955 417.253046 l +321.047648 416.394919 l +322.078342 416.394919 l +322.421907 416.136488 l +322.765472 416.136488 l +323.109036 415.878056 l +323.452601 415.878056 l +323.796165 415.628535 l +324.13973 415.092529 l +325.170424 414.277475 l +325.513988 414.277475 l +325.857553 413.720028 l +326.544682 413.720028 l +326.888247 413.152273 l +327.231812 413.152273 l +327.575376 412.893841 l +329.980329 412.893841 l +330.323893 412.326086 l +332.385281 412.326086 l +332.728846 412.058083 l +333.07241 412.058083 l +333.415975 411.511768 l +333.759539 411.233457 l +334.103104 411.233457 l +334.446669 410.965454 l +334.790233 410.429447 l +335.477362 410.429447 l +335.820927 409.62314 l +336.508056 409.62314 l +336.851621 409.344829 l +337.53875 409.344829 l +337.882315 409.055385 l +338.569444 409.055385 l +338.913009 408.476498 l +339.256573 408.476498 l +339.600138 408.208494 l +339.943703 408.208494 l +340.630832 407.104733 l +342.00509 407.104733 l +342.348655 406.836729 l +342.69222 406.836729 l +343.035784 406.558418 l +343.379349 406.558418 l +343.722913 406.280107 l +347.15856 406.280107 l +348.189253 405.46108 l +351.281335 405.46108 l +351.6249 405.202648 l +351.968464 405.202648 l +352.312029 404.656333 l +354.029852 404.656333 l +354.373417 404.096398 l +356.09124 404.096398 l +356.434804 403.301223 l +356.778369 403.011779 l +357.121934 402.431964 l +357.465498 402.163961 l +357.809063 401.627954 l +358.152627 401.349643 l +358.496192 401.349643 l +358.839757 401.08164 l +359.183321 401.08164 l +360.214015 399.439383 l +361.244709 399.439383 l +361.588274 399.161072 l +361.931838 398.614757 l +362.962532 397.810747 l +363.306097 397.810747 l +363.649661 397.561227 l +363.993226 396.993472 l +365.02392 396.993472 l +365.367485 396.743951 l +366.054614 395.072435 l +366.398178 394.515813 l +366.741743 393.687405 l +367.085308 393.409094 l +367.428872 392.841339 l +368.116001 392.841339 l +369.146695 392.015889 l +369.49026 391.479146 l +369.833825 390.618219 l +370.177389 390.618219 l +370.864518 389.535161 l +371.208083 389.25685 l +371.551648 388.710535 l +371.895212 388.710535 l +372.238777 387.906525 l +372.582342 387.906525 l +372.925906 387.389662 l +373.269471 386.575344 l +374.300165 384.964455 l +374.643729 384.964455 l +375.330859 384.407008 l +375.674423 383.559189 l +376.361552 383.012875 l +377.735811 380.82532 l +378.42294 378.596356 l +379.110069 378.039734 l +379.453634 378.039734 l +379.797199 377.482287 l +380.484328 377.482287 l +380.827892 376.925665 l +381.171457 376.647353 l +381.858586 375.265281 l +382.545716 373.644084 l +382.88928 373.644084 l +383.576409 371.9837 l +383.919974 371.437385 l +384.263539 370.321755 l +384.607103 370.321755 l +384.950668 370.043444 l +385.294233 369.497129 l +385.637797 369.497129 l +385.981362 368.702691 l +386.324926 368.702691 l +386.668491 367.361938 l +387.012056 367.072494 l +387.35562 366.226428 l +387.699185 365.936985 l +388.042749 364.844355 l +388.386314 364.844355 l +389.760573 361.761356 l +390.104137 360.357843 l +390.447702 359.801221 l +391.134831 358.373588 l +391.478396 357.845756 l +391.82196 355.886446 l +392.50909 354.017125 l +392.852654 353.749121 l +393.539783 350.200845 l +393.883348 349.128096 l +394.226913 348.60166 l +394.570477 347.787342 l +394.914042 347.260907 l +395.601171 345.295482 l +396.2883 343.973872 l +396.631865 343.695561 l +396.97543 343.127806 l +397.318994 342.028327 l +397.662559 340.294828 l +398.349688 338.622384 l +399.036817 337.49543 l +399.380382 336.421119 l +399.723947 335.861183 l +400.411076 332.842228 l +400.75464 331.014062 l +401.098205 330.735751 l +401.44177 329.921433 l +401.785334 328.249917 l +402.472464 326.313863 l +402.816028 324.120582 l +403.159593 323.84227 l +404.190287 318.798865 l +404.877416 314.769295 l +405.220981 314.454682 l +405.564545 312.202614 l +406.251674 310.841982 l +407.282368 308.704658 l +407.969497 306.230044 l +408.313062 303.979538 l +408.656627 303.154912 l +409.000191 301.504836 l +409.343756 300.68021 l +409.687321 299.012316 l +410.030885 298.753884 l +410.37445 298.197261 l +410.718014 296.789507 l +411.061579 296.243193 l +411.405144 294.536424 l +412.435838 292.088684 l +413.466531 287.194565 l +413.810096 286.101936 l +414.153661 284.140152 l +414.497225 280.517965 l +414.84079 279.680454 l +415.527919 275.93511 l +415.871484 275.089044 l +416.558613 271.713335 l +416.902178 270.069682 l +417.245742 269.523367 l +417.589307 268.687609 l +418.276436 262.967848 l +418.620001 258.546013 l +418.963565 256.896762 l +419.30713 253.645204 l +419.650695 252.541442 l +419.994259 250.44182 l +420.337824 249.302806 l +421.024953 244.682401 l +421.712082 238.342634 l +422.742776 228.611595 l +423.086341 226.146465 l +423.429905 225.017534 l +423.77347 224.500671 l +424.804164 217.07334 l +425.147729 215.948138 l +425.491293 213.223756 l +425.834858 212.139874 l +426.178422 209.44806 l +426.865552 205.934426 l +427.552681 200.962755 l +427.896246 200.146877 l +428.23981 198.256852 l +428.583375 195.003237 l +429.614069 189.023675 l +431.331892 176.032738 l +432.70615 162.293656 l +433.049715 160.363136 l +433.736844 154.337098 l +434.080409 152.117603 l +434.423973 151.054425 l +436.141796 138.468693 l +436.828926 130.949761 l +437.17249 127.938316 l +437.516055 126.06817 l +437.85962 123.15399 l +438.546749 119.933443 l +438.890313 116.99946 l +439.233878 115.099699 l +439.921007 110.544189 l +440.264572 109.50023 l +441.982395 98.260351 l +442.32596 97.714036 l +443.013089 94.510577 l +443.356653 93.715402 l +444.043783 90.802858 l +444.387347 89.209628 l +444.730912 88.1759 l +445.074477 87.659037 l +445.761606 86.045762 l +446.10517 85.002463 l +446.448735 82.418145 l +446.7923 81.105447 l +447.135864 80.568704 l +447.479429 79.80232 l +447.822994 77.655424 l +448.510123 76.63952 l +448.853687 75.586649 l +449.197252 73.915133 l +449.540817 73.656701 l +449.884381 73.656701 l +450.57151 72.622974 l +450.915075 72.373454 l +451.602204 69.988005 l +451.945769 68.903387 l +452.632898 68.376952 l +452.976463 68.376952 l +453.663592 66.520071 l +454.350721 66.520071 l +454.694286 65.744776 l +455.037851 65.476773 l +455.381415 64.701477 l +455.72498 64.443045 l +525.812162 64.443045 l +525.812162 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 74.294 60.825 clipbox +-1 426.24758 m +199.769337 426.24758 l +200.112902 425.989148 l +256.801064 425.989148 l +257.144629 425.721144 l +259.206017 425.721144 l +259.549581 425.462713 l +265.733744 425.462713 l +266.077309 425.213192 l +266.420874 425.213192 l +266.764438 424.70524 l +279.132765 424.70524 l +279.476329 424.45572 l +284.973363 424.45572 l +285.316928 424.206199 l +286.347622 424.206199 l +286.691186 423.947768 l +290.126833 423.947768 l +290.470397 423.669456 l +294.593173 423.669456 l +294.936737 423.401453 l +299.746642 423.401453 l +300.090207 423.151933 l +311.084274 423.151933 l +311.427839 422.59531 l +315.20705 422.59531 l +315.550614 422.34579 l +316.237744 422.34579 l +316.581308 422.087358 l +316.924873 422.087358 l +317.268438 421.837838 l +322.421907 421.837838 l +323.109036 421.338797 l +325.513988 421.338797 l +325.857553 421.080365 l +329.293199 421.080365 l +329.636764 420.830845 l +333.07241 420.830845 l +333.415975 420.562841 l +334.446669 420.562841 l +334.790233 420.30441 l +335.133798 420.30441 l +335.477362 420.054889 l +337.882315 420.054889 l +338.225879 419.796458 l +338.569444 419.796458 l +338.913009 419.538026 l +339.600138 419.538026 l +339.943703 419.288505 l +341.317961 419.288505 l +341.661526 419.020502 l +342.00509 419.020502 l +342.348655 418.752499 l +345.784301 418.752499 l +346.127866 418.494067 l +351.6249 418.494067 l +351.968464 418.244546 l +352.655594 418.244546 l +352.999158 417.727023 l +355.747675 417.727023 l +356.09124 417.448712 l +357.465498 417.448712 l +357.809063 417.19028 l +358.152627 417.19028 l +358.496192 416.940759 l +358.839757 416.940759 l +359.183321 416.691239 l +361.588274 416.691239 l +361.931838 416.432807 l +362.618968 416.432807 l +363.306097 415.924855 l +363.649661 415.924855 l +363.993226 415.666423 l +366.054614 415.666423 l +366.398178 415.416903 l +367.428872 415.416903 l +368.803131 414.400998 l +369.49026 414.400998 l +369.833825 414.142567 l +371.208083 414.142567 l +371.551648 413.884135 l +371.895212 413.117751 l +372.238777 413.117751 l +372.582342 412.86823 l +372.925906 412.86823 l +374.300165 411.833843 l +374.643729 411.833843 l +375.674423 411.067459 l +376.017988 410.549935 l +376.705117 408.740253 l +377.048682 408.740253 l +378.42294 407.705865 l +378.766505 407.705865 l +379.110069 407.456345 l +379.453634 407.456345 l +379.797199 406.939481 l +380.484328 406.440441 l +380.827892 406.440441 l +381.515022 405.395745 l +382.202151 404.148144 l +382.88928 404.148144 l +383.232845 403.621708 l +383.576409 403.621708 l +383.919974 403.093877 l +384.263539 402.835445 l +384.607103 402.278823 l +385.294233 402.278823 l +385.637797 401.233467 l +386.324926 400.208652 l +387.012056 400.208652 l +387.699185 399.174264 l +388.042749 398.924744 l +388.386314 398.924744 l +388.729879 398.666312 l +389.073443 398.139877 l +389.417008 398.139877 l +389.760573 397.344702 l +390.104137 397.344702 l +390.791266 396.069706 l +391.134831 396.069706 l +391.478396 395.811274 l +391.82196 395.29441 l +392.165525 395.035979 l +392.852654 395.035979 l +394.226913 393.981712 l +394.914042 393.981712 l +395.257607 393.464188 l +395.601171 392.457195 l +395.944736 391.940332 l +396.631865 391.432379 l +396.97543 391.432379 l +397.318994 391.173948 l +397.662559 390.647512 l +398.006123 390.389081 l +398.349688 388.808379 l +399.036817 387.534043 l +401.098205 385.991703 l +401.44177 384.937436 l +401.785334 384.429484 l +402.128899 384.171052 l +402.472464 383.41358 l +402.816028 383.41358 l +403.159593 382.905628 l +403.846722 382.397675 l +404.190287 381.880812 l +404.533851 381.880812 l +405.220981 381.37286 l +405.90811 379.312996 l +406.251674 379.312996 l +406.595239 379.063476 l +406.938804 377.98999 l +407.625933 377.490949 l +407.969497 375.930127 l +408.313062 375.930127 l +408.656627 375.422175 l +409.000191 375.163743 l +409.343756 374.415182 l +409.687321 373.381454 l +410.030885 372.882414 l +410.718014 372.345671 l +411.061579 371.281096 l +411.405144 370.764233 l +412.435838 368.750247 l +412.779402 368.242295 l +413.466531 366.45795 l +413.810096 366.199518 l +414.153661 364.66609 l +415.184355 362.357366 l +415.527919 362.357366 l +416.558613 360.815027 l +416.902178 359.272687 l +417.589307 356.972875 l +417.932871 356.723355 l +419.650695 349.517477 l +420.337824 347.984709 l +420.681388 346.719284 l +421.024953 346.20242 l +421.368518 345.425068 l +421.712082 344.926028 l +422.055647 344.647717 l +422.742776 342.125779 l +423.086341 340.102881 l +423.429905 339.327586 l +424.117035 334.71839 l +424.460599 334.210438 l +424.804164 333.424911 l +425.147729 333.424911 l +425.491293 331.862692 l +425.834858 331.363651 l +426.178422 330.338835 l +426.521987 328.776617 l +426.865552 328.518185 l +427.552681 325.672058 l +428.583375 321.550199 l +428.926939 319.989376 l +429.270504 319.222992 l +429.614069 318.179034 l +429.957633 316.378922 l +430.301198 315.363018 l +430.988327 311.261038 l +431.331892 309.421168 l +432.019021 307.63888 l +432.70615 303.730311 l +433.049715 302.98175 l +434.080409 297.897455 l +434.423973 294.313075 l +434.767538 292.012603 l +435.111103 290.470924 l +436.141796 284.013023 l +436.828926 279.826803 l +437.17249 277.746324 l +437.516055 276.453505 l +438.203184 274.68904 l +439.233878 269.349106 l +439.577443 265.792781 l +440.264572 260.886791 l +440.608136 257.329145 l +440.951701 256.045237 l +441.295266 253.273119 l +442.669524 245.870529 l +443.013089 242.295721 l +443.700218 238.415867 l +444.043783 234.804016 l +444.387347 233.270588 l +445.074477 224.834931 l +445.761606 222.562514 l +446.10517 220.798048 l +446.448735 218.008767 l +446.7923 216.216907 l +447.135864 213.407086 l +447.479429 211.615226 l +447.822994 209.065234 l +448.166558 208.039758 l +448.510123 205.76734 l +448.853687 204.751436 l +449.197252 201.443971 l +449.540817 199.688417 l +451.602204 180.803853 l +452.289334 175.676397 l +452.632898 173.394408 l +454.007157 160.165132 l +454.350721 158.382843 l +455.037851 153.053141 l +455.72498 150.245377 l +456.068544 148.988864 l +456.755674 142.652828 l +457.099238 140.860969 l +458.817061 127.51988 l +459.160626 125.764326 l +460.534884 114.623704 l +460.878449 111.824191 l +461.222014 110.041242 l +462.596272 100.174296 l +463.283401 98.150739 l +463.626966 97.651698 l +464.65766 90.075652 l +465.001225 89.327091 l +465.688354 85.54732 l +466.031918 84.281235 l +466.375483 83.514191 l +466.719048 82.017069 l +467.749742 79.254522 l +468.093306 78.99609 l +468.436871 78.478566 l +468.780435 77.721094 l +469.124 77.462662 l +469.811129 73.951554 l +470.154694 73.951554 l +470.841823 71.679136 l +471.185388 71.429616 l +471.872517 68.684892 l +472.216082 68.435371 l +473.246775 66.439208 l +473.59034 66.189688 l +473.933905 65.690647 l +474.621034 65.690647 l +474.964599 64.942086 l +475.308163 64.942086 l +475.651728 64.443045 l +525.812162 64.443045 l +525.812162 64.443045 l +stroke +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +74.29375 60.825 m +74.29375 429.865625 l +stroke +grestore +gsave +466.742708 60.825 m +466.742708 429.865625 l +stroke +grestore +gsave +74.29375 60.825 m +466.742708 60.825 l +stroke +grestore +gsave +74.29375 429.865625 m +466.742708 429.865625 l +stroke +grestore +/TeX-ectt1000 28.000 selectfont +gsave + +219.057292 436.053125 translate +0.000000 rotate +0.000000 0 m /O glyphshow +14.699997 0 m /S glyphshow +29.399994 0 m /C glyphshow +44.099991 0 m /A glyphshow +58.799988 0 m /R glyphshow +73.499985 0 m /hyphen glyphshow +88.199982 0 m /one glyphshow +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +91.09375 72.825 m +298.89375 72.825 l +302.09375 72.825 303.69375 74.425 303.69375 77.625 c +303.69375 183.225 l +303.69375 186.425 302.09375 188.025 298.89375 188.025 c +91.09375 188.025 l +87.89375 188.025 86.29375 186.425 86.29375 183.225 c +86.29375 77.625 l +86.29375 74.425 87.89375 72.825 91.09375 72.825 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +4.000 setlinewidth +1 setlinejoin +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +95.89375 178.905 m +143.89375 178.905 l +stroke +grestore +0.173 0.627 0.173 setrgbcolor +gsave +95.89375 168.825 m +143.89375 168.825 l +stroke +grestore +0.122 0.467 0.706 setrgbcolor +gsave +95.89375 158.745 m +143.89375 158.745 l +stroke +grestore +0.000 setgray +gsave +163.093750 160.425000 translate +0.000000 rotate +/Cmmi10 24.0 selectfont +0.000000 0.000000 moveto +/lambda glyphshow +13.992188 0.000000 moveto +/slash glyphshow +25.992188 0.000000 moveto +/lambda glyphshow +/Cmr10 16.799999999999997 selectfont +39.984375 -4.081500 moveto +/m glyphshow +53.978906 -4.081500 moveto +/a glyphshow +62.378906 -4.081500 moveto +/x glyphshow +/Cmr10 24.0 selectfont +76.974703 0.000000 moveto +/equal glyphshow +99.833297 0.000000 moveto +/zero glyphshow +/Cmmi10 24.0 selectfont +111.833297 0.000000 moveto +/period glyphshow +/Cmr10 24.0 selectfont +118.477828 0.000000 moveto +/three glyphshow +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +1.000 0.498 0.055 setrgbcolor +gsave +95.89375 142.905 m +143.89375 142.905 l +stroke +grestore +0.173 0.627 0.173 setrgbcolor +gsave +95.89375 132.825 m +143.89375 132.825 l +stroke +grestore +0.122 0.467 0.706 setrgbcolor +gsave +95.89375 122.745 m +143.89375 122.745 l +stroke +grestore +0.000 setgray +gsave +163.093750 124.425000 translate +0.000000 rotate +/Cmmi10 24.0 selectfont +0.000000 0.000000 moveto +/lambda glyphshow +13.992188 0.000000 moveto +/slash glyphshow +25.992188 0.000000 moveto +/lambda glyphshow +/Cmr10 16.799999999999997 selectfont +39.984375 -4.081500 moveto +/m glyphshow +53.978906 -4.081500 moveto +/a glyphshow +62.378906 -4.081500 moveto +/x glyphshow +/Cmr10 24.0 selectfont +76.974703 0.000000 moveto +/equal glyphshow +99.833297 0.000000 moveto +/zero glyphshow +/Cmmi10 24.0 selectfont +111.833297 0.000000 moveto +/period glyphshow +/Cmr10 24.0 selectfont +118.477828 0.000000 moveto +/five glyphshow +grestore +[14.8 6.4] 0 setdash +1.000 0.498 0.055 setrgbcolor +gsave +95.89375 106.905 m +143.89375 106.905 l +stroke +grestore +0.173 0.627 0.173 setrgbcolor +gsave +95.89375 96.825 m +143.89375 96.825 l +stroke +grestore +0.122 0.467 0.706 setrgbcolor +gsave +95.89375 86.745 m +143.89375 86.745 l +stroke +grestore +0.000 setgray +gsave +163.093750 88.425000 translate +0.000000 rotate +/Cmmi10 24.0 selectfont +0.000000 0.000000 moveto +/lambda glyphshow +13.992188 0.000000 moveto +/slash glyphshow +25.992188 0.000000 moveto +/lambda glyphshow +/Cmr10 16.799999999999997 selectfont +39.984375 -4.081500 moveto +/m glyphshow +53.978906 -4.081500 moveto +/a glyphshow +62.378906 -4.081500 moveto +/x glyphshow +/Cmr10 24.0 selectfont +76.974703 0.000000 moveto +/equal glyphshow +99.833297 0.000000 moveto +/zero glyphshow +/Cmmi10 24.0 selectfont +111.833297 0.000000 moveto +/period glyphshow +/Cmr10 24.0 selectfont +118.477828 0.000000 moveto +/eight glyphshow +grestore +gsave +481.042708 60.825 m +873.491667 60.825 l +873.491667 429.865625 l +481.042708 429.865625 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +[] 0 setdash +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +510.577 60.825 o +grestore +gsave +492.577435 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.926563 moveto +/one glyphshow +11.000000 0.926563 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 7.565625 moveto +/hyphen glyphshow +27.286777 7.565625 moveto +/four glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +608.69 60.825 o +grestore +gsave +590.689675 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/three glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +706.802 60.825 o +grestore +gsave +688.801915 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/two glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +804.914 60.825 o +grestore +gsave +786.914154 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/one glyphshow +grestore +0.600 setlinewidth +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +488.811 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +495.38 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +501.069 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +506.088 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +540.112 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +557.389 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +569.647 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +579.155 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +586.924 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +593.492 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +599.182 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +604.2 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +638.224 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +655.501 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +667.759 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +677.267 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +685.036 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +691.604 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +697.294 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +702.313 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +736.337 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +753.613 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +765.871 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +775.379 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +783.148 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +789.716 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +795.406 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +800.425 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +834.449 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +851.726 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +863.984 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +873.492 60.825 o +grestore +gsave +667.267188 12.246875 translate +0.000000 rotate +/Cmmi10 26.0 selectfont +0.000000 0.234375 moveto +/R glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 64.443 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 136.804 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 209.165 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 281.526 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 353.887 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +481.043 426.248 o +grestore +4.000 setlinewidth +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 426.24758 m +445.042924 426.24758 l +445.386488 425.396275 l +452.94491 425.396275 l +453.288475 425.051699 l +468.405318 425.051699 l +468.748883 418.473435 l +484.209291 418.473435 l +484.552855 416.061405 l +494.516229 416.061405 l +494.859794 415.732491 l +502.074651 415.732491 l +502.418215 414.928481 l +503.448909 414.928481 l +503.792474 413.86865 l +506.197426 413.86865 l +506.540991 413.487803 l +511.350896 413.487803 l +511.69446 412.829977 l +515.130106 412.829977 l +515.473671 412.468172 l +517.878623 412.468172 l +518.222188 412.189861 l +524.749916 412.189861 l +525.09348 411.737605 l +526.811304 411.737605 l +527.154868 410.933595 l +530.934079 410.933595 l +531.277644 410.665592 l +549.486569 410.665592 l +549.830133 409.995301 l +550.860827 409.995301 l +551.204392 409.543046 l +558.075684 409.543046 l +558.419249 404.450982 l +560.480636 404.450982 l +560.824201 403.293207 l +561.51133 403.293207 l +561.854895 402.931403 l +562.542024 402.931403 l +562.885589 402.569598 l +563.229153 402.569598 l +563.572718 401.765588 l +563.916283 401.363583 l +564.603412 401.363583 l +564.946976 400.911327 l +568.382623 400.911327 l +569.069752 400.130159 l +574.223221 400.130159 l +574.566786 398.321136 l +575.253915 398.321136 l +575.59748 397.227682 l +576.971738 397.227682 l +577.315303 396.846835 l +579.033126 396.846835 l +579.376691 396.44483 l +583.499466 396.44483 l +583.843031 396.115917 l +584.186595 396.115917 l +584.53016 395.211406 l +585.217289 395.211406 l +585.560854 394.849601 l +585.904418 394.125992 l +587.622241 394.125992 l +587.965806 393.673736 l +588.9965 393.673736 l +589.340065 392.640009 l +589.683629 392.640009 l +590.027194 391.893428 l +590.714323 391.893428 l +591.057888 391.564515 l +591.401452 391.564515 l +591.745017 390.760505 l +593.119275 390.760505 l +593.46284 389.634891 l +594.837098 389.634891 l +595.180663 389.345447 l +595.524228 389.345447 l +595.867792 389.030835 l +596.898486 389.030835 l +597.242051 388.66903 l +598.959874 388.66903 l +599.303439 388.307226 l +599.647003 388.307226 l +599.990568 387.543416 l +600.334132 387.09116 l +600.677697 387.09116 l +601.021262 386.689155 l +601.364826 385.885145 l +601.708391 385.885145 l +602.051956 385.459493 l +602.39552 385.459493 l +602.739085 385.19149 l +603.082649 384.46788 l +603.426214 384.199877 l +604.113343 384.199877 l +604.456908 383.453296 l +605.144037 383.453296 l +605.487602 383.091492 l +605.831166 382.056198 l +606.174731 382.056198 l +606.518296 381.302439 l +606.86186 381.302439 l +607.205425 374.380961 l +607.548989 374.380961 l +607.892554 374.112957 l +608.236119 374.112957 l +608.579683 373.366377 l +608.923248 373.366377 l +609.953942 372.386215 l +610.297506 372.386215 l +611.671765 370.933254 l +612.01533 370.191555 l +612.358894 370.191555 l +612.702459 369.810708 l +613.733153 369.810708 l +614.076717 369.481795 l +614.420282 369.481795 l +615.450976 368.562543 l +615.79454 368.160538 l +616.138105 368.160538 l +616.825234 366.756613 l +617.168799 366.756613 l +617.855928 365.902352 l +618.199493 365.902352 l +618.543057 365.500347 l +620.604445 365.500347 l +620.94801 364.414934 l +621.291574 364.053129 l +621.635139 364.053129 l +621.978704 363.310478 l +622.322268 363.310478 l +622.665833 362.929631 l +623.009397 362.929631 l +623.352962 362.65132 l +623.696527 362.65132 l +624.040091 362.199064 l +624.383656 361.392565 l +624.72722 361.103121 l +625.070785 361.103121 l +625.41435 356.870245 l +625.757914 356.50844 l +626.445044 356.50844 l +626.788608 355.834951 l +627.132173 355.490375 l +627.475737 355.490375 l +628.162867 354.816886 l +628.849996 354.816886 l +629.537125 354.204307 l +630.911384 354.204307 l +632.629207 350.96908 l +632.972771 350.96908 l +633.316336 350.567075 l +634.003465 350.567075 l +634.34703 349.441461 l +634.690595 349.126849 l +635.034159 349.126849 l +635.721288 347.493559 l +636.751982 346.591537 l +637.095547 346.591537 l +637.439111 345.777477 l +637.782676 345.488033 l +638.126241 341.457932 l +638.469805 340.809082 l +638.81337 340.541079 l +639.156935 339.834699 l +639.500499 339.834699 l +639.844064 338.800971 l +640.187628 338.420124 l +640.531193 336.231207 l +640.874758 335.778951 l +641.218322 335.778951 l +641.561887 335.326696 l +641.905452 335.326696 l +642.936145 333.11863 l +643.27971 329.9052 l +643.623275 329.479547 l +643.966839 329.479547 l +644.310404 329.117743 l +644.653969 327.76101 l +644.997533 324.372304 l +645.341098 323.625723 l +645.684662 323.625723 l +646.028227 323.324219 l +647.058921 320.018893 l +647.402485 320.018893 l +648.776744 318.458252 l +649.120309 317.431326 l +649.463873 317.431326 l +649.807438 317.08675 l +650.151002 310.867158 l +651.525261 306.539951 l +651.868826 304.600277 l +652.21239 303.926788 l +652.555955 302.514027 l +652.899519 302.514027 l +653.243084 299.320022 l +653.586649 298.565456 l +653.930213 297.050206 l +654.617343 295.595549 l +654.960907 294.173182 l +655.304472 294.173182 l +655.648036 292.4712 l +657.365859 286.992446 l +657.709424 285.168805 l +658.052989 284.478087 l +658.396553 284.478087 l +659.083683 283.814779 l +659.427247 282.789887 l +659.770812 282.789887 l +660.457941 280.506694 l +660.801506 278.255687 l +661.14507 277.564238 l +661.8322 275.41265 l +662.519329 273.81669 l +662.862893 273.81669 l +663.206458 272.650875 l +663.550023 272.3063 l +663.893587 270.507197 l +664.237152 269.703187 l +664.580717 269.301181 l +664.924281 267.348586 l +665.61141 265.40805 l +665.954975 264.727734 l +666.29854 264.727734 l +666.985669 263.092631 l +667.672798 262.23837 l +668.016363 261.49179 l +668.703492 259.294162 l +669.047057 258.497331 l +670.07775 252.773353 l +670.421315 252.428777 l +670.76488 249.29877 l +671.108444 248.394259 l +671.452009 246.954032 l +672.139138 245.516734 l +672.482703 245.172158 l +673.513397 242.876733 l +673.856961 242.474728 l +674.200526 240.35775 l +674.887655 239.132783 l +675.23122 237.296678 l +675.574784 236.844422 l +676.605478 233.297613 l +676.949043 233.297613 l +677.292607 232.594104 l +677.636172 230.420406 l +677.979737 229.367152 l +678.666866 225.010697 l +679.010431 221.904028 l +680.384689 219.380888 l +680.728254 217.049258 l +681.415383 214.215344 l +681.758948 212.484072 l +682.102512 211.426808 l +682.446077 209.891879 l +682.789641 209.602436 l +683.133206 208.206722 l +683.476771 207.825876 l +683.820335 201.953731 l +684.1639 200.963075 l +684.507465 199.288503 l +684.851029 198.943927 l +685.194594 198.943927 l +685.538158 197.666382 l +685.881723 195.596065 l +686.568852 193.706642 l +687.255981 191.671831 l +687.599546 189.933356 l +687.943111 189.242638 l +688.973805 185.187114 l +689.317369 184.568757 l +690.348063 180.408014 l +690.691628 180.006009 l +691.035192 179.3427 l +691.378757 179.3427 l +691.722322 177.603167 l +692.065886 176.896787 l +692.753015 173.85511 l +693.09658 170.126449 l +694.127274 166.034934 l +694.470839 165.404517 l +695.845097 161.484771 l +696.188662 161.122967 l +696.532226 160.174335 l +696.875791 159.884891 l +697.219355 158.18291 l +697.56292 157.564553 l +697.906485 155.878011 l +698.250049 155.516207 l +698.593614 154.383283 l +698.937179 153.981278 l +699.280743 153.981278 l +699.624308 153.071598 l +700.311437 149.513043 l +700.655002 148.510641 l +700.998566 148.510641 l +701.342131 147.819923 l +702.372825 144.329177 l +702.716389 144.329177 l +703.059954 144.000264 l +703.403519 142.852983 l +703.747083 142.55148 l +704.090648 141.921063 l +704.434213 140.932961 l +705.121342 139.652862 l +705.464906 137.856631 l +705.808471 136.671007 l +706.152036 134.9912 l +706.4956 134.9912 l +706.839165 133.705933 l +707.526294 132.492098 l +707.869859 132.147523 l +708.213423 131.534943 l +708.556988 131.220331 l +708.900553 130.318373 l +710.274811 128.995876 l +710.618376 128.37299 l +710.96194 128.37299 l +711.305505 127.72691 l +711.64907 127.72691 l +712.679763 126.634187 l +713.023328 125.374984 l +713.710457 124.752097 l +714.054022 122.932958 l +714.741151 121.238794 l +715.084716 120.94935 l +715.42828 119.109316 l +716.458974 118.177395 l +716.802539 118.177395 l +717.489668 116.962121 l +718.863927 115.802491 l +719.207491 114.658524 l +719.551056 114.121781 l +719.89462 114.121781 l +720.238185 113.84347 l +720.58175 113.84347 l +720.925314 112.672708 l +721.268879 112.371204 l +721.956008 110.923058 l +722.299573 110.363122 l +722.643137 109.458611 l +722.986702 108.922604 l +723.330267 107.216027 l +724.017396 106.668151 l +724.704525 105.509449 l +725.391654 103.11825 l +725.735219 102.487833 l +726.422348 100.480488 l +726.765913 100.202177 l +727.109478 99.305509 l +727.453042 96.711643 l +727.796607 96.132756 l +728.483736 95.541808 l +729.170865 94.332504 l +729.51443 92.566578 l +729.857994 91.662066 l +730.201559 91.662066 l +730.545124 91.360562 l +730.888688 90.424425 l +731.232253 89.84461 l +731.919382 87.857969 l +732.606511 85.840316 l +732.950076 85.562005 l +733.293641 85.005382 l +733.637205 84.190328 l +733.98077 83.065951 l +734.324335 82.776507 l +735.011464 81.371433 l +735.355028 81.08199 l +736.385722 78.619805 l +736.729287 77.48347 l +737.072852 76.935595 l +737.416416 76.657284 l +737.759981 74.817249 l +738.103545 74.817249 l +738.44711 74.549246 l +738.790675 74.549246 l +739.134239 73.970359 l +740.164933 73.124293 l +740.508498 72.566846 l +740.852062 71.452776 l +741.195627 70.873889 l +741.539192 70.873889 l +742.91345 68.633793 l +743.600579 66.736329 l +744.287709 65.289111 l +744.631273 65.0108 l +744.974838 65.0108 l +745.318402 64.721357 l +745.661967 64.721357 l +746.005532 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 426.24758 m +399.005265 426.24758 l +399.348829 425.644572 l +421.68053 425.644572 l +422.024094 424.740061 l +535.743984 424.740061 l +536.087548 424.425448 l +537.461807 424.425448 l +537.805371 421.169207 l +562.19846 421.169207 l +562.542024 420.879764 l +578.345997 420.879764 l +578.689561 420.59032 l +590.714323 420.59032 l +591.057888 419.987313 l +593.119275 419.987313 l +593.46284 417.123027 l +594.149969 417.123027 l +594.493534 416.833583 l +600.334132 416.833583 l +600.677697 415.929072 l +601.708391 415.929072 l +602.051956 415.527067 l +603.082649 415.527067 l +603.426214 414.622555 l +605.144037 414.622555 l +605.487602 414.293642 l +610.984636 414.293642 l +611.3282 413.912795 l +613.389588 413.912795 l +613.733153 413.550991 l +614.076717 413.550991 l +614.420282 412.235338 l +616.825234 412.235338 l +617.168799 411.342887 l +619.230187 411.342887 l +619.573751 411.053443 l +620.604445 411.053443 l +620.94801 410.148932 l +621.978704 410.148932 l +622.322268 409.344922 l +622.665833 409.344922 l +623.009397 409.055478 l +623.696527 409.055478 l +624.040091 408.45247 l +624.72722 408.45247 l +625.070785 408.107895 l +628.162867 408.107895 l +628.506431 407.806391 l +629.193561 407.806391 l +629.537125 407.096631 l +629.88069 406.807187 l +630.567819 406.807187 l +630.911384 405.902676 l +631.254948 405.902676 l +631.942078 405.192916 l +632.285642 404.589908 l +635.034159 404.589908 l +635.377724 403.383893 l +636.064853 403.383893 l +636.408418 401.187223 l +636.751982 400.734967 l +638.126241 400.734967 l +638.469805 400.476535 l +638.81337 400.476535 l +639.156935 399.836419 l +639.500499 399.836419 l +639.844064 399.253803 l +641.905452 399.253803 l +642.249016 398.650796 l +642.592581 398.650796 l +642.936145 398.321883 l +643.966839 398.321883 l +644.310404 397.839477 l +644.653969 397.839477 l +644.997533 397.477672 l +645.684662 396.44525 l +646.371792 396.44525 l +646.715356 394.636227 l +647.402485 394.017871 l +647.74605 394.017871 l +648.089615 393.113359 l +649.120309 393.113359 l +649.463873 392.732512 l +649.807438 385.627846 l +650.151002 385.14544 l +650.838132 385.14544 l +651.181696 384.830828 l +651.525261 384.223603 l +651.868826 384.223603 l +652.555955 382.336295 l +653.243084 382.336295 l +653.586649 381.733288 l +654.273778 381.733288 l +654.617343 379.293848 l +654.960907 378.027532 l +655.304472 377.420308 l +656.67873 377.420308 l +657.022295 376.739992 l +658.052989 372.64946 l +658.740118 371.9397 l +659.083683 371.9397 l +659.427247 370.099665 l +659.770812 369.75509 l +660.114376 368.18727 l +660.801506 366.866013 l +661.14507 366.866013 l +661.488635 366.243127 l +661.8322 366.243127 l +662.175764 365.70712 l +662.519329 364.595676 l +662.862893 364.595676 l +663.206458 362.123345 l +663.893587 361.00166 l +664.237152 361.00166 l +664.924281 359.916246 l +665.267846 359.916246 l +665.61141 359.554442 l +665.954975 359.554442 l +666.642104 358.360487 l +666.985669 358.058983 l +667.329233 357.02369 l +668.359927 355.828783 l +668.703492 354.777827 l +669.047057 352.727601 l +669.390621 352.275345 l +669.734186 351.586194 l +670.07775 351.327762 l +671.452009 351.327762 l +671.795574 350.998849 l +672.139138 350.998849 l +672.482703 350.282231 l +672.826267 349.953318 l +673.169832 349.953318 l +673.513397 349.663874 l +674.200526 348.356309 l +674.544091 346.231425 l +674.887655 346.231425 l +675.23122 345.941982 l +675.574784 345.941982 l +676.261914 345.250533 l +677.292607 344.291203 l +677.636172 343.019939 l +677.979737 337.244916 l +678.323301 333.979398 l +678.666866 332.401397 l +679.010431 332.111954 l +679.69756 330.780389 l +680.041124 330.243646 l +680.384689 329.255575 l +680.728254 329.255575 l +681.071818 327.806791 l +681.758948 326.203935 l +682.102512 325.914491 l +682.446077 325.331875 l +682.789641 325.331875 l +683.133206 325.042431 l +683.476771 323.810199 l +683.820335 323.810199 l +684.1639 322.868579 l +684.851029 322.868579 l +685.881723 320.83728 l +686.225288 320.435275 l +686.912417 317.651233 l +687.255981 317.020816 l +687.599546 317.020816 l +688.286675 315.758934 l +689.317369 314.365986 l +689.660934 310.576334 l +690.004498 309.996519 l +690.691628 307.523356 l +691.035192 305.817772 l +691.378757 304.790845 l +692.065886 304.14732 l +692.409451 302.785984 l +693.09658 300.886544 l +693.440145 300.5971 l +693.783709 298.335822 l +694.127274 297.336618 l +694.470839 294.805679 l +694.814403 294.232634 l +695.157968 293.903721 l +695.501532 293.274496 l +695.845097 291.927518 l +696.188662 289.113483 l +696.532226 288.732636 l +696.875791 287.71777 l +697.219355 287.126822 l +697.56292 286.825318 l +697.906485 285.437352 l +698.250049 285.108439 l +698.593614 282.676318 l +700.655002 278.657184 l +700.998566 278.100562 l +701.342131 276.807354 l +701.685696 276.228467 l +702.372825 274.597667 l +702.716389 274.006719 l +703.059954 273.717276 l +703.403519 272.976438 l +703.747083 271.605183 l +704.090648 270.974766 l +704.777777 269.445929 l +705.121342 269.156485 l +705.464906 268.345166 l +706.4956 264.453021 l +707.18273 263.124549 l +707.526294 263.124549 l +707.869859 262.177279 l +708.213423 261.586332 l +708.556988 261.586332 l +709.244117 260.327129 l +709.587682 260.012516 l +709.931246 259.405291 l +710.618376 257.581233 l +710.96194 254.385293 l +711.305505 253.782285 l +711.64907 251.185427 l +713.023328 245.470912 l +714.054022 241.386345 l +714.397587 241.386345 l +714.741151 240.125389 l +715.084716 239.823886 l +715.42828 239.220878 l +715.771845 236.279636 l +716.11541 235.965023 l +717.146104 233.222665 l +717.489668 231.934299 l +718.176797 227.228725 l +718.520362 227.228725 l +719.207491 225.678447 l +719.551056 222.583813 l +719.89462 221.992865 l +720.58175 220.51278 l +720.925314 218.375766 l +721.268879 218.097455 l +721.956008 216.064717 l +722.986702 212.456629 l +723.330267 209.007739 l +723.673831 209.007739 l +724.017396 208.645934 l +724.360961 206.76972 l +725.735219 202.160049 l +726.078784 201.831135 l +727.453042 198.318849 l +728.140171 195.040939 l +728.483736 194.494625 l +729.51443 190.152077 l +729.857994 188.018377 l +730.201559 187.143149 l +730.545124 185.354831 l +731.919382 181.544132 l +732.262947 180.04925 l +732.606511 179.174022 l +733.293641 177.004118 l +733.637205 176.360592 l +733.98077 176.360592 l +734.324335 173.819602 l +734.667899 173.236986 l +735.355028 169.516087 l +735.698593 168.899971 l +736.385722 165.220304 l +737.416416 162.662427 l +737.759981 161.239324 l +738.44711 156.877658 l +738.790675 156.329783 l +739.134239 154.509156 l +739.821368 152.587027 l +740.164933 152.297584 l +740.508498 150.874481 l +740.852062 149.98812 l +741.195627 140.399047 l +741.539192 140.109604 l +741.882756 137.511502 l +742.569885 135.890877 l +743.257015 133.65272 l +743.944144 132.431356 l +744.974838 129.316321 l +745.318402 129.026878 l +745.661967 127.620051 l +746.005532 127.330608 l +746.349096 126.493289 l +746.692661 126.203845 l +747.036226 120.932602 l +747.723355 118.740909 l +748.066919 118.740909 l +748.410484 117.377154 l +748.754049 117.377154 l +749.097613 117.087711 l +749.441178 116.281404 l +749.784742 116.281404 l +750.128307 115.475096 l +750.471872 115.475096 l +751.159001 114.948661 l +751.502566 114.948661 l +751.84613 113.905362 l +752.189695 113.905362 l +752.533259 113.615919 l +752.876824 113.615919 l +753.563953 112.314188 l +754.594647 111.488738 l +754.938212 111.488738 l +755.281776 110.940862 l +755.968906 110.392987 l +756.31247 110.392987 l +756.9996 109.330545 l +757.343164 108.526535 l +757.686729 108.009671 l +758.030293 102.573032 l +758.373858 101.735713 l +759.060987 100.682842 l +759.404552 99.629972 l +759.748116 99.629972 l +760.091681 99.361969 l +761.46594 96.852309 l +761.809504 96.852309 l +762.153069 96.584305 l +762.496633 96.584305 l +763.183763 95.263432 l +763.870892 95.263432 l +764.214457 94.20099 l +764.558021 93.674555 l +765.588715 90.755232 l +766.275844 90.228797 l +767.650103 87.319046 l +767.993667 87.319046 l +768.337232 86.802183 l +768.680797 86.534179 l +769.024361 83.930718 l +769.367926 83.662715 l +769.71149 83.662715 l +770.742184 82.064266 l +771.085749 81.269828 l +771.429314 81.269828 l +771.772878 80.733821 l +772.116443 80.465818 l +772.460007 79.661808 l +772.803572 79.403376 l +773.147137 78.07293 l +773.490701 77.536924 l +774.177831 77.000917 l +774.521395 77.000917 l +775.208524 75.938475 l +775.552089 74.598458 l +775.895654 74.340027 l +776.239218 72.263 l +776.926348 72.263 l +777.269912 71.994997 l +777.957041 71.994997 l +778.300606 71.468562 l +778.644171 71.468562 l +778.987735 71.200559 l +779.3313 71.200559 l +779.674865 70.932555 l +780.705558 70.932555 l +781.049123 70.664552 l +781.392688 70.128545 l +782.423381 70.128545 l +782.766946 69.870113 l +786.889722 69.870113 l +787.233286 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 426.24758 m +557.388555 426.24758 l +557.732119 425.396275 l +561.854895 425.396275 l +562.19846 423.659613 l +581.094514 423.659613 l +581.438078 423.401181 l +592.432146 423.401181 l +592.775711 423.133178 l +605.487602 423.133178 l +605.831166 422.409569 l +616.48167 422.409569 l +616.825234 421.983916 l +619.573751 421.983916 l +619.917316 421.260307 l +623.009397 421.260307 l +623.352962 420.898503 l +628.162867 420.898503 l +628.506431 417.280458 l +630.911384 417.280458 l +631.254948 416.122683 l +632.972771 416.122683 l +633.316336 415.85468 l +637.095547 415.85468 l +637.439111 415.525766 l +651.868826 415.525766 l +652.21239 415.224263 l +655.648036 415.224263 l +655.991601 414.895349 l +657.022295 414.895349 l +657.365859 413.893429 l +657.709424 413.296513 l +659.083683 413.296513 l +659.427247 413.028509 l +659.770812 413.028509 l +660.114376 412.3049 l +661.488635 412.3049 l +661.8322 412.026589 l +662.175764 412.026589 l +662.519329 411.777069 l +663.206458 411.777069 l +663.893587 411.143049 l +665.267846 411.143049 l +665.61141 410.853606 l +668.016363 410.853606 l +668.359927 410.491801 l +669.734186 410.491801 l +670.07775 408.745159 l +670.421315 408.466847 l +671.108444 408.466847 l +671.452009 407.743238 l +671.795574 407.743238 l +672.482703 406.687169 l +673.513397 406.687169 l +674.200526 406.079945 l +675.23122 406.079945 l +675.918349 405.51219 l +676.261914 405.51219 l +676.605478 404.965875 l +678.323301 404.965875 l +679.010431 404.387442 l +679.353995 403.385521 l +679.69756 403.385521 l +680.384689 402.828074 l +680.728254 402.828074 l +681.071818 402.104465 l +681.758948 402.104465 l +682.102512 401.775552 l +684.1639 401.775552 l +684.507465 401.497241 l +685.881723 401.497241 l +686.568852 400.918807 l +686.912417 400.195198 l +687.255981 399.833394 l +687.599546 399.833394 l +687.943111 399.215037 l +688.286675 399.215037 l +688.63024 398.936726 l +690.004498 398.936726 l +690.348063 398.213117 l +690.691628 398.213117 l +691.378757 397.498021 l +691.722322 397.498021 l +692.065886 397.2485 l +692.409451 396.524891 l +692.753015 396.275371 l +693.440145 396.275371 l +694.127274 395.729056 l +694.814403 395.729056 l +695.845097 394.803226 l +696.188662 394.803226 l +696.532226 394.377574 l +696.875791 393.673611 l +697.219355 393.329035 l +697.906485 393.329035 l +698.250049 392.772412 l +699.280743 392.772412 l +699.624308 391.79742 l +700.311437 391.79742 l +700.655002 391.519108 l +700.998566 391.519108 l +701.342131 390.525701 l +701.685696 390.257698 l +702.372825 390.257698 l +702.716389 389.43867 l +703.403519 389.43867 l +703.747083 388.859783 l +704.434213 388.859783 l +705.121342 387.478535 l +705.464906 387.478535 l +705.808471 387.210532 l +706.4956 387.210532 l +707.526294 385.366275 l +707.869859 385.098272 l +708.213423 384.349711 l +708.556988 384.349711 l +708.900553 384.10019 l +709.244117 383.385094 l +709.587682 382.959442 l +709.931246 377.727854 l +710.618376 376.683845 l +710.96194 376.683845 l +711.305505 376.32204 l +711.64907 376.32204 l +711.992634 375.113345 l +712.336199 374.823902 l +712.679763 374.823902 l +713.023328 373.840802 l +713.366893 373.840802 l +713.710457 373.314367 l +714.054022 373.314367 l +714.397587 372.599271 l +714.741151 372.331268 l +715.084716 368.599512 l +715.42828 368.599512 l +715.771845 367.895549 l +716.11541 367.566636 l +716.458974 367.566636 l +716.802539 367.308204 l +717.146104 367.308204 l +717.489668 367.0402 l +718.520362 364.761325 l +718.863927 364.142968 l +719.207491 364.142968 l +719.551056 363.853524 l +719.89462 363.235167 l +720.58175 362.623842 l +721.268879 359.47865 l +721.956008 359.47865 l +722.299573 358.480569 l +722.643137 357.943826 l +723.673831 357.105579 l +724.017396 356.319316 l +724.360961 356.051312 l +724.704525 355.135054 l +725.04809 353.68627 l +725.391654 353.05225 l +725.735219 351.874567 l +726.078784 351.573063 l +726.422348 351.573063 l +726.765913 350.535059 l +727.453042 350.008623 l +727.796607 349.401399 l +728.140171 349.123088 l +728.483736 347.715319 l +729.857994 347.715319 l +730.201559 347.425875 l +730.545124 346.138241 l +731.232253 344.763519 l +731.919382 342.029228 l +732.606511 341.422003 l +733.293641 339.29252 l +733.637205 338.963607 l +733.98077 337.516523 l +734.324335 337.516523 l +734.667899 336.700645 l +735.011464 332.893657 l +735.355028 332.615346 l +735.698593 331.780412 l +736.385722 329.202119 l +736.729287 328.934116 l +737.072852 328.934116 l +737.759981 327.514569 l +738.44711 325.859975 l +738.790675 324.593659 l +739.134239 322.60543 l +739.477804 321.809595 l +739.821368 313.848032 l +740.164933 312.784854 l +740.508498 312.215347 l +741.882756 305.206321 l +742.226321 304.304298 l +742.569885 304.054778 l +742.91345 303.24046 l +743.257015 302.99094 l +744.287709 297.233198 l +744.631273 296.614841 l +744.974838 295.758097 l +745.318402 294.397464 l +745.661967 293.779107 l +746.005532 292.931289 l +746.349096 292.413765 l +746.692661 288.253097 l +747.036226 281.540139 l +748.066919 275.939284 l +748.754049 274.169852 l +749.097613 272.961611 l +749.441178 272.433779 l +750.128307 270.846972 l +750.815436 266.86972 l +751.159001 265.961601 l +751.502566 264.232449 l +751.84613 263.18849 l +752.189695 261.544836 l +752.533259 261.017005 l +752.876824 258.264817 l +753.563953 255.196293 l +753.907518 253.52523 l +754.251083 252.5994 l +754.594647 250.642004 l +754.938212 245.579285 l +755.281776 244.405374 l +755.625341 243.630078 l +755.968906 240.667669 l +756.31247 239.892373 l +756.656035 238.05258 l +757.343164 235.900974 l +758.030293 234.838532 l +758.717423 232.784039 l +759.060987 231.394768 l +759.404552 230.877244 l +759.748116 229.766284 l +760.091681 229.464781 l +760.77881 227.00276 l +761.122375 226.433253 l +761.809504 224.329657 l +762.153069 223.778633 l +762.496633 222.424259 l +762.840198 221.906736 l +763.183763 219.762709 l +763.527327 218.977182 l +763.870892 218.727661 l +764.901586 216.356723 l +765.24515 216.107202 l +765.588715 210.445631 l +765.93228 209.669676 l +766.275844 209.420155 l +766.619409 202.380281 l +766.962974 202.12185 l +767.993667 199.181404 l +768.680797 196.007775 l +769.024361 196.007775 l +769.367926 195.749344 l +769.71149 195.222908 l +770.055055 192.284443 l +771.085749 190.181508 l +771.429314 190.181508 l +771.772878 189.655073 l +772.116443 187.579532 l +772.460007 187.07158 l +773.147137 185.538152 l +773.834266 183.185696 l +774.177831 182.668172 l +774.521395 181.901128 l +774.86496 181.651608 l +775.208524 180.884564 l +775.552089 179.807104 l +775.895654 172.428431 l +776.239218 171.403615 l +776.582783 169.79972 l +777.269912 167.961323 l +777.613477 165.928854 l +777.957041 165.679334 l +778.300606 165.16181 l +778.644171 162.851766 l +778.987735 162.343814 l +779.3313 160.570437 l +780.705558 156.727626 l +781.049123 156.459622 l +781.392688 155.452629 l +781.736252 148.171321 l +782.423381 147.127362 l +782.766946 146.877842 l +783.110511 146.360318 l +783.454075 146.360318 l +783.79764 145.094233 l +784.141205 144.586281 l +784.484769 137.866394 l +784.828334 134.87215 l +785.515463 133.846674 l +785.859028 128.107705 l +786.202592 127.849273 l +786.889722 126.805315 l +787.233286 126.555794 l +787.576851 126.029359 l +787.920415 126.029359 l +788.26398 125.770927 l +788.607545 124.98606 l +788.951109 124.98606 l +789.294674 124.73654 l +789.981803 122.972074 l +790.325368 122.454551 l +790.668932 122.454551 l +791.012497 122.20503 l +792.043191 119.101868 l +792.386755 117.540386 l +793.073885 115.730043 l +793.417449 115.222091 l +793.761014 110.132997 l +794.104579 109.108181 l +794.448143 108.600229 l +794.791708 103.591339 l +795.135272 102.566523 l +795.478837 102.040088 l +795.822402 95.837725 l +796.165966 95.588204 l +796.853096 95.588204 l +797.19666 95.338684 l +797.540225 92.335528 l +797.883789 92.086008 l +798.227354 84.841005 l +798.570919 84.573002 l +798.914483 84.036995 l +799.258048 83.787475 l +799.601613 83.787475 l +800.288742 83.26104 l +800.632306 83.26104 l +800.975871 83.011519 l +801.319436 83.011519 l +802.006565 81.957989 l +802.693694 80.349969 l +803.037259 80.091537 l +803.724388 80.091537 l +804.067953 79.842017 l +805.098646 79.842017 l +805.442211 78.835024 l +805.785776 78.585503 l +806.12934 78.585503 l +806.472905 78.335983 l +806.81647 78.335983 l +807.160034 78.086463 l +807.503599 77.337902 l +808.534293 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +2 setlinecap +[] 0 setdash +0.173 0.627 0.173 setrgbcolor +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 131.958329 m +526.811304 131.958329 l +527.154868 131.668885 l +543.989535 131.668885 l +544.333099 131.354272 l +560.824201 131.354272 l +561.167766 131.025359 l +562.542024 131.025359 l +562.885589 130.680783 l +573.879657 130.680783 l +574.223221 130.37928 l +588.9965 130.37928 l +589.340065 130.034704 l +589.683629 130.034704 l +590.027194 129.653857 l +592.432146 129.653857 l +592.775711 129.292052 l +597.585615 129.292052 l +597.92918 128.963139 l +599.647003 128.963139 l +599.990568 128.684828 l +608.579683 128.684828 l +608.923248 128.323024 l +609.953942 128.323024 l +610.297506 128.03358 l +612.358894 128.03358 l +612.702459 127.631575 l +615.107411 127.631575 l +615.450976 127.205922 l +616.825234 127.205922 l +617.168799 126.877009 l +619.917316 126.877009 l +620.26088 126.609006 l +625.41435 126.609006 l +625.757914 126.247201 l +626.788608 126.247201 l +627.132173 125.443191 l +629.193561 125.443191 l +629.537125 125.081387 l +630.224254 125.081387 l +630.567819 124.791943 l +631.254948 124.791943 l +631.598513 124.339687 l +635.721288 124.339687 l +636.064853 123.887432 l +637.782676 123.887432 l +638.126241 123.525627 l +640.187628 123.525627 l +640.531193 123.123622 l +644.997533 123.123622 l +645.341098 122.822118 l +647.74605 122.822118 l +648.089615 122.369863 l +649.120309 122.369863 l +649.463873 122.068359 l +650.151002 122.068359 l +650.838132 121.422279 l +651.181696 121.422279 l +651.525261 121.020274 l +652.899519 121.020274 l +653.243084 120.639428 l +655.991601 120.639428 l +656.335166 120.237423 l +658.396553 120.237423 l +658.740118 119.875618 l +661.14507 119.875618 l +661.488635 119.586174 l +661.8322 118.946896 l +662.175764 118.946896 l +662.519329 118.657452 l +663.206458 118.657452 l +663.550023 118.368008 l +665.61141 118.368008 l +666.29854 117.677291 l +667.329233 117.677291 l +667.672798 117.275286 l +669.390621 117.275286 l +669.734186 116.894439 l +674.887655 116.894439 l +675.23122 116.592935 l +675.574784 116.592935 l +676.261914 115.946855 l +677.292607 115.946855 l +677.636172 115.617942 l +677.979737 115.617942 l +678.323301 115.215937 l +678.666866 115.215937 l +679.010431 114.854133 l +679.353995 114.183842 l +680.041124 114.183842 l +680.384689 113.905531 l +680.728254 113.265415 l +682.789641 113.265415 l +683.133206 112.884568 l +684.851029 112.884568 l +685.194594 112.458916 l +685.881723 112.458916 l +686.225288 112.056911 l +686.912417 112.056911 l +687.255981 111.727998 l +688.286675 111.727998 l +688.63024 110.521983 l +690.004498 110.521983 l +691.378757 109.013708 l +691.722322 109.013708 l +692.065886 108.712204 l +693.440145 108.712204 l +693.783709 108.054378 l +694.127274 107.752874 l +694.814403 107.752874 l +695.501532 106.60917 l +697.219355 104.824998 l +698.250049 104.824998 l +698.593614 104.480423 l +699.624308 104.480423 l +699.967872 103.774042 l +700.311437 103.412238 l +700.655002 103.412238 l +701.342131 102.072061 l +702.02926 102.072061 l +702.716389 101.451824 l +703.059954 101.451824 l +703.747083 100.670655 l +704.434213 100.670655 l +704.777777 99.504841 l +706.152036 97.99445 l +706.4956 97.99445 l +706.839165 97.716139 l +708.213423 97.716139 l +708.556988 97.314134 l +708.900553 96.241642 l +709.244117 95.583816 l +709.931246 95.583816 l +710.274811 94.384979 l +710.618376 93.727153 l +710.96194 92.6739 l +711.305505 91.169122 l +711.64907 90.867618 l +711.992634 90.288731 l +712.679763 90.288731 l +714.054022 88.528967 l +714.397587 88.239523 l +714.741151 87.515914 l +715.084716 87.515914 l +715.42828 87.22647 l +715.771845 87.22647 l +716.11541 86.881895 l +716.802539 85.552627 l +717.146104 85.208052 l +717.833233 85.208052 l +718.176797 84.638545 l +718.863927 83.987296 l +719.207491 83.987296 l +719.551056 83.642721 l +719.89462 83.642721 l +720.238185 83.313807 l +720.925314 83.313807 l +721.268879 82.631457 l +721.612444 82.286881 l +721.956008 82.286881 l +722.299573 81.339611 l +722.986702 80.636102 l +723.673831 80.636102 l +724.360961 79.677475 l +726.078784 77.82931 l +726.422348 77.527806 l +726.765913 76.434352 l +727.109478 76.132848 l +727.453042 76.132848 l +728.140171 74.787944 l +728.483736 74.787944 l +728.827301 74.060788 l +729.170865 73.658783 l +729.51443 72.825681 l +729.857994 72.481105 l +730.201559 72.481105 l +730.545124 71.532473 l +730.888688 70.941525 l +731.232253 70.612612 l +731.919382 69.241578 l +732.606511 69.241578 l +732.950076 68.879774 l +734.324335 68.879774 l +734.667899 68.601463 l +735.355028 66.872841 l +736.042158 66.279917 l +737.072852 66.279917 l +737.759981 65.697301 l +738.103545 65.697301 l +738.44711 65.335497 l +738.790675 65.335497 l +739.134239 65.033993 l +740.164933 65.033993 l +740.852062 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 127.28212 m +512.038025 127.28212 l +512.381589 127.003808 l +527.841997 127.003808 l +528.185562 126.702305 l +543.989535 126.702305 l +544.333099 126.373391 l +620.604445 126.373391 l +620.94801 126.058779 l +624.72722 126.058779 l +625.070785 125.769335 l +627.132173 125.769335 l +627.475737 125.479892 l +630.567819 125.479892 l +630.911384 125.22146 l +636.408418 125.22146 l +636.751982 124.953456 l +639.500499 124.953456 l +639.844064 124.551451 l +640.531193 124.551451 l +640.874758 123.860003 l +644.653969 123.860003 l +644.997533 123.531089 l +645.684662 123.531089 l +646.028227 123.252778 l +649.120309 123.252778 l +649.463873 122.974467 l +654.273778 122.974467 l +654.617343 122.716035 l +655.648036 122.716035 l +655.991601 122.457603 l +656.67873 122.457603 l +657.022295 122.199172 l +662.175764 122.199172 l +662.519329 121.870258 l +664.580717 121.870258 l +664.924281 121.541345 l +666.642104 121.541345 l +666.985669 120.883519 l +669.734186 120.883519 l +670.07775 120.605208 l +671.452009 120.605208 l +671.795574 120.315764 l +674.887655 120.315764 l +675.23122 120.02632 l +676.605478 120.02632 l +676.949043 119.624315 l +677.636172 119.624315 l +677.979737 119.309703 l +678.666866 119.309703 l +679.69756 118.392113 l +680.384689 118.392113 l +680.728254 118.090609 l +681.758948 118.090609 l +682.446077 117.432783 l +683.476771 117.432783 l +683.820335 117.030778 l +685.194594 117.030778 l +685.538158 116.701864 l +687.599546 116.701864 l +687.943111 116.299859 l +690.691628 116.299859 l +691.035192 115.424632 l +692.065886 115.424632 l +692.409451 115.156628 l +693.440145 115.156628 l +693.783709 114.827715 l +695.501532 114.827715 l +695.845097 114.345309 l +697.906485 114.345309 l +698.250049 114.086877 l +698.593614 114.086877 l +698.937179 112.880862 l +699.280743 112.62243 l +703.059954 112.62243 l +703.747083 111.942114 l +704.090648 111.942114 l +704.434213 111.339106 l +705.808471 111.339106 l +706.152036 111.049663 l +706.839165 111.049663 l +707.526294 110.268494 l +708.556988 110.268494 l +708.900553 109.939581 l +709.244117 109.939581 l +709.931246 109.280392 l +710.274811 109.280392 l +710.618376 108.978889 l +711.64907 108.978889 l +711.992634 108.207039 l +712.336199 107.917595 l +713.023328 107.917595 l +713.710457 107.34984 l +714.397587 106.246079 l +715.084716 106.246079 l +715.771845 105.43476 l +716.11541 105.43476 l +716.458974 103.637797 l +717.146104 103.637797 l +717.489668 103.359486 l +717.833233 103.359486 l +718.176797 103.030573 l +718.863927 103.030573 l +719.551056 102.299655 l +720.58175 102.299655 l +721.612444 101.444306 l +721.956008 101.444306 l +722.643137 100.814498 l +722.986702 100.564978 l +723.673831 100.564978 l +724.360961 99.977633 l +724.704525 99.307342 l +725.391654 98.576424 l +725.735219 98.576424 l +726.078784 97.657173 l +726.422348 97.657173 l +727.453042 96.768324 l +727.796607 96.768324 l +728.483736 96.109166 l +729.170865 96.109166 l +729.51443 95.505109 l +730.201559 95.505109 l +730.545124 95.203606 l +730.888688 94.332595 l +731.575818 93.641146 l +732.262947 92.026108 l +732.606511 91.132608 l +732.950076 90.817996 l +733.637205 90.817996 l +733.98077 90.034086 l +734.324335 90.034086 l +734.667899 89.755775 l +735.698593 89.755775 l +736.385722 89.229339 l +737.416416 89.229339 l +737.759981 88.746933 l +738.103545 88.746933 l +738.44711 88.488501 l +738.790675 87.602966 l +739.134239 87.066959 l +739.477804 86.788648 l +739.821368 86.306242 l +740.164933 86.027931 l +740.508498 86.027931 l +741.195627 85.409574 l +741.539192 84.505063 l +742.226321 84.505063 l +743.257015 82.729479 l +744.631273 81.523777 l +744.974838 80.565639 l +745.661967 80.565639 l +746.349096 79.947282 l +746.692661 79.420847 l +747.036226 78.214832 l +747.723355 77.617915 l +748.066919 77.617915 l +748.410484 77.339604 l +748.754049 76.133589 l +749.097613 76.133589 l +749.441178 75.875157 l +749.784742 75.875157 l +750.128307 75.607154 l +750.471872 75.607154 l +750.815436 74.977346 l +751.159001 74.977346 l +751.502566 74.380429 l +751.84613 73.223577 l +752.189695 72.603341 l +752.533259 72.335337 l +752.876824 71.129322 l +753.220389 70.851011 l +753.563953 70.851011 l +753.907518 70.506435 l +754.251083 69.631208 l +754.594647 68.157189 l +754.938212 68.157189 l +755.281776 67.812613 l +755.625341 67.812613 l +755.968906 66.975103 l +756.656035 66.448668 l +756.9996 65.922232 l +757.343164 65.632789 l +758.030293 65.632789 l +758.373858 65.331285 l +759.748116 65.331285 l +760.435246 64.80485 l +764.901586 64.80485 l +765.24515 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 117.100886 m +512.381589 117.100886 l +512.725154 116.832882 l +578.345997 116.832882 l +578.689561 116.564879 l +599.303439 116.564879 l +599.647003 116.296876 l +600.677697 116.296876 l +601.021262 116.028872 l +611.671765 116.028872 l +612.01533 115.760869 l +636.064853 115.760869 l +636.408418 115.431956 l +641.561887 115.431956 l +641.905452 115.163952 l +646.715356 115.163952 l +647.058921 114.440343 l +648.433179 114.440343 l +648.776744 113.913908 l +653.243084 113.913908 l +653.586649 113.664388 l +654.617343 113.664388 l +654.960907 113.414867 l +657.365859 113.414867 l +657.709424 112.802288 l +659.770812 112.802288 l +660.114376 112.523977 l +662.862893 112.523977 l +663.206458 111.746625 l +664.237152 111.746625 l +664.924281 111.22019 l +666.29854 111.22019 l +666.642104 110.952187 l +669.390621 110.952187 l +669.734186 110.693755 l +675.918349 110.693755 l +676.261914 110.415444 l +685.881723 110.415444 l +686.225288 110.165923 l +686.568852 109.638092 l +687.599546 108.862136 l +688.286675 108.862136 l +688.63024 108.603704 l +692.065886 108.603704 l +692.409451 108.354184 l +693.09658 108.354184 l +693.440145 108.104664 l +695.845097 108.104664 l +696.188662 107.855143 l +696.532226 107.855143 l +697.219355 107.347191 l +699.280743 107.347191 l +699.624308 107.057747 l +700.655002 107.057747 l +700.998566 106.789744 l +701.342131 106.789744 l +701.685696 106.281792 l +702.02926 106.013789 l +703.747083 106.013789 l +704.090648 105.735477 l +704.434213 105.735477 l +705.121342 104.854895 l +706.152036 104.854895 l +706.839165 104.26755 l +707.526294 104.26755 l +707.869859 104.009118 l +710.274811 104.009118 l +710.96194 103.412202 l +712.679763 103.412202 l +713.023328 103.144198 l +713.366893 103.144198 l +713.710457 102.842694 l +715.084716 102.842694 l +715.771845 102.334742 l +716.11541 102.334742 l +716.458974 101.817879 l +717.489668 100.971442 l +718.176797 100.971442 l +718.520362 100.721921 l +718.863927 100.721921 l +719.207491 100.472401 l +719.551056 100.472401 l +720.58175 99.655126 l +721.612444 99.655126 l +721.956008 99.326213 l +722.986702 99.326213 l +723.330267 99.076692 l +723.673831 98.469468 l +724.017396 98.167964 l +725.391654 98.167964 l +725.735219 97.918444 l +726.422348 97.918444 l +726.765913 97.58953 l +727.109478 96.959113 l +727.453042 96.959113 l +727.796607 95.872743 l +728.140171 95.872743 l +728.483736 95.614311 l +728.827301 95.097447 l +730.201559 95.097447 l +730.545124 94.847927 l +731.919382 94.847927 l +732.606511 94.1901 l +733.98077 94.1901 l +734.324335 93.922097 l +734.667899 93.414145 l +735.011464 93.414145 l +735.698593 92.86783 l +736.042158 92.86783 l +736.385722 92.61831 l +737.072852 92.61831 l +737.416416 91.813564 l +737.759981 91.29604 l +738.103545 91.29604 l +738.44711 91.017729 l +738.790675 91.017729 l +739.134239 90.688816 l +739.477804 89.625637 l +739.821368 89.376117 l +740.164933 89.376117 l +740.508498 88.877076 l +740.852062 88.627556 l +741.539192 88.627556 l +741.882756 87.936838 l +742.226321 87.936838 l +742.569885 87.678406 l +742.91345 87.161543 l +743.944144 87.161543 l +744.287709 86.644019 l +744.631273 85.572006 l +745.318402 85.572006 l +745.661967 85.282562 l +746.005532 85.282562 l +746.349096 84.731538 l +746.692661 84.731538 l +747.036226 84.473106 l +747.37979 84.473106 l +747.723355 84.205103 l +748.410484 84.205103 l +748.754049 83.955582 l +749.097613 83.955582 l +749.441178 83.706062 l +750.471872 83.706062 l +750.815436 83.207021 l +751.84613 82.318172 l +752.533259 82.318172 l +752.876824 82.068652 l +753.220389 82.068652 l +753.563953 81.81022 l +753.907518 80.934992 l +754.594647 80.435952 l +754.938212 79.899209 l +755.281776 79.649688 l +755.968906 79.649688 l +756.656035 78.492049 l +756.9996 78.492049 l +757.343164 78.224045 l +757.686729 77.706522 l +758.030293 77.438518 l +758.717423 77.438518 l +759.060987 77.093943 l +759.404552 77.093943 l +759.748116 76.567507 l +760.091681 76.567507 l +760.77881 75.949151 l +761.46594 75.949151 l +762.153069 75.422715 l +762.496633 74.550308 l +763.527327 74.550308 l +763.870892 74.300788 l +764.558021 74.300788 l +764.901586 74.042356 l +765.93228 72.675453 l +767.306538 71.66846 l +767.650103 71.66846 l +768.337232 71.129496 l +768.680797 71.129496 l +769.024361 70.879976 l +770.055055 70.879976 l +770.742184 70.372024 l +771.429314 69.334019 l +771.772878 69.334019 l +772.116443 68.579453 l +772.460007 68.329933 l +772.803572 67.735837 l +773.147137 67.735837 l +773.490701 67.446393 l +774.521395 67.446393 l +774.86496 66.826157 l +775.208524 66.576636 l +775.552089 66.576636 l +776.926348 65.469918 l +777.269912 65.191606 l +778.300606 65.191606 l +778.644171 64.942086 l +779.3313 64.942086 l +780.018429 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 426.24758 m +482.835032 426.24758 l +483.178597 419.669315 l +530.934079 419.669315 l +531.277644 418.818011 l +551.204392 418.818011 l +551.547956 418.473435 l +563.916283 418.473435 l +564.259847 413.113368 l +573.192527 413.113368 l +573.536092 410.701337 l +586.591548 410.701337 l +586.935112 410.423026 l +587.965806 410.423026 l +588.309371 410.094113 l +594.837098 410.094113 l +595.180663 408.936339 l +596.211357 408.936339 l +596.554922 408.132328 l +611.671765 408.132328 l +612.01533 406.816676 l +612.358894 406.435829 l +612.702459 406.435829 l +613.046023 406.033824 l +615.79454 406.033824 l +616.138105 403.862997 l +618.199493 403.862997 l +618.543057 396.626906 l +625.757914 396.626906 l +626.101479 396.337462 l +630.567819 396.337462 l +630.911384 396.048019 l +631.254948 395.143507 l +632.972771 395.143507 l +633.316336 394.339497 l +640.187628 394.339497 l +640.531193 393.887241 l +650.151002 393.887241 l +650.494567 392.853514 l +655.304472 392.853514 l +655.648036 392.472667 l +657.022295 392.472667 l +657.365859 391.568156 l +659.427247 391.568156 l +659.770812 390.989269 l +661.488635 390.989269 l +661.8322 385.583483 l +662.175764 384.20518 l +662.519329 383.937177 l +663.206458 383.937177 l +663.550023 383.484921 l +664.580717 383.484921 l +664.924281 383.123117 l +665.61141 383.123117 l +665.954975 377.897051 l +666.29854 377.897051 l +666.642104 371.350112 l +666.985669 370.363373 l +669.390621 370.363373 l +669.734186 367.858572 l +671.108444 367.858572 l +671.452009 367.557068 l +671.795574 367.557068 l +672.139138 367.212492 l +672.826267 367.212492 l +673.169832 366.810487 l +673.856961 366.810487 l +674.200526 365.202467 l +674.544091 358.870888 l +674.887655 357.839745 l +675.918349 357.839745 l +676.261914 357.550301 l +676.605478 356.971414 l +676.949043 355.475955 l +677.292607 354.752346 l +677.636172 354.752346 l +677.979737 354.390542 l +678.323301 354.390542 l +679.010431 347.790103 l +679.353995 346.584087 l +679.69756 346.131832 l +681.758948 346.131832 l +682.102512 344.787986 l +682.789641 344.787986 l +683.133206 344.426182 l +683.820335 344.426182 l +684.1639 342.902794 l +685.194594 342.902794 l +685.538158 341.817381 l +685.881723 341.817381 l +686.225288 341.455576 l +686.912417 341.455576 l +687.255981 340.651566 l +687.599546 337.033521 l +687.943111 335.224498 l +688.286675 335.224498 l +688.63024 334.420488 l +688.973805 333.104835 l +691.378757 333.104835 l +691.722322 329.48679 l +693.783709 329.48679 l +694.470839 327.976399 l +694.814403 327.976399 l +695.501532 317.175864 l +696.532226 317.175864 l +696.875791 313.919623 l +697.219355 313.196014 l +697.56292 312.89451 l +697.906485 312.89451 l +698.250049 312.337888 l +698.937179 312.337888 l +699.280743 311.976084 l +700.998566 311.976084 l +701.342131 311.614279 l +702.02926 311.614279 l +702.372825 310.235976 l +702.716389 309.874171 l +703.059954 309.874171 l +703.403519 308.388869 l +703.747083 305.632263 l +706.152036 305.632263 l +706.4956 305.180007 l +707.526294 305.180007 l +707.869859 298.345921 l +708.213423 298.017008 l +708.556988 295.949554 l +709.587682 295.949554 l +709.931246 295.62064 l +710.274811 295.62064 l +710.618376 295.258836 l +711.305505 293.691016 l +711.64907 293.329212 l +713.023328 293.329212 l +713.366893 293.000299 l +713.710457 292.276689 l +714.054022 291.987246 l +714.397587 291.183236 l +714.741151 291.183236 l +715.084716 289.977221 l +715.42828 284.665107 l +715.771845 283.941498 l +717.146104 283.941498 l +717.489668 278.715433 l +717.833233 278.715433 l +718.176797 276.41304 l +719.207491 272.745628 l +719.551056 272.116402 l +719.89462 266.689334 l +720.58175 266.689334 l +720.925314 266.360421 l +721.268879 266.360421 l +721.612444 264.249895 l +721.956008 257.013804 l +722.299573 253.829924 l +723.330267 253.829924 l +723.673831 252.925413 l +724.017396 252.647102 l +725.735219 252.647102 l +726.078784 250.924223 l +726.422348 250.562418 l +726.765913 248.83954 l +727.109478 248.236532 l +727.453042 244.9474 l +727.796607 244.267084 l +728.140171 244.267084 l +728.483736 243.233357 l +728.827301 243.233357 l +729.170865 242.965353 l +729.51443 242.513098 l +730.201559 242.513098 l +730.545124 241.364512 l +731.232253 241.364512 l +731.575818 240.529578 l +732.262947 240.529578 l +732.606511 240.228074 l +732.950076 240.228074 l +733.293641 239.938631 l +734.324335 239.938631 l +734.667899 234.059307 l +735.355028 234.059307 l +735.698593 232.760033 l +736.042158 228.237477 l +736.385722 226.514598 l +736.729287 226.514598 l +737.072852 224.99121 l +737.416416 221.838342 l +737.759981 220.970011 l +738.103545 220.568006 l +738.44711 213.751893 l +739.134239 213.751893 l +739.477804 213.173005 l +739.821368 213.173005 l +740.164933 212.894694 l +740.508498 212.894694 l +740.852062 212.550119 l +741.195627 212.550119 l +741.539192 212.188314 l +741.882756 209.583321 l +742.226321 209.583321 l +742.91345 196.67896 l +743.257015 193.878907 l +743.600579 189.537253 l +744.287709 189.537253 l +744.631273 189.156406 l +744.974838 187.709188 l +745.318402 187.709188 l +746.005532 176.87228 l +746.349096 176.543367 l +746.692661 170.915297 l +747.036226 160.78477 l +747.37979 160.78477 l +747.723355 156.994437 l +748.066919 147.26553 l +748.754049 147.26553 l +749.097613 141.059081 l +749.441178 139.049055 l +749.784742 139.049055 l +750.128307 122.573902 l +750.471872 122.573902 l +750.815436 122.284458 l +751.502566 108.029359 l +751.84613 107.700446 l +752.189695 106.494431 l +752.876824 91.838564 l +753.220389 91.838564 l +753.907518 91.235557 l +754.251083 91.235557 l +754.594647 88.051677 l +756.656035 88.051677 l +756.9996 83.52912 l +757.686729 83.52912 l +758.030293 83.239676 l +759.060987 83.239676 l +759.404552 78.029691 l +761.46594 78.029691 l +761.809504 71.350223 l +762.840198 71.350223 l +763.183763 71.02131 l +763.527327 71.02131 l +763.870892 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 426.24758 m +525.09348 426.24758 l +525.437045 425.644572 l +555.327167 425.644572 l +555.670732 424.740061 l +569.413317 424.740061 l +569.756881 421.48382 l +624.383656 421.48382 l +624.72722 421.169207 l +638.469805 421.169207 l +638.81337 420.879764 l +640.187628 420.879764 l +640.531193 418.467733 l +649.807438 418.467733 l +650.151002 417.864726 l +651.525261 417.864726 l +651.868826 417.060716 l +654.617343 417.060716 l +654.960907 416.771272 l +656.335166 416.771272 l +656.67873 410.091804 l +660.801506 410.091804 l +661.14507 408.776151 l +663.206458 408.776151 l +663.550023 408.374146 l +670.421315 408.374146 l +670.76488 408.084702 l +673.169832 408.084702 l +673.513397 407.505815 l +680.728254 407.505815 l +681.071818 405.395289 l +684.851029 405.395289 l +685.194594 405.136857 l +686.568852 405.136857 l +686.912417 404.868853 l +687.255981 402.456823 l +691.378757 402.456823 l +691.722322 401.652813 l +692.409451 401.652813 l +692.753015 393.011914 l +694.127274 393.011914 l +694.470839 392.71041 l +694.814403 391.418251 l +695.501532 391.418251 l +695.845097 391.128807 l +696.188662 391.128807 l +696.532226 388.843726 l +697.219355 388.843726 l +697.56292 382.693049 l +700.998566 382.693049 l +701.342131 382.364136 l +704.434213 382.364136 l +704.777777 381.048483 l +705.464906 381.048483 l +705.808471 375.700068 l +706.152036 374.854002 l +707.18273 374.854002 l +707.526294 374.492197 l +707.869859 374.492197 l +708.213423 374.163284 l +708.556988 374.163284 l +708.900553 371.938626 l +710.274811 371.938626 l +710.618376 367.958776 l +710.96194 367.958776 l +711.305505 367.657272 l +711.64907 366.895578 l +713.366893 366.895578 l +713.710457 363.422255 l +714.741151 363.422255 l +715.084716 359.502706 l +716.458974 359.502706 l +716.802539 358.94277 l +717.833233 358.94277 l +718.176797 358.363883 l +721.612444 358.363883 l +721.956008 351.580048 l +722.299573 351.580048 l +722.643137 351.301737 l +722.986702 351.301737 l +723.330267 344.933977 l +725.391654 344.933977 l +725.735219 340.41142 l +730.888688 340.41142 l +731.232253 339.777401 l +731.575818 339.777401 l +731.919382 339.260537 l +732.262947 339.260537 l +732.606511 338.992534 l +732.950076 335.327501 l +734.324335 335.327501 l +734.667899 334.998588 l +735.011464 334.998588 l +735.698593 326.163216 l +736.042158 326.163216 l +736.385722 324.77166 l +736.729287 324.77166 l +737.072852 324.470156 l +737.416416 322.697314 l +738.790675 322.697314 l +739.134239 315.476886 l +739.477804 314.218435 l +739.821368 313.903823 l +740.164933 307.799194 l +740.508498 307.799194 l +740.852062 307.47028 l +741.195627 302.348632 l +741.539192 301.44412 l +742.226321 301.44412 l +742.569885 293.863454 l +743.944144 293.863454 l +744.287709 289.039394 l +744.631273 289.039394 l +744.974838 288.724781 l +745.318402 288.724781 l +745.661967 287.080215 l +746.349096 286.55378 l +746.692661 285.792086 l +747.036226 278.689997 l +747.37979 275.350263 l +748.066919 275.350263 l +748.410484 272.938233 l +748.754049 271.597652 l +749.097613 267.376599 l +749.784742 267.376599 l +750.128307 265.92938 l +750.471872 258.136667 l +751.159001 253.083233 l +751.502566 252.504346 l +751.84613 245.835082 l +752.189695 245.194967 l +752.533259 237.323673 l +753.907518 237.323673 l +754.251083 236.476783 l +754.594647 233.129786 l +754.938212 233.129786 l +755.281776 228.410597 l +755.625341 228.410597 l +755.968906 228.109093 l +756.31247 228.109093 l +756.656035 226.717537 l +756.9996 226.717537 l +757.343164 224.507746 l +757.686729 224.218303 l +758.030293 221.705406 l +758.373858 221.705406 l +758.717423 216.49542 l +759.060987 216.49542 l +759.404552 216.205977 l +759.748116 212.287211 l +760.091681 212.287211 l +760.435246 207.077225 l +760.77881 204.281463 l +761.122375 204.281463 l +761.46594 189.464706 l +761.809504 186.57027 l +762.153069 185.613115 l +762.840198 185.613115 l +763.183763 184.81794 l +763.527327 177.642759 l +763.870892 177.313846 l +764.214457 177.313846 l +764.558021 174.792178 l +764.901586 174.513867 l +765.24515 173.884059 l +765.588715 173.625627 l +765.93228 170.691721 l +766.275844 170.691721 l +766.619409 170.155715 l +766.962974 170.155715 l +767.306538 169.826801 l +767.650103 165.222016 l +767.993667 162.273979 l +768.337232 161.160735 l +769.024361 156.926282 l +769.367926 156.926282 l +769.71149 156.524277 l +770.055055 150.323503 l +770.39862 150.323503 l +770.742184 145.445842 l +771.085749 145.445842 l +771.429314 138.209752 l +772.803572 138.209752 l +773.147137 135.578446 l +773.490701 135.578446 l +774.177831 120.455747 l +774.521395 120.455747 l +774.86496 109.687755 l +776.582783 109.687755 l +776.926348 108.079735 l +777.957041 108.079735 l +778.300606 105.399701 l +778.644171 99.714202 l +781.049123 99.714202 l +781.392688 93.014118 l +782.423381 93.014118 l +782.766946 86.553322 l +783.110511 82.935277 l +784.828334 82.935277 l +785.171898 82.667274 l +786.202592 82.667274 l +786.546157 78.111217 l +789.638239 78.111217 l +789.981803 70.875126 l +794.104579 70.875126 l +794.448143 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 481.043 60.825 clipbox +245.775444 426.24758 m +587.965806 426.24758 l +588.309371 424.510918 l +628.162867 424.510918 l +628.506431 424.252486 l +639.500499 424.252486 l +639.844064 420.634441 l +643.27971 420.634441 l +643.623275 419.783136 l +651.525261 419.783136 l +651.868826 419.515133 l +675.23122 419.515133 l +675.574784 417.76849 l +680.384689 417.76849 l +680.728254 416.610716 l +691.722322 416.610716 l +692.409451 416.093192 l +712.679763 416.093192 l +713.023328 415.106452 l +714.054022 415.106452 l +714.397587 410.45468 l +715.42828 410.45468 l +715.771845 409.370226 l +716.458974 409.370226 l +716.802539 409.102222 l +717.146104 409.102222 l +717.489668 408.852702 l +718.176797 408.852702 l +718.520362 408.584699 l +721.956008 408.584699 l +722.299573 406.88796 l +722.643137 406.388919 l +723.330267 406.388919 l +723.673831 405.963267 l +724.360961 405.963267 l +724.704525 405.42726 l +725.391654 405.42726 l +726.078784 404.787144 l +729.51443 404.787144 l +729.857994 403.539543 l +730.545124 403.539543 l +730.888688 400.355663 l +731.919382 400.355663 l +732.262947 400.106142 l +732.950076 400.106142 l +733.293641 398.48925 l +733.637205 398.48925 l +733.98077 396.173701 l +734.324335 396.173701 l +734.667899 395.884258 l +735.011464 395.884258 l +735.355028 395.582754 l +737.416416 395.582754 l +737.759981 395.333234 l +740.852062 395.333234 l +741.195627 388.346663 l +741.882756 388.346663 l +742.226321 387.847623 l +743.600579 387.847623 l +743.944144 384.363579 l +744.287709 383.835747 l +744.631273 383.835747 l +744.974838 381.251429 l +745.318402 375.462557 l +746.692661 375.462557 l +747.036226 375.213036 l +747.37979 375.213036 l +747.723355 374.713996 l +748.754049 374.713996 l +749.097613 374.156549 l +749.441178 373.084535 l +749.784742 373.084535 l +750.128307 372.835015 l +750.471872 367.844607 l +750.815436 367.844607 l +751.159001 363.700863 l +752.876824 363.700863 l +753.220389 363.184 l +753.563953 363.184 l +753.907518 362.647993 l +754.251083 362.647993 l +754.594647 360.431811 l +754.938212 357.437567 l +755.281776 357.136063 l +755.968906 357.136063 l +756.31247 356.637022 l +756.656035 353.018977 l +757.343164 353.018977 l +758.030293 349.532497 l +758.373858 348.975875 l +759.060987 348.975875 l +759.404552 348.171864 l +759.748116 348.171864 l +760.091681 344.166171 l +760.435246 342.357149 l +760.77881 341.789394 l +761.46594 341.789394 l +761.809504 335.030018 l +762.153069 333.421998 l +762.496633 332.435259 l +763.183763 332.435259 l +763.527327 327.723848 l +763.870892 327.474327 l +764.214457 325.330301 l +764.558021 325.330301 l +764.901586 321.835949 l +765.24515 321.507036 l +765.588715 320.092287 l +765.93228 319.833856 l +766.275844 319.833856 l +766.619409 319.176029 l +767.306538 317.385279 l +767.650103 317.126848 l +767.993667 317.126848 l +768.337232 316.797934 l +768.680797 312.785647 l +769.024361 312.785647 l +769.367926 311.981637 l +769.71149 302.890929 l +770.055055 301.986418 l +770.39862 286.718412 l +770.742184 281.809756 l +771.085749 281.809756 l +771.429314 281.520313 l +771.772878 281.520313 l +772.460007 280.836228 l +772.803572 280.836228 l +773.147137 280.060273 l +773.490701 278.390406 l +774.177831 278.390406 l +774.521395 278.140885 l +774.86496 278.140885 l +775.208524 277.891365 l +776.239218 277.891365 l +776.582783 277.601921 l +776.926348 272.418703 l +777.269912 272.418703 l +777.613477 262.535376 l +777.957041 262.285856 l +778.300606 253.998215 l +778.644171 253.748695 l +778.987735 252.501093 l +780.018429 252.501093 l +780.361994 246.040297 l +780.705558 242.422252 l +781.736252 242.422252 l +782.079817 240.735019 l +782.423381 240.735019 l +782.766946 240.485499 l +783.110511 240.485499 l +783.454075 238.431754 l +783.79764 238.173322 l +784.141205 231.186752 l +784.484769 226.924944 l +784.828334 226.924944 l +785.171898 226.656941 l +785.515463 226.656941 l +785.859028 214.517775 l +786.546157 214.517775 l +786.889722 214.228331 l +787.233286 200.057654 l +787.920415 200.057654 l +788.26398 193.819644 l +788.607545 193.819644 l +789.294674 182.970129 l +790.325368 182.970129 l +790.668932 177.801493 l +791.356062 177.801493 l +791.699626 173.58044 l +793.761014 173.58044 l +794.448143 162.998508 l +794.791708 162.998508 l +795.135272 156.796145 l +795.478837 156.796145 l +795.822402 156.546624 l +797.19666 156.546624 l +797.540225 142.582395 l +797.883789 139.419955 l +798.570919 126.019787 l +799.258048 126.019787 l +799.601613 112.545688 l +800.288742 112.545688 l +800.632306 105.826461 l +800.975871 105.826461 l +801.319436 105.290454 l +802.006565 92.888367 l +804.755082 92.888367 l +805.098646 92.084357 l +805.785776 92.084357 l +806.472905 91.566834 l +806.81647 91.566834 l +807.160034 85.402756 l +809.908551 85.402756 l +810.252116 78.416186 l +810.59568 78.416186 l +810.939245 71.679136 l +811.28281 71.679136 l +811.626374 64.443045 l +932.561121 64.443045 l +932.561121 64.443045 l +stroke +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +481.042708 60.825 m +481.042708 429.865625 l +stroke +grestore +gsave +873.491667 60.825 m +873.491667 429.865625 l +stroke +grestore +gsave +481.042708 60.825 m +873.491667 60.825 l +stroke +grestore +gsave +481.042708 429.865625 m +873.491667 429.865625 l +stroke +grestore +gsave + +625.806250 436.053125 translate +0.000000 rotate +0.000000 0 m /O glyphshow +14.699997 0 m /S glyphshow +29.399994 0 m /C glyphshow +44.099991 0 m /A glyphshow +58.799988 0 m /R glyphshow +73.499985 0 m /hyphen glyphshow +88.199982 0 m /two glyphshow +grestore +gsave +887.791667 60.825 m +1280.240625 60.825 l +1280.240625 429.865625 l +887.791667 429.865625 l +cl +1.000 setgray +fill +grestore +1 setlinejoin +0 setlinecap +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +917.326 60.825 o +grestore +gsave +899.326394 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.926563 moveto +/one glyphshow +11.000000 0.926563 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 7.565625 moveto +/hyphen glyphshow +27.286777 7.565625 moveto +/four glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1015.44 60.825 o +grestore +gsave +997.438633 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/three glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1113.55 60.825 o +grestore +gsave +1095.550873 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/two glyphshow +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1211.66 60.825 o +grestore +gsave +1193.663112 38.559375 translate +0.000000 rotate +/CMUSerif-Roman 22.0 selectfont +0.000000 0.101562 moveto +/one glyphshow +11.000000 0.101562 moveto +/zero glyphshow +/CMUSerif-Roman 15.399999999999999 selectfont +22.165977 6.740625 moveto +/hyphen glyphshow +27.286777 6.740625 moveto +/one glyphshow +grestore +0.600 setlinewidth +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +895.56 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +902.129 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +907.818 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +912.837 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +946.861 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +964.138 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +976.396 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +985.904 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +993.673 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1000.24 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1005.93 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1010.95 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1044.97 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1062.25 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1074.51 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1084.02 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1091.78 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1098.35 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1104.04 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1109.06 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1143.09 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1160.36 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1172.62 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1182.13 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1189.9 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1196.47 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1202.16 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1207.17 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1241.2 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1258.47 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1270.73 60.825 o +grestore +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin + +0 setlinecap + +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +1280.24 60.825 o +grestore +gsave +1074.016146 12.246875 translate +0.000000 rotate +/Cmmi10 26.0 selectfont +0.000000 0.234375 moveto +/R glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 64.443 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 136.804 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 209.165 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 281.526 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 353.887 o +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin + +0 setlinecap + +-0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +887.792 426.248 o +grestore +4.000 setlinewidth +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 339.414491 m +670.046198 339.414491 l +670.389762 332.178401 l +861.068127 332.178401 l +861.411692 331.863788 l +891.301814 331.863788 l +891.645378 331.534875 l +911.915691 331.534875 l +912.259255 330.955988 l +925.314711 330.955988 l +925.658276 323.719897 l +926.00184 323.719897 l +926.345405 321.910874 l +936.652343 321.910874 l +936.995908 321.581961 l +944.210765 321.581961 l +944.55433 314.34587 l +958.640479 314.34587 l +958.984044 313.893615 l +968.260289 313.893615 l +968.947418 313.079555 l +969.634547 313.079555 l +969.978112 312.562691 l +974.788016 312.562691 l +975.131581 312.160686 l +978.567227 312.160686 l +978.910792 311.846073 l +985.782084 311.846073 l +986.125649 310.037051 l +986.469213 308.831035 l +986.812778 308.831035 l +987.156343 307.861916 l +989.561295 307.861916 l +989.90486 304.243871 l +990.935554 304.243871 l +991.279118 303.899295 l +994.027635 303.899295 l +994.3712 302.69328 l +995.401894 302.69328 l +996.089023 301.962362 l +996.432588 300.088731 l +996.776152 299.18422 l +997.119717 298.839644 l +1001.929621 298.839644 l +1002.273186 292.26138 l +1003.991009 292.26138 l +1004.334574 291.932466 l +1006.052397 291.932466 l +1006.395962 291.55162 l +1006.739526 291.55162 l +1007.083091 291.237007 l +1007.426655 290.720143 l +1008.800914 290.720143 l +1009.144478 290.39123 l +1009.488043 290.39123 l +1009.831608 290.062317 l +1010.175172 290.062317 l +1010.518737 282.712673 l +1011.205866 282.712673 l +1011.549431 282.133786 l +1011.892995 281.804872 l +1012.580125 281.804872 l +1012.923689 280.959096 l +1013.267254 280.959096 l +1013.610819 280.644483 l +1013.954383 280.644483 l +1014.297948 280.192227 l +1016.015771 280.192227 l +1016.7029 279.34645 l +1017.046465 278.944445 l +1017.390029 278.944445 l +1017.733594 277.73843 l +1021.856369 277.73843 l +1022.199934 277.436927 l +1022.543499 276.230911 l +1022.887063 275.714048 l +1023.230628 274.508033 l +1025.292016 274.508033 l +1025.63558 274.08238 l +1026.32271 274.08238 l +1026.666274 273.780876 l +1027.009839 273.780876 l +1028.040533 272.418236 l +1028.384097 271.212221 l +1028.727662 271.212221 l +1029.414791 270.269705 l +1030.445485 270.269705 l +1030.78905 268.925859 l +1031.132614 268.925859 l +1031.476179 268.322852 l +1032.506873 268.322852 l +1032.850437 261.086761 l +1033.194002 261.086761 l +1033.537567 260.684756 l +1034.56826 260.684756 l +1034.911825 253.675886 l +1035.25539 253.273881 l +1035.598954 252.395213 l +1036.286084 252.395213 l +1036.973213 251.567555 l +1037.660342 251.567555 l +1038.003907 251.222979 l +1038.347471 251.222979 l +1038.691036 250.770724 l +1039.0346 250.770724 l +1039.378165 250.318468 l +1040.408859 250.318468 l +1040.752424 249.836062 l +1041.095988 243.112528 l +1041.439553 243.112528 l +1041.783117 240.700498 l +1043.157376 240.700498 l +1043.500941 236.048725 l +1044.531634 236.048725 l +1044.875199 235.281857 l +1045.218764 235.281857 l +1045.562328 234.764993 l +1046.249458 234.764993 l +1046.593022 234.312737 l +1046.936587 234.312737 l +1047.280151 233.50643 l +1047.623716 233.161854 l +1047.967281 232.471137 l +1048.65441 231.689968 l +1048.997974 230.1023 l +1049.341539 229.721453 l +1049.685104 229.721453 l +1050.372233 228.487971 l +1051.059362 227.221559 l +1051.402927 227.221559 l +1051.746491 226.360119 l +1052.090056 224.924387 l +1052.433621 224.321379 l +1052.777185 224.321379 l +1053.464315 223.64789 l +1053.807879 222.931273 l +1054.151444 222.931273 l +1054.495008 222.50562 l +1054.838573 222.50562 l +1055.182138 221.988757 l +1056.556396 221.988757 l +1056.899961 219.059863 l +1057.243525 217.725937 l +1057.58709 217.725937 l +1057.930655 217.364133 l +1058.274219 217.364133 l +1058.617784 217.04952 l +1058.961348 216.398272 l +1059.648478 216.398272 l +1059.992042 215.61542 l +1060.335607 215.270844 l +1060.679172 209.240769 l +1061.022736 209.240769 l +1061.366301 208.896193 l +1061.709865 208.896193 l +1062.05343 208.551617 l +1062.396995 207.841857 l +1062.740559 207.841857 l +1063.084124 207.512944 l +1063.771253 207.512944 l +1064.114818 207.184031 l +1064.458382 206.480522 l +1065.145512 206.480522 l +1065.489076 206.099675 l +1065.832641 205.079313 l +1066.51977 205.079313 l +1066.863335 202.338369 l +1067.206899 201.976565 l +1067.550464 201.336449 l +1067.894029 201.034945 l +1068.924723 201.034945 l +1069.268287 200.264717 l +1070.298981 200.264717 l +1071.329675 199.149913 l +1071.673239 187.391266 l +1072.016804 187.089762 l +1072.360369 185.755519 l +1072.703933 185.073168 l +1073.047498 184.744255 l +1073.391063 184.744255 l +1074.078192 184.1765 l +1074.421756 183.500083 l +1074.765321 183.18547 l +1075.108886 182.146797 l +1075.45245 182.146797 l +1075.796015 177.890273 l +1076.13958 177.56136 l +1076.483144 177.56136 l +1077.170273 176.171253 l +1077.513838 176.171253 l +1078.200967 175.447644 l +1078.544532 174.831528 l +1078.888097 174.502614 l +1079.231661 174.502614 l +1079.575226 173.430319 l +1079.91879 173.430319 l +1080.262355 173.028314 l +1080.60592 172.425306 l +1080.949484 172.425306 l +1081.293049 172.080731 l +1081.636613 172.080731 l +1082.323743 170.724891 l +1083.010872 170.724891 l +1083.354437 170.395978 l +1083.698001 170.395978 l +1084.041566 164.418338 l +1084.728695 164.418338 l +1085.415824 163.692915 l +1085.759389 163.692915 l +1086.102954 163.046835 l +1086.446518 163.046835 l +1086.790083 162.389009 l +1087.133647 161.421546 l +1087.477212 161.120043 l +1088.164341 159.886618 l +1088.507906 159.886618 l +1088.851471 159.557705 l +1089.195035 158.449319 l +1089.882164 157.745811 l +1090.225729 155.678356 l +1090.569294 155.349443 l +1090.912858 154.25672 l +1091.256423 153.57437 l +1091.599987 148.938617 l +1092.630681 148.006696 l +1092.974246 147.415749 l +1093.317811 147.415749 l +1093.661375 146.797392 l +1094.00494 146.797392 l +1094.348504 146.166975 l +1094.692069 145.838061 l +1095.035634 145.838061 l +1095.722763 144.248314 l +1096.066328 143.958871 l +1096.409892 141.48654 l +1096.753457 140.879315 l +1097.097021 140.879315 l +1097.440586 140.235789 l +1097.784151 139.921177 l +1098.127715 139.30282 l +1098.47128 139.013376 l +1098.814845 135.395331 l +1100.876232 133.54355 l +1101.219797 132.658014 l +1101.563361 126.753985 l +1101.906926 125.220249 l +1102.250491 124.891335 l +1102.594055 124.891335 l +1102.93762 124.562422 l +1103.624749 124.562422 l +1104.311878 123.932005 l +1104.999008 122.013345 l +1105.342572 121.684431 l +1105.686137 121.684431 l +1106.029702 121.355518 l +1106.716831 119.489579 l +1107.060395 119.160666 l +1107.40396 117.872423 l +1108.091089 117.872423 l +1108.434654 117.228897 l +1108.778219 117.228897 l +1109.121783 116.281627 l +1109.465348 114.965974 l +1110.839606 114.965974 l +1111.183171 113.363118 l +1111.526735 112.732701 l +1111.8703 112.431197 l +1112.213865 111.82819 l +1113.244559 111.82819 l +1113.588123 107.004129 l +1113.931688 105.441791 l +1114.275252 105.441791 l +1114.618817 105.127179 l +1114.962382 104.523122 l +1115.993076 103.579285 l +1116.33664 103.579285 l +1116.680205 102.963168 l +1117.023769 102.963168 l +1117.710899 101.768164 l +1119.085157 100.58627 l +1119.428722 99.970153 l +1119.772286 95.628499 l +1120.459416 95.025491 l +1120.80298 95.025491 l +1121.146545 94.409375 l +1121.490109 94.409375 l +1121.833674 93.793258 l +1122.177239 92.862529 l +1122.864368 92.246413 l +1123.207933 87.434413 l +1123.551497 86.818296 l +1123.895062 85.598124 l +1124.582191 84.982007 l +1124.925756 84.39106 l +1125.26932 80.773014 l +1125.612885 80.143789 l +1125.95645 80.143789 l +1126.643579 78.622113 l +1126.987143 78.320609 l +1127.330708 77.716553 l +1128.017837 77.716553 l +1128.704967 77.125605 l +1129.048531 76.509489 l +1129.392096 72.563722 l +1129.73566 70.82706 l +1130.42279 70.82706 l +1130.766354 70.210944 l +1131.109919 69.896331 l +1131.453483 69.896331 l +1131.797048 69.267106 l +1132.140613 68.965602 l +1132.827742 68.965602 l +1133.171307 68.664098 l +1134.202 68.664098 l +1135.232694 67.759587 l +1142.103987 67.759587 l +1142.447551 67.458083 l +1143.82181 67.458083 l +1144.165374 67.156579 l +1146.226762 67.156579 l +1146.570327 66.855076 l +1146.913891 66.855076 l +1147.601021 66.252068 l +1151.723796 66.252068 l +1152.410925 65.64906 l +1153.098055 65.64906 l +1153.441619 65.347557 l +1153.785184 65.347557 l +1154.815878 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 361.122763 m +819.153243 361.122763 l +819.496808 353.886673 l +848.012671 353.886673 l +848.356236 351.474643 l +892.332507 351.474643 l +892.676072 351.04899 l +905.731528 351.04899 l +906.075092 350.445983 l +906.418657 343.209892 l +909.510738 343.209892 l +909.854303 342.606884 l +910.884997 342.606884 l +911.228562 335.370794 l +943.867201 335.370794 l +944.210765 335.112362 l +947.646411 335.112362 l +947.989976 334.261743 l +956.579091 334.261743 l +956.922656 333.859737 l +968.603853 333.859737 l +968.947418 333.530824 l +983.720697 333.530824 l +984.064261 326.553165 l +987.499907 326.553165 l +987.843472 326.20859 l +993.340506 326.20859 l +993.684071 325.605582 l +999.181104 325.605582 l +999.524669 325.316138 l +1004.678138 325.316138 l +1005.021703 325.001526 l +1011.205866 325.001526 l +1011.549431 324.575873 l +1013.267254 324.575873 l +1013.610819 323.852264 l +1014.641512 323.852264 l +1014.985077 323.128655 l +1015.328642 315.892565 l +1017.390029 315.892565 l +1017.733594 315.547989 l +1020.825676 315.547989 l +1021.16924 315.246485 l +1022.199934 315.246485 l +1022.887063 314.633906 l +1023.230628 310.843573 l +1023.574193 310.843573 l +1023.917757 310.575569 l +1024.604886 310.575569 l +1024.948451 309.972562 l +1025.292016 309.671058 l +1025.63558 309.671058 l +1025.979145 309.356445 l +1030.10192 309.356445 l +1030.445485 309.054942 l +1031.819743 309.054942 l +1032.163308 306.160505 l +1032.850437 306.160505 l +1033.194002 302.964565 l +1033.881131 302.964565 l +1034.224696 302.649953 l +1035.942519 302.649953 l +1036.286084 301.976464 l +1036.973213 301.976464 l +1037.660342 301.406957 l +1038.003907 301.406957 l +1038.347471 301.128645 l +1040.752424 301.128645 l +1041.095988 300.799732 l +1041.439553 300.799732 l +1041.783117 300.531729 l +1043.844505 300.531729 l +1044.18807 300.106076 l +1045.905893 300.106076 l +1046.249458 299.503069 l +1046.593022 299.503069 l +1046.936587 299.224758 l +1047.280151 299.224758 l +1047.623716 298.799105 l +1047.967281 298.103646 l +1049.341539 298.103646 l +1049.685104 297.774733 l +1050.028668 297.774733 l +1050.372233 297.445819 l +1050.715798 297.445819 l +1051.746491 296.058226 l +1053.464315 296.058226 l +1053.807879 295.455219 l +1054.495008 295.455219 l +1054.838573 294.44695 l +1055.869267 294.44695 l +1056.212832 294.145447 l +1056.556396 293.542439 l +1056.899961 293.542439 l +1057.243525 293.252995 l +1057.930655 293.252995 l +1058.274219 292.827343 l +1060.679172 292.827343 l +1061.022736 292.401691 l +1061.366301 292.401691 l +1061.709865 290.866762 l +1062.740559 290.866762 l +1063.084124 290.196754 l +1063.771253 289.58953 l +1064.114818 289.58953 l +1064.801947 288.97695 l +1065.145512 288.97695 l +1065.489076 288.675447 l +1065.832641 287.646787 l +1066.863335 287.646787 l +1067.206899 287.066972 l +1068.581158 287.066972 l +1068.924723 286.738059 l +1069.268287 286.06805 l +1070.642546 286.06805 l +1070.98611 280.960221 l +1072.360369 280.960221 l +1072.703933 280.357214 l +1073.734627 280.357214 l +1074.078192 279.754206 l +1074.765321 279.754206 l +1075.108886 279.464763 l +1075.796015 279.464763 l +1076.13958 278.28194 l +1076.483144 278.28194 l +1076.826709 271.086151 l +1077.857403 271.086151 l +1078.200967 270.757238 l +1079.575226 270.757238 l +1080.60592 270.087229 l +1080.949484 269.372133 l +1082.323743 269.372133 l +1083.354437 267.951552 l +1083.698001 267.951552 l +1084.041566 267.360604 l +1084.38513 267.045992 l +1084.728695 266.365676 l +1085.07226 266.036762 l +1085.415824 266.036762 l +1085.759389 265.655915 l +1086.102954 265.655915 l +1086.446518 265.327002 l +1087.477212 265.327002 l +1087.820777 264.924997 l +1088.164341 263.488081 l +1088.507906 262.941766 l +1088.851471 262.941766 l +1089.5386 262.248111 l +1089.882164 257.972239 l +1090.225729 257.682795 l +1090.569294 257.682795 l +1091.256423 257.064438 l +1091.943552 257.064438 l +1092.287117 256.762935 l +1093.661375 256.762935 l +1094.00494 256.146818 l +1095.035634 256.146818 l +1095.722763 255.516401 l +1096.066328 255.516401 l +1096.409892 255.187488 l +1096.753457 254.617981 l +1097.440586 254.038166 l +1097.784151 254.038166 l +1098.127715 253.709253 l +1098.47128 253.709253 l +1098.814845 253.307248 l +1099.158409 253.307248 l +1099.501974 252.926401 l +1099.845538 252.926401 l +1100.189103 252.524396 l +1100.876232 252.524396 l +1101.219797 251.145714 l +1101.563361 250.867403 l +1102.250491 249.222627 l +1103.281185 249.222627 l +1103.624749 248.893713 l +1103.968314 248.893713 l +1104.311878 248.491708 l +1104.999008 248.491708 l +1105.342572 247.873352 l +1105.686137 243.882521 l +1106.029702 243.302706 l +1106.373266 243.302706 l +1106.716831 243.013262 l +1107.060395 242.397146 l +1107.747525 242.397146 l +1108.434654 241.800229 l +1108.778219 241.800229 l +1109.121783 240.447588 l +1109.465348 239.840364 l +1109.808912 238.789509 l +1110.496042 238.220001 l +1110.839606 237.817996 l +1111.183171 236.833093 l +1112.213865 235.985275 l +1112.557429 235.985275 l +1112.900994 235.35605 l +1113.244559 229.660978 l +1113.588123 229.660978 l +1114.275252 229.114664 l +1114.618817 228.534849 l +1114.962382 227.550228 l +1115.649511 226.568408 l +1115.993076 226.568408 l +1116.680205 225.764398 l +1117.023769 225.16139 l +1117.367334 224.859886 l +1117.710899 220.33733 l +1118.054463 209.90291 l +1118.398028 204.047243 l +1119.085157 203.477736 l +1120.115851 201.099748 l +1120.80298 201.099748 l +1121.146545 200.798245 l +1122.177239 198.996535 l +1122.520803 198.36731 l +1122.864368 198.36731 l +1123.207933 198.088999 l +1123.895062 196.541728 l +1124.582191 195.959112 l +1124.925756 195.959112 l +1125.26932 189.000405 l +1125.612885 188.141454 l +1125.95645 188.141454 l +1126.300014 187.538446 l +1126.987143 183.06845 l +1127.330708 176.053754 l +1127.674273 175.136133 l +1128.017837 174.857822 l +1128.361402 174.266875 l +1128.704967 173.28302 l +1129.048531 171.759633 l +1129.73566 171.759633 l +1130.42279 170.640854 l +1130.766354 169.771595 l +1131.453483 169.771595 l +1132.140613 169.225281 l +1132.484177 168.317744 l +1132.827742 164.265534 l +1133.171307 163.950921 l +1133.514871 163.371106 l +1133.858436 163.092795 l +1134.202 161.920056 l +1134.545565 161.618552 l +1134.88913 160.700932 l +1135.232694 160.700932 l +1136.263388 158.259659 l +1137.294082 156.434502 l +1137.637647 156.434502 l +1137.981211 151.100205 l +1138.668341 151.100205 l +1139.011905 150.205777 l +1139.35547 150.205777 l +1140.042599 148.51014 l +1140.386164 148.208637 l +1140.729728 147.639129 l +1141.073293 147.337626 l +1141.416858 146.791311 l +1141.760422 146.791311 l +1142.447551 146.255304 l +1142.791116 140.627234 l +1143.134681 139.998009 l +1143.478245 139.719697 l +1143.82181 138.82527 l +1144.165374 138.82527 l +1144.852504 137.679181 l +1145.196068 137.679181 l +1145.539633 134.339447 l +1146.226762 133.80344 l +1146.570327 133.174215 l +1146.913891 132.859602 l +1147.601021 132.859602 l +1148.631715 131.962374 l +1148.975279 130.823359 l +1149.318844 130.545048 l +1149.662408 130.545048 l +1150.005973 130.277045 l +1150.693102 130.277045 l +1151.036667 129.759521 l +1151.380232 129.759521 l +1151.723796 129.190014 l +1153.098055 129.190014 l +1154.128748 128.385268 l +1154.472313 128.385268 l +1154.815878 128.083764 l +1155.159442 127.039805 l +1155.503007 126.771801 l +1155.846572 121.401426 l +1156.190136 121.401426 l +1156.533701 120.821612 l +1156.877265 120.553608 l +1157.22083 108.565612 l +1157.564395 108.029605 l +1157.907959 107.728101 l +1158.251524 101.832027 l +1158.595089 100.79698 l +1158.938653 100.250665 l +1159.282218 99.949162 l +1159.625782 99.369347 l +1159.969347 99.101343 l +1160.312912 99.101343 l +1160.656476 94.802982 l +1161.000041 94.534978 l +1161.343606 93.975043 l +1161.68717 93.975043 l +1162.030735 93.395228 l +1162.374299 92.5427 l +1162.717864 92.016265 l +1163.061429 92.016265 l +1163.404993 91.737954 l +1163.748558 85.499944 l +1164.092122 84.36093 l +1164.435687 84.36093 l +1164.779252 79.192294 l +1165.122816 78.589286 l +1165.466381 78.321283 l +1167.184204 78.321283 l +1167.527769 77.774968 l +1168.902027 76.682339 l +1169.589156 76.682339 l +1170.61985 75.857714 l +1171.30698 75.857714 l +1171.650544 75.579402 l +1173.024803 75.579402 l +1173.368367 73.435376 l +1174.055496 73.435376 l +1174.399061 73.157064 l +1176.116884 73.157064 l +1177.147578 72.350922 l +1177.491143 71.82309 l +1178.865401 70.738636 l +1179.55253 70.738636 l +1179.896095 70.182014 l +1180.23966 70.182014 l +1180.583224 69.932493 l +1181.957483 69.932493 l +1182.301047 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 382.831036 m +828.429488 382.831036 l +828.773053 382.502122 l +883.056263 382.502122 l +883.399827 382.049867 l +896.111718 382.049867 l +896.455283 374.813776 l +909.167174 374.813776 l +909.510738 374.564256 l +928.750357 374.564256 l +929.093922 373.985368 l +984.064261 373.985368 l +984.407826 373.707057 l +986.125649 373.707057 l +986.469213 373.428746 l +996.089023 373.428746 l +996.432588 373.150435 l +1009.488043 373.150435 l +1009.831608 372.872124 l +1013.954383 372.872124 l +1014.297948 372.613692 l +1017.046465 372.613692 l +1017.390029 372.312188 l +1023.917757 372.312188 l +1024.261322 371.755566 l +1024.604886 371.755566 l +1024.948451 371.477254 l +1030.78905 371.477254 l +1031.132614 371.162642 l +1034.224696 371.162642 l +1034.56826 364.228055 l +1038.003907 364.228055 l +1038.347471 363.969623 l +1049.341539 363.969623 l +1049.685104 363.517367 l +1050.715798 363.517367 l +1051.059362 363.249364 l +1051.746491 363.249364 l +1052.090056 362.904788 l +1059.304913 362.904788 l +1059.648478 362.590176 l +1067.550464 362.590176 l +1067.894029 355.932972 l +1068.924723 355.932972 l +1069.611852 355.166104 l +1073.734627 355.166104 l +1074.078192 354.887793 l +1077.170273 354.887793 l +1077.857403 354.309359 l +1080.949484 354.309359 l +1081.293049 354.031048 l +1082.667307 354.031048 l +1083.010872 353.716435 l +1083.354437 353.716435 l +1084.041566 353.025718 l +1085.07226 353.025718 l +1085.415824 352.747406 l +1086.790083 352.747406 l +1087.133647 351.839287 l +1087.820777 351.839287 l +1089.195035 350.465195 l +1089.5386 343.229104 l +1089.882164 342.950793 l +1091.599987 342.950793 l +1091.943552 342.649289 l +1092.287117 342.649289 l +1093.317811 341.473424 l +1093.661375 341.158812 l +1094.00494 341.158812 l +1094.348504 340.844199 l +1095.035634 340.844199 l +1095.379198 340.391943 l +1095.722763 340.12394 l +1096.753457 340.12394 l +1097.097021 339.762135 l +1097.440586 339.762135 l +1097.784151 338.8766 l +1098.127715 338.8766 l +1098.47128 333.310376 l +1099.501974 333.310376 l +1099.845538 333.051945 l +1100.876232 333.051945 l +1101.219797 332.599689 l +1103.281185 332.599689 l +1103.624749 332.237884 l +1103.968314 331.658069 l +1104.311878 331.658069 l +1104.655443 330.844009 l +1104.999008 330.576006 l +1106.029702 330.576006 l +1107.40396 329.500299 l +1108.434654 329.500299 l +1108.778219 329.048043 l +1109.465348 329.048043 l +1110.152477 328.357325 l +1110.496042 328.357325 l +1110.839606 321.925245 l +1111.183171 321.580669 l +1111.526735 321.580669 l +1111.8703 321.322237 l +1112.213865 321.322237 l +1112.900994 320.69182 l +1113.588123 320.69182 l +1113.931688 320.433388 l +1114.275252 320.433388 l +1114.618817 320.174957 l +1115.305946 318.89846 l +1115.649511 311.582977 l +1116.33664 310.96274 l +1117.023769 310.96274 l +1117.367334 310.600936 l +1117.710899 309.693399 l +1118.054463 309.434967 l +1118.398028 309.434967 l +1119.085157 308.745816 l +1119.428722 308.745816 l +1119.772286 308.496296 l +1120.115851 303.768168 l +1120.459416 303.768168 l +1120.80298 296.790509 l +1121.833674 296.790509 l +1122.177239 293.172464 l +1122.864368 293.172464 l +1123.207933 292.88302 l +1123.551497 292.88302 l +1123.895062 292.290096 l +1124.925756 291.234833 l +1125.26932 291.234833 l +1125.612885 290.396586 l +1126.300014 290.396586 l +1126.643579 289.252638 l +1126.987143 288.532379 l +1127.330708 288.264376 l +1127.674273 287.81212 l +1128.017837 287.81212 l +1128.361402 287.264245 l +1128.704967 287.264245 l +1129.048531 286.68443 l +1129.392096 286.68443 l +1129.73566 286.232174 l +1130.42279 286.232174 l +1130.766354 285.930671 l +1131.453483 284.583987 l +1131.797048 279.02936 l +1132.140613 278.751049 l +1132.484177 278.751049 l +1133.171307 278.194426 l +1133.514871 277.104518 l +1133.858436 277.104518 l +1134.202 276.531474 l +1134.545565 276.273042 l +1134.88913 275.335543 l +1135.232694 275.02093 l +1135.576259 274.473055 l +1135.919824 273.104835 l +1136.263388 273.104835 l +1136.606953 272.826524 l +1136.950517 272.826524 l +1137.294082 272.167336 l +1137.637647 271.852723 l +1138.324776 269.748083 l +1138.668341 269.458639 l +1139.011905 269.458639 l +1139.35547 265.698269 l +1140.042599 265.698269 l +1140.386164 265.141647 l +1141.073293 264.577514 l +1141.760422 264.577514 l +1142.103987 264.013381 l +1142.447551 263.754949 l +1142.791116 262.847413 l +1143.478245 262.29079 l +1143.82181 257.569808 l +1144.165374 254.774596 l +1144.508939 254.774596 l +1144.852504 254.485152 l +1145.196068 254.485152 l +1145.539633 248.024357 l +1145.883198 248.024357 l +1146.226762 247.709744 l +1146.570327 247.1367 l +1146.913891 246.878268 l +1147.601021 246.878268 l +1147.944585 246.619836 l +1148.28815 246.619836 l +1148.631715 245.772945 l +1148.975279 245.772945 l +1149.318844 245.494634 l +1149.662408 245.494634 l +1150.005973 245.180022 l +1150.693102 245.180022 l +1151.036667 244.90171 l +1151.380232 239.981169 l +1151.723796 239.981169 l +1152.410925 239.444426 l +1152.75449 238.621861 l +1153.098055 238.34355 l +1154.128748 236.67714 l +1154.472313 236.67714 l +1154.815878 236.398829 l +1155.503007 235.021038 l +1155.846572 234.742727 l +1156.190136 233.911251 l +1156.533701 233.374508 l +1156.877265 233.059895 l +1157.22083 233.059895 l +1157.564395 232.745282 l +1157.907959 232.745282 l +1158.251524 232.172238 l +1158.595089 221.270828 l +1158.938653 221.002825 l +1159.282218 221.002825 l +1159.625782 220.409901 l +1159.969347 220.095288 l +1160.656476 218.493971 l +1161.000041 212.06189 l +1162.030735 211.304418 l +1162.374299 210.787554 l +1162.717864 210.509243 l +1163.061429 210.509243 l +1163.748558 210.010202 l +1164.435687 208.947024 l +1164.779252 208.16076 l +1165.809946 206.580059 l +1166.497075 205.238569 l +1166.840639 205.238569 l +1167.527769 203.37882 l +1168.902027 202.334125 l +1169.589156 202.334125 l +1169.932721 201.558829 l +1170.276286 200.505223 l +1170.61985 194.479032 l +1170.963415 192.224437 l +1171.30698 188.099836 l +1171.650544 187.32454 l +1171.994109 187.32454 l +1172.337673 186.270934 l +1172.681238 186.021413 l +1173.024803 185.48467 l +1173.368367 185.23515 l +1174.399061 182.905151 l +1175.08619 182.377319 l +1175.429755 179.276137 l +1176.116884 178.739394 l +1176.460449 178.739394 l +1176.804013 178.489874 l +1177.147578 171.214025 l +1177.491143 170.964504 l +1177.834707 170.964504 l +1178.178272 167.720739 l +1178.521837 167.164117 l +1178.865401 166.359371 l +1179.208966 166.100939 l +1179.55253 165.286621 l +1179.896095 161.946887 l +1180.23966 161.946887 l +1180.583224 157.936408 l +1180.926789 157.658097 l +1181.270354 157.121354 l +1182.301047 155.051843 l +1182.644612 151.175366 l +1182.988177 151.175366 l +1183.331741 150.340432 l +1183.675306 150.090912 l +1184.01887 150.090912 l +1184.362435 149.58296 l +1184.706 149.58296 l +1185.736694 148.825487 l +1186.423823 148.825487 l +1186.767387 148.317535 l +1187.110952 141.607219 l +1187.454517 141.108179 l +1187.798081 135.939542 l +1188.141646 135.422679 l +1188.828775 135.422679 l +1189.515904 134.914727 l +1189.859469 134.406774 l +1190.203034 134.157254 l +1190.890163 123.258561 l +1191.233728 122.750609 l +1191.577292 122.750609 l +1191.920857 122.501088 l +1192.264421 122.501088 l +1192.951551 121.993136 l +1193.295115 121.993136 l +1193.63868 121.734704 l +1194.325809 120.7188 l +1194.669374 120.46928 l +1195.012938 120.46928 l +1195.356503 114.730311 l +1196.387197 114.730311 l +1196.730761 114.480791 l +1197.074326 114.480791 l +1197.417891 114.23127 l +1197.761455 114.23127 l +1198.10502 108.741822 l +1198.448585 108.741822 l +1198.792149 103.065234 l +1199.135714 102.54837 l +1200.853537 102.54837 l +1201.197102 95.81132 l +1201.540666 95.5618 l +1201.884231 95.053848 l +1202.57136 95.053848 l +1202.914925 90.143643 l +1203.945618 90.143643 l +1204.289183 83.406593 l +1204.976312 82.907553 l +1206.350571 82.907553 l +1206.694135 82.658032 l +1207.381265 82.658032 l +1207.724829 82.408512 l +1208.068394 82.408512 l +1208.411959 82.158992 l +1208.755523 82.158992 l +1209.099088 74.922901 l +1209.442652 74.922901 l +1209.786217 74.67338 l +1210.129782 70.681055 l +1210.473346 70.681055 l +1210.816911 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +2 setlinecap +[] 0 setdash +0.173 0.627 0.173 setrgbcolor +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 72.28636 m +822.588889 72.28636 l +822.932454 65.05027 l +902.295881 65.05027 l +902.639446 64.771959 l +909.167174 64.771959 l +909.510738 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 71.928656 m +964.824642 71.928656 l +965.168207 64.692566 l +965.511772 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 65.670596 m +890.958249 65.670596 l +891.301814 65.412165 l +955.891962 65.412165 l +956.235527 64.959909 l +965.511772 64.959909 l +965.855336 64.701477 l +967.573159 64.701477 l +967.916724 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 339.414491 m +822.588889 339.414491 l +822.932454 332.178401 l +949.707799 332.178401 l +950.051364 331.863788 l +963.793949 331.863788 l +964.137513 324.627697 l +965.511772 324.627697 l +965.855336 324.04881 l +984.75139 324.04881 l +985.094955 323.719897 l +1014.985077 323.719897 l +1015.328642 316.483806 l +1023.574193 316.483806 l +1023.917757 309.247716 l +1039.72173 309.247716 l +1040.065294 305.62967 l +1042.813811 305.62967 l +1043.157376 298.39358 l +1045.905893 298.39358 l +1046.249458 291.157489 l +1054.495008 291.157489 l +1054.838573 283.921398 l +1064.801947 283.921398 l +1065.145512 283.342511 l +1066.51977 283.342511 l +1066.863335 281.533488 l +1069.955416 281.533488 l +1070.642546 267.061307 l +1070.98611 266.699502 l +1073.734627 266.699502 l +1074.078192 265.712763 l +1075.108886 265.712763 l +1075.45245 261.692712 l +1075.796015 261.692712 l +1076.13958 254.456622 l +1077.857403 254.456622 l +1078.200967 249.029554 l +1080.60592 249.029554 l +1080.949484 241.793463 l +1082.323743 241.793463 l +1082.667307 237.919596 l +1085.07226 237.919596 l +1085.415824 234.301551 l +1086.446518 234.301551 l +1086.790083 227.06546 l +1087.133647 227.06546 l +1087.477212 226.031733 l +1095.035634 226.031733 l +1095.379198 225.687157 l +1096.753457 225.687157 l +1097.097021 218.765679 l +1098.814845 218.765679 l +1099.158409 218.107853 l +1099.501974 211.905489 l +1099.845538 197.433308 l +1101.906926 197.433308 l +1102.250491 197.118695 l +1104.311878 197.118695 l +1104.655443 196.66644 l +1105.686137 196.66644 l +1106.029702 189.774925 l +1106.373266 189.774925 l +1106.716831 189.446011 l +1107.40396 189.446011 l +1107.747525 182.209921 l +1110.839606 182.209921 l +1111.183171 174.97383 l +1112.900994 174.97383 l +1113.244559 167.737739 l +1113.588123 167.737739 l +1113.931688 161.159475 l +1114.275252 161.159475 l +1114.618817 157.993685 l +1114.962382 150.804787 l +1116.680205 150.804787 l +1117.023769 150.503283 l +1120.80298 150.503283 l +1121.146545 148.858717 l +1121.833674 148.858717 l +1122.177239 147.700942 l +1122.864368 147.700942 l +1123.207933 140.464852 l +1123.551497 140.464852 l +1123.895062 135.20224 l +1126.300014 135.20224 l +1126.643579 129.281802 l +1128.704967 129.281802 l +1129.048531 122.703538 l +1129.73566 122.703538 l +1130.079225 116.046335 l +1130.766354 116.046335 l +1131.109919 115.744831 l +1132.484177 115.744831 l +1132.827742 108.50874 l +1133.171307 108.50874 l +1133.514871 105.493702 l +1133.858436 105.493702 l +1134.202 104.864477 l +1134.545565 104.864477 l +1134.88913 97.628386 l +1138.668341 97.628386 l +1139.011905 90.392296 l +1141.416858 90.392296 l +1141.760422 89.448458 l +1143.478245 89.448458 l +1144.165374 77.342164 l +1158.595089 77.342164 l +1158.938653 71.679136 l +1166.15351 71.679136 l +1166.497075 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +0 setlinecap +[25.6 6.4 4 6.4] 0 setdash +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 361.122763 m +883.399827 361.122763 l +883.743392 358.710733 l +964.824642 358.710733 l +965.168207 351.474643 l +968.603853 351.474643 l +968.947418 350.871635 l +986.812778 350.871635 l +987.156343 343.099538 l +1004.678138 343.099538 l +1005.021703 342.673885 l +1021.512805 342.673885 l +1021.856369 335.437795 l +1024.261322 335.437795 l +1024.604886 328.201704 l +1026.32271 328.201704 l +1026.666274 320.965613 l +1031.132614 320.965613 l +1031.476179 320.362606 l +1036.286084 320.362606 l +1036.629648 320.047993 l +1055.182138 320.047993 l +1055.525702 315.223932 l +1062.396995 315.223932 l +1062.740559 314.895019 l +1066.176206 314.895019 l +1066.51977 314.493014 l +1075.45245 314.493014 l +1075.796015 314.203571 l +1079.575226 314.203571 l +1079.91879 306.96748 l +1080.262355 306.96748 l +1080.60592 306.16347 l +1082.667307 306.16347 l +1083.010872 305.895466 l +1084.041566 305.895466 l +1084.38513 305.292459 l +1085.07226 305.292459 l +1085.415824 304.348621 l +1091.599987 304.348621 l +1091.943552 297.11253 l +1095.035634 297.11253 l +1095.379198 289.87644 l +1098.127715 289.87644 l +1098.47128 289.618008 l +1103.624749 289.618008 l +1103.968314 289.015 l +1104.311878 282.107823 l +1106.716831 282.107823 l +1107.40396 281.514899 l +1110.152477 281.514899 l +1110.496042 280.958277 l +1112.900994 280.958277 l +1113.244559 280.656773 l +1113.588123 280.656773 l +1113.931688 280.388769 l +1115.649511 280.388769 l +1115.993076 279.484258 l +1118.398028 279.484258 l +1118.741593 273.454183 l +1121.833674 273.454183 l +1122.177239 273.186179 l +1122.520803 273.186179 l +1122.864368 266.251592 l +1123.551497 266.251592 l +1123.895062 265.715586 l +1124.582191 265.715586 l +1124.925756 258.757806 l +1125.26932 258.757806 l +1125.612885 251.521715 l +1126.987143 251.521715 l +1127.330708 244.587129 l +1129.048531 244.587129 l +1129.392096 238.389551 l +1130.42279 238.389551 l +1130.766354 238.14003 l +1131.453483 238.14003 l +1131.797048 230.90394 l +1132.140613 230.90394 l +1132.484177 224.093501 l +1132.827742 224.093501 l +1133.171307 216.857411 l +1135.576259 216.857411 l +1135.919824 216.5791 l +1140.042599 216.5791 l +1140.386164 209.343009 l +1141.416858 209.343009 l +1141.760422 202.396362 l +1142.103987 201.83974 l +1142.447551 201.83974 l +1142.791116 201.538236 l +1143.134681 201.538236 l +1143.478245 201.223623 l +1143.82181 201.223623 l +1144.165374 200.922119 l +1144.852504 187.408565 l +1148.28815 187.408565 l +1148.631715 173.204387 l +1150.693102 173.204387 l +1151.036667 172.575162 l +1153.441619 172.575162 l +1153.785184 165.895694 l +1156.877265 165.895694 l +1157.22083 165.617383 l +1159.625782 165.617383 l +1159.969347 165.367862 l +1160.312912 159.023174 l +1160.656476 159.023174 l +1161.000041 158.079336 l +1161.343606 151.111249 l +1161.68717 138.841356 l +1162.374299 138.841356 l +1162.717864 125.876693 l +1163.061429 125.876693 l +1163.404993 118.918914 l +1163.748558 118.918914 l +1164.092122 118.65091 l +1165.809946 118.65091 l +1166.15351 104.696253 l +1167.871333 104.696253 l +1168.214898 104.428249 l +1168.558463 104.428249 l +1168.902027 97.450591 l +1174.055496 97.450591 l +1174.399061 90.2145 l +1176.804013 90.2145 l +1177.147578 84.551472 l +1180.926789 84.551472 l +1181.270354 78.387395 l +1184.01887 78.387395 l +1184.362435 71.400825 l +1186.767387 71.400825 l +1187.110952 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +[14.8 6.4] 0 setdash +gsave +392.449 369.041 887.792 60.825 clipbox +652.524402 382.831036 m +922.222629 382.831036 l +922.566194 382.502122 l +938.713731 382.502122 l +939.057296 382.252602 l +982.346438 382.252602 l +982.690003 381.673715 l +998.493975 381.673715 l +998.83754 381.221459 l +1011.549431 381.221459 l +1011.892995 373.985368 l +1032.850437 373.985368 l +1033.194002 373.428746 l +1043.844505 373.428746 l +1044.18807 366.192655 l +1060.679172 366.192655 l +1061.022736 365.934223 l +1064.801947 365.934223 l +1065.145512 365.655912 l +1067.206899 365.655912 l +1067.550464 365.09929 l +1077.857403 365.09929 l +1078.200967 364.820979 l +1078.544532 358.163775 l +1084.728695 358.163775 l +1085.07226 357.905344 l +1092.974246 357.905344 l +1093.317811 357.627032 l +1093.661375 357.627032 l +1094.00494 350.390942 l +1107.060395 350.390942 l +1107.40396 350.141421 l +1109.465348 350.141421 l +1109.808912 344.018575 l +1110.152477 343.750572 l +1115.305946 343.750572 l +1115.649511 336.782485 l +1118.054463 336.782485 l +1118.398028 329.795914 l +1119.428722 329.795914 l +1119.772286 329.481302 l +1123.551497 329.481302 l +1123.895062 322.245211 l +1134.545565 322.245211 l +1134.88913 321.688589 l +1135.232694 321.688589 l +1135.576259 314.224789 l +1135.919824 314.224789 l +1136.263388 313.975268 l +1139.011905 313.975268 l +1139.35547 306.739178 l +1140.729728 306.739178 l +1141.073293 298.873862 l +1144.165374 298.873862 l +1144.508939 296.547975 l +1146.226762 296.547975 l +1146.570327 296.289544 l +1147.944585 296.289544 l +1148.28815 295.974931 l +1148.975279 295.974931 l +1149.318844 294.890477 l +1149.662408 287.912818 l +1150.005973 287.912818 l +1150.349538 287.568243 l +1151.036667 287.568243 l +1151.380232 281.445397 l +1153.441619 281.445397 l +1153.785184 280.501559 l +1154.128748 280.501559 l +1154.472313 279.975123 l +1154.815878 273.083609 l +1155.159442 272.825177 l +1155.846572 272.825177 l +1156.190136 266.598016 l +1158.595089 266.598016 l +1158.938653 259.361926 l +1159.625782 259.361926 l +1159.969347 258.845062 l +1160.312912 258.845062 l +1161.000041 245.074657 l +1161.343606 244.816225 l +1165.122816 244.816225 l +1165.466381 237.580134 l +1167.184204 237.580134 l +1167.527769 237.330614 l +1167.871333 237.330614 l +1168.214898 230.929457 l +1168.558463 230.671025 l +1172.681238 230.671025 l +1173.024803 223.426023 l +1174.055496 223.426023 l +1174.399061 223.147711 l +1174.742626 223.147711 l +1175.08619 220.652508 l +1175.429755 220.394076 l +1179.208966 220.394076 l +1179.55253 213.714608 l +1179.896095 213.714608 l +1180.23966 206.736949 l +1181.613918 206.736949 l +1181.957483 196.05213 l +1182.301047 195.553089 l +1182.644612 195.294658 l +1185.736694 195.294658 l +1186.080258 174.112821 l +1189.859469 174.112821 l +1190.546598 160.584477 l +1191.233728 160.584477 l +1191.577292 142.275577 l +1192.607986 142.275577 l +1192.951551 135.289007 l +1193.295115 135.039487 l +1193.982244 135.039487 l +1194.325809 128.061828 l +1197.417891 128.061828 l +1197.761455 121.075258 l +1199.822843 121.075258 l +1200.166408 120.558394 l +1200.509972 113.571824 l +1201.884231 113.571824 l +1202.227795 113.313392 l +1202.57136 99.358074 l +1205.319877 99.358074 l +1206.007006 85.402756 l +1210.473346 85.402756 l +1210.816911 78.166666 l +1211.847605 78.166666 l +1212.191169 70.930575 l +1212.534734 70.681055 l +1213.221863 70.681055 l +1213.565428 64.443045 l +1288.440625 64.443045 l +1288.440625 64.443045 l +stroke +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +887.791667 60.825 m +887.791667 429.865625 l +stroke +grestore +gsave +1280.240625 60.825 m +1280.240625 429.865625 l +stroke +grestore +gsave +887.791667 60.825 m +1280.240625 60.825 l +stroke +grestore +gsave +887.791667 429.865625 m +1280.240625 429.865625 l +stroke +grestore +gsave + +1032.555208 436.053125 translate +0.000000 rotate +0.000000 0 m /O glyphshow +14.699997 0 m /S glyphshow +29.399994 0 m /C glyphshow +44.099991 0 m /A glyphshow +58.799988 0 m /R glyphshow +73.499985 0 m /hyphen glyphshow +88.199982 0 m /three glyphshow +grestore + +end +showpage diff --git a/experiments/SIAM/xp_1_balls/launcher.sh b/experiments/SIAM/xp_1_balls/launcher.sh new file mode 100755 index 0000000000000000000000000000000000000000..31fa66dcf699cf03d476027d3c8b87069e47d2d3 --- /dev/null +++ b/experiments/SIAM/xp_1_balls/launcher.sh @@ -0,0 +1,4 @@ +python xp_a_accuracy_sol.py --id 1a +python xp_b_screening.py --id 1a +python xp_c_viz_fig1.py --noshow --save +python xp_c_viz_fig2.py --noshow --save \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/process_data.py b/experiments/SIAM/xp_1_balls/process_data.py new file mode 100644 index 0000000000000000000000000000000000000000..60b3a9a92076ad424bcd8f5f4425df32f4811715 --- /dev/null +++ b/experiments/SIAM/xp_1_balls/process_data.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +import numpy as np + +from experiments.SIAM.setup import Setup +from experiments.SIAM.xp_1_balls import xpparams + + +def process(setup, log=True): + + # ---- load ---- + solutions_filename = f"results/xp_setup{setup.setup_id}.npz" + solutions = np.load(solutions_filename, allow_pickle=True) + + screenings_filename = f"results/xp_setup{setup.setup_id}_screening.npz" + screenings = np.load(screenings_filename, allow_pickle=True) + + # mat_results_gap[1, i_dic, i_seq, rep, i_ratio] + mat_pvopt = solutions["mat_pvopt"] + + mat_nb_zero_detected = screenings['mat_nb_zero_detected'] + nb_test = mat_nb_zero_detected.shape[0] + list_tests = screenings["list_test"] + + # ---- log ---- + if log: + print("Experiment info") + # print(f"- run with version {solutions["version"]}") + print(f"- setup{setup.setup_id}") + print("") + + # ---- processing ---- + mat_pc_detected =np.zeros( + (nb_test, xpparams.nb_point, setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep) + ) + + for i_dic in range(setup.nb_dic): + for i_seq in range(setup.nb_sequence): + for i_ratio in range(setup.nb_ratio_lbd): + for rep in range(setup.n_rep): + + nb_0 = np.sum(mat_pvopt[i_dic, i_seq, i_ratio, rep, :] == 0) + if nb_0 > 0: + mat_detected = mat_nb_zero_detected[:, :, i_dic, i_seq, i_ratio, rep] + mat_pc_detected[:, :, i_dic, i_seq, i_ratio, rep] = mat_detected / float(nb_0) + + + # ---- return ---- + return { + "mat_pc_detected": np.mean(mat_pc_detected, axis=5), + "list_tests": list_tests, + } + + # { + # "results_mat_nb": results_mat_nb, + # "results_mat_nbz": results_mat_nbz, + # } \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py b/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py new file mode 100755 index 0000000000000000000000000000000000000000..fabfaf34c674e298fc1f5c332c24e1016275b8db --- /dev/null +++ b/experiments/SIAM/xp_1_balls/xp_a_accuracy_sol.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +import time, argparse, sys +from pathlib import Path + +import numpy as np + +# Algorithm import +from src import __version__ +from src.solver.parameters import SlopeParameters, EnumLipchitzOptions +from src.solver.slope import primal_func, dual_func, slope_gp + +# Generative models +from src.utils import get_lambda_max, gamma_sequence_generator +from src.dictionaries import generate_dic + +# Screening +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest + +# XP import +from experiments.SIAM.slopepb import SlopePb +from experiments.SIAM.setup import Setup +from experiments.SIAM.xp_1_balls import xpparams + +parser=argparse.ArgumentParser() +parser.add_argument('--erase', help='erase existing results', action="store_true") +parser.add_argument('--continue', help='save figure', action="store_true", dest="cont") +parser.add_argument('--id', help='setup id', type=str, + default="1a") +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +folder = "results/" +Path(folder).mkdir(parents=True, exist_ok=True) + +out_file_name = folder + f"/xp_setup{args.id}.npz" + +mat_seed = np.random.randint( + 0, 2**32-1, + size=(setup.nb_dic, setup.nb_sequence, setup.n_rep), +) + +mat_pvopt = np.zeros( + (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep, setup.n) +) + +mat_dvopt = np.zeros( + (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep, setup.m) +) + + +try: + if args.erase: + raise FileNotFoundError + + # Try to load existing results + load_results = np.load(out_file_name, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_pvopt = load_results["mat_pvopt"] + mat_dvopt = load_results["mat_dvopt"] + +except FileNotFoundError: + pass + + +# ------------------------- +# Xp +# ------------------------- + +# For each trial +# 1. Compute high accuracy solution +# 2. Create ideal safe ball +# 3. increse radius + +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd +i_xp = 0 +for i_dic in range(setup.nb_dic): + for i_seq, seq in enumerate(setup.list_sequence): + for rep in range(setup.n_rep): + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + lip = np.linalg.norm(matA, ord=2)**2 + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy, 2) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + + # ---- 3. XP ---- + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + i_xp += 1 + + slopePb = SlopePb(matA, vecy, vec_gammas, ratio, lbdmax=lbd_max) + vecx_hat = mat_pvopt[i_dic, i_seq, i_ratio, rep, :] + vecu_hat = mat_dvopt[i_dic, i_seq, i_ratio, rep, :] + + gap = slopePb.eval_gap(vecx_hat, vecu_hat) + print(f"xp {i_xp} / {nb_xp} --- (gap={gap})") + + if (gap > xpparams.stopping_gap): + gap_old = gap + + # ---- 3a. Find solution ---- + params = SlopeParameters() + params.vecx_init = np.copy(vecx_hat) + params.lipchitz_constant = lip + params.lipchitz_update = EnumLipchitzOptions.EXACT + params.max_it = 1e7 + params.gap_stopping = xpparams.stopping_gap + params.time_stopping = np.inf + params.screening1 = GapSphereSingleTest() + params.screening2 = GAP_Ptest(vec_gammas) + params.screening_it_div = 2. + params.accelerated = True + params.verbose = False + + out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) + + gap = slopePb.eval_gap(out_slope["sol"], out_slope["dualsol"]) + + if gap <= gap_old: + mat_pvopt[i_dic, i_seq, i_ratio, rep, :] = out_slope["sol"] + mat_dvopt[i_dic, i_seq, i_ratio, rep, :] = out_slope["dualsol"] + + # Save + np.savez(out_file_name, + mat_seed=mat_seed, + mat_pvopt=mat_pvopt, + mat_dvopt=mat_dvopt, + version = __version__, + allow_pickle=True + ) diff --git a/experiments/SIAM/xp_1_balls/xp_b_screening.py b/experiments/SIAM/xp_1_balls/xp_b_screening.py new file mode 100644 index 0000000000000000000000000000000000000000..a36dd349e5cdc451d3305aced08849be93c7dd16 --- /dev/null +++ b/experiments/SIAM/xp_1_balls/xp_b_screening.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +import argparse +from pathlib import Path + +import numpy as np + +# Algorithm import +from src import __version__ +from src.dictionaries import generate_dic +from src.utils import get_lambda_max, gamma_sequence_generator + +# Screening +from src.screening.gap_rqtest import GAP_RQtest +from src.screening.kappa_test import Kappa_test +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest + +# XP import +from experiments.SIAM.slopepb import SlopePb +from experiments.SIAM.setup import Setup +from experiments.SIAM.xp_1_balls import xpparams + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default=1) +args=parser.parse_args() + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +solutions_filename = f"results/xp_setup{args.id}.npz" + +try: + # Try to load existing results + load_results = np.load(solutions_filename, allow_pickle=True) + mat_seed = load_results["mat_seed"] + mat_pvopt = load_results["mat_pvopt"] + mat_dvopt = load_results["mat_dvopt"] + +except FileNotFoundError: + print("No result found") + sys.exit(1) + + +# ------------------------- +# Screening Xp +# ------------------------- + +# percentage of detected zero +NB_TEST = 3 +mat_nb_zero_detected = np.full( + (NB_TEST, xpparams.nb_point, setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep), + np.nan, + dtype=int +) +screening_filename = f"results/xp_setup{args.id}_screening.npz" + +i_xp = 0 +nb_xp = setup.nb_dic * setup.n_rep * setup.nb_sequence * setup.nb_ratio_lbd +for i_dic in range(setup.nb_dic): + for i_seq, seq in enumerate(setup.list_sequence): + for rep in range(setup.n_rep): + + np.random.seed(mat_seed[i_dic, i_seq, rep]) + + # ---- 1. Gen data ---- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + + # ---- 2. Compute parameters ---- + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + # ---- 3. XP ---- + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + i_xp += 1 + print(f"xp {i_xp} / {nb_xp}") + + slopePb = SlopePb(matA, vecy, vec_gammas, ratio, lbdmax=lbd_max) + vecx_hat = mat_pvopt[i_dic, i_seq, i_ratio, rep, :] + vecu_hat = mat_dvopt[i_dic, i_seq, i_ratio, rep, :] + gap = slopePb.eval_gap(vecx_hat, vecu_hat) + Atu = matA.T @ vecu_hat + + # ---- 3b. Build thin safe ball ---- + rgap = np.sqrt(2 * gap) + + # ---- 3c. Testing sphere ---- + list_tests = [ + # GAP_RQtest(vec_gammas, 1 + np.arange(setup.n)), + Kappa_test(vec_gammas, np.arange(setup.n, dtype=float)), + GapSphereSingleTest(), + GAP_Ptest(vec_gammas), + ] + assert(len(list_tests) == NB_TEST) + + + for i_offset, offset in enumerate(xpparams.vec_offsets): + for i_test, test in enumerate(list_tests): + out = test.apply_test(np.abs(Atu), gap, ratio * lbd_max, vec_gammas, offset_radius=offset) + mat_nb_zero_detected[i_test, i_offset, i_dic, i_seq, i_ratio, rep] = np.sum(out) + + + # Save + np.savez( + screening_filename, + mat_nb_zero_detected=mat_nb_zero_detected, + list_test = [test.get_name() for test in list_tests], + version = __version__, + allow_pickle=True + ) \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py b/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py new file mode 100644 index 0000000000000000000000000000000000000000..0d520842827dd55df16bc904b3808ed43de23819 --- /dev/null +++ b/experiments/SIAM/xp_1_balls/xp_c_viz_fig1.py @@ -0,0 +1,143 @@ +# -*- coding: utf-8 -*- +from decimal import Decimal +import json, argparse +from pathlib import Path + +import numpy as np + +# XP import +from experiments.SIAM.slopepb import SlopePb +from experiments.SIAM.setup import Setup +from experiments.SIAM.xp_1_balls import xpparams +from experiments.SIAM.xp_1_balls.process_data import process + + +parser=argparse.ArgumentParser() +parser.add_argument('--noshow', help='do not display figures', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +# parser.add_argument('--id', help='setup id', type=str, default=1) +args=parser.parse_args() + +import matplotlib +if args.noshow: + matplotlib.use('PS') +else: + matplotlib.use("TkAgg") + +import matplotlib.pyplot as plt +from matplotlib.legend_handler import HandlerBase +import matplotlib.font_manager as font_manager + +# ------------------------- +# Font stuff +# ------------------------- + +fs = 20 + +font_math = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_text = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_ttt = font_manager.FontProperties( + # fname='../fonts/ectt1000.ttf', + fname='../fonts/cmuntt.ttf', + weight='bold', + style='normal', + size=fs +) + + +# ------------------------- +# Load Results +# ------------------------- + +# OSCAR +setup_oscar = Setup("1a") +dic_process_oscar = process(setup_oscar) + +mat_pc_detected_oscar = dic_process_oscar["mat_pc_detected"] +list_tests_oscar = dic_process_oscar["list_tests"] + + +# ------------------------- +# Plot Results +# ------------------------- + +i_dic = 2 +i_lbd = 1 + +fs=22 +fs_ylabels = 20 +list_colors = ["tab:blue", "tab:orange", "tab:green"] +list_legends = ["$r_q=q\\;\\forall q$", "best performance", "$r_q=1\\;\\forall q$"] +# "best $r_q \\;\\forall q$ " + +print("printing xp_0_ball parameters with") +print(" - OSCAR sequence") +print(f"- {setup_oscar.list_dic[i_dic]} dictionary") +print(f"- lbd / lbd_max = {setup_oscar.list_ratio_lbd[i_lbd]}") + +for i_seq in range(2): + + f, ax = plt.subplots(1, 1, figsize=(.7*16, .6*9), sharex=True, sharey=True) + + # ax.set_title(f"OSCAR-{i_seq+1}", fontsize=fs+2) + ax.set_xlabel( + r"$R$", + fontsize=fs+2, + fontproperties=font_math, + ) + ax.set_ylabel( + "% of zero entries detected", + fontsize=fs+2, + fontproperties=font_text + ) + + for tick in ax.xaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(20) + + for tick in ax.yaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(20) + + for i_test in [2, 0, 1]: + ax.plot( + xpparams.vec_offsets, + 100 * mat_pc_detected_oscar[i_test, :, i_dic, i_seq, i_lbd], + label = list_legends[i_test], + linewidth=4., + alpha=.9, + color=list_colors[i_test] + ) + + if i_seq == 0: + ax.legend( + fontsize=fs-2, + prop=font_math + ) + + ax.set_xscale("log") + ax.set_xlim([1e-6, 1e0]) + ax.set_ylim([-2, 102]) + + if args.save: + Path("figs/").mkdir(parents=True, exist_ok=True) + + filename = f"figs/xp_illustration_screening{i_seq}.eps" + plt.savefig(filename, bbox_inches='tight') + +if not args.noshow: + plt.show() \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py b/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py new file mode 100644 index 0000000000000000000000000000000000000000..d4385d37538d41267ee9162bd2592467e35b3344 --- /dev/null +++ b/experiments/SIAM/xp_1_balls/xp_c_viz_fig2.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +from decimal import Decimal +import json, argparse +from pathlib import Path + +import numpy as np + +# XP import +from experiments.SIAM.slopepb import SlopePb +from experiments.SIAM.setup import Setup +from experiments.SIAM.xp_1_balls import xpparams +from experiments.SIAM.xp_1_balls.process_data import process + + +parser=argparse.ArgumentParser() +parser.add_argument('--noshow', help='do not display figures', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +# parser.add_argument('--id', help='setup id', type=str, default=1) +args=parser.parse_args() + +import matplotlib +if args.noshow: + matplotlib.use("ps") +else: + matplotlib.use("TkAgg") +import matplotlib.pyplot as plt +from matplotlib.legend_handler import HandlerBase +import matplotlib.font_manager as font_manager + + +# ------------------------- +# Load Results +# ------------------------- + +# OSCAR +setup_oscar = Setup("1a") +dic_process_oscar = process(setup_oscar) + +mat_pc_detected_oscar = dic_process_oscar["mat_pc_detected"] +list_tests_oscar = dic_process_oscar["list_tests"] + + +# ------------------------- +# Plot Results +# ------------------------- + +# vec_offsets = np.linspace(0, setup.max_offset, setup.nb_point) +# vec_offsets = setup_oscar.max_offset * np.logspace(-6., .0, num=setup_oscar.nb_point) + + +i_dic = 0 +i_lbd = 1 + +fs=22 +fs_ylabels = 20 +list_colors = ["tab:orange", "tab:green", "tab:blue"] +list_style = ['-', '-.', '--'] + +i_artist = 0 +class AnyObjectHandler(HandlerBase): + def create_artists(self, legend, orig_handle, + x0, y0, width, height, fontsize, trans): + + global i_artist + l1 = plt.Line2D([x0,y0+width], [1.1*height,1.1*height], + linestyle=list_style[i_artist], color=list_colors[0], + linewidth=4 + ) + l2 = plt.Line2D([x0,y0+width], [0.5*height,0.5*height], + linestyle=list_style[i_artist], color=list_colors[1], + linewidth=4 + ) + l3 = plt.Line2D([x0,y0+width], [-.1*height,-.1*height], + linestyle=list_style[i_artist], color=list_colors[2], + linewidth=4 + ) + i_artist += 1 + + return [l1, l2, l3] + + +font_math = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_text = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_ttt = font_manager.FontProperties( + fname='../fonts/ectt1000.ttf', + weight='bold', + style='normal', + size=fs+6 +) + +f, ax = plt.subplots(1, 3, figsize=(18, 6), sharex=True, sharey=True) + + +for i_seq, _ in enumerate(setup_oscar.list_sequence): + + ax[i_seq].set_title( + f"OSCAR-{i_seq+1}", + fontproperties=font_ttt, + ) + + for i_test, test_name in enumerate(list_tests_oscar): + + for tick in ax[i_seq].yaxis.get_major_ticks(): + tick.label.set_fontsize(18) + + + for i_lbd in range(3): + ax[i_seq].plot( + xpparams.vec_offsets, + 100 * mat_pc_detected_oscar[i_test, :, i_dic, i_seq, i_lbd], + list_style[i_lbd], + # label = "sphere p-test" if i_test==1 else "sphere single test", + linewidth=4., + alpha=.9, + color=list_colors[i_test] + ) + + + # ax[0, i_seq].set_xlim([-.02, 2.02]) + ax[i_seq].set_xscale("log") + + +ax[0].set_xlim([5e-5, 5e-1]) +ax[0].set_ylim([-1, 101]) +ax[0].set_ylabel( + "% of zero entries detected", + fontproperties=font_math, + fontsize=fs_ylabels+6, +) + +ax[0].legend([object, object, object], ['$\\lambda / \\lambda_{\\max}=' + str(x) + '$' for x in [.3, .5, .8]], + handler_map={object: AnyObjectHandler()}, + prop=font_math +) + +f.tight_layout() + + + + +for i_seq in range(3): + ax[i_seq].set_xlabel("$R$", fontproperties=font_math, fontsize=fs_ylabels+6) + + # ax[1, i_seq].xaxis.set_major_locator(plt.MaxNLocator(6)) + + for tick in ax[i_seq].xaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(22) + + for tick in ax[i_seq].yaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(22) + +if args.save: + filename = f"figs/xp0_{setup_oscar.list_dic[i_dic]}.eps" + # plt.rcParams['pdf.fonttype'] = 42 + plt.savefig(filename, bbox_inches='tight') \ No newline at end of file diff --git a/experiments/SIAM/xp_1_balls/xpparams.py b/experiments/SIAM/xp_1_balls/xpparams.py new file mode 100644 index 0000000000000000000000000000000000000000..0402fc413f9ee508fbb570ae8845fe0448cfdd9f --- /dev/null +++ b/experiments/SIAM/xp_1_balls/xpparams.py @@ -0,0 +1,10 @@ +import numpy as np + +# Algorithmic parameters +stopping_gap = 1e-14 + +# -- Screening parameter -- +# vec_offsets = np.linspace(0, setup.max_offset, setup.nb_point) +nb_point = 2000 +max_offset = 2 +vec_offsets = max_offset * np.logspace(-7., .0, num=nb_point) \ No newline at end of file diff --git a/experiments/SIAM/xp_2_bench_time/get_algs_params.py b/experiments/SIAM/xp_2_bench_time/get_algs_params.py new file mode 100644 index 0000000000000000000000000000000000000000..df0a3f9d9afcb2dd653b851989befe83984e1518 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/get_algs_params.py @@ -0,0 +1,66 @@ +import numpy as np + +from src.solver.parameters import SlopeParameters, EnumLipchitzOptions + +from src.screening.singletest import GapSphereSingleTest +from src.screening.gap_ptest import GAP_Ptest +from src.screening.kappa_test import Kappa_test + +nb_algs = 3 + +def get_nb_algs(setup): + + return nb_algs + + +def get_alg_params(setup, vec_gammas, exact): + + list_params = [] + list_names = [] + + # --- 1. Xp --- + # 1a. No screening + params1 = SlopeParameters() + + list_params.append(params1) + list_names.append("no screening") + + + params2 = SlopeParameters() + + if exact: + params2.screening2 = GapSphereSingleTest() + params2.screening_it_div = 2. + + else: + params2.screening1 = GapSphereSingleTest() + + list_params.append(params2) + list_names.append("single test") + + # 1c. Single test screening + params3 = SlopeParameters() + + params3.screening2 = GAP_Ptest(vec_gammas) + params3.screening_it_div = 2. + + if not exact: + params3.screening1 = GapSphereSingleTest() + + list_params.append(params3) + list_names.append("p-test") + + + # --- 2. Common parameters --- + for params in list_params: + params.max_it = np.inf + params.gap_stopping = 0 + params.time_stopping = np.inf + params.accelerated = True + params.verbose = False + + # return + assert(len(list_names) == len(list_params)) + assert(len(list_params) == nb_algs) + + return list_params, list_names \ No newline at end of file diff --git a/experiments/SIAM/xp_2_bench_time/launcher.sh b/experiments/SIAM/xp_2_bench_time/launcher.sh new file mode 100755 index 0000000000000000000000000000000000000000..2f4b2ab23d5158d0f18209c9830a0ac95775ac5f --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/launcher.sh @@ -0,0 +1,9 @@ +python xp_a_get_state.py --id 1a --precision 8 +python xp_b_get_budget.py --id 1a --precision 8 +python xp_c_results_time.py --id 1a --precision 8 +python xp_d_results_it.py --id 1a --precision 8 + +python xp_a_get_state.py --id 1b --precision 8 +python xp_b_get_budget.py --id 1b --precision 8 +python xp_c_results_time.py --id 1b --precision 8 +python xp_d_results_it.py --id 1b --precision 8 \ No newline at end of file diff --git a/experiments/SIAM/xp_2_bench_time/make_figs.sh b/experiments/SIAM/xp_2_bench_time/make_figs.sh new file mode 100755 index 0000000000000000000000000000000000000000..b104b854efd92f700491428f5a79aedd74279368 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/make_figs.sh @@ -0,0 +1,2 @@ +python viz_paper.py --id 1a --precision 8 --noshow --save +python viz_paper_it.py --id 1a --precision 8 --noshow --save \ No newline at end of file diff --git a/experiments/SIAM/xp_2_bench_time/process_data.py b/experiments/SIAM/xp_2_bench_time/process_data.py new file mode 100644 index 0000000000000000000000000000000000000000..f93d69b7bc361d83797db25340fa9932393ba2e6 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/process_data.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +import numpy as np + +from experiments.SIAM.setup import Setup + + +def process(folder, bool_it, setup, log=True): + + # ---- load ---- + results_file_name = f"{folder}setup{setup.setup_id}_" + if bool_it: + results_file_name += "d_results_it.npz" + else: + results_file_name += "c_results.npz" + + out = np.load(results_file_name, allow_pickle=True) + + if bool_it: + mat_results = out['mat_results_it'] + else: + # mat_results_gap[0, i_dic, i_seq, i_lbd, :] + mat_results = out['mat_results'] + + + # ---- processing ---- + vec_tau = np.logspace(-16, 0, num=200, base=10.) + + # Fonction rho(tau) %xp such that gap <= tau + results_rho = np.full( + (mat_results.shape[0], setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, vec_tau.size), + np.nan + ) + + for i in range(vec_tau.size): + results_rho[:, :, :, :, i] = np.mean(mat_results <= vec_tau[i], axis=4) + + + # ---- return ---- + return { + "vec_tau": vec_tau, + "results_rho": results_rho, + } \ No newline at end of file diff --git a/experiments/SIAM/xp_2_bench_time/viz_paper.py b/experiments/SIAM/xp_2_bench_time/viz_paper.py new file mode 100644 index 0000000000000000000000000000000000000000..aa289368080d973d0209c962287ad4dcd3d88ea3 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/viz_paper.py @@ -0,0 +1,150 @@ +# -*- coding: utf-8 -*- +import argparse +from pathlib import Path + +import numpy as np + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str) +parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8) +parser.add_argument('--exact', action="store_true") +parser.add_argument('--noshow', help='show plots', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +args=parser.parse_args() + +import matplotlib +if args.noshow: + matplotlib.use('PS') +else: + matplotlib.use("TkAgg") +import matplotlib.pyplot as plt + +from experiments.SIAM.setup import Setup +from process_data import process +from get_algs_params import get_alg_params, get_nb_algs +from src.utils import gamma_sequence_generator +import matplotlib.font_manager as font_manager + + +fs = 20 + +font_math = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_text = font_manager.FontProperties( + fname='../fonts/cmunrm.ttf', + # weight='normal', + # style='normal', + math_fontfamily="cm", + size=fs+2 +) + +font_ttt = font_manager.FontProperties( + # fname='../fonts/ectt1000.ttf', + fname='../fonts/cmuntt.ttf', + weight='bold', + style='normal', + size=fs +) + +# ------------------------- +# Load results +# ------------------------- + +folder = f'results/1e-{args.precision}' +folder += 'exact/' if args.exact else 'gersh/' + # check if folder exists, create it otherwise +Path(folder).mkdir(parents=True, exist_ok=True) + +setup = Setup(args.id) +_, list_names = get_alg_params(setup, np.zeros(5), args.exact) +dic_process = process(folder, False, setup) + +vec_tau = dic_process["vec_tau"] +results_rho = dic_process["results_rho"] + + +# ------------------------- +# Plot results +# ------------------------- + +f, ax = plt.subplots(setup.nb_sequence, setup.nb_dic, figsize=(16, 13.), + sharex=True, sharey=True, + gridspec_kw = {'wspace':.05, 'hspace':.05} +) +# f.suptitle(f"{setup.list_dic[i_dic]} dictionary", fontsize=14) + +list_algnames = ["PG-no", "PGp=q", "PG-all"] +list_dicname = ["Gaussian", "Uniform", "Toeplitz"] +i_lbd = 1 + +print("ploting time fig for") +print(f" - {list_dicname} dictionaries") +print(f" - lbd / lbd_max = {setup.list_ratio_lbd[i_lbd]}") + +for i_dic in range(setup.nb_dic): + for i_seq in range(setup.nb_sequence): + + list_colors = ["tab:blue", "tab:orange", "tab:green"] + for i_alg in range(len(list_names)): + ax[i_seq, i_dic].plot( + vec_tau, + 100. * results_rho[i_alg, i_dic, i_seq, i_lbd], + linewidth=3., + label=list_algnames[i_alg], + color=list_colors[i_alg] + ) + + + ax[i_seq, i_dic].set_xscale('log') + + ax[i_seq, i_dic].set_xlim([5e-15, 5e-1]) + ax[i_seq, i_dic].set_ylim([-2, 101]) + ax[i_seq, i_dic].grid() + + if i_seq == 0: + ax[i_seq, i_dic].set_title( + f"{list_dicname[i_dic]}", + fontsize=fs+2, + fontproperties=font_text + ) + + if i_dic == 2 and i_seq == 2: + ax[i_seq, i_dic].legend(prop=font_ttt) + + if i_seq == setup.nb_sequence-1: + ax[i_seq, i_dic].set_xlabel("$\\delta$ (Dual gap)", + # fontsize=14, + fontproperties=font_text) + + if i_dic == 0: + ax[i_seq, i_dic].set_ylabel( + r"$\rho_{\ttsolv}(\delta)$", + fontsize=fs+4, + fontproperties=font_math + ) + + for tick in ax[i_seq, i_dic].yaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(16) + + if i_seq == 2: + for tick in ax[i_seq, i_dic].xaxis.get_major_ticks(): + tick.label.set_fontproperties(font_math) + tick.label.set_fontsize(16) + + + + +if args.save: + fig_name = f"figs/setup{args.id}_time" + + plt.savefig(fig_name + ".eps", bbox_inches='tight') + +if not args.noshow: + plt.show() diff --git a/experiments/SIAM/xp_2_bench_time/viz_paper_it.py b/experiments/SIAM/xp_2_bench_time/viz_paper_it.py new file mode 100644 index 0000000000000000000000000000000000000000..06a59ed47ea8b9b8bb20caa2cc07fa8f0b8eee22 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/viz_paper_it.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +import argparse + +import numpy as np +import matplotlib.pyplot as plt + +from xps.SIAM.setup import Setup +from process_data import process +from get_algs_params import get_alg_params, get_nb_algs +from src.utils import gamma_sequence_generator + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str) +parser.add_argument('--precision', help='stop when gap reaches 1e-precision', default=8) +parser.add_argument('--exact', action="store_true") +parser.add_argument('--noshow', help='show plots', action="store_true") +parser.add_argument('--save', help='save figure', action="store_true") +args=parser.parse_args() + +# ------------------------- +# Load results +# ------------------------- + +folder = f'results/1e-{args.precision}' +folder += 'exact/' if args.exact else 'gersh/' + +setup = Setup(args.id) +_, list_names = get_alg_params(setup, np.zeros(5), args.exact) +dic_process = process(folder, True, setup) + +vec_tau = dic_process["vec_tau"] +results_rho = dic_process["results_rho"] + + +# ------------------------- +# Plot results +# ------------------------- + +f, ax = plt.subplots(1, setup.nb_dic, figsize=(16, 4.), + sharex=True, sharey=True, + gridspec_kw = {'wspace':.05, 'hspace':.05} +) + +list_algnames = ["PG", "PG$_s$", "PG$_p$"] +list_dicname = ["Gaussian", "Uniform", "toeplitz"] +i_lbd = 1 +i_dic = 0 + +print("ploting it fig for") +print(f" - {list_dicname[i_dic]} dictionary") +print(f" - lbd / lbd_max = {setup.list_ratio_lbd[i_lbd]}") + +for i_seq in range(setup.nb_sequence): + + list_colors = ["tab:blue", "tab:orange", "tab:green"] + for i_alg in range(len(list_names)): + + ax[i_seq].plot( + vec_tau, + 100. * results_rho[i_alg, i_dic, i_seq, i_lbd], + linewidth=3., + label=list_algnames[i_alg], + color=list_colors[i_alg], + linestyle='-.' + ) + + ax[i_seq].set_title(f"OSCAR-{i_seq+1}", fontsize=16) + + ax[i_seq].set_xscale('log') + + ax[i_seq].set_xlim([5e-15, 5e-5]) + ax[i_seq].set_ylim([-2, 101]) + ax[i_seq].grid() + + if i_seq == 0 : + ax[i_seq].legend() + + ax[i_seq].set_xlabel("$\\tau$ (Dual gap)", fontsize=14) + + if i_seq == 0: + ax[i_seq].set_ylabel("$\\rho_s(\\tau)$", fontsize=14) + + + +if args.save: + fig_name = f"figs/setup{args.id}_it" + + + plt.savefig(fig_name + ".pdf", bbox_inches='tight') + +if not args.noshow: + plt.show() diff --git a/experiments/SIAM/xp_2_bench_time/xp_a_get_state.py b/experiments/SIAM/xp_2_bench_time/xp_a_get_state.py new file mode 100644 index 0000000000000000000000000000000000000000..27149ab957862e06ed466174c50eeb50e690b335 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/xp_a_get_state.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +import argparse, sys +from pathlib import Path + +import numpy as np + +from src import __version__ +from src.solver.slope import slope_gp + +from experiments.SIAM.setup import Setup +from get_algs_params import get_alg_params, get_nb_algs + + +# -------------------- +# Parse arguments +# -------------------- + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str) +parser.add_argument('--erase', help='restart xp', action="store_true") +parser.add_argument('--precision', help='stop when gap reaches 1e-precision') +parser.add_argument('--exact', action="store_true") +args=parser.parse_args() + +setup = Setup(args.id) +dims = (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep) + +mat_seed = np.random.randint(0, 2**8, size=dims) + +folder = f'results/1e-{args.precision}' +folder += 'exact/' if args.exact else 'gersh/' + + # check if folder exists, create it otherwise +Path(folder).mkdir(parents=True, exist_ok=True) + +time_file_name = f"{folder}setup{args.id}_a_state.npz" + +# -------------------- +# Xp +# -------------------- + +print(f"Starting \"get seed\" with id {args.id}, precision 1e-{args.precision}") +try: + if args.erase: + raise FileNotFoundError + + load_results = np.load(time_file_name, allow_pickle=True) + + if not args.erase: + print("experiment already exists -- exit") + sys.exit(1) + +except FileNotFoundError: + # Everything goes well + pass + +np.savez( + time_file_name, + mat_seed = mat_seed, + allow_pickle = True +) diff --git a/experiments/SIAM/xp_2_bench_time/xp_b_get_budget.py b/experiments/SIAM/xp_2_bench_time/xp_b_get_budget.py new file mode 100755 index 0000000000000000000000000000000000000000..a2aa1d49cc1fd4192149af64c43a36673e44b9d4 --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/xp_b_get_budget.py @@ -0,0 +1,139 @@ +# -*- coding: utf-8 -*- +import argparse, sys +from pathlib import Path + +import numpy as np + +from src import __version__ +from src.solver.slope import slope_gp +from src.solver.parameters import SlopeParameters, EnumLipchitzOptions +from src.utils import get_lambda_max, gamma_sequence_generator +from src.dictionaries import generate_dic +from src.screening.gap_ptest import GAP_Ptest + +from experiments.SIAM.setup import Setup + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default=1) +parser.add_argument('--erase', help='restart xp', action="store_true") +parser.add_argument('--precision', help='stop when gap reaches 1e-precision') +parser.add_argument('--exact', action="store_true") +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) + +folder = f'results/1e-{args.precision}' +folder += 'exact/' if args.exact else 'gersh/' + # check if folder exists, create it otherwise +Path(folder).mkdir(parents=True, exist_ok=True) + +state_file_name = f"{folder}setup{args.id}_a_state.npz" +time_file_name = f"{folder}setup{args.id}_b_times.npz" + +out = np.load(state_file_name, allow_pickle=True) +mat_seed = out["mat_seed"] + +mat_times = np.full( + (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep), + np.nan +) + +mat_it = np.full( + (setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep), + np.nan, dtype=int +) + +stopping_gap = 10**(-float(args.precision)) +update_lip = EnumLipchitzOptions.EXACT if args.exact else EnumLipchitzOptions.GERSHGORIN + + +# -------------------------- +# Load existing results +# -------------------------- + +try: + if args.erase: + raise FileNotFoundError + + load_results = np.load(time_file_name, allow_pickle=True) + mat_times = load_results['mat_times'] + +except FileNotFoundError: + # Everything goes well + pass + + +nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep +t = 0 +print(f"Starting \"get budget\" with id {args.id}, precision 1e-{args.precision}") +for i_dic in range(setup.nb_dic): + for i_seq in range(setup.nb_sequence): + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + for rep in range(setup.n_rep): + print(f"xp budget {t+1} / {nb_xp}") + + if not np.isnan(mat_times[i_dic, i_seq, i_ratio, rep]): + t += 1 + continue + + + # --- set seed --- + np.random.seed(mat_seed[i_dic, i_seq, i_ratio, rep]) + + + # --- Data and parameters --- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + + # --- Solve slope problems --- + params = SlopeParameters() + params.screening2 = GAP_Ptest(vec_gammas) + params.screening_it_div = 2 + + params.max_it = np.inf + params.gap_stopping = stopping_gap + params.time_stopping = np.inf + params.lipchitz_update = update_lip + params.accelerated = True + params.verbose = False + # max_eig = .np.linalg.norm(matA, 2)**2 + + out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) + + mat_times[i_dic, i_seq, i_ratio, rep] = out_slope["time_run"] + mat_it[i_dic, i_seq, i_ratio, rep] = out_slope["nb_it"] + + + # --- Saving --- + np.savez(time_file_name, + mat_times = mat_times, + mat_it = mat_it, + version = __version__, + allow_pickle = True + ) + + t += 1 + diff --git a/experiments/SIAM/xp_2_bench_time/xp_c_results_time.py b/experiments/SIAM/xp_2_bench_time/xp_c_results_time.py new file mode 100644 index 0000000000000000000000000000000000000000..5263bc2e14322dec79982f1e16e52d161e1dba9f --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/xp_c_results_time.py @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +import argparse, sys +from pathlib import Path + +import numpy as np + +from src import __version__ +from src.solver.slope import slope_gp +from src.solver.parameters import SlopeParameters, EnumLipchitzOptions +from src.screening.gap_ptest import GAP_Ptest +from src.utils import get_lambda_max, gamma_sequence_generator +from src.dictionaries import generate_dic + +from experiments.SIAM.setup import Setup + +from get_algs_params import get_alg_params, get_nb_algs + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default=1) +parser.add_argument('--erase', help='restart xp', action="store_true") +parser.add_argument('--precision', help='stop when gap reaches 1e-precision') +parser.add_argument('--exact', action="store_true") +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +folder = f'results/1e-{args.precision}' +folder += 'exact/' if args.exact else 'gersh/' + # check if folder exists, create it otherwise +Path(folder).mkdir(parents=True, exist_ok=True) + +state_file_name = f"{folder}setup{args.id}_a_state.npz" +time_file_name = f"{folder}setup{args.id}_b_times.npz" +results_file_name = f"{folder}setup{args.id}_c_results.npz" + + +out_state = np.load(state_file_name, allow_pickle=True) +mat_seed = out_state["mat_seed"] + +out_times = np.load(time_file_name, allow_pickle=True) +mat_times = out_times["mat_times"] + + +mat_results = np.full( + (get_nb_algs(setup), setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep), + np.nan +) + +update_lip = EnumLipchitzOptions.EXACT if args.exact else EnumLipchitzOptions.GERSHGORIN + +# -------------------------- +# Load existing results +# -------------------------- + +try: + if args.erase: + raise FileNotFoundError + + load_results = np.load(results_file_name, allow_pickle=True) + mat_results = load_results['mat_results'] + +except FileNotFoundError: + # Everything goes well + pass + + +nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep +t = 0 +print(f"Starting \"xp time\" with id {args.id}, precision 1e-{args.precision}") +for i_dic in range(setup.nb_dic): + for i_seq in range(setup.nb_sequence): + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + + stopping_time = np.mean(mat_times[i_dic, i_seq, i_ratio, :]) + if not np.any(np.isnan(mat_results[:, i_dic, i_seq, i_ratio, :])): + t += setup.n_rep + continue + + for rep in range(setup.n_rep): + print(f"xp time {t+1} / {nb_xp}") + + + # --- set seed --- + np.random.seed(mat_seed[i_dic, i_seq, i_ratio, rep]) + + + # --- Data and parameters --- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + # --- Solve slope problems --- + list_params, _ = get_alg_params(setup, vec_gammas, args.exact) + + + for i_alg, params in enumerate(list_params): + if not np.isnan(mat_results[i_alg, i_dic, i_seq, i_ratio, rep]): + continue + + params.lipchitz_update = update_lip + params.time_stopping = stopping_time + out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) + + mat_results[i_alg, i_dic, i_seq, i_ratio, rep] = out_slope["gap"] + + + # --- Saving --- + np.savez(results_file_name, + mat_results = mat_results, + version = __version__, + allow_pickle = True + ) + + t += 1 diff --git a/experiments/SIAM/xp_2_bench_time/xp_d_results_it.py b/experiments/SIAM/xp_2_bench_time/xp_d_results_it.py new file mode 100644 index 0000000000000000000000000000000000000000..d44328c25321dce179f5e5fd24795e625a36fa8d --- /dev/null +++ b/experiments/SIAM/xp_2_bench_time/xp_d_results_it.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- +import argparse, sys +from pathlib import Path + +import numpy as np + +from src import __version__ +from src.solver.slope import slope_gp +from src.solver.parameters import SlopeParameters, EnumLipchitzOptions +from src.screening.gap_ptest import GAP_Ptest +from src.utils import get_lambda_max, gamma_sequence_generator +from src.dictionaries import generate_dic + +from experiments.SIAM.setup import Setup + +from get_algs_params import get_alg_params, get_nb_algs + + +parser=argparse.ArgumentParser() +parser.add_argument('--id', help='setup id', type=str, default=1) +parser.add_argument('--erase', help='restart xp', action="store_true") +parser.add_argument('--precision', help='stop when gap reaches 1e-precision') +parser.add_argument('--exact', action="store_true") +args=parser.parse_args() + + +# ------------------------- +# Load Setup +# ------------------------- + +setup = Setup(args.id) +folder = f'results/1e-{args.precision}' +folder += 'exact/' if args.exact else 'gersh/' + # check if folder exists, create it otherwise +Path(folder).mkdir(parents=True, exist_ok=True) + +state_file_name = f"{folder}setup{args.id}_a_state.npz" +time_file_name = f"{folder}setup{args.id}_b_times.npz" +results_it_file_name = f"{folder}setup{args.id}_d_results_it.npz" + + +out_state = np.load(state_file_name, allow_pickle=True) +mat_seed = out_state["mat_seed"] + +out_times = np.load(time_file_name, allow_pickle=True) +mat_it = out_times["mat_it"] + + +mat_results_it = np.full( + (get_nb_algs(setup), setup.nb_dic, setup.nb_sequence, setup.nb_ratio_lbd, setup.n_rep), + np.nan +) + +update_lip = EnumLipchitzOptions.EXACT if args.exact else EnumLipchitzOptions.GERSHGORIN + +# -------------------------- +# Load existing results +# -------------------------- + +try: + if args.erase: + raise FileNotFoundError + + load_results = np.load(results_it_file_name, allow_pickle=True) + mat_results_it = load_results['mat_results_it'] + +except FileNotFoundError: + # Everything goes well + pass + + +nb_xp = setup.nb_dic * setup.nb_sequence * setup.nb_ratio_lbd * setup.n_rep +t = 0 +print(f"Starting \"xp time\" with id {args.id}, precision 1e-{args.precision}") +for i_dic in range(setup.nb_dic): + for i_seq in range(setup.nb_sequence): + for i_ratio, ratio in enumerate(setup.list_ratio_lbd): + + stopping_it = np.mean(mat_it[i_dic, i_seq, i_ratio, :]) + if not np.any(np.isnan(mat_results_it[:, i_dic, i_seq, i_ratio, :])): + t += setup.n_rep + continue + + for rep in range(setup.n_rep): + print(f"xp it {t+1} / {nb_xp}") + + # --- set seed --- + np.random.seed(mat_seed[i_dic, i_seq, i_ratio, rep]) + + + # --- Data and parameters --- + matA = generate_dic( + setup.list_dic[i_dic], + setup.m, + setup.n, + setup.normalize + ) + + vecy = np.random.randn(setup.m) + vecy /= np.linalg.norm(vecy) + + vec_gammas = gamma_sequence_generator( + setup.m, + setup.n, + setup.list_sequence[i_seq][0], + setup.list_sequence[i_seq][1:] + ) + + lbd_max = get_lambda_max(vecy, matA, vec_gammas) + + + # --- Solve slope problems --- + list_params, _ = get_alg_params(setup, vec_gammas, args.exact) + + + for i_alg, params in enumerate(list_params): + + if not np.isnan(mat_results_it[i_alg, i_dic, i_seq, i_ratio, rep]): + continue + + params.lipchitz_update = update_lip + params.max_it = stopping_it + out_slope = slope_gp(vecy, matA, ratio * lbd_max, vec_gammas, params) + + mat_results_it[i_alg, i_dic, i_seq, i_ratio, rep] = out_slope["gap"] + + + # --- Saving --- + np.savez(results_it_file_name, + mat_results_it = mat_results_it, + version = __version__, + allow_pickle = True + ) + + t += 1